0

我正在尝试使用Color Thresholder App在 MATLAB 中对颜色进行采样,然后在 OpenCV 中使用L * a * b输出。但似乎存在规模不匹配。以下是MATLAB 和 OpenCV中的L * a * b标度:

  1. MATLAB:0 <= L <= 100;-100 <= 一 <= 100; 和 -100 <= b <= 100

MATLAB 实验室规模

  1. OpenCV:0 <= L <= 100;-127 <= 一 <= 127; 和 -127 <= b <= 127

根据这两个来源:来源1;和来源 2

似乎我们需要以下L * a * b范围用于 OpenCV 中的 8 位图像:

0 <= L <= 255;0 <= 一 <= 255; 和 0 <= b <= 255

我们如何将 MATLAB 转换为 8 位图像的 OpenCV L * a * b色标?

4

1 回答 1

2

Matlab 在其图像处理工具箱中使用 International Color Consortium 的颜色表示规范。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 位整数。

于 2018-10-14T05:21:18.003 回答