300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > RGB 转换至 YCbCr (YUV) 的计算公式

RGB 转换至 YCbCr (YUV) 的计算公式

时间:2024-04-28 14:00:12

相关推荐

RGB 转换至 YCbCr (YUV) 的计算公式

RGB 转换至 YCbCr (YUV) 的计算公式

博客分类: Programming

对于每个取样点的 R,G,B 值, 在转换到 YUV colour space 时, 首先定义画面的平均亮度值(Luminance), Y, 其计算公式为:

Y = krR + kgG + kb*B

kr, kg, kb 为 weighting factors (加权因数), kr + kg + kb = 1 恒定.

(其中, ITU-R BT.601 定义 kb = 0.114 和 kr = 0.299)

然后定义 Cr, Cg, Cb 为颜色强度 (colour intensity) 与这个 luminance 的差值:

Cb = B − Y

Cr = R − Y

Cg = G − Y

这时对于一个取样点, 完整的信息被保存于 Y, Cb, Cr, Cg 四个变量里, 此时相对于 RGB colour space 的三个变量值, 这样的计算公式还没有优势.

但由于 Cb + Cr + Cg 是个常数, 我们可以用其中两个变量来表达原来所需的三个, 并且在数据的贮存和传输中也只需使用其中的两个变量. 这样, 就完成了定义 YCbCr colour space 中的三个变量了: Y, Cb, Cr.

一个在 RGB colour space 中取样值的三个变量 R, G, B 在转换为 YCbCr 的公式于是重新 定义/转化 为:

Y = kr*R + (1 − kb − kr )G + kbB… (1)

Cb = 0.5(1 − kb) / (B − Y )

Cr = 0.5(1 − kr) / (R − Y )

然后再用公式 (1) 代换 Y, 得到仅含 R,G,B 的 Cb, Cr 函数 (kr,kb 视为常数)

作简单的代数也可以求出从 YCbCr 转换至 RGB 的公式:

R = Y + (1 - kr)Cr/0.5

G = Y - [kb(1 - kb)Cb]/ [0.5(1 - kb - kr)] - [kr*(1 - kr)Cr]/ [0.5(1 - kb - kr)]

B = Y + (1 - kb)*Cb/0.5

代入 ITU-R BT.601 定义的 kb = 0.114 和 kr = 0.299

那么 RGB —> YCbCr 的公式为:

Y = 0.299R + 0.587G + 0.114B… (2)

Cb = 0.564(B − Y )

Cr = 0.713(R − Y )

同样地, 然后再用公式 (2) 代换 Y, 得到仅含 R,G,B 的 Cb, Cr 函数 (kr,kb 视为常数)

YCbCr —> RGB 的公式为:

R = Y + 1.402Cr

G = Y − 0.344Cb − 0.714Cr

B = Y + 1.772Cb

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。