The*_*ted 14 algorithm jpeg image file-conversion pgm
我正在尝试编写一个转换器算法,该算法采用JPEG图像并返回其PGM(便携式灰度图)版本.问题是我无法理解"官方"JPG-> PGM转换器如何根据从经典RGB格式开始分配给最终像素(我猜,0-> 255)的值来工作.
一开始,我使用了这个公式(它与OpenCV的CV_RGB2GRAY转换使用的公式相同):
0.30*R + 0.59*G + 0.11*B = val
我写了一个简单的代码来测试我的结果:它采用彩色图像及其PGM版本(已使用GIMP转换).然后它使用前面的公式转换彩色图像.目标是使像素到像素的灰度图像等于PGM输入.
此时,它不会返回相同的值.你能帮助我吗?
Tim*_*lds 18
问题是我无法理解"官方"JPG-> PGM转换器如何根据从经典RGB格式开始分配给最终像素(我猜,0-> 255)的值来工作.
这些"官方"工具正在使用的转换中可能存在伽玛调整.
也就是说,它不仅仅是线性变换.
有关详细信息,请参阅此维基百科部分:将颜色转换为灰度
我相信你想用这个公式.试一试,看看它是否与您期望的结果相符.Csrgb
基本上,你会这样做:
R, G, B颜色(每个[0,1]范围内)
0..255,只需分开255.0Clinear = 0.2126 R + 0.7152 G + 0.0722 B
CsrgbClinear
Csrgb = 12.92 Clinear 什么时候 Clinear <= 0.0031308Csrgb = 1.055 Clinear1/2.4 - 0.055 什么时候 Clinear > 0.0031308