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

Кроме QGIS
Ответить
Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

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

Сообщение paleogis » 16 июл 2013, 09:20

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

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 16 июл 2013, 09:47

— ImageMagick с опцией -depth:

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

convert picture_16bit.tif -depth 8 picture_8bit.tif 
ImageJ
Редактор материалов, модератор форума

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

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

Сообщение bolotoved » 16 июл 2013, 09:51

http://www.gdal.org/gdal_translate.html
Параметр -ot (тип данных выходного растра) нужно выставить Byte, что-то типа:

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

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

gamm
Гуру
Сообщения: 4064
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1061
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 16 июл 2013, 10:03

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

Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

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

Сообщение paleogis » 16 июл 2013, 10:17

Спасибо коллеги, пойду тестировать эти утилиты:)

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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 
Редактор материалов, модератор форума

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

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

Сообщение ericsson » 16 июл 2013, 10:43

Естественно, сам 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.

Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

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

Сообщение paleogis » 16 июл 2013, 11:24

Спасибо всем за ответы :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:

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 16 июл 2013, 11:45

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

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

Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

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

Сообщение paleogis » 16 июл 2013, 11:50

Александр Мурый писал(а):Re: Преобразование_16_бит_в_8_бит

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

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


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

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

Аватара пользователя
paleogis
Модератор
Сообщения: 1112
Зарегистрирован: 22 мар 2009, 08:54
Репутация: 200
Ваше звание: Модератоо

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

Сообщение paleogis » 16 июл 2013, 14:04

Всем спасибо! Проблема решена.
Для преобразования с 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

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость