2016-10-17 8 views
0

Интересно, что делает MATLAB при использовании функции rgb2xyz()? Я не могу повторно произвести результаты, используя матрицу преобразования rgb2xyz. Кроме того, существует ли разница между использованием makecform ('srgb2xyz') и использованием rgb2xyz()? они производят разница результатов ..разница между makecform ('srgb2xyz') и rgb2xyz() в matlab

ответ

1

Белая точка по умолчанию makecform('srgb2xyz'), как представляется, D50, в то время как rgb2xyz по умолчанию для D65.

>> applycform([.2 .3 .4],makecform('srgb2xyz','AdaptedWhitePoint',whitepoint('D65'))) 

ans = 

0.0638 0.0690 0.1356 

>> rgb2xyz([.2 .3 .4]) 

ans = 

0.0638 0.0690 0.1356 

>> applycform([.2 .3 .4],makecform('srgb2xyz')) 

ans = 

0.0617 0.0679 0.1024 

>> rgb2xyz([.2 .3 .4],'WhitePoint','D50') 

ans = 

0.0616 0.0679 0.1025 

Примечание документация для makecform предлагает использовать более поздние rgb2xyz вместо этого. Что касается вашего комментария о воспроизведении результатов с использованием матрицы, обратите внимание, что матрицы обычно производятся от/применяются к данным линейного. Если вы хотите воспроизвести результаты, вам также понадобится модель гамма-коррекции srgb.

+0

Благодарим вас за разъяснение. Помогает!!! –

+0

Но есть ли предпочтение выбора D65 или D50 ?? Я выполняю работу по сегментации и как-то используя команду «rgb2xyz» дает мне гораздо лучший результат. –

+0

Если вы не знаете, что ваши входные изображения закодированы в каком-то другом цветовом пространстве, D65 - это хорошая догадка. Большинство изображений в Интернете кодируются в предположении, что sRGB-дисплей и sRGB являются разумным описанием большинства обычных мониторов. sRGB определяет белую точку как D65. Кстати, если вы найдете мой ответ полезным, отметьте как принято. –