数据压缩原理实验1_彩色空间转换实验(yuv转rgb)
一、本实验涉及到的基本原理
(1)RGB转为YUV
Y = 0.299*R + 0.587*G + 0.114*B
B-Y = -0.299*R + 0.413*G - 0.114*B
R-Y = 0.701*R - 0.587*G - 0.114*B
为了使色差信号的动态范围控制在-0.5至0.5之间,需要进行归一化,所以对色差信号引入了压缩系数。
归一化后的色差信号为:
U = 0.492*(B- Y) = -0.147*R - 0.289*G + 0.436*B
V = 0.877*(R- Y) = 0.615*R - 0.515*G - 0.100*B
色差信号经过归一化处理后,动态范围控制在-0.5—0.5,让色差零电平对应码电平128,色差信号总共占225个量化级。
在256级上端留15级,下端留16级作为信号超越动态范围的保护带,因此真正在代码中所实现的UV转换公式如下:
U = -0.1684*R - 0.3316*G + 0.5*B + 128
V = 0.5*R - 0.4187*G - 0.0813*B + 128
(2)YUV转RGB
R = Y + 1.140*V
G = Y - 0.394*U - 0.581*V
B = Y + 2.032*U
同样经过归一化处理,使其动态范围控制在-0.5—0.5之间,并让零电平对应码电平128,因此在代码中真正的RGB转换公式如下:
R=Y+1.1402*(V-128)
G=Y-0.34414*(U-128)-0.71414*(V-128)
B=Y+1.772*(U-128)
(3)YUV文件和RGB文件
YUV420文件是指4:2:0格式即色差信号UV在水平方向和水平方向上的取样点数均为亮度信号Y的一半,因此UV的取样频率为Y取样频率的四分之一。
YUV文件在存储上按先把一帧图像中每个像素的Y先存储再存储UV信号,存储方式如下:
RGB文件中每个像素都是由红绿蓝三色混合所得,需要注意的是在文件存储中每个像素按BGR进行逐个存储,存储方式如下:

本文介绍数据压缩原理中的YUV到RGB彩色空间转换实验,详细阐述了转换公式,实验流程,关键代码分析,以及实验结果和可能出现的误差。通过实验,作者强调了数据类型转换和指针管理在算法实现中的重要性。
最低0.47元/天 解锁文章
849

被折叠的 条评论
为什么被折叠?



