“标准” RGB到灰度转换

我正在尝试编写一个采用JPEG图像并返回其PGM(便携式灰度图)版本的转换器算法。问题是我无法理解从传统RGB格式开始,“官方” JPG->

PGM转换器如何将值分配给最终像素(我猜是0-> 255)。

一开始,我使用了以下公式(与OpenCV的CV_RGB2GRAY转换所使用的公式相同):

0.30 * R + 0.59 * G + 0.11 * B =瓦尔

我编写了一个简单的代码来测试我的结果:它获取彩色图像及其PGM版本(已经使用GIMP进行了转换)。然后,它使用先前的公式转换彩色图像。目的是要获得一个像素到像素等于PGM输入的灰度图像。

此时,它不会返回相同的值。你能帮助我吗?

回答:

问题是我无法理解从传统RGB格式开始,“官方” JPG-> PGM转换器如何将值分配给最终像素(我猜是0-> 255)。

这些“官方”工具正在使用的转换中可能会有伽马调整。

也就是说,

有关详细信息,请参见此Wikipedia部分:

我相信您想将公式用于。尝试一下,看看它是否符合您期望的结果。Csrgb

基本上,您将执行以下操作:

  1. R, G, B的颜色(在每个[0,1]范围)

    • 如果它们在范围内0..255,只需除以255.0

  2. 计算 Clinear = 0.2126 R + 0.7152 G + 0.0722 B

    • 这可能是您之前应用的线性变换

  3. 计算根据它的公式,根据Csrgb``Clinear

    • 这是您丢失的 伽玛校正片
    • 看看
    • Csrgb = 12.92 Clinear 什么时候 Clinear <= 0.0031308
    • Csrgb = 1.055 Clinear1/2.4 - 0.055 什么时候 Clinear > 0.0031308

以上是 “标准” RGB到灰度转换 的全部内容, 来源链接: utcz.com/qa/398701.html

回到顶部