Imageio переворачивает черно-белое

У меня есть двоичное черно-белое изображение в виде файла .tif. я делаю это

image = imageio.imread(path)
print ' Min and max ', image.min(), image.max(), image.shape, type(image[0,0])
imageio.imsave(path, image)

Какие печатает

Min and max  0 255 (1024, 1024) <type 'numpy.uint8'>

Однако после того, как я запустил это, черный и белый цвета поменялись местами. Что здесь происходит?

Когда я пробую эту команду

identify -verbose 6hr-001-DIC.tif

на предварительно обработанном изображении я вижу

tiff:photometric: min-is-white

Но после запуска кода Python он показывает tiff:photometric: min-is-black

Итак, как я могу решить эту проблему, то есть убедиться, что она не меняется?


person Baron Yugovich    schedule 20.08.2018    source источник
comment
Каков формат изображения?   -  person Mark Setchell    schedule 21.08.2018
comment
Файлы .tif, см. правку выше   -  person Baron Yugovich    schedule 21.08.2018
comment
TIF поддерживает тег min is black или min is white в своем теге Photometric Interpretation. Возможно, Python imageio этого не уважает. Попробуйте использовать tiffump для входных и выходных файлов или ImageMagick identify -verbose image.tif для проверки.   -  person Mark Setchell    schedule 21.08.2018
comment
Вы также можете установить тег самостоятельно с помощью tiffset -s 262 0|1 image.tif   -  person Mark Setchell    schedule 21.08.2018
comment
В моем более длинном комментарии выше читайте уважать как уважать или сохранять.   -  person Mark Setchell    schedule 21.08.2018
comment
Спасибо, это был хороший улов. Я обновил свой исходный вопрос. Как я могу убедиться, что imageio уважает это?   -  person Baron Yugovich    schedule 21.08.2018
comment
Точно сказать не могу. По крайней мере, мы знаем проблему. Кажется, вы можете установить его на запись (см. photometric здесь imageio.readthedocs.io/ en/stable/format_tiff.html#tiff Я не знаю, как вы получаете текущую настройку при чтении, чтобы сохранить ее.   -  person Mark Setchell    schedule 21.08.2018


Ответы (1)


Как указал @Mark Stechell, вам нужно использовать поле метаданных photometric. Сначала убедитесь, что вы установили tifffile. Для демонстрации я использую изображение marbles в оттенки серого. Теперь код:

import imageio

image = imageio.imread('gmarbles.tif')
print(' Min and max ', image.min(), image.max(), image.shape, type(image[0, 0]))

image.meta['photometric'] = 'miniswhite'
imageio.imsave('white.tif', image)

белое изображение

или альтернативный набор 'minisblack':

черное изображение

person Dani Mesejo    schedule 21.08.2018