0xAA55 发表于 2019-9-3 09:31:08

【图形学】YCC颜色空间(YCrCb或YCbCr)

Y'CbCr是一种应用非常广泛的颜色空间,比起现在常见的RGB颜色空间,它更多被应用于摄像头模块(比如OV7670摄像头,点击链接看英文的单片机控制OV7670摄像头的文档)。此外在很多视频格式(H265)和图像格式(JPG)里都有应用。我猜这是因为YCC颜色空间表示的像素的颜色值更容易降级或者说更容易在有损压缩的情况下保留其品质。

此外Y'CbCr中的Y'在用于模拟信号显示视频或图像的时候被称为YPbPr,并且在黑白显示器上,可以通过只插入绿色的那根信号线来实现黑白显示器兼容的信号显示。


Y'CbCr中的Y'表示亮度,或者说,明度(Luminance)。Y分量表示的明度值并非由RGB各成分的明度值进行线性编码的。事实上,它是经过伽玛校正后的非线性亮度值。而Cb分量的b是blue,蓝色的意思,意为这个颜色是否偏蓝。同样的,Cr的r则是red,红色的意思,意为颜色是否偏红。Y'CbCr总体由明度、偏蓝程度、偏红程度三个数值决定一个颜色。由下图所示,当Cr值和Cb值都是最小,而明度值Y'为介于最大值和最小值之间的值的时候,颜色值为最明亮的绿色。


图片来自https://en.wikipedia.org/wiki/YCbCr

Y'CbCr的颜色空间是由RGB颜色空间经过数学坐标系转换来得到的。如果底层RGB颜色空间是绝对的,则Y'CbCr颜色空间也是绝对颜色空间,反之亦然。

此外,YCbCr经常和YUV颜色空间搞混。而且它们之间其实是可以互换的。然而,它们之间的差异在于,YUV是模拟信号,YCbCr是数字信号。

JFIF使用 ITU-T T.871 标准定义的方式进行颜色转换。假设输入的RGB颜色各分量都是由一个字节(8 bit二进制整数)表示,并且其数值区间被缩放为,则输出的YCbCr颜色也是由3个字节组成的,由RGB转换为YCbCr的计算方式如下图:



然后由YCbCr转换回RGB则是下图式子所示:



参考资料:
https://en.wikipedia.org/wiki/YCbCr

0xAA55 发表于 2019-9-25 15:11:51

Ink_Hin_fifteen 发表于 2019-9-19 19:02
以前的老彩电就是用这个嘛?

以前的老彩电输入的是ycc三个通道,但是会在内部转换为RGB的模拟信号,再进行显示。
只接入y通道,它就是黑白的

Ink_Hin_fifteen 发表于 2019-9-19 19:02:48

以前的老彩电就是用这个嘛?
页: [1]
查看完整版本: 【图形学】YCC颜色空间(YCrCb或YCbCr)