opencv中采用的是
cvCvtColor(image, lab_image, CV_BGR2LAB)
其中lab_image三通道L,a,b的值都是大于100的值,并不是在规定范围内(L: [0, 100], a: [-128, 127], b: [-128, 127])
对应Matlab中的,相同的情况可以采用
cform = makecform('srgb2lab', 'AdaptedWhitePoint', whitepoint('D65'));
I_lab1 = applycform(srcImg, cform);
I_lab2 = rgb2lab(srcImg);
这两者之间的转换可以通过判断原图像是否是uint8类型的数值,转换为double类型后除以255就能转换到标准范围内。
cform = makecform('srgb2lab');
if strcmp(class(srcImg), 'uint8')
srcImg2 = double(srcImg)/255;
end
I_lab3 = applycform(srcImg2, cform);
参考:
http://www.codeforge.com/read/217017/rgb2lab.m__html