我有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。因此,我有3个问题:
- 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,但是它假定为Byte像素,并且我有UInt16像素(我尝试过
-co "PHOTOMETRIC=rgb"
,并遇到错误)。因此,我无法为输出文件指定PHOTOMETRIC标签。EXTRASAMPLES指定每个像素具有N个额外的分量。我不确定如何使用此标记创建合并的文件。或者,如果我需要它。
因此,在更新2中,我建议创建一个ColorTable,但是如何呢?在我的3个输入文件中,像素值从0到1023。是否必须将它们与颜色匹配?我必须创建一个具有1024个输入的ColorTable吗?怎么样?
在更新3中,似乎在创建合并文件时可以使用一些GeoTIFF标签,但是我不确定是否真的可以使用它们,或者如何使用。