【问题标题】:I can't save RGB image as a Lab image我无法将 RGB 图像保存为 Lab 图像
【发布时间】:2019-01-18 15:37:12
【问题描述】:

我正在尝试读取 RGB 8 位图像,将其转换为 Lab 并保存。结果总是被解释为 RGB 图像,而且非常奇怪(饱和)。

我尝试不规范化值或使用 RGB2Lab 或将图像转换为 32FC,但没有任何效果。

Mat image = imread(path);
cvtColor(image , image , COLOR_BGR2Lab);

Mat imageSplitted[3];
split(image, imageSplitted);
Mat* imageNormalized = normalizeLabValues(imageSplitted);
Mat imageMerged;
merge(imageNormalized, 3, imageMerged);
imwrite(newPathFiltered, imageMerged);

normalizeLabValues 是一个函数,用于解决 8 位图像转换为 Lab 的问题:

Mat* normalizeLabValues(Mat image[]) {
int rows = image[0].rows;
int cols = image[0].cols;

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        // L
        Scalar intensity = image[0].at<uchar>(i, j);
        Scalar normalized_intensity = intensity.val[0] * 100 / 256;
        image[0].at<uchar>(i, j) = normalized_intensity.val[0];

        // a
        intensity = image[1].at<uchar>(i, j);
        normalized_intensity = intensity.val[0] - 126;
        image[1].at<uchar>(i, j) = normalized_intensity.val[0];

        // b
        intensity = image[2].at<uchar>(i, j);
        normalized_intensity = intensity.val[0] - 126;
        image[2].at<uchar>(i, j) = normalized_intensity.val[0];
    }
}


 return image;
}

我想获得一张 Lab 图像,但如果我尝试用 Photoshop 打开结果,它是 RGB 且高度饱和的。

【问题讨论】:

  • newPathFiltered 的值是多少?
  • string newPathFiltered = basePath + "compressed/" + to_string(i) + "/" + explode(fileName, '_')[0] + "_B" + to_string(intensity/10) + ".tif";
  • AFAIK,TIFF 格式无法存储 Lab 色彩空间图像,因此它会将您放入其中的任何内容解释为 RGB。如果您对图像进行归一化,它们往往会占据整个范围,因此它们会趋于饱和。也许是时候退后一步,重新考虑你想要实现的目标。
  • @MarkSetchell:TIFF 不限于 RGB。每个通道都是单独处理的,一个人不仅可以保存 1 或 3 个通道,还可以保存更多通道。如果一个程序可以解释通道的编码是另一个问题。 (通常不会:人们将通过 TIFF 工具选择图像表示(和颜色)。

标签: opencv lab cielab


【解决方案1】:

这并不奇怪。 imwrite 将所有内容保存为硬盘上的 RGB 图像,这意味着您的 L 通道将被视为硬盘上的 R 通道(在 Photoshop 中也是如此)。对于 Windows,IMAGE 表示 RGB。如果要保存Lab图像,则必须将其保存为一种文件,例如txt,xml,yml,二进制文件等。

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2019-11-28
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多