Color space conversion xyz2srgb, using makecform function

2 次查看(过去 30 天)
Hi
I have an image and try to convert it from XYZ to sRGB in order to display the image on the screen and be able to draw a ROI. I used the makecform function but it seems that it doesn't work well as I get a black image instead!
RGB=zeros(size(XYZ2));
cform=makecform('xyz2srgb');
RGB=applycform(XYZ2,cform);
Here are the max values of the XYZ and RGB matrices I get, respectively
max(max(XYZ2))
ans(:,:,1) = 31.6600, ans(:,:,2) =33.5200, ans(:,:,3) = 40.6900
max(max(RGB))
ans(:,:,1) = 1, ans(:,:,2) = 1, ans(:,:,3) = 1
Do you may have an idea? Did I use the cform function wrongly?
Many thanks in advance

采纳的回答

Radha Krishna Maddukuri
This issue is happening because of scaling of the input data. The function 'xyz2srgb' expects input values in the range of 0 to 1.
Therefore, the input data can be scaled by dividing it with a standard value or the maximum value for the data.
clear
XYZ2 = [10 20 30; 40 50 60; 70 80 90; 100 110 120; 130 140 150; 160 170 180];
RGB=zeros(size(XYZ2));
cform=makecform('xyz2srgb');
RGB=applycform(XYZ2/180,cform);
I hope this helps you with the issue that you are facing.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Image Processing Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by