Конвертация opencv sRGB в RGB - PullRequest
0 голосов
/ 18 мая 2018

У меня есть фотографии iphone, которые имеют нелинейный формат sRGB.Мне нужен линейный RGB.Я не смог найти способ в opencv (python) конвертировать их в линейный RGB.

Также пробовал ImageMagick конвертировать:

convert output0.jpg  -colorspace RGB output0.jpg

Все тот же sRGB без эффекта.

Любойидеи?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Только очень немногие форматы изображений действительно поддерживают линейный RGB.PNG делает, но не JPG.Вы можете сказать, если значение гаммы равно 1, оно является линейным.Вы можете обрабатывать в линейном цветовом пространстве с помощью ImageMagick, но при сохранении в JPG могут отображаться правильные значения линейных пикселей, но метаданные JPG не сохраняют тот факт, что это линейный RGB.Вы можете сказать, были ли данные пикселей изменены на линейные, если изображение темнее.Вы можете назначить линейный профиль JPG, но я не уверен, где вы его найдете.Также обратите внимание, что в очень старой версии ImageMagick -colorspace RGB фактически создавал sRGB и наоборот

Например, ваша команда не вносит изменений, поскольку JPG действительно не поддерживает линейный RGB.

Ввод:

enter image description here

convert logo.jpg -colorspace RGB logoRGB.jpg

enter image description here


Но PNG делает:

convert logo.jpg -colorspace RGB logoRGB.png

enter image description here

Colorspace: RGB
Gamma: 1

Чтобы принудительно преобразовать линейный RGB в JPG, вы можете сделать следующее, чтобы сделать данные пикселей линейными.Но метаданные все равно будут показывать нелинейный sRGB, гамма = 0,4545

convert logo.jpg -colorspace RGB -set colorspace sRGB logoRGB2.jpg

enter image description here

Colorspace: sRGB
Gamma: 0.454545

РЕДАКТИРОВАТЬ: Следующая ссылка может быть полезнойесли кто-то хочет линейный профиль RGB.См http://fnordware.blogspot.com/2008/05/making-linear-icc-profile.html

0 голосов
/ 18 мая 2018

Вы можете использовать преобразование, указанное в ссылке ниже, для преобразования sRGB в XYZ

Преобразование цветов Matlab

Затем используйте cv :: COLOR_XYZ2BGR или cv :: COLOR_XYZ2RGB дляполучить RGB.

...