基于双线性内插算法的多路视频缩放设计

2015-05-05 02:30陈全兵习友宝
电视技术 2015年1期
关键词:视频信号状态机流程图

陈全兵,习友宝

(电子科技大学 电子工程学院,四川 成都 611731)

基于双线性内插算法的多路视频缩放设计

陈全兵,习友宝

(电子科技大学 电子工程学院,四川 成都 611731)

基于双线性内插算法,设计改进了一种以FPGA为硬件平台的多路视频信号的图像缩放装置。把与期望位置相邻的两行像素缓存在RAM中,先对垂直方向进行插值运算,再对水平方向进行插值运算。利用FPGA并行处理的优势实现多路视频信号的实时缩放。

双线性内插算法;FPGA;多路视频图像缩放

随着生活水平的提高,人们对视频图像的分辨率和流畅度的要求也越来越高。在视频图像的处理过程中,既要求提高分辨率又要保证图像的传输速度(即输出帧率);在涉及到多路视频信号同时处理时,处理速度就成为了一个瓶颈性问题。基于FPGA并行处理速度快的优势,设计本图像缩放装置,用以实现多路视频图像的实时缩放。

1 图像缩放概述

图像缩放变换属于图像几何变换的一种类型,图像缩放要实现的就是在输出像素和输入像素之间建立一种映射关系,使得在输出图像的每一个位置均有待输出像素值产生。输出像素和输入像素之间的映射关系可以有两种不同的定义方法:前向映射和逆向映射[1]。

前向映射将输出像素的坐标定义为输入像素的坐标的函数mf,如式1所示,其中Q[u,v]表示输出像素坐标,I(x,y)表示输入像素坐标。前向映射有两个问题:1),如果对图像进行放大操作,在输出图像中将会有部分像素点没有相对应的输入像素,即产生空洞现象;2),如果对图像进行缩小操作,输出图像中的部分像素点将会对应输入像素中的多个像素点,使得输出出现混乱。

(1)

逆向映射将输入像素的坐标定义为输出像素的坐标的函数me,如式(2)所示,其中Q[u,v]表示输出像素坐标,I(x,y)表示输入像素坐标。逆向映射对每一个输出像素逆向映射出对应的输入像素,因此更适合产生输出数据流。当采用逆向映射对图像进行缩放操作时,被逆向映射出的坐标值往往不是整数,为了估计输出的像素值通常要在期望位置处对输入像素值进行重采样,等效于用一个采样插值核对输入的像素值进行加权[1],如式(3)所示,其中C(x,y)表示采样函数,I[x,y]表示输入像素坐标,K[x,y]表示插值内核。

(2)

(3)

2 图像插值算法的选取

常见的图像插值算法有最近邻内插算法、双线性内插算法、双三次内插算法和B样条插值算法[2]。

最近邻内插算法是最简单的图像插值算法,该算法的原理为直接选取距离期望位置最近的源图像位置的像素值作为输出像素值。该算法丢失了源图像中的大量信息,使得图像变得模糊边缘部分不清晰,放大后有马赛克现象,缩小后有严重失真[3]。

双线性内插算法用与期望位置最近邻的4个像素值估计期望位置的像素值,若用(x,y)表示期望位置,用Q(x,y)表示输出像素值,I(x,y)表示输入像素值,双线性内插算法的赋值公式为

(4)

双三次内插算法用期望位置最近邻的16个像素值估计期望位置的像素值。双三次插值算法可分离为分段三次插值核[4],如式(5)所示,其中a为自由参数,KKeys(s)表示插值核为

(5)

B样条插值算法的原理是以期望位置为中心利用B样条核对源像素值进行估计从而得出期望像素值。3次B样条核的解析公式为

(6)

双三次内插算法主要应用于商业图像编辑程序(如Adobe Photoshop等)中,算法复杂度较高。B样条插值算法在使用过程中需要用到矩阵求逆等运算[5],算法复杂度更高。考虑到现实应用场景和FPGA的资源情况,本次设计选用双线性内插算法。

3 基于FPGA的双线性内插原理

采用逆向映射计算出的期望位置往往不是整数,设计中把期望位置的坐标分解为整数部分和小数部分。考虑到FPGA不方便进行浮点运算,因此把期望位置的坐标放大256倍(即左移8位)后取后8位作为小数部分,如式(7)所示。其中(xr,yr)为整数部分,用以确定源像素点的位置;(xi,yi)为小数部分,用以确定各像素点的权重,对各像素点经行加权处理进而估计出期望位置的像素值。双线性内插算法示意图如图1所示,其中阴影部分为期望位置,I(x,y)为各像素点的像素值。

(7)

4 基于FPGA实现图像双线性内插算法

该图像缩放模块为全景视频拼接系统的一部分,图像在进行缩放前已经做了去隔行、桶形畸变矫正等预处理操作,经过预处理操作后的视频数据存储在外部DDR2存储器(Double Data Rate 2 SDRAM)中,在进行图像缩放前各路视频数据已经经过DDR2读取模块读取到FPGA的先入先出队列(First Input First Output,FIFO)中进行缓存。

图1 双线性内插算法示意图

图像缩放的关键是根据映射关系确定读写时序和读写地址。双线性内插算法需要用到期望位置附近的两行视频图像数据,因此利用两组RAM对视频信号进行缓存,用FPGA控制RAM的读写地址,从而可以保证读写地址的正确性。考虑到进行缩放时读写缓存RAM的时序复杂性,对读写时序的控制利用状态机实现,从而可以保证缩放时读写RAM时序的正确性。对图像进行缩放操作可以用4个状态机协同合作来实现,包括写RAM状态机、读RAM状态机、垂直缩放状态机和水平缩放状态机。

1)写RAM状态机完成对对视频信号进行缓存的两组缓存RAM的写操作。2组RAM具有相同的读写地址,可以保证读取到的视频数据为同一列的数据,对两组RAM进行写操作时利用片选信号,实现两组RAM的乒乓操作。写RAM状态机完成的主要工作是产生写RAM的地址,控制写RAM的时序,控制写RAM的片选信号。写RAM状态机的流程图如图2所示。

图2 写RAM状态机流程图

2)读RAM状态机的主要工作是产生读取RAM的地址,对读出RAM的数据个数进行计数从而控制读RAM时序。读RAM状态机的流程图如图3所示。

图3 读RAM状态机流程图

3)垂直缩放状态机的主要工作是移动垂直采样窗口,读取FIFO中与期望位置相邻的两行数据并写入RAM中进行缓存,同时计算该两行数据的权重。垂直缩放状态机的流程图如图4所示。

图4 垂直缩放状态机流程图

4)水平缩放状态机的主要工作是:第一,对缩放后的图像的行像素个数进行计数,产生行结束标志从而控制垂直和水平缩放的时序;第二,平移水平采样窗口,读取缓存RAM中与期望位置相邻的水平方向上的两个像素点并计算此两点的权重。水平缩放状态机的流程图如图5所示。

基于FPGA的线性内插算法的运算顺序为先进行垂直方向的插值运算,再以垂直方向的插值运算结果为基础进行水平方向的插值运算。插值运算模块的功能框图如图6所示,其中data1_in和data2_in为像素数据输入端口,data1_weight和data2_weight端口分别对应像素数据输入端口的权重。插值运算模块以像素数据以及其对应的权重为基础计算出插值运算后的像素数据data_out。插值运算模块的仿真波形如图7所示,从仿真波形中可以看出在像素数据输入3个时钟后输出插值运算后的像素数据。

图5 水平缩放状态机流程图

图6 插值运算模块功能框图

图7 插值运算模块仿真波形(截图)

上述各模块协调工作可以实现1路视频信号的缩放操作,效果图如图8所示,其中图8a为缩放前的原始图像,图8b为放大后的图像,图8c为缩小后的图像。把上述视频图像缩放模块例化出多个,每个模块连接不同的视频数据码流可以实现多路视频信号的缩放处理,2路视频信号的缩放效果图如图9所示,其中图9a为缩放前的原始图像,图9b为放大后的图像,图9c为缩小后的图像。

5 小结

本文基于双线性内插算法在FPGA平台上设计实现的多路视频信号的缩放装置为全景视频拼接系统的一部分,利用FPGA并行处理的优势可以实现多路视频信号的同时缩放操作,从而保证了拼接后视频的实时性。根据美国电子消费品制造协会(Consumer Electronics Association,CEA)制定的未压缩数字视频标准CEA-861所提供的传输时序,该装置可输出1 080p(1 920×1 080)的高清数字视频至数字显示器显示,输出帧率为60 f/s(帧/秒)。4路视频信号实现同时缩放的效果图如图10所示。

图8 1路视频信号缩放效果图

图9 2路视频信号缩放效果图

[1]DONALD G B. 基于FPGA的嵌入式图像处理系统设计[M]. 原魁,何文浩,肖晗,译. 北京:电子工业出版社,2013.

图10 4路视频信号同时缩放效果图

[2]RAFAEL C G, RICHARD E W. 数字图像处理[M].3版. 阮秋琦,阮宇智,译. 北京:电子工业出版社,2011.

[3]赵煌,彭勇. 双线性插值算法的优化及其应用[J]. 电视技术,2012, 36(17):30-32.

[4]ROBERT G K. Cubic convolution interpolation for digital image processing[J]. IEEE Trans. Acoustics,Speech and Signal Processing,1981,29(6):1153-1160.

[5]MICHAEL U, AKRAM A, MURRAY E. Fast B-spline transforms for continuous image representation and interpolation[J]. IEEE Trans. Pattern Analysis and Machine Intelligence, 1991,13(3):277-285.

Design of Multi-channel Video Zoom Based on Bilinear Interpolation Algorithm

CHEN Quanbing, XI Youbao

(SchoolofElectronicsEngineering,UniversityofElectronicScienceandTechnologyofChina,Chengdu611731,China)

A multi-channel video zoom device, which bases on bilinear interpolation algorithm and FPGA hardware platform, is designed in this paper. The two lines pixels, which are next to the desired position, are stored in the RAM. The vertical interpolation data are calculated firstly. Then, the horizontal interpolation data are calculated. The image can be scaled in real time by using this device, which takes advantage of FPGA’s parallel computation ability.

bilinear interpolation algorithm;FPGA;multi-channel video zoom

TN949.1

A

10.16280/j.videoe.2015.01.011

2014-07-10

【本文献信息】陈全兵,习友宝.基于双线性内插算法的多路视频缩放设计[J].电视技术,2015,39(1).

陈全兵(1989— ),硕士生,主研FPGA逻辑芯片在图像处理中的应用;

习友宝(1964— ),教授,主研片上系统(SOC)设计。

责任编辑:李 薇

猜你喜欢
视频信号状态机流程图
基于有限状态机的交会对接飞行任务规划方法
浅析新一代视频信号ICtCp
短距视频信号无线通信网络
专利申请审批流程图
专利申请审批流程图
双口RAM读写正确性自动测试的有限状态机控制器设计方法
宁海县村级权力清单36条
小飞鸽ZY—2250D数字机无视频输出故障的应急处理
《天津医药》稿件处理流程图
基于反熔丝FPGA的有限状态机加固设计