GDAL का उपयोग कर सीमा के भीतर स्केल 16 बिट से 8 बिट


11

मैं GDAL (OSGeo4W) का उपयोग कर एक 8 बिट छवि के लिए 16 बिट अहस्ताक्षरित टिफ़ छवि को स्केल करना चाह रहा हूं। हालाँकि मैं पिक्सेल मानों को बाधित करना चाहता हूं ताकि वे 8 बिट इमेजरी की सीमा के भीतर रहें। मेरा मतलब क्या है, मैं यह सुनिश्चित करना चाहता हूं कि 16bit छवि में दृश्य अनुपात 8bit छवि (0-255) में दर्शाया गया है। 16bit से 8bit में परिवर्तित करने के लिए gdal_translate का उपयोग करके पिक्सेल मानों में कटौती की जाती है और RGB छवि का उत्पादन नहीं करता है। मुझे इस बात का पता नहीं है कि गाल्ड_ट्रांसलेट के भीतर कॉल करने के लिए कौन सा फ़ंक्शन और सेटिंग है, या यदि कोई बेहतर विकल्प है।


GDALINFO

C:\>gdalinfo C:\Projects\Stormwater\ForPCI\images\1537TORO_6cm_04761_RGBI.tif
Driver: GTiff/GeoTIFF
Files: C:\Projects\Stormwater\ForPCI\images\1537TORO_6cm_04761_RGBI.tif
Size is 17310, 11310
Coordinate System is `'
Metadata:
  TIFFTAG_DATETIME=2015:05:03 12:27:13
  TIFFTAG_IMAGEDESCRIPTION=UltraCam-Lvl03
--------------
CAM_ID: UC-SXp-1-50215465 [3]
IMG_NO: 4761
RECORD_GUID: 8fc3d7a9-d2e5-40e5-babf-939f1f803dcf
IMG_GUID: C850D0A4-39CA-4BC8-ACD7-81A363D78C6E
FILE_GUID: 86C4F8E4-A2FD-43FB-B3B1-4C4ED8DF0E42
LICENSE_ID: 820342819
SOFTWARE: UltraCam Aerial Radiometry Core 12.6.1408.2501
PIXEL_SIZE_WIDTH: 6 [micron]
PIXEL_SIZE_HEIGHT: 6 [micron]
APERTURE: F_8
EXPOSURE_TIME: 0.002000000000 [s]
HIGH_ISO_MODE_CAPTURE: off
HIGH_ISO_MODE_PROCESSING: off

----- Inner Orientation -----
PRINCIPAL_DISTANCE: 100.500000000000 [mm]
PRINCIPAL_POINT_X: -0.000000000000 [mm]
PRINCIPAL_POINT_Y: 0.180000000000 [mm]
SENSOR_AREA_WIDTH: 103.860000000000 [mm]
SENSOR_AREA_HEIGHT: 67.860000000000 [mm]
-----------------------------

----- Exposure Annotation Data -----
MID_EXPOSURE_CORRECTION: 0.000762000000 [s]
FMS_SENSOR_CODE: UCXp
FMS_CAMERA_PORT: 1
FMS_EXPOSURE_NUMBER: 4761
FMS_PROJECT: 1537TORO
FMS_AREA: 1537TORO_6cm_6030
FMS_LINE_NUMBER: 47
FMS_SEGMENT_NUMBER: 1
FMS_WAY_POINT_NUMBER: 0
GPS_DATE: 150412
GPS_TIME: 162517
GPS_LATITUDE: N43.745319 [degree]
GPS_LONGITUDE: W079.358953 [degree]
GPS_ALTITUDE: 1159 [m]
GPS_POSITION_SOLUTION: GPS
GPS_TRACK_OVER_GROUND: 73 [degree]
GPS_ABOVE_GROUND_LEVEL: 1008.7 [m]
GPS_GROUND_SPEED: 80.4 [mps]
------------------------------------

----- Level-3 Parameters -----
IMG_TYPE: High resolution multi channel RGBI
ROTATION: 0 [degree]
------------------------------------
TIFFTAG_RESOLUTIONUNIT=1 (unitless)
TIFFTAG_SOFTWARE=UltraCam Aerial Radiometry Core 12.6.1408.2501
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,11310.0)
Upper Right (17310.0,    0.0)
Lower Right (17310.0,11310.0)
Center      ( 8655.0, 5655.0)
Band 1 Block=17310x1 Type=UInt16, ColorInterp=Red
Band 2 Block=17310x1 Type=UInt16, ColorInterp=Green
Band 3 Block=17310x1 Type=UInt16, ColorInterp=Blue
Band 4 Block=17310x1 Type=UInt16, ColorInterp=Undefined

1
क्या आप अपने द्वारा उपयोग की जा रही इमेजरी के बारे में कुछ विवरण प्रदान कर सकते हैं?
हारून

उदाहरण के लिए स्रोत फ़ाइल के gdalinfo रिपोर्ट को संलग्न करके। आपके द्वारा उपयोग की गई सटीक gdal_translate कमांड भी लिखें।
user30184

gdalinfo को एक अद्यतन के रूप में प्रश्न में जोड़ा गया है। इमेजरी स्तर 3 स्टीरियो इमेजरी है। Gdal_translate कमांड का उपयोग किया गया था: gdal_translate -ot Byte input.tif output.tif
Ryan Garnett

1
शायद 16 बिट इमेजरी का वास्तविक डेटा केवल पूर्ण सीमा के संकीर्ण स्लाइस का उपयोग कर रहा है। उदाहरण के लिए QGIS के साथ हिस्टोग्राम की जाँच से यह पता चल सकता है। तुम भी बस के साथ एक कोशिश कर सकते हैं -Sale पैरामीटर gdal.org/gdal_translate.html । अगर आप 4 बैंड ओरिजिनल se.lect में से RGB आउटपुट को भटकते हैं, तो उनमें से तीन को -b पैरामीटर के साथ, उदाहरण के लिए-b 1 -b 2 -b 3
user30184

जवाबों:


21

यदि आप 255 से ऊपर के मानों को काटना चाहते हैं, तो आपको उन्हें नीचे रखना होगा। उस प्रयोजन के लिए gdal_translate विकल्प प्रदान करता है -scale:

से मैनुअल :

-काले [src_min src_max [dst_min dst_max]]: श्रेणी src_min से src_max से रेंज dst_min से dst_max तक इनपुट पिक्सेल मानों को पुनर्विक्रय करें। यदि छोड़ा गया आउटपुट रेंज 0 से 255 है। यदि छोड़ा गया इनपुट स्रोत स्रोत डेटा से स्वचालित रूप से गणना की जाती है।

तो आप जो उपयोग कर सकते हैं वह निम्नलिखित है:

gdal_translate -of GTiff -ot Byte -scale 0 65535 0 255 src_dataset dst_dataset

255 और 65535 क्यों?

आपके पास 2 ^ मान हैं। जैसा कि न्यूनतम मान आमतौर पर 0 है, अधिकतम मूल्य है 2^nbits-1

  • 8 बिट -> 2 ^ 8 = 256 मान -> 0-255
  • 16 बिट -> 2 ^ 16 = 65536 वाउज़ -> 0-65535
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.