当使用JPEG编码图像时,首先将RGB像素编码为YUV,然后对UV通道进行下采样。在实际进行DCT和编码系数之前,JPEG不会对Y通道进行伽马校正。这个对吗?我们是否应该确定最会影响我们查看结果的DCT系数?

评论

我不知道,但是不进行伽玛校正确实很有意义。

我不对此发表答复,因为我对此不确定,但人类视觉对亮度的感知不是线性的。实际上,sRGB可以很好地补偿这一点,并在重要区域提供最高精度。因此,您可能会发现,在压缩亮度之前进行伽马校正实际上可能会产生较差的结果。

AFAIK,视频标准假定为R'G'B'。一个非线性色彩空间,当应用3x3色彩转换到YCbCr或来自YCbCr时。在诸如视频之类的应用中,人们希望最大程度地提高比特质量,因此使用线性没有意义。我认为Charles Poyton的“颜色常见问题解答”的第27和29部分对此表达更为清晰:poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC27

“揭开神秘面纱的视频”还说:“ YCbCr是最初由BT.601定义的色彩空间,现在用于所有数字分量视频格式。...技术上正确的表示法是Y'Cb'Cr',因为所有这三个分量源自R'G'B'。“

伽玛指数存储在JPEG exif数据中。大多数软件完全忽略它。但您可以假定比在jpeg中已经解码的jpeg解码后要好,因此在显示缓冲区上发送rgb值之前无需进行任何转换。

#1 楼

根据Wikipedia(插入标准免责声明RE准确性):


JPEG并未定义图像要使用哪种颜色编码。 JFIF
定义要使用的颜色模型:Y表示灰度,或YCbCr定义​​为CCIR 601定义的
。正如我之前提到的,“视频神秘化”指出:“ YCbCr是最初由BT.601定义的色彩空间,现在用于所有数字分量视频格式。 ....技术上正确的表示法是Y'Cb'Cr',因为所有三个分量都源自R'G'B'。“


和Charles'Poynton's颜色常见问题解答状态


视频系统使用R'G'B'
信号近似视觉的亮度响应,每个信号都具有0.45幂函数。


通过压缩,我们追求每位的最佳视觉表示,并且由于眼睛大致呈非线性,因此使用非线性表示是有意义的。

评论


$ \ begingroup $
据我所知,根据这些细节,JPEG希望对输入的RGB值进行编码,以便显示器在显示时应用幂函数。为了重新创建这些特定的RGB值,不应在编码之前对其进行校正。
$ \ endgroup $
– Mokosha
2015年9月14日23:06

$ \ begingroup $
这样说的麻烦在于它有点模棱两可。我们可能应该指出,如果您的“ RGB”数据实际上是R'G'B'(并且假设sRGB属于该类别),那么在应用R'G'B'之前您不应该修改值=> YCbCr矩阵。但是,如果数据是用渲染器(可能是线性的)计算的,则是使用缩小比例处理的(应该在线性空间中完成),或者说是用CCD捕获(并清理)的(认为是线性的),则必须在JPEG压缩之前重新映射它。
$ \ endgroup $
–西蒙F
2015年9月15日在8:24



#2 楼

简短的答案是“否”,原因是Alvy Ray Smith的备忘录Gamma更正中提到的原因。伽玛与人类感知中的非线性无关,而是与显示设备(我想也是采集设备)中的非线性有关。