`

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

阅读更多

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

Y = kr*R + kg*G + 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 + kb*B........ (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

 

Quote: https://bbs.et8.net/bbs/showthread.php?t=501147

分享到:
评论

相关推荐

    RGB-YUV转换工具 - Android App

    RGB-YUV转换工具是一款专为Android平台设计的应用程序,它主要功能是实现RGB色彩空间与YUV色彩空间之间的转换。在数字图像处理和视频编码领域,YUV色彩模型被广泛使用,因为它能有效地减少存储和传输的数据量,尤其...

    444_rgb_rgb888图像格式_rgb_RGB888对比YUV444_YCbCr444转RGB888_ycbcr转rgb8

    总结一下,了解RGB888和YUV444/YCbCr444之间的关系以及转换方法对于处理图像和视频至关重要。在处理这些格式时,应考虑到颜色精度、带宽需求以及效率等因素。对于“444_rgb”这样的压缩包文件,里面可能包含了示例...

    RGB2YUV.rar_RGB 转 YCBCR_RGB24_RGB2YUV互转_YUV42

    1. **RGB to YUV**:首先,根据RGB到YUV的颜色空间转换公式,计算每个像素的Y、Cb和Cr值。这些公式基于人类视觉系统的特性,使亮度信息(Y)与色度信息(Cb和Cr)分离。 2. **YUV to RGB**:相反,从YUV到RGB的转换...

    YUV转RGB 的verilog代码

    在数字视频处理领域,颜色空间转换是至关重要的一步,它涉及到不同颜色模型之间的转换,例如从YUV转换到RGB。YUV色彩空间主要用于电视和视频信号传输,因为它能有效地利用带宽,而RGB(红绿蓝)是显示器上常用的色彩...

    YUV-RGB.rar_YUV RGB_YUV RGB 转换

    在"YUV-RGB.CPP"源代码文件中,开发者可能会实现一个函数,接收YUV数据作为输入,然后通过上述公式计算出对应的RGB值,并将结果保存为新的RGB图像。源代码可能会涉及内存管理、像素遍历以及颜色空间转换算法的实现...

    RGB格式图像转YUV.rar_RGB 转yuv_RGB数据_YUV转RGB_rgb转yuv_yuv to rgb

    在“RGB格式图像转YUV.rar”这个压缩包中,可能包含了实现RGB到YUV转换的代码示例、测试图像或者相关教程。通过解压并研究这些文件,你可以深入理解这个转换过程,并学会如何在自己的项目中实现这个功能。对于学习...

    彩色图像颜色空间的转换RGB2yuv

    1. 将YUV值矩阵按照特定公式转换为RGB值矩阵。 2. MATLAB提供了内置的`rgb2ycbcr`和`ycbcr2rgb`函数进行颜色空间转换,但自定义函数可以帮助理解转换过程和优化性能。 3. 对于每个像素,使用公式将Y、U和V分量转换为...

    YUV到RGB的转换

    2. 应用相反的转换公式将RGB转换为YUV 3. 进行YUV范围的校正 理解这些基本概念和转换过程对于进行视频处理和图像显示至关重要。在实际应用中,还需要考虑效率和内存管理,特别是在处理大量视频数据时。在Linux环境...

    rgb2yuv.zip_RGB YUV_rgb to yuv_rgb2yuv

    在实际应用中,RGB到YUV转换对于视频编码至关重要,因为它允许对亮度信号(Y)和色度信号(U、V)进行独立处理,从而实现更高效的压缩。例如,在JPEG和MPEG编码中,通常对亮度信号进行更高质量的编码,而对色度信号...

    rgb2yuv.rar_rgb2yuv_yuv处理

    这个名为"rgb2yuv.rar_rgb2yuv_yuv处理"的压缩包包含了一个名为"rgb2yuv.exe"的可执行文件,用于将RGB格式的图像转换成YUV格式。下面我们将深入探讨RGB和YUV色彩空间以及这个转换过程。 RGB(红绿蓝)是一种加性...

    RGB-YUV.rar_RGB YUV_RGB2YUV VHDL_YUV VHDL_rgb2yuv_vhdl rgb yuv

    1. **理解颜色空间转换公式**:RGB到YUV的转换涉及到线性代数运算。Y(亮度)可以通过R、G、B的加权平均计算得到,而Cb和Cr(色度分量)则根据R、G、B的差值计算。具体公式如下: - Y = 0.2126 * R + 0.7152 * G + ...

    RGB_TO_YCBCR

    RGB到YCbCr色彩空间转换在数字图像处理和视频编码领域是至关重要的。RGB(红绿蓝)是一种加性颜色模型,广泛用于显示器显示颜色,而YCbCr(亮度、蓝色差、红色差)则常用于视频和图像的存储与传输,因为它可以有效地...

    RGB2YCbCr.rar

    本压缩包包含的"RGB2YCbCr.rar"是关于RGB到YUV转换的源代码,采用纯C语言编写,便于理解和移植。 在RGB色彩空间中,我们有红色(Red)、绿色(Green)和蓝色(Blue)三个原色,可以组合出人眼能识别的所有颜色。而...

    YUV和RGB相互转换

    **三、YUV到RGB转换** 从YUV420转换到RGB的过程主要包括以下几个步骤: 1. **解采样**:首先,将YUV420的Cb和Cr分量从半分辨率提升到与Y分量相同的全分辨率。这通常通过插值完成,如最近邻插值或双线性插值。 2. ...

    RGB_YUV_YCbCr差异1

    RGB 到 YUV 或 YCbCr 的转换公式如下: - Y = 0.299 R + 0.587 G + 0.114 B - U = -0.1687 R - 0.3313 G + 0.5 B + 128 - V = 0.5 R - 0.4187 G - 0.0813 B + 128 而反向转换为RGB: - R = Y + 1.402 (V-128) - G =...

    RGB转YUV快速算法

    例如,RGB到YCbCr的转换公式为: \[ \begin{aligned} Y &= 0.299 R + 0.587 G + 0.114 B \\ Cb &= -0.168736 R - 0.331264 G + 0.5 B + 128 \\ Cr &= 0.5 R - 0.418688 G - 0.081312 B + 128 \end{aligned} \] ###...

    RGB-YUV颜色空间转换

    1. **公式转换**:使用数学公式将RGB分量转换为YUV分量。常见的转换公式如下: - Y = 0.299R + 0.587G + 0.114B - U = -0.169R - 0.331G + 0.5B + 128 - V = 0.5R - 0.419G - 0.081B + 128 2. **像素遍历**:...

    jpeg.rar_YCbCr_jpeg 编码 _jpeg_6b rgb_remote jpeg_yuv to rgb

    在提供的压缩包文件中,"jpeg.c"很可能是一个实现JPEG编码和YUV到RGB转换的C语言源代码。而"www.pudn.com.txt"可能是下载来源的说明或者版权信息,与核心技术关系不大,但在实际项目中也需要注意合规性问题。 综上...

    YCbCr-RGB

    本文将详细讲解"YCbCr-RGB"这一主题,它涉及到从YUV颜色空间到RGB颜色空间的转换过程,以及与之对应的RGB到YUV的转换。我们将深入探讨这两种颜色空间的原理,以及如何用C语言实现这些转换。 YUV颜色空间,全称为...

    RGB2YUV.rar_rgb2yuv

    在实际应用中,RGB到YUV的转换还有许多变种,比如YCbCr,它是YUV的一个简化版本,常用于JPEG和MPEG等压缩标准。不同应用场景可能会选择不同的色彩空间转换方法,以达到最佳的性能和质量平衡。 在进行图像处理、视频...

Global site tag (gtag.js) - Google Analytics