三刺激值和Lab都是為了量化顏色的引入的概念,Lab顏色數值是可以通過三刺激值轉換的,很多用戶對三刺激值計算Lab的方法還不了解,本文就給大家簡單介紹一下。
RGB與Lab顏色空間互相轉換:
同RGB顏色空間相比,Lab是一種不常用的色彩空間。它是在1931年國際照明委員會(CIE)制定的顏色度量國際標準的基礎上建立起來的。1976年,經修改后被正式命名為CIELab。它是一種設備無關的顏色系統,也是一種基于生理特征的顏色系統。這也就意味著,它是用數字化的方法來描述人的視覺感應。Lab顏色空間中的L分量用于表示像素的亮度,取值范圍是[0,100],表示從純黑到純白;a表示從紅色到綠色的范圍,取值范圍是[127,-128];b表示從黃色到藍色的范圍,取值范圍是[127,-128]。
RGB顏色空間不能直接轉換為Lab顏色空間,需要借助XYZ顏色空間,把RGB顏色空間轉換到XYZ顏色空間,之后再把XYZ顏色空間轉換到Lab顏色空間。
由XYZ三刺激值,得到Lab值:
function [ Lab ] = XYZ2Lab( XYZ,XYZ0 )
%? ?XYZ數據轉換為Lab數據,可批量處理
%? ?輸入原始XYZ數據, n*3 矩陣
%? ?輸入使用的光源的三刺激值XYZ0,1*3矩陣
X=XYZ(:,1);
Y=XYZ(:,2);
Z=XYZ(:,3);
X0=XYZ0(:,1);
Y0=XYZ0(:,2);
Z0=XYZ0(:,3);
L=116*f(Y./Y0)-16;
a=500*(f(X./X0)-f(Y./Y0));
b=200*(f(Y./Y0)-f(Z./Z0));
Lab(:,1)=L;
Lab(:,2)=a;
Lab(:,3)=b;
function [ ff ] = f( I )
if ( I > 0.008856 )
? ? ff = I.^(1.0/3);
else
? ? ff = 7.787*I+16.0/116;
end
LAB轉換XYZ的方法:
CIE-L*ab —> XYZ
1.var_Y = ( CIE-L* + 16 ) / 116
2.var_X = CIE-a* / 500 + var_Y
3.var_Z = var_Y - CIE-b* / 200
4.if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3
5.else? ? ? ? ? ? ? ? ? ? ? var_Y = ( var_Y - 16 / 116 ) / 7.787
6.if ( var_X^3 > 0.008856 ) var_X = var_X^3
7.else? ? ? ? ? ? ? ? ? ? ? var_X = ( var_X - 16 / 116 ) / 7.787
8.if ( var_Z^3 > 0.008856 ) var_Z = var_Z^3
9.else? ? ? ? ? ? ? ? ? ? ? var_Z = ( var_Z - 16 / 116 ) / 7.787
10.X = ref_X * var_X? ? ?//ref_X =? 95.047? ? ?Observer= 2°, Illuminant= D65
11.Y = ref_Y * var_Y? ? ?//ref_Y = 100.000
12.Z = ref_Z * var_Z? ? ?//ref_Z = 108.883