《数据压缩》实验报告一·YUV2RGB实验

一.实验原理

(1)YUV与RGB空间的相互转换

           亮度和色差信号的构成如下:

           Y =  0.2990R + 0.5870G +  0.1140B

      R-Y =  0.7010R  -  0.5870G -  0.1140B

      B-Y = -0.2990R  -  0.5870G + 0.8860B


       为了使色差信号的动态范围控制在0.5之间,需要进行归一化,对色差信号引入压缩系数。归一化后的色差信号为:

          U = -0.1684R - 0.3316G + 0.5B

          V =          0.5R - 0.4187G - 0.0813B


       由此可得YUV转RGB公式:

        R = Y + 1.14075(V - 128)

        G = Y - 0.7169(V - 128) - 0.3455(U - 128)

        B = Y + 1.779(U - 128)



(2)存储方式与所占空间

       一帧YUV图像在存储方式上,先存这一帧所有的Y数据,再存这一帧所有的U数据,最后存这一帧所有的V数据。YUV的取样格式为4:2:0(即色差信号U,V的取样频率为亮度信号取样频率的四分之一,在水平方向和垂直方向上的取样点数均为Y的一半),所以一帧YUV图像所占空间大小为: 宽x高x1.5。

       而RGB在存储方式上,按照B,G,R的顺序,连续存储每个像素的BGR数据,所以一帧RGB所占空间大小为: 宽x高x3。


       因此,在RGB转YUV的实验中需用下采样的方式;在YUV转RGB的实验中需要用上采样的方式


二.实验流程分析

1.程序初始化(打开两个文件,定义变量和缓冲区)

2.读取YUV文件,抽取YUV数据写入缓冲区

3.调用YUV2RGB的函数实现YUV到RGB数据的转换

4.写RGB文件

5.程序收尾工作(关闭文件,释放缓冲区)


三.关键代码及其分析

main.cpp与yuv2rgb.cpp


#include 
   
   
    
    
#i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值