समस्या के 2 भाग हैं। पहला यह है कि आप 16 बिट्स से 8 बिट में कनवर्ट करना चाहते हैं, और gdal_translate का -scale विकल्प यह करता है, जैसा कि पिछले उत्तर में बताया गया है।
-scale minOriginal maxOriginal minOutput maxOutput
दूसरी समस्या एक विपरीत वृद्धि की समस्या है: जब आप पुनर्विक्रय करते हैं, तो आप उन पिक्सेल के लिए एक उच्च विपरीत होना चाहते हैं जो रुचि रखते हैं। चेतावनी: जब आप पुनर्विक्रय करते हैं , तो कोई "जादू" विपरीत नहीं होता है, आप आमतौर पर कुछ जानकारी ढीली करते हैं । यह डेटा के विज़ुअलाइज़ेशन में सुधार करने के लिए किया जाता है, और पेशेवर सॉफ्टवेअर एक नई फ़ाइल लिखे बिना मक्खी पर ऐसा करते हैं। यदि आप अपने डेटा को और संसाधित करना चाहते हैं, तो आपके "ब्लैक" जियोटीफ़ में आपके jp2 जैसी ही जानकारी होती है और यह संसाधित होने के लिए तैयार है। यदि आप गणना करते हैं, जैसे, वनस्पति संकेत, यह "मूल" प्रतिबिंब मूल्यों के साथ किया जाना चाहिए, न कि पुनर्विकसित लोगों के साथ। कहा जा रहा है कि, यहाँ कुछ कदम 8 विज़ुअल इमेज बढ़ाने के लिए हैं।
@बेन ने आपको 0-1 से प्रतिबिंबित (इस उत्पाद के साथ 10000 से गुणा करके) को 0-255 तक पहुंचाने के लिए एक सामान्य तरीका दिया। यह सुरक्षित है (कोई बहिष्करण) नहीं है, लेकिन केवल बादलों और कुछ नंगी मिट्टी में वास्तव में उच्च प्रतिबिंब हैं, इसलिए आपको जमीन पर बहुत कुछ नहीं दिखता है (नंगे मिट्टी को छोड़कर) और पानी में कुछ भी नहीं है। इसलिए, आमतौर पर छवियों पर लागू विपरीत संवर्द्धन पूरी श्रृंखला का केवल सबसेट लेने में शामिल होते हैं। सुरक्षित पक्ष पर, आप इस ज्ञान का उपयोग कर सकते हैं कि आम पृथ्वी सतह सामग्री का अधिकतम प्रतिबिंब आमतौर पर 0.5 / 0.6 से नीचे है ( यहां देखें)कुछ उदाहरणों के लिए)। बेशक, यह मानता है कि आपकी छवि को वायुमंडलीय रूप से सही किया गया है (L2A चित्र)। हालाँकि, परावर्तन की सीमा प्रत्येक वर्णक्रमीय बैंड में भिन्न होती है और आपके पास हमेशा अपने हित के क्षेत्र में सबसे चमकदार पृथ्वी की सतह नहीं होती है। यहां बताया गया है कि "सुरक्षित" विधि कैसे दिखती है (0.4 की अधिकतम परावर्तन के साथ, @RoVo द्वारा सुझाए गए 4096 की तरह)
दूसरी ओर, इसके विपरीत प्रत्येक बैंड के लिए अनुकूलित किया जा सकता है। आप इस सीमा को मैन्युअल रूप से परिभाषित कर सकते हैं (जैसे आप पानी के रंग में रुचि रखते हैं और आप पानी के अधिकतम अपेक्षित प्रतिबिंब मूल्य को जानते हैं) या छवि आँकड़ों के आधार पर। एक आमतौर पर इस्तेमाल की जाने वाली विधि में लगभग 95% मान रखने और "छोड़ने" (बहुत अंधेरा -> 0 या बहुत उज्ज्वल -> 255) बाकी हैं, जो कि औसत मूल्य +/- 1.96 * के आधार पर सीमा को परिभाषित करने के समान है। मानक विचलन। बेशक, यह केवल एक सन्निकटन है क्योंकि यह एक सामान्य वितरण को मानता है, लेकिन यह व्यवहार में काफी अच्छा काम करता है (सिवाय इसके कि जब आपके पास बहुत अधिक बादल हों या यदि आँकड़े कुछ नोडेटा मान का उपयोग करते हैं)।
उदाहरण के लिए अपना पहला बैंड लें:
माध्य = 320
std = 536
95% आत्मविश्वास अंतराल = [-731: 1372]
लेकिन निश्चित रूप से प्रतिबिंब हमेशा शून्य से बड़ा होता है, इसलिए आपको न्यूनतम 0 पर सेट करना होगा।
gdal_translate -scale 0 1372 0 255 -ot Byte B01.jp2 B01-scaled.tif
और अगर आपके पास गदल का हालिया संस्करण है, तो आप -scale_ {band #} का उपयोग कर सकते हैं (0 255 डिफ़ॉल्ट आउटपुट है, इसलिए मैं इसे दोहराता नहीं हूं) ताकि आपको सिंगल बैंड को विभाजित करने की आवश्यकता न हो। इसके अलावा मैं एक मध्यवर्ती फ़ाइल के रूप में tif के बजाय vrt का उपयोग करता था (पूरी छवि लिखने की आवश्यकता नहीं है: एक आभासी एक ही पर्याप्त है)
gdalbuildvrt -separate stack.vrt B04.jp2 B03.jp2 B02.jp2
gdal_translate -scale_1 0 1372 -scale_2 0 1397 -scale_3 0 1430 -ot Byte stack.vrt im_rescaled.tif
ध्यान दें कि आपके आंकड़े "कलाकृतियों" जैसे बादलों और नोआदाता से बहुत प्रभावित हैं। एक तरफ, जब आपके पास अत्यधिक मूल्य होते हैं, तो विचरण को कम करके आंका जाता है। दूसरी ओर, आपके औसत को तब समझा जाता है, जब "शून्य" मानों की एक बड़ी मात्रा होती है (उदाहरण के समान स्वचालित रूप से विपरीत छवि को बहुत उज्ज्वल बना देना) और यह तब अतिरंजित हो जाएगा जब बादलों का बहुमत था (जो बना देगा) छवि भी अंधेरे)। इस स्तर पर, परिणाम इसलिए सबसे अच्छा नहीं होगा जो आप प्राप्त कर सकते हैं।
एक स्वचालित समाधान पृष्ठभूमि और क्लाउड मानों को "नोडटा" पर सेट करना होगा और NoData के बिना अपने आँकड़ों की गणना करना होगा ( NoData के बिना कंप्यूटिंग आँकड़ों के विवरण के लिए इस पोस्ट को देखें, और यह एक उदाहरण के लिए NoData से 4000 से अधिक बड़े मान सेट करने के लिए है )। एक एकल छवि के लिए, मैं आमतौर पर सबसे बड़े संभव क्लाउड-मुक्त सबसेट पर आँकड़ों की गणना करता हूँ। एक सबसेट के आँकड़ों के साथ, जहाँ कोई "NoData" (आपकी छवि का शीर्ष बाएँ) नहीं है, यह अंतिम परिणाम देता है। आप देख सकते हैं कि सीमा "सुरक्षित" श्रेणी का लगभग आधा है, जिसका अर्थ है कि आपके पास दो बार इसके विपरीत है:
gdal_translate -scale_1 38 2225 -scale_2 553 1858 -scale_3 714 1745 -ot Byte stack.vrt im_rescaled.tif
अंतिम टिप्पणी के रूप में, gdal_constrast_stretch अच्छा लग रहा है, लेकिन मैंने परीक्षण नहीं किया है
gdalinfo -hist merged.tif