2014-03-12 1 views
1

AdobeRGB.icc를 사용하여 rgb를 Lab으로 변환하려면 MATLAB을 사용하고 싶습니다. 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 변형이다. 당신이 edit makecform으로보고 코드에 조금 파고 경우 당신은 'srgb2lab' 등의 입력으로 makecform를 호출하는 경우 그들은 단지 두 개의 변환, 'srgb2xyz''xyz2lab'을 만드는 것이보고, 다음이 적용됩니다,

사실 (p.Header.ConnectionSpace 확인) 순서대로.

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

당신을 감사하십시오 xyz2lab 부분에 대한 rgb2xyz 부분에 대한 귀하의 ICC 프로파일을 사용하고 내장 - 그래서 우리는 동일한 작업을 수행 할 수 있습니다! MatTRC, p.Header.ConnectionSpace = 'XYZ' – ohmygoddess

+0

위와 같이하면됩니다! * .icc 파일의 대부분에는 내부 (abc2xyz) 변환이 있습니다 (abc = rgb, 보통). 'makecform'을 두 세트의'icc' 프로파일과 함께 사용하여 하나의 프로파일로 변환 할 수도 있습니다. – nkjt