2014-03-12 95 views
1

我想使用MATLAB使用AdobeRGB.icc将rgb转换为Lab。我知道如何使用srgb.icc进行转换。使用ICC配置文件RGB转换为(L,a *,b *)

  cform = makecform('srgb2lab'); 
     lab = applycform(rgb, cform); 

但是,我不知道如何使用AdobeRGB.icc进行转换。首先,我们可以通过以下方式阅读icc配置文件:

  p = iccread('AdobeRGB.icc'); 

但是我不知道如何继续。有什么建议么?谢谢!

回答

1

看看p - 它是否包含字段“MatTRC”? (我希望如此!)

这很可能是一个rgb2xyz变换。 (检查p.Header.ConnectionSpace

其实,如果你看看与edit makecform,并深入到代码一点点,你会看到,如果你调用makecform与输入如'srgb2lab'他们只是创建了两个转换,'srgb2xyz''xyz2lab',再申请他们依次。

% 'forward' is rgb2xyz 
cform1 = makecform('mattrc', p, 'Direction', 'forward'); 
cform2 = makecform('xyz2lab'); 
xyz = applycform(rgb, cform1); 
lab = applycform(xyz, cform2); 
+0

谢谢你,为xyz2lab部分使用ICC配置文件为rgb2xyz部分,内置的 - 因此,我们可以这样做!它有MatTRC,p.Header.ConnectionSpace ='XYZ' – ohmygoddess

+0

然后上面的工作!大多数* .icc文件都有一个内部(abc2xyz)转换(其中abc = rgb,通常)。你也可以使用'makecform'和两套'icc'配置文件从一个转换到另一个。 – nkjt

相关问题