从 RGB 到 YCbCr 的转换公式

Posted

技术标签:

【中文标题】从 RGB 到 YCbCr 的转换公式【英文标题】:Conversion formula from RGB to YCbCr 【发布时间】:2016-06-06 08:00:04 【问题描述】:

什么是真正的转换公式,因为我找到了很多关于如何转换的方法,我不知道哪一个是真实的

来自***:

来自微软https://msdn.microsoft.com/en-us/library/ff635643.aspx:

和微软一样,这个转换网站http://www.equasys.de/colorconversion.html

谁能解释一下公式的区别?

【问题讨论】:

第一个用于将 analog 转换为数字,允许“footrom”和“headroom”(在 Wikipedia 上进行了解释)。后者是 JPEG 转换,允许使用完整的 8 位范围 (0...255),在 Wikipedia 文章中也有解释,稍微往下一点。所以...这取决于您的输入是什么。 我不明白***上关于第一个的解释,所以如果我的输入是 JPEG,我将使用第二个转换来获取 YCbCr? PIL's colour space conversion YCbCr -> RGB的可能重复 如果您的输入是 JPEG,那么数据很可能已经在 YCbCr(JPEG 变体)中。所以我不确定你想通过这个实现什么......但如果你的输入是数字数据,那么使用第二个版本最有意义,是的,因为你应该能够无损地来回转换。跨度> 查看 IPP 文档:software.intel.com/en-us/node/503873 【参考方案1】:

如果它仍然是实际的,它们几乎是一样的。差异是您将在结果中获得的值范围。

根据 Wiki 的矩阵 (R',G',B' = 0..1),值将是:Y = 0..219,Cb = -112 ..112, = -112..112。您可以将 Y 公式除以 219 并将 Cb、Cr 公式除以 224 将其带到其他矩阵中。

从微软的 (R,G,B = 0..255) 你会得到 Y = 0..255, Cb ≈ -127.5 .. 127.5 , Cr ≈ -127.5 .. 127.5

第三个矩阵通过将 128 添加到负数来解决负数问题。与微软矩阵的区别在于矩阵乘法。

【讨论】:

以上是关于从 RGB 到 YCbCr 的转换公式的主要内容,如果未能解决你的问题,请参考以下文章

视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )

将 RGB 转换为 YCbCr - C 代码

灰度转换:RGB转YCbCr转Gray

RGB通道和YCBCR通道相互转换——MATLAB实现

RGB通道和YCBCR通道相互转换——MATLAB实现

RGB转换成YCbCr