APP下载

基于FPGA的SDTV-HDTV转换的研究与设计

2010-06-03陈明义

电子技术应用 2010年5期
关键词:像素点插值亮度

伍 颖,陈明义

(中南大学 信息科学与工程学院,湖南 长沙 410083)

随着数字电视的成熟与发展,高清电视将成为数字电视发展的必然趋势。数字高清电视技术及其标准系统的形成,是电视技术发展的一次重要飞跃。数字标清电视已广泛应用于电视产业,世界上已出现了数字高清电视技术的热潮。我国正处于高清晰电视推广初期,高清晰度的节目源非常有限,需要格式转换设备将大量的标清格式的节目转成高清格式。另外,为了节省宝贵的传输带宽资源,在客户端也可利用视频上变换转换成高清数字电视,满足消费者的需求。本文设计了基于FPGA的SDTV-HDTV转换模块来实现视频上变换功能。

1 SDTV-HDTV的FPGA系统结构

视频格式转换采用空间分辨率,这种分辨率转换通常是指图像缩放。如果输入图像和需要显示的输出图像的每行像素数或者每帧行数不同,则必须采用空间缩放技术,图像的空间缩放技术可以实现图像的放大或者缩小[3]。本文研究图像放大算法,在传统的分辨率转换算法中,一般先采用“去隔行”算法,将隔行转换为逐行,然后再对逐行信号进行提升转换,得到目标格式的图像信号。由于“去隔行”技术的算法比较复杂且需要大量的存储空间,因此将“去隔行”步骤与分辨率转换中的垂直方向像素提升一起完成,简化了工作量,并节省了FPGA资源。

标清数字视频格式遵循PAL 625/50的标准[5],亮度信号的采样频率为13.5 MHz,一帧数据总共有625行,有效行为576行,其中分为奇偶两场,奇场有312行,偶场有313行,每场有效行为288行,每行共有 864个数据,其中有效数据为 720个,消隐数据为 144个;高清数字视频格式遵循HDTV-1920的标准[2],亮度信号的采样频率为74.25 MHz,一帧数据总共 1 125行,有效行为1 080行,其中分为奇偶两场,奇场有563行,偶场有562行,每场有效行位 540行,每行共有2 640个数据,其中有效数据为1 920个,消隐数据为720个。视频信号同步字节嵌入在视频数据中,用4个特征字节表示,分别为EAV和SAV。EAV与SAV之间的数据称为行消隐区。标清与高清在行消隐区的标志位上也有区别,标清视频数据在EAV后直接接行消隐数据,而高清视频数据紧随EAV后接行号LN和CRC校验码再接行消隐数据。

根据SDTV与HDTV之间的差别,两者之间的转换主要是将水平方向的像素点个数增加为原来的1 920/720=8/3,垂直方向将增加为原来的1 080/576=15/8。

FPGA系统框图如图1所示,插值实现的过程分成2个步骤:(1)在水平方向的插值即行内插值;(2)在垂直方向实现插值即行间插值。系统接收到视频输入以后,根据帧同步、行同步等同步信号将有效视频数据进行行内插值运算,根据新生成像素对应每个相邻原始像素的权值,计算出新生成像素点的像素值,然后将行内插值后的行写入行存储模块中。行存储模块有2个作用:隔离输入和输出的2个不同时钟域以及作为乒乓模块提高数据的吞吐能力。根据之前的缩放比例要求,行内插值模块从行存储模块中读出相关数据,对某些地址的数据进行重复读取,再进行新生成行的计算。插值完成以后的数据只是有效视频数据的提升,最后根据高清视频格式的标准,打包生成符合格式标准的完整视频数据。组标志位数据包括了视频消隐区里的EAV和SAV以及高清视频中必须添加的行号LN和CRC码。视频输出模块对原始行和新生成的行进行读操作,以满足缩放比例的要求。所有数据处理模块同步时钟均由同步控制模块产生,保证数据流的同步,并确保显示数据能以正确格式输出。方向分别只利用到了相邻2个像素的信息。双线性插值滤波算法的优点是能有效消除像素间的锯齿,使输出图像平滑,缺点是对特殊场景如运动图像等,可能出现图像模糊等现象。但是该算法简洁、规则,处理图像品质稳定。因此出于对设计周期、芯片成本等的综合考虑,本设计采用双线性插值滤波算法来实现视频图像缩放。

由于系统采用线性滤波算法,本质上是对空间域内点的加权求和,所以系统核心单元为乘加器。如果加权系数实时运算,则会消耗大量的FPGA资源。因此将插值位置调整为固定的插值相位,各个插值相位的插值系数也为固定值。这样,在简化系统设计的同时,实现了图像的缩放。行内插值模块是水平方向上分辨率的提升,使用输入与输出对应2个不同频率时钟进行控制。

2.1 亮度信号处理

在每个像素点中,亮度信号Y是独立存在的,也就是在水平方向上将原来的720个亮度数据插值生成1 920个亮度数据。其中比值为8/3,即以3个数据为一组,插值生成8个数据。亮度信号行内插值电路如图2所示,相邻两点像素值的亮度数据经过系数加权后再相加,根据行内点计数器选择输出。y1、y2、y3为输入的行内插值前的3个像素点的亮度数据。此时输出时钟与输入时钟之比也为8/3,时钟模块由PLL产生。

2 行内插值

视频图像格式转换算法经历了线性滤波、自适应非线性算法以及运动补偿插值算法(MC)3个阶段,其中线性滤波算法具有理想低通滤波的频谱特性,且结构简单,能取得较好的滤波效果[1]。双线性插值算法的待插值点由其空间域内的采样点加权求得,其计算公式为:

式中f0(X,Y,n)为待插帧/场,X、Y为空间位置,n为帧/场序号,fi(x+k,y+l,n+m)为原始帧场中(X,Y,n)邻域对应的点,h(k,l,m)为 插值 内核[4]。 这种插 值内 核只利用了当前帧/场的相关性,因为双线性插值在水平和垂直

2.2 色差分量信号处理

在每个像素点中,色差分量有2个,分别为Cb和Cr。标清720个像素点中有360个Cb数据和360个 Cr数据;高清1 920个像素点中有960个Cb数据和960个Cr数据,2个色差分量是交错存在的。所以在水平方向上进行插值时,要以Cb和Cr为一组数据,即将3组数据插值生成8组数据,这其中的比值为16/6。色差分量信号行内插值电路如图3所示,相邻2个像素点的2个色差数据经过系数加权后再相加,根据行内点计数器选择数据输出。 cb1,cr1,cb3,cr3,cb5,cr5 为输入的行插值前6个像素点的色差分量数据,相邻2个亮度信号共用一组色差分量。

3 行间插值及组标志位数据

本系统要通过控制读写寄存器进行行数提升,但这样做会使图像产生运动失真,表现为锯齿和模糊,图像分布也不均匀。解决这一问题的方法是:首先进行行数的场内插值,然后利用场内相邻行间的内容进行线性插值,算出新插值生成行的内容。垂直方向上亮度信号与色差信号的提升是一样的,都是将原来的576行转换成 1 080行,比例为 15/8,即以8行为一组,插值生成15行。将行内插值后的高清数据分为Y、C 2个通道进行行间插值。由于一行高清数据有1 920个字(行内插值生成的),如果运用8个RAM分别来存储8行数据,需要1 920×10×8=153 600 bit的 RAM,2 个通道就是2×153 600=307 200 bit的RAM,再加上需要进行FIFO缓存,这样存储量相当大,占用了大量FPGA的存储量,甚至超过现有FPGA芯片的存储资源且不方便后期处理,所以在行输入端采用2个1 920 B的RAM循环交替存储8行,分别用2个FIFO缓存从这2个RAM中读出的行内数据,并且读出行数据时经过插值模块算出新生成的一行数据,这个插值模块的系数也是固定的,最后再循环交替读出15行数据。这中间需要读写2个控制模块,根据行计数和每行有效数据的标志位进行合理的读写控制,保证不重复写入行数据和不丢失读出行数据。写时钟和读时钟是2个不同的时钟域,通过PLL产生模块生成读时钟。行间插值电路如电路图4所示。

高清视频的标志位数据与标清视频的标志位数据除了消隐区数据个数不同外,还添加了行号LN和CRC校验码4个字[6]。行号是指当前行计数器得到的行数,包含了2个字;CRC校验码是根据多项式CRC(x)=x18+x5+x4+1算出的,包含了2个字,用于检测有效数据行中EAV后有效视频数据。

4 验证

本系统采用VHDL语言编写,通过基于Altera Cy-CloneⅢ系列FPGA芯片EP3C25Q240实验平台的验证。普通标清SDTV的PAL制模拟视频信号通过ADC解码芯片,以 ITU_RT656标准的 4:2:2的数字视频格式输出。FPGA接收到视频信号后开始同步数据,并将同步后的有效视频数据送入图像缩放模块进行视频处理,输出为符合HDTV-1920的数字视频格式标准数据,再由DAC编码芯片转换成高清模拟视频分量信号输出给显示设备。通过外部模拟源给ADC提供视频输入,对比原始图像和缩放处理后图像的结果,验证是否达到预期效果。整个实验验证平台结构如图5所示。

用VHDL编写的FPGA模块设计文件,经EDA工具QUARTUS II全编译后直接下载到FPGA芯片中。使用QUARTUS II提供的嵌入式逻辑分析仪观察最后生成高清数据的格式。结果证明,设计完全满足要求,嵌入式逻辑分析仪上观察到的数据也符合要求,如图6所示。亮度信号和色度信号分离的2个通道,消隐区的数据都一样,有效视频数据有区别。 其中3FF h、000 h、000 h、274 h为一行视频数据EAV同步字,后面跟的254 h和200 h是由行号21行十六进制015 h构成的2个字,12E h和182 h是一行有效视频数据通过CRC校验码多项式算出的CRC循环冗余校验码的2个字,这4个字是根据高清视频SMPTE 292M标准规定组合而成的,200 h和040 h为视频行消隐区里的数据,这个包头符合高清视频格式。

广泛应用于数字化电视处理领域的“去隔行”技术都会用到帧存储器。本文结合实际工作,采用场内/行间插值方法处理实时图像。利用交替写RAM和读RAM以及FIFO缓存的方法实现扫描行数的提升,重点探讨了在FPGA芯片上实现视频图像缩放算法,将标准清晰度的电视视频转换成高清晰度的电视视频。这种方法简洁且节省资源,调试结果表明该系统设计方案可行,配合外围其他专用芯片的调试还可提高系统功能的扩展及灵活性。在数字电视的播控前端,可以利用该模块将现有的标清视频源转换成HDTV格式进行传送。随着数字电视机的快速普及,数字电视市场产品的不断细化,该方案今后也可应用于数字电视机,以满足不同消费人群的需求。

[1]LEE H Y,PARK J W.Adaptive scan rate up-conversion system based on human visualcharacteristics.IEEE Transactions on consumer electronics,2000,46(4):999-1006.

[2]POYNTON C.Digital video and HDTV algorithms and interfaces.Morgan Kaufmann Publishers,2003.111-116.

[3]王栋.视频格式转换算法及ASIC实现的研究[D].上海:上海交通大学,2002.

[4]易湖,赵照,于军,等.基于 FPGA的数字视频图像缩放模块设计[J].有线电视技术,2006,5(197):41-43.

[5]ITU_R BT656.国际电信联盟无线电部门656号建议.

[6]SMPTE 292M.美国电影电视工程协会SMPTE标准.

猜你喜欢

像素点插值亮度
基于局部相似性的特征匹配筛选算法
亮度调色多面手
基于Sinc插值与相关谱的纵横波速度比扫描方法
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
亮度一样吗?
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于斩波调制的LED亮度控制
人生的亮度
一种改进FFT多谱线插值谐波分析方法