Плагин Freeimage отображает массивы RGB при сохранении в 16-битном формате.

Я работаю с 2D-массивами numpy с плавающей запятой и сохраняю их в виде файлов .png с высокой точностью (см. этот вопрос о том, как я пришел к этому). Для этого я использую плагин freeimage, как в этом связанном вопросе.

Это создает странное поведение, когда изображения переворачиваются (как влево-вправо, так и вверх-вниз), если они сохранены в 16-битном формате. Это происходит только для изображений RGB или RGBA, но не для изображений в оттенках серого. Вот пример кода:

from skimage import io, img_as_uint, img_as_ubyte
im = np.random.uniform(size=(256, 256))
im[:128, :128] = 1
im = img_as_ubyte(im)
io.use_plugin('freeimage')
io.imsave('test_1.png', im)

создает следующую картину:

8-битная шкала серого

когда я пытаюсь сохранить это в 16-битном формате, я получаю тот же результат (хотя и беру 99 КБ вместо 50, поэтому я знаю, что битовая глубина работает).

Теперь сделайте то же самое, что и для RGB-изображения:

im = np.random.uniform(size=(256, 256, 3))
im[:128, :128] = 1
im = img_as_ubyte(im)
io.use_plugin('freeimage')
io.imsave('test_1.png', im)

8-битный результат:

8 бит RGB

но делаю следующее

im = img_as_uint(im)
io.use_plugin('freeimage')
io.imsave('test_1.png', im)

дает мне

16 бит RGB

Это происходит, если массив также содержит альфа-уровень.

Это можно исправить, включив

im = np.fliplr(np.flipud(im))

перед сохранением. Однако мне кажется, что это довольно странное поведение и не очень желательно. Есть идеи, почему это происходит или так задумано? Насколько я мог видеть, это не задокументировано.


person tsawallis    schedule 14.08.2014    source источник
comment
Я могу воспроизвести эту ошибку в текущей версии scikit-image для разработчиков. Вам следует задать вопрос в их репозитории GitHub.   -  person ali_m    schedule 14.08.2014
comment
Спасибо за ответ ali_m; Я поднял вопрос здесь   -  person tsawallis    schedule 15.08.2014
comment
Я могу подтвердить, что вижу такое же нарушенное поведение. Обсудим это далее по представленному вопросу.   -  person Stefan van der Walt    schedule 15.08.2014
comment
@StefanvanderWalt исправил проблему в версии для разработчиков scikit-image, и проблема закрыта.   -  person tsawallis    schedule 15.08.2014