एक resampled orthophoto अवलोकन के नोडा क्षेत्र को सफेद बनाते हैं?


9

मेरे पास ऑर्थोफ़ोटो छवियों का एक सेट है जो प्रत्येक पूरी तरह से डेटा से भरा है, लेकिन जब एक साथ रखा जाता है तो कवरेज एक आयत नहीं बनाता है इसलिए नोडाटा क्षेत्र होते हैं।

MapGuide में, मुझे इन नोडटा क्षेत्रों को सफेद के रूप में प्रदर्शित करने में सक्षम होने की आवश्यकता है ताकि मेरे उपयोगकर्ताओं को मुद्रण के दौरान काली स्याही बर्बाद न करें।

बड़े पैमाने पर, जहां मैं मूल पूर्ण रिज़ॉल्यूशन छवियों को सीधे प्रदर्शित करता हूं, यह कोई समस्या नहीं है। मैंने बस अपने नक्शे की पृष्ठभूमि का रंग सफेद करने के लिए सेट किया है, और उन क्षेत्रों में जहां कोई ऑर्थोपोटोस नहीं हैं पृष्ठभूमि को प्रदर्शित करते हैं।

प्रदर्शन के लिए, मुझे इन सभी स्रोत चित्रों को एक छोटे आकार में प्रदर्शित करने के लिए एक resampled समग्र अवलोकन छवि में विलय करने में सक्षम होने की आवश्यकता है जहां ऑर्थोपोटोस के अधिक एक बार में देखे जा सकते हैं।

मैं GDAL को मर्ज करने और अवलोकन को फिर से शुरू करने के लिए उपयोग करने का प्रयास कर रहा हूं, लेकिन डिफ़ॉल्ट रूप से यह नोड्टा क्षेत्रों में काले रंग के साथ resampled मिश्रित GeoTIFF टाइल बनाने के लिए प्रकट होता है, और मैपगाइड मुझे रंग के साथ पारदर्शी रूप से काले रंग की सेटिंग करने की अनुमति नहीं देता है।

क्या मेरे लिए कुशलता से कोई रास्ता है जो मुझे चाहिए?

मैंने GDAL का उपयोग करके जो जवाब दिया, वह मैंने प्रदान किया है, लेकिन अन्य स्रोत और मालिकाना दोनों प्रकार के छवि प्रसंस्करण उपयोगिताओं और जीआईएस अनुप्रयोगों का उपयोग करके समाधान देखना पसंद करेंगे।

जवाबों:


15

इस समस्या से निपटने का मेरे लिए सबसे आसान तरीका GDAL वर्चुअल फॉर्मेट का उपयोग करना था । इस प्रारूप ने मुझे छवियों के पूरे सेट को एक एकल छवि वस्तु के रूप में व्यवहार करने की अनुमति दी, और इसे तीन अपेक्षाकृत सरल चरणों में बदल दिया।

वर्चुअल डेटासेट बनाना

GDAL ( Tamas Szekeres के GISInternals विंडोज बायनेरिज़ और OSGeo4W के हाल के संस्करणों सहित ) में एक उपयोगिता शामिल है जिसे gdalbuildvrt कहा जाता है जिसका उपयोग एक प्रारंभिक आभासी डेटासेट बनाने के लिए किया जा सकता है।

इसका उपयोग करने का एक सरल तरीका यह है कि अपनी सभी छवियों को एक टेक्स्ट फ़ाइल में जोड़ा जाए, और फिर उस टेक्स्ट फ़ाइल को gdalbuildrt के इनपुट के रूप में उपयोग करें। यहां एक उदाहरण दिया गया है (आपको दूसरी कमांड को एक पंक्ति में रखना होगा):

dir /b *.tif > my_images.txt
gdalbuildvrt 
  -hidenodata 
  -vrtnodata "255 255 255" 
  -resolution highest 
  -input_file_list my_images.txt 
  my_image.vrt

यह आपको एक XML फ़ाइल के साथ छोड़ देगा जिसे आप सभी GDAL संचालन के लिए एकल छवि के रूप में मान सकते हैं। यह आंतरिक रूप से सफेद के रूप में नोडता का भी प्रतिनिधित्व करता है, लेकिन इससे पढ़ने वाले उपकरणों से नोडटा की परिभाषा को छुपाता है।

Resampled अवलोकन बनाना

इसके बाद, आप अवलोकन छवि का पुन: नमूनाकरण और आउटपुट करेंगे। आप इसे gdal_translate या gdalwarp के साथ कर सकते हैं । इनमें से किसी के लिए, याद रखें कि परिणामी आकार width * height * 3(8 बिट बैंड की संख्या) बाइट्स होगा। यदि यह 4GB से बड़ा होगा, तो आप BigTIFF को अपने आउटपुट (-co "BIGTIFF = YES") के रूप में निर्दिष्ट करने के लिए सिंटैक्स के लिए GeoTIFF विकल्पों को देखना चाहेंगे ।

Gdal_translate के लिए, आपको आसान gdalinfo कमांड का उपयोग करके आभासी छवि के आयामों को निर्धारित करना होगा । इन आयामों को लें और पिक्सेल में आपकी फ़ाइल की आउटपुट चौड़ाई और ऊँचाई निर्धारित करने के लिए प्रत्येक को कुछ सुसंगत कारक से विभाजित करें।

कमांड कुछ इस तरह दिखाई देगी (एक लाइन पर):

gdal_translate
  -outsize 53120 14000
  -co "TILED=YES"
  -co "PROFILE=GEOTIFF"
  -co "BLOCKXSIZE=256"
  -co "BLOCKYSIZE=256"
  my_image.vrt
  my_image.tif

गालवडप के लिए, आपको परिणामी पिक्सेलाइज़ को जानना होगा; इस मामले में मैं .5 मीटर का उपयोग कर रहा हूं। आप चाहें तो रेज़मैप्लिंग विधि पर कॉल भी कर सकते हैं। मैं रूढ़िवादी साक्षात्कार के लिए क्यूबिक्सप्लिन पसंद करता हूं। यह नरम है, लेकिन आप पूर्ण संकल्प के लिए इन का उपयोग नहीं करने जा रहे हैं और मेरे अनुभव में यह अधिक संकुचित छवि बनाता है यदि आप JPEG या ECW जैसी किसी चीज़ का उपयोग कर रहे हैं।

gdalwarp 
  -r cubicspline 
  -of GTiff 
  -dstnodata "255 255 255" 
  -tr 0.5 0.5 
  -co "PROFILE=GEOTIFF" 
  -co "BIGTIFF=YES" 
  -co "TILED=YES" 
  -co "BLOCKXSIZE=256"
  -co "BLOCKYSIZE=256"
  my_image.vrt 
  my_image.tif

आप भी इन resampled GeoTIFF साक्षात्कार के लिए JPEG संपीड़न विकल्पों का उपयोग करने पर विचार कर सकते हैं; यह आउटपुट फ़ाइल को काफी हद तक ( फ्रैंक के अनुसार ) केवल एक मामूली प्रदर्शन दंड के साथ सिकुड़ता है ।

  -co "COMPRESS=JPEG" 
  -co "JPEG_QUALITY=80" 
  -co "PHOTOMETRIC=YCBCR"

overviews

आप आंतरिक "पिरामिड" के निर्माण के लिए परिणामी छवि पर काम करने वाले गदलदादो कमांड को भी चलाना चाहेंगे , ताकि पूर्ण छवि आयामों की तुलना में कम प्रस्तावों के लिए अनुरोध डेटा के सबसेट के साथ मिल सकें। प्रदर्शन में वृद्धि ज्यादातर मामलों में डिस्क स्थान के लायक है। आप अपने द्वारा उपयोग किए जाने वाले स्तरों के साथ खेलना चाहते हैं; बहुत बड़ी छवियों के लिए आप कुछ ड्रॉप करने में सक्षम हो सकते हैं। गदलदादो कमान कुछ इस तरह दिखती है:

gdaladdo 
  -r average 
  my_image.tif 
  2 4 8 16 32 64 128 256

मैं इन स्तरों के साथ इष्टतम प्रदर्शन के लिए प्रयोग करने का सुझाव दूंगा। आप पा सकते हैं कि आपकी छवि के आकार के आधार पर, आपके ऐप्लिकेशन के लिए एक अलग रेज़मैप्लिंग अंतराल बेहतर है या, आप कुछ उच्चतर संख्याएँ गिरा सकते हैं (या कि और अधिक आवश्यक हैं)

इसके अलावा, यदि आप एक बाहरी अवलोकन (-ro विकल्प का उपयोग करके) JPEG संपीड़न कॉन्फ़िगरेशन लाइनों को जोड़ने पर विचार कर रहे हैं:

  --config COMPRESS_OVERVIEW JPEG 
  --config PHOTOMETRIC_OVERVIEW YCBCR 
  --config INTERLEAVE_OVERVIEW BAND 

(मेरा मानना ​​है कि ये माता-पिता GeoTIFF से अंतर्निहित ओवरव्यू के लिए विरासत में मिले हैं)

टिप्पणियाँ

जब इस समस्या का सामना करना पड़ा, तो मैंने freenode.irc.net पर #gdal चैनल पर पूछा। यह एक अद्भुत संसाधन है, और मैं हॉवर्ड बटलर, फ्रैंक वार्मर्डम और यहां तक ​​कि मेरी मदद करने के लिए राउल्ट का भी ऋणी हूं।


पूरा होने के लिए धन्यवाद, समय लेने के लिए, और मुझे यकीन है कि यह समय था, पूरे वर्कफ़्लो को कवर करने के लिए और न केवल विशिष्ट बिट जिसने सवाल का जवाब दिया।
मैट विल्की जुएल

1
यह देखना दिलचस्प होगा कि क्या gdalsetnull.py VRT पर काम करता है, तो "NoDataValue /> एंटिटी" जोड़कर एक टेक्स्ट एडिटर में VRT फाइल को एडिट करें , तो यह अनावश्यक होगा।
मैट विल्की जुएल

1
@matt wilkie, यह निश्चित रूप से इस साइट के लिए काम करने और स्वरूपण का एक सा था, लेकिन मैंने इसे पहले भी अपने ब्लॉग में एक बड़े वर्कफ़्लो के हिस्से के रूप में कवर किया था: jasonbirch.com/nodes/2009/08/11/290/fttools- ftw-gdal यह सुझाव निश्चित रूप से एक कोशिश के काबिल है!
जेसनबिरच

सामान्य विंडोज़ सीएमडी नोट: ^एक लाइन ब्रेक के लिए कैरट का उपयोग करें जो निष्पादित होने पर शामिल हो जाएगा (उदाहरण के ^लिए ऊपर दी गई प्रत्येक कोड लाइन उदाहरण के अंत में जोड़ने के लिए दोनों उपयुक्तता और रन-क्षमता)। महत्वपूर्ण चेतावनी: कभी नहीं एक कैरट के साथ एक फ़ाइल या कमांड लाइन खत्म जब तक आप चाहते हैं कि आह्वान सभी स्मृति की खपत
मैट Wilkie

3

हां, लेकिन परीक्षण और त्रुटि के माध्यम से मैं यह पता लगाने में सक्षम था कि -vrtnodata 255 में नॉडटा के रूप में हर चीज को सफेद करने का प्रभाव है , न कि केवल मानचित्र से, जो कि gdal2tiles -a ध्वज के अनुसार अल्फा पारदर्शिता के साथ व्यवहार करता है।

तो आप अपने मामले में कुछ पारदर्शी छवि के साथ अंत करते हैं, मेरे मामले में धराशायी सड़कों के सफेद हिस्से। यह isnt टर्मिनल है, लेकिन यह सुनिश्चित करना अच्छा होगा कि "no src छवि" में gdal2tiles निर्दिष्ट करें, या तो vrt में मूल voids के परिणामस्वरूप, या ताना के परिणामस्वरूप। मेरे सेट के लिए हल्के नीले रंग की एक छाया बस बात होगी।

और भी अधिक परीक्षण और त्रुटि के बाद ऐसा लगता है कि हेडेनोडाटा प्रमुख है। मुझे नहीं पता कि ये उपकरण इतने न्यूनतम रूप से प्रलेखित क्यों हैं। Heres मेरे लिए क्या काम करता है, गदल 1.8।

gdalbuildvrt test.vrt -vrtnodata "209 231 245" -hidenodata BX*.tif BY*.tif
gdal2tiles -p raster -s nztm.prj test.vrt out

यह भी देखें gdal nearblack उपयोगिता gdal.org/programs/nearblack.html , जो केवल छवि के किनारे पर पिक्सेल का इलाज करती है और मध्य की अनदेखी करती है
मैट विल्की

0

मैं GDAL से बहुत परिचित नहीं हूं, लेकिन मुझे लगता है कि एक विधि या कमांड उपलब्ध है, जहां आप एक निश्चित मान के पिक्सेल को दूसरे मूल्य के साथ सेट कर सकते हैं?

इसके साथ करने के लिए कुछ भी नहीं है, लेकिन सादे एसक्यूएल में जैसे कुछ (बस उदाहरण के लिए - यह बहुत अधिक छद्म कोड है):

UPDATE रेखापुंज सेट पिक्सेल = 255 जहां पिक्सेल = NoData;

मैं इसका जवाब जानना चाहूंगा!


GDAL में आपके छद्मकोश के समान प्रसंस्करण के दौरान अन्य रंगों के साथ रंगों को बदलने के लिए कई तरीके शामिल हैं, और एक स्टैंडअलोन उपयोगिता जिसे नियरब्लैक कहा जाता है जो आपको संपीड़न कलाकृतियों वाले छवि किनारों को साफ करने और यदि वांछित हो तो उन्हें सफेद करने की अनुमति देता है। इनमें से कोई भी उस समय के साथ काम कर रहे डेटा की मात्रा के साथ अच्छी तरह से काम नहीं करता था।
जेसनबिरच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.