我正在尝试使用Color Thresholder App在MATLAB中对颜色进行采样,然后使用 L * a * b 输出OpenCV。但是似乎存在规模不匹配的情况。以下是MATLAB和OpenCV中的 L * a * b 标度:
对于OpenCV中的8位图像,我们似乎需要以下 L * a * b 范围:
0 <= L <= 255; 0 <= a <= 255;和0 <= b <= 255
我们如何从MATLAB转换为OpenCV L * a * b 8位图像的色标?
答案 0 :(得分:2)
Matlab在其图像处理工具箱中使用国际色彩协会的规范进行颜色表示。 ICC配置文件的规范几乎普遍用于颜色规范和转换。
ICC Lab指定将LAB用于各种分辨率的配置文件转换空间。对于8位,使用无符号的8位值。 L *映射为0-> 0和100-> 255。对于a *和b *,值限制在-128和+127之间。因此,实际编码会将a *和b *加128,以产生介于0和255之间的无符号值。
这些和其他更大的位大小的表示形式可以在规范的6.3.4.2节的表12和13中找到:
http://color.org/specification/ICC1v43_2010-12.pdf
大多数程序,例如Photoshop,Tiff文件等,都使用ICC格式。此外,Matlab的函数包括各种转换函数,例如lab2uint8(lab)
,可用于将展平点Lab值转换为固定大小的正确表示形式,例如无符号8位整数。