http://www.paper.edu.cn
YUV转换RGB显示的实现
1
付富壮,齐本胜,杨书生
1河海大学计算机及信息工程学院,江苏常州213002
Email:fuzh1984@126.com
摘要:在本文中首先对YUV和RGB颜色空间进行了简要的介绍。给出了从YUV空间到
RGB空间的转换的关系。指出了YUV数据和RGB数据的几种格式。并对采集到的YUV
数据进行RGB转换,并以位图格式把实验结果保持显示。
关键字:YUV;RGB;CCIR656;位图;
中图分类号:TP391
1.引言
YUV
[1]
是被欧洲电视系统所采用的一种颜色编码方法。YUV主要用于优化彩色视频信
号的传输,使其向后兼容老式黑白电视。RGB色彩模式是一种颜色标准,是通过对红(R)、
绿(G)、蓝(B)三个颜色的按照它们相互之间不同比例的叠加来得到各式各样的颜色,RGB
[1]
即
是代表红、绿、蓝三种颜色,根据这个标准合成的颜色几乎包括了人类视力所能感知的所有
颜色,是目前运用最广的颜色标准之一。
本文是将采集来自基于FPGA的视频画面分割器设计中的从摄像头经过SAA7113输出
的YUV数据。转换成RGB形式,并对得到的RGB值进行修正,将结果以位图的形式保存
显示,效果良好。
2.RGB/YUV颜色空间简介
2.1RGB颜色空间
在色度学中,为了确切表示某一种彩色,采用亮度、色调和色饱和度三个基本参量。彩
色视觉是人眼对这个三个参量的总体感觉
[1]
。亮度是光作用于人眼所引起的明亮程度的感
觉。色调是反映了彩色的类别。也就是通常所说的红,绿,蓝等就指的是色调。色和度是指彩
色光所呈现彩色的深浅程度。对于同一中颜色的彩色光,彩色越浓,色饱和度越高。
根据色度学的介绍,不同波长的单色光会引起不同的彩色感觉,但相同的彩色感觉却可
以来源于不同的光谱成分组合。自然界中几乎所有的颜色都能用三种基本彩色混合配出,在
彩色电视技术中选择红色、绿色、和蓝色作为三基色。其他的颜色都可以用红色、绿色和蓝
色按照不同的比例混合而成。所选取的红色、绿色和蓝色三基色空间。简称为RGB颜色空
间。
2.2YUV颜色空间
在彩色的广播电视中,并不是直接传送RGB三基色信号的。而是把三基色经过转换成
可以代表三基色信号的新的三个基本参量来传输的。也就是一个亮度信号Y和两个色差信
号Cb和Cr。新的亮度信号和色差信号同三基色信号的转换关系如下:
(1)
BGRYB
BGRYR
BGRY
89.059.030.0)(
11.059.070.0)(
11.059.030.0
+??=?
??=?
++=
在发送时,把经过平衡正交调制的色差信号同亮度信号叠加组成符合信号
)sin(θω++tCY
sc
作为彩色电视图像信号。其中经过正交平衡调制的色差信号如下:
-1-
基金项目:常州市科技攻关资助项目(CE2006077)
)sin(cos)(sin)()(θωωω+=?+?=tCtYRtYBtU
scscscc
(2)
由于得到的彩色图像的动态范围比较大,其对高电平为(Y+C);最低电平为(Y-C);
所以要对色差信号进行压缩,公式如下:
)(877.0
)(493.0
YRV
YBU
?=
?=
(3)
经过压缩的色差信号同前面的亮度信号组成新的色度空间,简称为YUV空间。
3.YUV数据采集和分析
3.1YUV数据采集
这里的数据是采集来自基于FPGA的视频画面分割器设计中的从摄像头经过SAA7113
输出的YUV数据。数据采集部分结构框图如图1所示。PROM是用来配置FPGA的,SRAM
是用来存储采集数据的。FPGA采用的是XC3S400芯片,ADC采用的是SAA7113,SRAM
采用的是两片ISSI_IS61LV25616;微控制器采用的是AT89C51芯片。
SAA7113是PHILIPS公司的一种高集成度视频解码芯片,它支持隔行扫描和多种数
据输出格式,可通过其I2C接口对芯片内部电路进行控制。该芯片具有如下特点:
支持四路模拟输入,内置信号源选择器。
有两个模拟预处理通道。
图1YUV数据采集框图
Fig1YUVDatagatheringDiagram
内置两个模拟抗混叠滤波器。
两个片内9位视频A/D转换器。
行/场同步信号自动检测。
多种数据输出格式。
由于我们要用串口采集图像数据,数据量比较
大,而串口的数据速率比较低,不能实时的传送到
计算机上。所以我们先把从SAA7113输出的YUV
一帧图像YUV数据存储到SRAM中,然后通过PC
串口把SRAM中的数据读取出来以YUV文件的形式保存在
PC机上处理。
FPGA
ADC
PROM
Camera
MircroProcessorPC232interface
Memory
SRAM
3.2YUV数据分析
YUV格式通常有两大类:打包(packed)格式和平面(planar)格式
[2]
。
打包类型的有以下几种:YUY2格式,以4:2:2方式打包;YUYV格式,以4:2:2方
式打包;YVYU格式,以4:2:2方式打包;UYVY格式,以4:2:2方式打包;
AYUV带Alpha通道的4:4:4YUV格式;Y41P格式,以4:1:1方式打包;Y411格式,
以4:1:1方式打包;Y211格式。
平面类型有一下几种:IF09格式;IYUV格式;YV12格式;YVU9格式
[2]
。
根据对SAA7113的配置情况,我们这里的YUV数据是符合ITU-CCIR656协议的UYVY
格式,以4:2:2方式打包;适合625/50Hz扫描标准电视显示的数据。一帧YUV数据分两场,
第一场奇数场,第二场偶数场。第一场312行,第二场313行。其中第一场的1-22行,和
311-312行为场消隐行。第二场的313-335,624-625行为消隐行。有效视频数据部分23行
的后半行-310行,336行-623行的前半行。每行数据由有效视频数据,定时基准数据,行消
隐数据组成。每行数据由1728个字节构成,0-1439是有效视频数据,剩余的288个字节,
其中定时基准数据占8个字节,4个字节的有效视频开始数据(SAV),4个字节的有效视
-2-
http://www.paper.edu.cn
频结束数据(EAV)。其余部分有消隐数据填充。如表1所示:
表18位输出总线的YUV数据格式
[3]
Table1YUVdataformatonthe8-bitVPO-bus
消隐定时基准码4:2:2视频数据定时基准码消隐
8010FF0000savCb0Y0Cr0Y1Cb1……..Y719FF0000Eav8010
由于每行数据中只有0-1439是有效视频数据,所以在这里我们只讨论0-1439之间1440
个字节的数据转换为RGB,有效数据是每4个字节为一个宏象素,其实是两个象素占用了4
个字节。4个字节中有两个亮度信号,两个色差信号。两个亮度信号共用两个色差信号。
4.YUV转换为RGB的实现并以位图文件保存
4.1YUV数据处理
从SRAM中读取的数据是符合CCIR656625/50Hz格式的数据。每帧数据分为两场,
第一场是312行,第二场是313行数据。每行数据有1728个字节,在这里我们用VC++把
每行数据的消隐数据都不予处理,只对每行的有效视频数据进行RGB的转换。首先我们将
接收到的YUV数据文件,把每个行的数据的消隐部分去掉,仅留下625行数据行有效部分
以新的YUV文件保存。得到的新的文件包含625行数据,每行数据是1440个字节。360个
宏象素。
4.2YUV/RGB转换关系
CCIR656格式的数据并不是标准的YUV格式的数据。它的YUV格式是经过伽马校正
的YUV数据。由RGB转化来的公式如下:
(16.5(0.2570.5040.098))
(128.5(0.1480.2910.439))
(128.5(0.4390.3680.071))
b
r
YINTRGB
CINTRGB
CINTRGB
=+++
??
=+?
(4)
[4]
由(4)可以推导出YUV转换成RGB的公式(5)如下:
(5)
1.1665(16.5)0.0483(128.5)1.6455(128.5)
1.1665(16.5)0.3922(128.5)0.8151(128.5)
1.1665(16.5)2.0218(128.5)0.0013(128.5)
br
b
br
RYCC
GY
BYCC
=???+?
?
=?+??
r
4.3BMP文件格式
开始
i=0
j=0
读YUV文件四个字节
YUV转换成RGB
j=j+1
j>=360
i>=625
i=i+1
j=0
关闭文件
结束
RGB数据写入
BMP文件
Y
N
Y
N
BMP是bitmap的缩写形式,也就是位图。它一般由4部分
组成:文件头信息块、图像描述信息块、颜色表和图像数据区
组成。在系统中以BMP为扩展名保存。在真彩色模式无颜色表,
我们在这里采用的位图文件格式就是用的真彩色模式。所以在
写文件结构的时候就没有用到颜色表。
一个位图文件主要由以下四个部分构成的。位图文件信息
头,位图信息头,调色板,位图信息。
在位图文件信息头中,有文件类型,文件大小等信息,占
14个字节。
在位图信息头中,包括,位图宽度,高度,位图有效数据
大小,RGB格式等信息。占40个字节。图2程序流程图
Fig2Programflowdiagram
颜色表信息,颜色表的大小根据所使用的颜色模式而定:
-3-
http://www.paper.edu.cn
2色图像为8字节;16色图像位64字节;256色图像为1024字节。其中,每4字节表示一
种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,一般不
需要)。即首先4字节表示颜色号1的颜色,接下来表示颜色号2的颜色,依此类推。
位图图像数据信息,颜色表接下来位为位图文件的图像数据区,在此部分记录着每点像
素对应的颜色号,其记录方式也随颜色模式而定,既2色图像每点占1位;16色图像每点
占4位;256色图像每点占8位;真彩色图像每点占24位。
我们在这里的位图信息,就是真正的RGB数据。在这里我们采用的是RGB24格式,
即真彩色模式。每个象素占用3个字节,即RGB颜色信息各占一个字节。有颜色表的位图,
在位图信息中存储的不是真正的RGB数据,而是RGB数据的索引值。
4.4RGB数据以BMP文件保存
在经过去行消隐信号的YUV数据文件中,每行的YUV数据是UYVY,UYVY…..UYVY
的顺序排列的。按照每四个字节,一个单位转换成RGB数据。两个亮度Y信号共用两个U,
V信号。按照上述的转换公式,转换成两组RGB数
据,
由于RGB的数值范围是0-255的,所以对于计
算出的数值要取整,对与超出的范围要修正,大于255
的部分,修正为255,小于零的部分要修正为零。以
求的R数值为例:
if(R<0)
R=0;
if(R>255)
R=255;
这样就计算得到了两组RGB数据,按照RGB顺
序写入到BMP文件的位图信息部分,就得到了一个
位图文件。转化程序流程图如图2所示。得到的位图
文件打开如图3所示。由图像分析看出,一帧两场数
据,场消隐间隔数据是黑色的,有效的视频数据显现
出采集到数据。得到良好的效果。
图3BMP显示
Fig3BMPDemonstration
5.结束语
从转换的到的位图文件可以看出,图像是符合ITU-CCIR656协议,625行/50Hz扫描标
准的数据格式的。取得了良好的效果。视频格式转换在多媒体等领域应用广泛。
参考文献
[1]徐宝强左庆丰吕联荣等电视原理与组网技术[M]北京:北京航空航天大学出版社,2001:1-4.
[2]陆其明DirectShow中常见的RGB/YUV格式[EB/OL]http://www.ogg.cn/info/view–info-20.html2004/
12/27
[3]Datasheet,SAA7113H9-bitvideoinputprocessor[Z]1999Jul01
[4]ColorSpaceConverter:R’G’B’toYCbCr[Z]Author:BenoitPayetteSeptember12,2002
-4-
http://www.paper.edu.cn
ImplementationofconversionYUVtoRGB
FuFu-zhuang,QiBen-sheng,YangShu-sheng
(CollegeofComputer&InformationEngineering,HohaiUniv.Changzhou213002,China)
Abstract
InthispaperfirstabriefintroductionofYUVandRGBcolorspace,Theconversionrelationof
YUVspacetoRGBspaceisgiven.pointoutseveraldataformatofYUVdata,Thenconvertthe
gatheredYUVdatatoRGB,andstoretheresultsintheformatofBitmap.
Keywords:YUV;RGB;CCIR656;bitmap
作者简介:付富壮,男,1984年生,硕士研究生,主要研究方向嵌入式系统设计
-5-
http://www.paper.edu.cn
|
|