APP下载

基于VC++的YUV视频格式处理软件设计

2020-08-26孙敬孙滨

电脑知识与技术 2020年20期

孙敬 孙滨

摘要:借鉴已有颜色空问转换方法,通过认真分析RCB、YUV颜色空问模型,结合YUV采样格式和存储方式,本文提出RGB到YUV转换的功能需求,并给出了相应的转换公式。在此基础上,本文利用VC++技术将颜色空间转换思想加以实现,并详细描述了RGB到YUV转换的关键技术及核心算法。软件运行结果显示,该转换方式在视频格式处理方面具有明显的优势。

关键词:YUV;RCB;颜色空间

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2020)20-0192-03

1引言

当今时代,随着计算机多媒体技术的发展,彩色图像富有感染力和视觉刺激,更能传递很多有用的信息。在视频文件处理的研究中,国外视频图像处理技术相对成熟,更注重图像质量以及存储和传输时减少存储空间和提高传输率。并且很早就应用在实际生活各领域中[1-5]。但由于彩色图像承载信息量大,其传输、存储等操作更加复杂,再加上彩色图像采用不同颜色空间进行色彩表征,所以如何采用有效方法进行颜色空间转换便成了本文视频格式处理的关键问题。

2颜色空间概述

2.1YUV颜色空间模型

在实际生活中,人们往往利用颜色空间模型对不同颜色进行量化,并用不同颜色空间模型描述不同领域内的颜色量化需求[6]。在众多颜色空间中,RCB和YUV是颜色空间模型的典型代表,其中,RGB颜色空间是利用红(R)、绿(G)、蓝(B)三原色以不同强度叠加来描述颜色,而YUV颜色空间则利用色彩亮度和色度原理来描述颜色[7],它们的颜色空间模型如图1所示。

3YUV采样格式及存储方式

YUV格式有两大类:打包格式(packed)和平面格式(planar),其中打包格式将每个YUV分量连续交叉存储,并将若干相邻的同数组中像素组成宏像素,平面格式则按照顺序将Y、U、V分量分别存储到不同数组中[8]。

3.1YUV采样格式

在表示像素格式时,YUV采用亮度参量和色度参量进行独立描述,这样可避免两个参量之间出现色彩十扰,降低了色度的采样率。由于YUV的UV(色度)频道比Y(亮度)频道采样率低,所以不会明显降低视觉质量和图像质量,在视频格式处理时,人们往往采用A:B:C来描述UV(色度)与Y(亮度)的采样率比例。

3.2YUV存储方式

1)对于4:4:4格式,每像素32位,这是一个打包格式[10]。其中每个像素都被编码为四个连续字节,如FOURCC码的AYUV。

2)对于4:2:2格式,每像素16位,支持两个4:2:2格式,其中每个色差信道的抽样率是亮度信道的一半,在水平方向的色度信道的抽样率是4:4:4的一半,其中每个像素都被编码为四个连续字节的两个像素,如FOURCC码的YUY2、UYVY[11],从而使得色度水平采样乘以系数2。

3)对于4:2:0格式,每行扫描线上只有一种色度分量以2:1的抽样率存储,每像素16位。FOURCC码为IMC1、IMC2。

其中,由于4:2:2和4:4:4颜色构成的画面对大多数人来说区别不大,所以当4:2:2信号被解码的时候,人们往往通过内插补点方式计算两侧颜色完成“缺失”色度采样。但是,在4:2:0中,人们需要通过内插补点计算分别补充左有相邻、上下两行的采样点来完成相应的“缺失”色度采样。

4BMP位图转换成YUV视频的实现

4.1BMP文件格式

在对数字图像进行存储和记录时,计算机以文件(由文件头、文件体和文件尾组成)形式来完成相关操作。位图文件(BMP)格式是微软公司开发的、与硬件没备无关的、Windows环境下的图像文件存储格式[12],以.bmp或.dib为文件扩展名。位图文件由位图文件头(包含该文件类型、显示内容等信息)、位图信息头(包含该文件的宽、高及所采用的压缩方法)、调色板、位图数据(实际的R、G、B值)等四部分组成。位图图像的每一扫描行由连续的表示图像像素的一组字节组成,字节数由图像颜色数和宽度决定,并且其个数采用DWORD对齐方式,因此其数目必须是4的整数倍。另外,所有扫描行的字节是由下而上进行存储的,下面给出读取位图的流程图。

4.2 RGB到YUV的转换关系

针对现实生活中的彩色图像,由于RGB是利用红绿蓝三原色以不同强度叠加形成不同颜色,使得每个像素在R、G、B三个成分上拥有相同的像素和显示分辨率,这样不仅影响彩色图像处理效率,还会影响在不同需求下的图像处理精度。由于YUV中的U、V(色度)分量可高度压缩,所以很多地方开始采用YUV来更好地处理彩色图像。

RGB到YUV转换公式为:

Y=INT(16.5+(0.257R+0.504G+0.098B))

Cb=INT(128.5+(-0.148R-0.291G+0.429B))

Cr=INT(128.5+(0.439R-0.368G-0.071B))

由于现实生活中视频所占存储空间大,为方便传输和存储,人们往往先将视频进行压缩,再利用相应的视频播放器进行视频播放[13]。压缩视频主要有面向存储和面向流式媒体两大类,其中后者是经常应用于流媒体电影、现场直播或转播等场合。利用VC++技术,本论文将单帧或多帧RGB格式的视频图像转换成YUV420/YUV422格式的视频文件,从而实现了不同颜色空间的视频图像转換。下面给出本文颜色空间转换的部分关键代码。

for(currentnum=start_number;Currentnum<(start_number+to-tal_number); currentnum++) { BmpPathStr.Format(" %s%d.bmp",UnchangPathStrl.currentnum);

strcpy(src,BmpPathStr);

switch(format) {

case IDC_RADIO_420://将RGB转换成420采样格式的YUV文件{

if(w*3%4==0)difiw=0;

else diffw=4-(w*3%4);

diffh=h%2;if(yuvout==0) { sprintf(dstY, "%s%d.Y",Un-changPathStr2.currentnum);

sprintf(dstU,"%s%d.U",UnchangPathStr2.currentnum);

sprintf(dstV,"%s%d.V",UnchangPathStr2.currentnum);

f1=fopen(dstY,"wb");

f2=fopen(dstU, "wb");

f3=fopen(dstV,"wb");}

y=(unsigned char*)malloc((w+diffw)*(h+diffh));

u=(unsigned char*)maloc((w+diflw)*(h+diflh)/4);

v= (unsigned

char

*)malloc((w+diffw)*(h+diffh)/4) ;bmp2yuv_420(w.h.diffw,diffh.src,y,u,v);} }

这段代码首先使用一个循环语句来控制滚动条的状态的变化,开始时滚动条的状态为空,并且它的值为1,当转换成功后,对应滚动条的状态显示为全彩色,并且它的值为100。再者实现的功能是将BMP位图转换成YUV420采样格式的视频文件。

其中核心为BMP位图到YUV视频文件的转换算法,其算法能满足转换的基本需求,并且效率比较高。再者,实现的功能是将BMP位图转换成YUV422采样格式的视频文件。

4.3软件运行效果

首先需要用户解压该软件的压缩包,运行解压后文件夹中的EXE可执行文件,就打开BMP转YUV主界面,分为BMP文件目录选择模块,没置帧频模块,YUV文件存放目录模块,YUV采样格式和存储方式两个模块,进度条模块,转换和关闭按钮模块,具体展示如图3所示。

5软件测试的效果

本软件针对的对象是用户,所以首先从用户角度出发去测试,一方面验证该软件是否能实现转换功能,另一方面验证是颜色空间是否可以实现转换。由于该软件转换后的YUV文件需要使用指定PC的播放器才能播放,下面是BMP图像转换成YUV420/YUV422视频图像转换前后如图4和图5所示。

本转换软件经过测试后,可以实现BMP位图到YUV视频格式的转换,主要包括BMP位图到YUV(4:2:2/4:2:0)视频格式和BMP位图到Y、U、V(4:2:2/4:2:0)视频格式的转换,验证了软件中所涉及的算法的正确性和可塑性,能很好地满足用户的需求。

6总结

利用VC++技术,本软件从而实现了不同颜色空间的转换。传统方法只能将单个BMP位图转换为YUV视频,并且视频文件不能被相应的播放器播放,但是本软件不仅实现了单个或多个连续的BMP位图转换成相应的YUV视频,而且转换后的视频文件还可以在其他格式的转换软件中使用,使得颜色空间转换更具实用性,应用范围也得到扩展。另外,本软件将YUV视频的三个分量独立存储,这为以后转换为不同格式的YUV视频文件提供了新的研究思路。

参考文献:

[1]滕升华,沈怡平.颜色空间在图像彩色化处理中的应用分析[J].计算机科学,2009,36(10):277-279.

[2]刘云粼,王树东.基于SSE2的YUV与RGB色彩空间转换[J].中国图象图形学报,2010,15(1):45-49.

[3]张琳,刘曦,李大海,等.一种YUV颜色空间下的多视差图偏色校正方法[J].液晶与显示,2010,25(2):278-282.

[4]杨璟,朱雷.基于RGB颜色空间的彩色图像分割方法[J].计算机与现代化,2010(8):147-149,171.

[5]张争珍,石跃祥.YCgCr与YCgCb颜色空间的肤色检测[J].计算机工程与应用,2010,46(34):167-170.

[6]冯永超,罗敏,贺贵明.一种快速YUV-RCB彩色空间变换方法[J].微型机与应用,2002,21(7):59-60.

[7]于韶光.认识RGB和YUV——兼淡色差信号的标识问题[J].家庭影院技术,2000(2):37-39.

[8]廉玉生,王秀泽.5种不同颜色空间的均匀性研究[J].测绘科学技术学报,2007,24(2):104-106.109.

[9]王建国,林宇生,杨静宇.基于新颜色空间YCgCr的人脸区域初定位[J].计算机科学,2007,34(5):228-230,233.

[10]王建国,华继钊,杨静宇.基于YCgCr颜色空间的光照白适应的肤色区域检测[J].计算机应用研究,2008,25(2): 467-468.472.

[11]张学习,杨宜民.彩色图像工程中常用颜色空间及其转换[J].计算机工程与设计,2008,29(5):1210-1212.

[12]黄国祥.RCB颜色空间及其应用研究[D].长沙:中南大学,2002.

[13] Mahlknecht S,Oberhammer R.Novak G.A real-time imagerecognition system for tiny autonomous mohile rohots[J].Real-Time Systems, 2005,29(2/3):247-261.

【通联编辑:李雅琪】

收稿日期:2020-03-27

基金項目:河南省科技攻关项目(编号:172102210532,20A520039)资助;河南省高等学校重点科研资助项目(编号:20A520039)资助;河南省教育厅高校青年骨干教师培养资助项目(项目编号:2019GGJS279)

作者简介:孙敬(1991-),女,助教,本科,研究方向:计算机技术应用;孙滨(1983-),男,副教授,硕士研究生,研究方向机器学习与大数据。