Почему imagemagick искажает цвета в некоторых источниках Lab на Ubuntu 12.04 LTS?

Пример проблемы.

С этим изображением Lab/TIF (среди прочих):

http://cl.ly/3D2g0M1R4036

Запуск convert file1.tif file1.jpg приводит к этому искаженному результату при запуске на моем сервере, которым является Ubuntu 12.04 LTS. Здесь работает ImageMagick 6.6.9-7:

http://cl.ly/image/3P253v2y3L2x

Та же самая команда, выполняемая локально на моем Mac, не имеет такой же проблемы. Я протестировал это локально с версией ImageMagick, установленной HomeBrew (6.8.0-10), а также с версией 6.6.9-7, скомпилированной вручную, чтобы максимально точно сравнить с сервером.

Я подозревал, что это могла быть версия libtiff, поскольку на Mac установлена ​​версия 4.0.3, а на сервере — 3.9.5, однако я только что провел тест на новой установке Ubuntu с последней версией ImageMagick и libtiff 3.9. 5, а проблема осталась.

Что-нибудь очевидное?


person Colin    schedule 19.08.2013    source источник


Ответы (1)


Запуск tiffinfo указывает, что цветовое пространство «file1.tif» — CIELab. ImageMagick Ubuntu, установленный через apt-get, будет иметь Lab, но не CIELab. Это можно подтвердить, выполнив следующую команду между двумя системами.

 identify -list colorspace

Я не совсем уверен, в чем разница между двумя цветовыми пространствами (что-то о хроматической ценности), но это будет способствовать освещению, которое вы испытываете.

Решением будет установка ImageMagick из исходного кода на ваш сервер/компьютер Ubuntu (который будет включать CIELab). Другие люди сталкивались с связанными проблемами; который, решенный после сборки из исходного кода.

  • With apt-get
    • Uninstall ImageMagick
    • Установите пакеты разработки для каждой зависимой библиотеки (например, libtiff-dev)
  • Следуйте документации от ImageMagick.

Обновление:

Вы также можете явно установить цветовое пространство с помощью опции -set. Также добавьте параметры -verbose, чтобы оценить, что делает ImageMagick.

convert -verbose file1.tiff -set colorspace CIELab -colorspace sRGB file1.jpg
# Output
file1.tif TIFF 1451x1865 1451x1865+0+0 8-bit CIELab 1.326MB 0.110u 0:00.109
file1.tif=>file1.jpg TIFF 1451x1865 1451x1865+0+0 8-bit sRGB 411KB 0.820u 0:00.840
person emcconville    schedule 20.08.2013
comment
Спасибо. В этом есть смысл. Я попробую сегодня. - person Colin; 21.08.2013
comment
Удивительно, но это не сработало. Я установил libtiff8-dev (который зависит от libjpeg8-dev) и установил ImageMagick из исходного кода. identify -list colorspace правильно показывает CIELab. Это имело значение, хотя теперь образ изменился по-другому. Я чувствую себя очень Уорхолом. cl.ly/image/0T1L0T180E1T - person Colin; 21.08.2013
comment
Странный. Кажется, у меня работает с libtiff4-dev. Возможно, вам потребуется конкретизировать преобразование цветового пространства с помощью утилиты convert. Я обновлю ответ примером. - person emcconville; 21.08.2013
comment
Извините, это действительно libtiff4-dev я установил. Вы также тестируете Ubuntu? Я попробовал это на установке Fedora, и она работала правильно (с ImageMagick, установленным через .yum). Я получаю несколько отличий в выводе — не уверен, что они актуальны — pastebin.com/raw.php?i =iZU7jN0k - person Colin; 21.08.2013
comment
Кроме того, заметив проблему на сервере, я провел тестирование на виртуальной машине, поэтому она не изолирована от одной коробки. - person Colin; 21.08.2013