我对如何将 RGB 转换为 YCrCb 感到困惑
I’m confused with how to convert RGB to YCrCb
鉴于:
Y = 0.299R + 0.587G + 0.114B
我们为 R、G 和 B 输入什么值?我假设是 0-255。为了论证,如果R、G、B各为50,那么是否意味着Y=0.299(50) + 0.587(500) + 0.11(50)?
后面两个也很迷惑。如果 Y 包含 Blue 那么 B - Y 怎么可能甚至是 B - Y 只是带走自己?
Cb = 0.564( B − Y )
Cr =0.713(R−Y)
这只是简单(令人困惑)的数学...
备注:YCbCr以下公式适用BT.601的标准很少,有"full range":
等式 (1):Y = 0.299R + 0.587G + 0.114B
YCbCr 的通用定义假定 R、G 和 B 是 [0, 255] 范围内的 8 位无符号整数。
在某些情况下,R、G、B 是 [0, 1] 范围内的浮点值(归一化值)。
例如,还有 HDR 范围为 [0, 1023] 的情况。
如果R=50
、G=50
、B=50
,你只需要赋值:
Y = 0.299*50 + 0.587*50 + 0.114*50
结果:Y = 50
。
由于Y代表Luma(线发光),而RGB=(50,50,50)
是一个灰度像素,所以Y = 50
是有道理的。
以下等式 Cb = 0.564(B - Y)
、Cr = 0.713(R - Y)
不正确。
而不是 Cb
和 Cr
它们应该被命名为 Pb
和 Pr
。
公式(2):Pb = 0.564(B - Y)
等式(3):Pr = 0.713(R - Y)
等式意味着你可以先计算Y
,然后用结果计算Pb
和Pr
。
注意:在计算Pb
和Pr
时,不要对Y
的值进行四舍五入。
您也可以将等式(1)代入(2)和(3):
Pb = 0.564(B - Y)
= 0.564(B - (0.299R + 0.587G + 0.114B))
= 0.4997*B - 0.3311*G - 0.1686*R
Pr = 0.713(R - Y)
= 0.713(R - (0.299R + 0.587G + 0.114B))
= 0.4998*R - 0.4185*G - 0.0813*B
有些小错误。
维基百科更准确(但仍然只是数学分配的结果):
Y = 0.299*R + 0.587*G + 0.114*B
Pb = -0.168736*R - 0.331264*G + 0.5*B
Pr = 0.5*R - 0.418688*G - 0.081312*B
上式中Pb、Pr取值范围为[-127.5, 127.5]。
在YCbCr(不是YPbPr)的"full range"公式中,Pb和Pr增加了128的偏移量(所以结果总是正数)。
在 8 位的情况下,最终结果限制在 [0, 255] 范围内并四舍五入。
鉴于:
Y = 0.299R + 0.587G + 0.114B
我们为 R、G 和 B 输入什么值?我假设是 0-255。为了论证,如果R、G、B各为50,那么是否意味着Y=0.299(50) + 0.587(500) + 0.11(50)?
后面两个也很迷惑。如果 Y 包含 Blue 那么 B - Y 怎么可能甚至是 B - Y 只是带走自己?
Cb = 0.564( B − Y ) Cr =0.713(R−Y)
这只是简单(令人困惑)的数学...
备注:YCbCr以下公式适用BT.601的标准很少,有"full range":
等式 (1):Y = 0.299R + 0.587G + 0.114B
YCbCr 的通用定义假定 R、G 和 B 是 [0, 255] 范围内的 8 位无符号整数。
在某些情况下,R、G、B 是 [0, 1] 范围内的浮点值(归一化值)。
例如,还有 HDR 范围为 [0, 1023] 的情况。
如果R=50
、G=50
、B=50
,你只需要赋值:
Y = 0.299*50 + 0.587*50 + 0.114*50
结果:Y = 50
。
由于Y代表Luma(线发光),而RGB=(50,50,50)
是一个灰度像素,所以Y = 50
是有道理的。
以下等式 Cb = 0.564(B - Y)
、Cr = 0.713(R - Y)
不正确。
而不是 Cb
和 Cr
它们应该被命名为 Pb
和 Pr
。
公式(2):Pb = 0.564(B - Y)
等式(3):Pr = 0.713(R - Y)
等式意味着你可以先计算Y
,然后用结果计算Pb
和Pr
。
注意:在计算Pb
和Pr
时,不要对Y
的值进行四舍五入。
您也可以将等式(1)代入(2)和(3):
Pb = 0.564(B - Y)
= 0.564(B - (0.299R + 0.587G + 0.114B))
= 0.4997*B - 0.3311*G - 0.1686*R
Pr = 0.713(R - Y)
= 0.713(R - (0.299R + 0.587G + 0.114B))
= 0.4998*R - 0.4185*G - 0.0813*B
有些小错误。
维基百科更准确(但仍然只是数学分配的结果):
Y = 0.299*R + 0.587*G + 0.114*B
Pb = -0.168736*R - 0.331264*G + 0.5*B
Pr = 0.5*R - 0.418688*G - 0.081312*B
上式中Pb、Pr取值范围为[-127.5, 127.5]。
在YCbCr(不是YPbPr)的"full range"公式中,Pb和Pr增加了128的偏移量(所以结果总是正数)。
在 8 位的情况下,最终结果限制在 [0, 255] 范围内并四舍五入。