У меня есть 3 отдельных 1-полосных файла GeoTIFF. Интерпретация цвета для полосы - серый. Я хочу 3-полосный файл RGB. Я использовал gdal_merge.py
gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif
Но цветовая интерпретация для 3-х полос результирующего output_file.tif - серый, неопределенный, неопределенный. Кроме того, все пиксели равны 0 .
Если я выполню pct2rgb.py, я получу RGB-файл:
pct2rgb.py output_file.tif output_file_rgb.tif
Но, конечно же, пиксели тоже равны 0. Итак, у меня есть 3 вопроса:
- Является ли gdal_merge.py правильным инструментом для объединения трех 1-полосных файлов в один 3-полосный RGB-файл?
- Почему я получаю неопределенную интерпретацию цвета для групп?
- Является ли pct2rgb правильным инструментом для преобразования 3-полосных файлов с такой цветовой интерпретацией в файлы RGB?
ОБНОВЛЕНИЕ : у растров нет таблицы цветов. Просто цветовая интерпретация: серый.
С другой стороны, значения пикселей изменяются от 0 до 1023 (это намеренно)
Больше данных: они повернутые растры (не на север), но все они имеют одинаковое геотрансформирование.
ОБНОВЛЕНИЕ 2 : я могу деформировать изображения, чтобы сделать их севернее, построить VRT и добавить ColorInterp для каждой полосы, но я все еще получаю интерпретацию цвета как серый, неопределенный, неопределенный в выходном результате.
Проблема в том, что мне нужно создать таблицу цветов, по крайней мере, в первой полосе. Я знаю способ их создания , но я не знаю, сколько записей должно быть в моей таблице. Почему в примере GDAL Raster FAQ есть 13 записей? Все пиксели имеют значения от 0 до 1023, если это помогает.
ОБНОВЛЕНИЕ 3 : По-видимому, в формате TIFF нет способа по-настоящему определить цветовую интерпретацию каждой полосы. Способ, которым GDAL создает интерпретацию цвета при чтении файла TIFF, представляет собой сочетание значения тега PHOTOMETRIC и EXTRASAMPLES .
Читая об этих тегах:
PHOTOMETRIC представляет цветовое пространство данных изображения. Значение 2 означает, что компоненты значения пикселя являются RGB, но оно предполагает использование байтовых пикселей, а у меня UInt16 пикселей (я пробовал
-co "PHOTOMETRIC=rgb"
и получил ошибку). Поэтому я не могу указать тег PHOTOMETRIC для выходного файла.EXTRASAMPLES указывает, что каждый пиксель имеет N дополнительных компонентов. Я не уверен, как использовать этот тег для создания моего объединенного файла. Или если мне это нужно.
Итак, в обновлении 2 я предлагаю создание ColorTable, но как? В моих 3 входных файлах значения пикселей изменяются от 0 до 1023. Нужно ли сопоставлять их с цветами? Нужно ли создавать ColorTable с 1024 входами? Как?
В обновлении 3 кажется, что я мог бы использовать некоторые теги GeoTIFF при создании объединенного файла, но я не уверен, действительно ли я могу их использовать или как.
источник
Ответы:
gdal_merge.py - правильный инструмент для «укладки» ваших входных изображений.
Предполагая, что ваша первая группа имеет правильную таблицу цветов, вы можете использовать:
gdal_merge.py -separate -pct -o output_file.tif file1.tif file2.tif file3.tif
Примечание: команда была переформатирована
-o output_file.tif
перед списком входов.Из документов:
Я бы проверил ваш вывод,
gdalinfo -stats
чтобы убедиться, что он правильно сложен.Обновлено для OP
Из списка osgeo выглядит, что вы можете попробовать другой формат для проверки результатов:
-Эван (афиша) знает GDAL внутри и снаружи.
источник
Первый способ, который я могу придумать, - это создать vrt, отредактировать и перевести:
добавьте тег interp, где это необходимо:
а потом:
источник
Ваш входной диапазон оттенков серого имеет значения от 0 до 1024, но RGB допускает только значения от 0 до 255 для каждого диапазона.
Вы можете использовать
gdal_translate -scale [src_min src_max [dst_min dst_max]]
для изменения масштаба вашего исходного файла.Во втором прогоне вы можете сложить свои три полосы с помощью gdal_merge.py и применить
-co "PHOTOMETRIC=rgb"
.источник