opencv rgb转matlab,RGB转到LAB颜色空间,matlab和opencv内嵌函数使用的区别

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);

0818b9ca8b590ca3270a3433284dd417.png 而Matlab的另一个内嵌函数rgb2lab()得到的颜色空间是严格在Lab颜色空间的规定范围内

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);

0818b9ca8b590ca3270a3433284dd417.png

此时 I_lab2和I_lab3的值是一致的,I_lab1和opencv得到的lab颜色空间的值是一致的。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值