kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 设计应用> 基于FPGA的四通道视频缩放引擎的研究及设计
基于FPGA的四通道视频缩放引擎的研究及设计
来源:电子技术应用2011年第8期
陈浩利1,2,郑学仁1
1.华南理工大学 电信学院,广东 广州510640; 2.广东威创视讯科技股份有限公司,广东 广州510663
摘要:设计了一种可实现4路视频信号缩放和帧率转换的电路架构。视频信号依次经过缩小模块、帧率转换模块以及放大模块,有效地减少了帧率转换对存储器带宽的需求。帧率变换模块采用输入和输出自适应调整的算法,同时在缩小模块采用加权均值算法,而放大模块则采用四点双三次插值算法。在满足视频放大质量要求的基础上,避免了采用过于复杂算法而消耗过多的FPGA资源,有效地解决了视频放大算法实现视频缩小时原始图像信息量丢失导致图像失真的问题。
中图分类号:TP302.1
文献标识码:A
文章编号: 0258-7998(2011)08-0056-03
Research and design of four-channel video zooming engine based on FPGA
Chen Haoli1,2,Zheng Xueren1
1.School of Electronic and Information Engineering, South China University of Technology,Guangzhou 510640,China; 2.Guangdong Viron Technologies Co.,Ltd., Guangzhou 510663,China
Abstract:This paper presents an architecture to achieve four-channel video scaling and frame rate conversion. The video signal go through after zoom out module, the frame rate conversion module and the zoom in module in turn, reduce the demand for memory bandwidth effectively. An input and output frame rate adaptive algorithm is proposed, and the zoom out module uses a weighted average algorithm, the zoom in module uses a four-o'clock bi-cubic interpolation algorithm, avoiding excessive consumption of FPGA resources to meet the video quality, and solves the problem of image distortion caused by the loss of original image information when using the video zoom in algorithm to zoom out the video.
Key words :FPGA;weighted average interpolation;bi-cubic interpolation;frame rate conversion;DDR2


数字视频缩小和放大(简称缩放)是视频处理的一个重要分支,是基于对数字视频每帧图像的处理来实现的。常见的缩放算法有最近邻域法、双线性插值法、抛物线插值法、双三次插值法和牛顿插值法等基于多项式的插值算法[1],较容易在FPGA硬件上实现;也有B样条插值法、基于小波插值和有理插值等比较复杂的算法,难以在FPGA上实现。
近年来随着液晶平板显示器件的广泛应用,对于定标器的研究越来越多且研究成果也很丰富。但定标器的缩放比例有限,一般在0.5~4之间,在这个范围内采用2阶或3阶多点插值算法,图像的边缘和细节可以较好保存。但是采用定点插值法,当文字缩小比例较大时,会丢失较多的细节,出现字体笔画断裂或者锯齿现象。而采用低阶算法(例如多点均值插值),参与运算的点较多,可以有效提高文字的显示质量。
1 系统架构
系统架构如图1所示,先对输入视频的分辨率进行检测,将检测值送至MCU,MCU用其确定缩放步长;然后对视频进行缩小操作。如果要对信号进行放大,则绕过该模式;接着将视频数据送至IFIFO缓存,由仲裁器和DDR2控制器实现4个通道数据的帧率变换后,视频数据送至OFIFO模块;接着数据被送至放大模块,完成放大操作。如果要对视频信号进行缩小,则绕过该模式;最后将完成处理的RGB视频信号输出。整个缩放过程所需要的缩放步长、通道选择等配置信号全部由MCU通过本地总线配置FPGA。

其中,f(x,y)为缩小图像某点的像素值,f(xi,yi)为图像子块中各点的像素值。
实现结果如图5所示,较好地保证了文字的正常显示。

4 帧率变换
4.1 输入缓存 IFIFO

每一路IFIFO都需要在FIFO中数据量大于1/2 FIFO深度时向仲裁模块发送占用DDR2总线的请求信号REQ,应答信号AGREE有效时,向DDR2控制器发送数据。当完成一定量的读出数据时,往仲裁模块发送一个发送结束信号END,仲裁模块接收到END信号后将DDR2总线控制权收回,IFIFO等待下一次应答。
4.2 输出缓存OFIFO
其实现原理与IFIFO类似,只是该模块的输入端工作在DDR2工作时钟域,输出模块工作在帧率变换后的视频图像的像素时钟域。
4.3 仲裁
共有4路输入和4路输出占用DDR2带宽,需要划分时间片来保证各个通道能够顺畅地显示,优先级依次为第1、2、3、4通道读,第1、2、3、4通道写。本模块采用状态机控制,状态机在上述8个状态中循环跳转,然后跳回IDEL状态,开始下一轮循环。
仲裁模块的另一个任务就是读写DDR2地址的生成。将DDR2的存储空间划分为4个部分,每个部分存储一路视频信号,每路视频信号存储3帧。同时读DDR2时,命令设置为读操作;写DDR2时,命令设置为写操作。
现就一路视频实现帧率变换讨论如下:创建3个指针分别指向3帧数据的DDR2空间基地址,系统启动时,读指针rd_pointer、当前写指针current_wr_pointer和之前写指针pre_wr_pointer分别按照图6所示的状态图在3个基地址之间跳转。

最近邻域插值法存在很强的波瓣,频率响应较差。当图像中包含像素值有变化的细微结构时,最近邻插值会在图像中产生人为的痕迹,造成图像模糊或产生人为噪声点。
线性插值法频谱的旁瓣远小于主瓣,带阻特性较好。但通带内高频成分衰减过快,会使得插值后的图像变模糊。
四点立方插值通带内高频成分衰减明显变慢,且旁瓣不超过1%,具有较好的高频响应特性,缩放后的图像能够保持更多细节。
六点立方插值算法的频率响应特性更加优越,通带内高频成分衰减更慢且旁瓣更低。
四点立方插值较好地保持了图像的细节,实现难度和占用逻辑资源适中。六点立方插值虽然实现效果更好,但是占用的逻辑资源较多。故本设计采用四点立方插值算法实现视频的放大操作。
5.2 插值基函数
图像插值缩放具有二维可分解的特点,可以将二维图像的插值分解为分别沿x和y方向的一维信号插值[3]。一维方向上,利用插值点的四个临近像素点进行三次插值, Keys将sinc离散函数进行泰勒级数展开后,使三次分段多项式和原始信号的泰勒级数展开式尽可能多项吻合,以此推导出插值基函数表达式[4]。

5.3.1 抽头系数的产生
将插值的系数存在ROM中,这样虽然使用三次方插值,但是不用在FPGA中实现三次方的运算,提高了运算速度。例如原图像一行有3个像素,要求插值后的图像一行有8个像素,则新图像一行的第5个点在原图像中映射的坐标为[(5-1)×2/7]+1=15/7=2+1/7≈
′b0010.1001,整数2为其原图像中左边临近的像素点坐标为2,1/7表示其与坐标为2的原图像像素的距离为1/7。此时将小数部分1001作为地址读出存储在该地址的抽头系数,将其送给卷积器。
5.3.2 插值参考点控制
放大时,对缩放步长进行累加,当小数向个位数进位时,开始读取一个新的数据。例如计算插值后图像某个点时,采用原图像的x4、x5、x6、x7作为插值参考点,则当步长累加器有进位时,读取下一个像素值x8,同时将x5、x6、x7移到x4、x5、x6的寄存器位置,而x8则存入之前x7的位置,这样就可以实现从原图像向目标图像的地址映射,避免从目标图像到原图像地址映射过程出现的乘法运算。
5.4 行缓存
行缓冲存储器的主体为若干个存储容量相同的双口随机存储器(DRAM),每个DRAM存储一行的有效像素数据。
为了确保行缓存不溢出,开辟6个行缓存器,存储时按顺序1-2-3-4-5-6-1循环存放,读取时按循环次序读取。
5.5 垂直方向放大
垂直方向放大滤波器架构和水平方向一样,只是插值参考点来自于不同的行缓存空间里相同地址的数据。
本文采用Xilinx公司的Virtex-5系列XC5VLX50T-1FFG1136C型号的FPGA实现,可用用户IO管脚480个,满足4路视频信号输入、4路视频信号输出和一路16 bit本地总线需求。内部可用Slice 7 200个, Block RAM Blocks最大为2 160 KB,满足4路视频信号每路缓存6行数据需求。输入DVI视频信号用Silicon Image公司的SiI 1161解码成并行RGB数据送至FPGA,输出的并行RGB视频信号用SiI 1160编码成DVI视频信号输出显示。实验结果表明,在4个通道输入均为352×288(CIF格式)分辨率、均放大为1 920×1 080输出显示时,无方块效应,输出稳定顺畅;在4个通道输入均为1 920×1 080分辨率、均缩小为352×288输出显示时,画面质量良好,且文字笔画圆润,无笔画断裂或者模糊不清的现象。
参考文献
[1] 林媛.图像缩放算法研究及其FPGA实现[D].厦门:厦门大学,2006.
[2] 高健,茅时群,周宇玫,等.一种基于映射图像子块的图像缩小加权平均算法[J].中国图像图形学报,2006,11(10):1460:1463.
[3] 张辉,胡广书.基于二维卷积的图像插值实时硬件实现[J].清华大学学报(自然科学版),2007,47(6):885:888.
[4] KEYS R G.Cubic convolution interpolation for digital image processing[J].IEEE Transactions on Acoustics,Speech,and Signal Processing,1981,29(6):1153-1160.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map