图像信号RGB与YCbCr(YUV)的互转

前言

常用的图像信号有RGB信号和YCbCr信号,它们之间的转换容易混淆,本文对此细述。另外业界常常将YUV与YCbCr混述,题中加入的YUV在本文等同YCbCr。事实上YUV信号有其它精确定义,不在本文论述。

一、图像信号的定义空间

无论是RGB信号,还是YCbCr信号都一定会隶属一个预定的颜色空间,这些颜色空间常常由相应的组织或者标准来制定,有明确的应用方向。常用的颜色空间例如国际电联定义的BT.601, BT.709标准,以及计算机工业标准sRGB。其中BT.601和BT.709分别定义电视工业的标准清晰度电视信号(SDTV),和高清晰度电视信号(HDTV)相关应用,而sRGB定义了计算机常用的网络,显示器,和图像图形等应用。
颜色空间的基本要素包括白色坐标、红色坐标、绿色坐标、以及蓝色坐标。在这三个标准中,BT.709标准和sRGB的颜色坐标相同,因此基于这两个颜色空间的RGB转换YCbCr的公式相同。
以下公式信号格式遵循:

  1. RGB信号为gamma corrected的R/G/B三色通道的数字信号,每个通道表值范围0~255
  2. YCbCr信号为由相关视频/电视标准定义的Y/Cb/Cr三通道亮度和色差信号,一般情况Y范围为16~235,Cb/Cr范围为16-240。
  3. 针对第2条比较特别的情况是jpeg使用BT.601颜色空间,但是Y/Cb/Cr的范围均为0~255

二、转换公式

1.基于sRGB或者BT.709颜色空间的转换公式

YCbCr => RGB

R = 1.164 *(Y-16) + 1.793 * (Cr - 128)
G = 1.164 * (Y-16) -0.213 * (Cb-128) - 0.534 * (Cr-128)
B = 1.164 * (Y-16) + 2.115 * (Cb-128)

RGB => YCbCr

Y = 0.183 * R + 0.614 * G + 0.062 * B + 16
Cb = -0.101*R -0.338 * G +0.439 * B + 128
Cr = 0.439 * R - 0.399 * G - 0.040 * B + 128

2.基于BT.601颜色空间的转换公式 (non-jpeg)

YCbCr => RGB

R = 1.164*(Y-16) + 1.596 * (Cr - 128)
G = 1.164* (Y-16) -0.391 * (Cb-128) - 0.813 * (Cr-128)
B = 1.164* (Y-16) + 2.018 * (Cb-128)

RGB => YCbCr

Y = 0.257 * R + 0.504 * G + 0.098 * B + 16
Cb = -0.148*R -0.291 * G +0.439 * B + 128
Cr = 0.439 * R - 0.368 * G - 0.071 * B + 128

3.jpeg基于BT.601颜色空间的转换公式

如上说明,下面公式Y/Cb/Cr在0~255范围取值

YCbCr => RGB

R = Y + 1.402 * (Cr - 128)
G = Y -0.3441 * (Cb-128) - 0.7141 * (Cr-128)
B = Y + 1.772 * (Cb-128)

RGB => YCbCr

Y = 0.299 * R + 0.587 * G + 0.114 * B
Cb = -0.1687*R -0.3313 * G +0.5 * B + 128
Cr = 0.5 * R - 0.4187 * G - 0.0813 * B + 128

注意事项

在很多具体的使用场景并不明确颜色空间或者具体应用,建议使用sRGB颜色空间。

参考文献

Keith Jack, Video Demystified, 5th edition, 2007.
JPEG File Interchange Format, Version 1.02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值