Страница 1 из 1

Одна индексированная палитра для схожих по цвету - решение?

Добавлено: 29 сен 2009, 13:49
ttestt
Все действия производятся с помощью imagemagick

выделить палитру с трех картинок
convert 01.tif -colors 255 -unique-colors 01pal.tif
convert 02.tif -colors 255 -unique-colors 02pal.tif
convert 03.tif -colors 255 -unique-colors 03pal.tif

слить палитры в одну картину
montage 01pal.tif 02pal.tif 03pal.tif -geometry 255x1 010203palsrc.tif

сузить общую палитру до 255 цветов
convert 010203palsrc.tif -colors 255 -unique-colors 010203pal.tif

этой палитрой преобразовать исходные картинки
convert 01.tif -colors 255 -map 010203pal.tif 01p255с.tif
convert 02.tif -colors 255 -map 010203pal.tif 02p255с.tif
convert 03.tif -colors 255 -map 010203pal.tif 03p255с.tif

Re: Одна индексированная палитра для схожих по цвету - решение?

Добавлено: 29 сен 2009, 14:33
Mavka
Если через утилиты GDAL, то берем один "представительный" растр (или склеиваем несколько).
Его переводим его в палитру 255:

Код: Выделить всё

rgb2pct.py ^
    -n 255 ^
    -of GTiff ^
    etalon.tif palette.tif
Получили растр palette.tif. А по его палитре преобразуем остальные:

Код: Выделить всё

rgb2pct.py ^
    -pct palette.tif ^
    -of GTiff ^
    source.tif output.tif
Цветов 255. Для nodata используется 256-й (если считать от 0, то - 255-й). Т.к. rgb2pct с параметром "-pct" 256-й цвет не задает, то его в редакторе (GIMP, Photoshop, etc) меняем на какой-нибудь контрастный - например, кислотно-зеленый (чтобы он нигде не использовался). И потом его можно использовать, например:
gdalwarp -dstnodata 255.

P.S. Знак "^" - конец строки для cmd-файлов в windows, для shell-скриптов в linux он будет "\".