สเกล 16 บิตถึง 8 บิตภายในระยะโดยใช้ GDAL


11

ฉันกำลังมองหาการปรับขนาดภาพ TIFF ที่ไม่ได้ลงชื่อ 16 บิตเป็นภาพ 8 บิตโดยใช้ GDAL (OSGeo4W) อย่างไรก็ตามฉันต้องการ จำกัด ค่าพิกเซลเพื่อให้อยู่ในช่วงของภาพ 8 บิต สิ่งที่ฉันหมายถึงคือฉันต้องการให้แน่ใจว่าสัดส่วนภาพในภาพ 16 บิตนั้นแสดงในรูป 8 บิต (0-255) การใช้ gdal_translate เพื่อแปลงจาก 16 บิตเป็น 8 บิตจะตัดค่าพิกเซลและไม่สร้างภาพ RGB ฉันไม่แน่ใจในสิ่งที่ฟังก์ชั่นและการตั้งค่าที่จะโทรจากภายใน gdal_translate หรือถ้ามีตัวเลือกที่ดีกว่า


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 ถูกเพิ่มในคำถามเป็น UPDATE ภาพคือภาพสเตอริโอระดับ 3 คำสั่ง gdal_translate ที่ใช้คือ: gdal_translate -ot Byte input.tif output.tif
Ryan Garnett

1
บางทีข้อมูลจริงของภาพ 16 บิตอาจใช้เพียงบางส่วนของช่วงเต็ม การตรวจสอบฮิสโตแกรมด้วยตัวอย่างเช่น QGIS อาจเปิดเผยได้ นอกจากนี้คุณยังสามารถเพียงแค่ต้องลองกับ -scale พารามิเตอร์gdal.org/gdal_translate.html หากคุณใช้เอาท์พุท RGB จาก 4 band ดั้งเดิมเลือกสามในนั้นด้วยพารามิเตอร์ -b ตัวอย่างเช่น-b 1 -b 2 -b 3
user30184

คำตอบ:


21

หากคุณไม่ต้องการให้ตัดค่าที่สูงกว่า 255 คุณต้องลดขนาดลง เพื่อจุดประสงค์นั้น gdal_translate มีตัวเลือก-scale:

จากคู่มือ :

-scale [src_min src_max [dst_min dst_max]] Rescale ค่าพิกเซลอินพุตจากช่วง 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 ^ nbits ในฐานะที่เป็นค่าต่ำสุดมักจะเป็น 0 2^nbits-1ค่าสูงสุดคือ

  • 8 บิต -> 2 ^ 8 = 256 ค่า -> 0-255
  • 16 บิต -> 2 ^ 16 = 65536 vaues -> 0-65535
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.