GDAL을 사용하여 래스터 밴드의 색상 해석을 추가하는 방법은 무엇입니까?


9

3 개의 개별 1 밴드 GeoTIFF 파일이 있습니다. 밴드의 색상 해석은 회색입니다. 3 밴드 RGB 파일을 원합니다. gdal_merge.py를 사용했습니다

gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif

그러나 결과 output_file.tif의 3 개 대역에 대한 색상 해석은 회색, 정의되지 않은, 정의되지 않습니다. 그 외에도 모든 픽셀은 0 입니다.

pct2rgb.py를 실행하면 RGB 파일이 생성됩니다.

pct2rgb.py output_file.tif output_file_rgb.tif

그러나 물론 픽셀도 0입니다. 그래서 세 가지 질문이 있습니다.

  • gdal_merge.py가 3 개의 1 밴드 파일을 하나의 3 밴드 RGB 파일로 결합하는 올바른 도구입니까?
  • 밴드에 대해 정의되지 않은 색상 해석이 필요한 이유는 무엇입니까?
  • pct2rgb가이 색상 해석을 사용하여 3 대역 파일을 RGB 파일로 변환하는 데 적합한 도구입니까?

업데이트 : 래스터에는 색상 표가 없습니다. 색상 해석 만 : 회색.

반면에 픽셀 값은 0에서 1023 사이입니다 (고의적 임).

더 많은 데이터 : 회전 된 래스터 (북쪽이 아님)이지만 모두 동일한 지리 변형을 가지고 있습니다.

업데이트 2 : 이미지를 북쪽으로 만들어 VRT를 구성하고 각 밴드에 대해 ColorInterp를 추가 할 수는 있지만 여전히 출력 결과에서 회색, 정의되지 않은, 정의되지 않은 색상으로 해석됩니다.

문제는 적어도 첫 번째 밴드에 색상 표를 만들어야한다는 것입니다. 나는 그것들을 만드는 방법을 알고 있지만 내 테이블에 얼마나 많은 항목이 있어야하는지 모르겠습니다. GDAL Raster FAQ의 예에 왜 13 개의 항목이 있습니까? 도움이되는 경우 모든 픽셀의 값은 0에서 1023 사이입니다.

업데이트 3 : TIFF 형식에는 각 밴드의 색상 해석을 실제로 지정할 방법이 없습니다. TIFF 파일을 읽을 때 GDAL이 색상 해석을 작성하는 방법은 PHOTOMETRIC 및 EXTRASAMPLES 태그 값의 조합입니다 .

이 태그에 대한 읽기 :

  • PHOTOMETRIC 은 이미지 데이터의 색 공간을 나타냅니다. 2 값은 픽셀 값의 구성 요소가 RGB임을 의미하지만 바이트 픽셀을 가정하고 UInt16 픽셀을 가지고 있습니다 (시도 -co "PHOTOMETRIC=rgb"하고 오류가 발생했습니다). 따라서 출력 파일에 PHOTOMETRIC 태그를 지정할 수 없습니다.

  • EXTRASAMPLES 는 각 픽셀에 N 개의 추가 구성 요소가 있도록 지정합니다. 이 태그를 사용하여 병합 된 파일을 만드는 방법을 잘 모르겠습니다. 또는 필요한 경우.

그래서 업데이트 2에서는 ColorTable을 만들 것을 제안하지만 어떻게해야합니까? 3 개의 입력 파일에서 픽셀 값은 0에서 1023 사이입니다. 색상과 일치해야합니까? 1024 개의 입력으로 ColorTable을 만들어야합니까? 어떻게?

업데이트 3에서는 병합 된 파일을 만들 때 일부 GeoTIFF 태그를 사용할 수 있지만 실제로 사용할 수 있는지 또는 어떻게 사용할 수 있는지 잘 모르겠습니다.


1
gdal_merge가 -co를 존중하지 않는 이유에 상관없이 gdal_merge를 사용한 다음 gdal_translate -co PHOTOMETRIC = RGB를 사용하십시오. 이것은 나를 위해 일하는 것처럼 보였다 . 나는 당신의 목표를 오해하고 있지만.

팁 주셔서 감사합니다! 3 개의 단일 밴드 지오텍을 하나의 3 밴드 지오 스틱에 병합하고 싶습니다. 내 문제는 gdal_merge의 출력이 실제로 비어 있습니다 (픽셀 = 0)입니다. 그 출력을 아무것도 사용할 수 없습니다.
Jorge Arévalo

어딘가에 데이터를 게시 할 수 있습니까?

상사에게 물었고 데이터를 게시 할 수 없습니다 :-(. 실제로는 독립 실행 형 코드와 파일을 혼합하여 출력의 입력 파일을 대역별로 복사 할 수 있습니다 .gdal_merge로하고 싶습니다. 내 poblem은 gdal_merge를 사용하여 출력 파일의 RGB 색상 해석을 설정할 수 없습니다
Jorge Arévalo

어쩌면 비슷한 문제가 있었을 것입니다. rgb2pct.py와 함께 작동합니다. 왜 냐고? 명령 설명 :이 유틸리티는 다운 샘플링 된 RGB 히스토그램에서 중간 컷 알고리즘을 사용하여 지정된 RGB 이미지에 대한 최적의 의사 색상 테이블을 계산합니다. 그런 다음 확장 rgb를 사용하여 gdal_translate를 실행합니다.

답변:


6

gdal_merge.py는 입력 이미지를 '스택'하는 올바른 도구입니다.

첫 번째 밴드에 유효한 색상 표가 있다고 가정하면 다음을 사용할 수 있습니다.

gdal_merge.py -separate -pct -o output_file.tif file1.tif file2.tif file3.tif

참고 : 명령이 -o output_file.tif입력 목록 이전 에 형식이 변경되었습니다 .

문서에서 :

-pct : 첫 번째 입력 이미지에서 의사 색상 테이블을 잡고 출력에 사용하십시오. 이 방법으로 의사 색상 이미지를 병합하면 모든 입력 파일이 동일한 색상 표를 사용한다고 가정합니다.

출력물을 테스트하여 gdalinfo -stats올바르게 쌓여 있는지 확인합니다.

OP 용으로 업데이트

로부터 를 OSGeo 목록 이 결과를 확인하기 위해 다른 형식을 시도 할 수처럼, 그것은 본다 :

TIFF 형식에서는 각 대역의 색상 해석을 실제로 지정할 수있는 방법이 없습니다. TIFF 파일을 읽을 때 GDAL이 색상 해석을 작성하는 방법은 PHOTOMETRIC 및 EXTRASAMPLES 태그 값의 조합입니다.

-Evan (포스터)은 GDAL을 안팎으로 알고 있습니다.


실제로 그렇게했지만 "오류 6 : 다중 샘플 TIFF 파일에는 SetColorTable ()이 지원되지 않습니다."라는 메시지가 나타납니다. 그리고 모든 픽셀에 대해 0을 얻습니다. 이 오류의 의미에 대해 잘 모르겠습니다.
Jorge Arévalo

좋아요, 업데이트 된 질문입니다. 첫 번째 밴드의 색상 표가 필요합니다.
Jorge Arévalo

음 ... 응답 주셔서 감사합니다. 그 옵션을 시도하고 있습니다. 내 데이터 유형이 int가 아니기 때문에 PHOTOMETRIC = rgb를 사용할 수없는 것 같습니다. 그러나 나는 그것에있다…
Jorge Arévalo

3

내가 생각할 수있는 첫 번째 방법은 vrt를 작성하고 편집하고 번역하는 것입니다.

gdalbuildvrt -separate output.vrt file1.tif file2.tif file3.tif

필요한 경우 색상 interp 태그를 추가하십시오.

...
<VRTRasterBand dataType="Byte" band="1">
<ColorInterp>Red</ColorInterp>
<NoDataValue>255</NoDataValue>
<ComplexSource>
  <SourceFilename relativeToVRT="1">test.tif</SourceFilename>
  <SourceBand>1</SourceBand>
  <SourceProperties RasterXSize="42" RasterYSize="22" DataType="Byte" BlockXSize="42" BlockYSize="22" />
  <SrcRect xOff="0" yOff="0" xSize="42" ySize="22" />
  <DstRect xOff="0" yOff="0" xSize="42" ySize="22" />
  <NODATA>-32768</NODATA>
</ComplexSource>

그리고:

gdal_translate output.vrt output.tif

시도했지만 래스터 파일이 회전됩니다.
Jorge Arévalo

그들이 동일한 SRS / 지오 변환을 가지고 있지 않다는 것을 의미합니까?

아니요, 모두 동일한 지형 변형이 있지만 북쪽 래스터가 아닙니다 (회전 매개 변수가 0이 아님). 그리고 gdalbuildvrt는 회전 지오 변환을 지원하지 않습니다. 나는 그들을 워프하고 싶지 않습니다.
Jorge Arévalo

알았어 노스 래스터를 만들기 위해 워프를 만들면 VRT를 빌드하고 필요한 곳에 ColorInterp을 추가해도 여전히 회색, 정의되지 않은, 정의되지 않은 것을 구입할 수 있습니다. 첫 번째 밴드의 색상 표를 만들어야하지만 어떻게해야할지 모르겠습니다. 질문을 업데이트하겠습니다.
Jorge Arévalo

1

입력 계조 대역의 값은 0 ~ 1024이지만 RGB는 각 대역에 대해 0 ~ 255의 값만 허용합니다.

gdal_translate -scale [src_min src_max [dst_min dst_max]]소스 파일의 크기를 조정 하는 데 사용할 수 있습니다 .

두 번째 실행에서는 gdal_merge.py로 세 개의 밴드를 쌓고 적용 할 수 있습니다 -co "PHOTOMETRIC=rgb".

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.