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

Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 09:20
paleogis
Коллеги, поделитесь опытом. Какие опенсорные утилиты вы используете для преобразования 16 битного изображения в 8 битное?
Немного погуглил это вопрос, однако однозначного ответа не нашел.
Заранее спасибо за ответы :D

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 09:47
Александр Мурый
— ImageMagick с опцией -depth:

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

convert picture_16bit.tif -depth 8 picture_8bit.tif 
ImageJ

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 09:51
bolotoved
http://www.gdal.org/gdal_translate.html
Параметр -ot (тип данных выходного растра) нужно выставить Byte, что-то типа:

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

gdal_translate -of GTiff -ot Byte file_16bit.tif file_8bit.tif

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 10:03
gamm
только непонятно, что они с гистограммой сделают, если просто поделят на 256, то будут проблемы. Строго говоря, нужно считать гистограмму (убрав NA), потом делать линейное преобразование 16 битного изображения в диапазон 0-255 (тут опять же есть всякие тонкости, как округлять с учетом соседей), и только потом менять формат. Не уверен, что gdal (тем боле ImageMagick) это делает.

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 10:17
paleogis
Спасибо коллеги, пойду тестировать эти утилиты:)

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 10:23
Александр Мурый
Проверил: ImageJ сохраняет картинку в 8 bit нормально (насколько я смог сравнить); в случае с IM (gamm был прав) надо добавить параметр -auto-level в команду:

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

convert picture_16bit.tif -auto-level -depth 8 picture_8bit.tif 

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 10:43
ericsson
Естественно, сам ImageMagick ничерта не делает, если его не попросить об этом.
Есть параметры:
http://www.imagemagick.org/script/comma ... #normalize
http://www.imagemagick.org/script/comma ... st-stretch
http://www.imagemagick.org/script/comma ... ar-stretch
http://www.imagemagick.org/script/comma ... ?#equalize
http://www.imagemagick.org/script/comma ... php?#level
http://www.imagemagick.org/script/comma ... l-contrast

Ну и вообще там через оператор -fx можно собственные преобразования писать, см.
http://www.imagemagick.org/Usage/color_mods/#diy_levels

Важное замечание: для обработки ДДЗ стоит использовать Q16-версию ImageMagick, а не Q8.

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 11:24
paleogis
Спасибо всем за ответы :D
bolotoved писал(а):http://www.gdal.org/gdal_translate.html
Параметр -ot (тип данных выходного растра) нужно выставить Byte, что-то типа:

Код: Выделить всё
gdal_translate -of GTiff -ot Byte file_16bit.tif file_8bit.tif


У меня вопрос на засыпку относительно GDAL. Можно ли так извернуться, чтобы при преобразовании 16 бит в 8 бит он не резал гистограмму, делал auto-level? :roll:

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 11:45
Александр Мурый
paleogis писал(а): У меня вопрос на засыпку относительно GDAL. Можно ли так извернуться, чтобы при преобразовании 16 бит в 8 бит он не резал гистограмму, делал auto-level? :roll:
Отвечу ссылкой на свой же старый пост по идентичной теме.

Короче: утилита gdal_contrast_stretch из набора dans-gdal-scripts делает, что нужно.

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 11:50
paleogis
Александр Мурый писал(а):Re: Преобразование_16_бит_в_8_бит

Сообщение Александр Мурый » 4 минуты назад

paleogis писал(а):У меня вопрос на засыпку относительно GDAL. Можно ли так извернуться, чтобы при преобразовании 16 бит в 8 бит он не резал гистограмму, делал auto-level? :roll:


Отвечу ссылкой на свой же старый пост по идентичной теме.

Короче: утилита gdal_contrast_stretch из набора dans-gdal-scripts делает, что нужно.
Спасибо, Александр! Искал и не заметил этой темы

Re: Преобразование_16_бит_в_8_бит

Добавлено: 16 июл 2013, 14:04
paleogis
Всем спасибо! Проблема решена.
Для преобразования с 16_бит в 8 бит воспользовался советом
bolotoved писал(а): http://www.gdal.org/gdal_translate.html
Параметр -ot (тип данных выходного растра) нужно выставить Byte, что-то типа:

Код: Выделить всё
gdal_translate -of GTiff -ot Byte file_16bit.tif file_8bit.tif

Для переноса настроек гистограммы постом в этой теме.

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

gdal_contrast_stretch -histeq 32768 16bit.tif 8bit.tif