GDAL을 사용하여 범위 내에서 16 비트에서 8 비트로 스케일링


11

GDAL (OSGeo4W)을 사용하여 16 비트 부호없는 tiff 이미지를 8 비트 이미지로 스케일링하려고합니다. 그러나 픽셀 값을 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
사용중인 이미지 유형에 대한 세부 정보를 제공해 주시겠습니까?
Aaron

예를 들어 소스 파일의 gdalinfo 보고서를 첨부합니다. 사용한 정확한 gdal_translate 명령도 작성하십시오.
user30184

질문에 gdalinfo가 업데이트로 추가되었습니다. 이미지는 레벨 3 스테레오 이미지입니다. 사용 gdal_translate 명령했다 : gdal_translate -ot 바이트 input.tif output.tif
라이언 가넷

1
아마도 16 비트 이미지의 실제 데이터는 전체 범위의 좁은 슬라이스 만 사용하고있을 것입니다. 예를 들어 QGIS로 히스토그램을 확인하면이를 알 수 있습니다. -scale 매개 변수 gdal.org/gdal_translate.html을 사용해보십시오 . 4 대역의 RGB 출력을 원한다면 -b 매개 변수로 3 가지를 선택하십시오.-b 1 -b 2 -b 3
user30184

답변:


21

255보다 큰 값을 잘라내려면 크기를 줄여야합니다. 이를 위해 gdal_translate는 다음 옵션을 제공합니다 -scale.

로부터 수동 :

-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 ^ nbits 값이 있습니다. 최소값은 일반적으로 0이므로 최대 값은 2^nbits-1입니다.

  • 8 비트-> 2 ^ 8 = 256 값-> 0-255
  • 16 비트-> 2 ^ 16 = 65536 개-> 0-65535
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.