郑鑫;闫钧华
【摘 要】基于FPGA硬件实现固定倍率的图像缩放,将2维卷积运算分解成2次1维卷积运算,对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。把图像缩放过程设计为一个单元体的循环过程,在单元体内部,事先计算出卷积系数。降低了FPGA设计的复杂性,提高了图像缩放算法的运算速度,增强了系统的实时性,已经应用于某款航空电子产品中,应用效果良好%FPGA-based hardware implementation of fixed multiple image shrinking and amplifying is presented.Two-dimensional convolution is decomposed into 1-dimensional convolution twice.In order to obtain the output image pixels,the input original image pixels are convoluted in row direction,then processed pixels are convoluted in line direction.Image shrinking and amplifying process is designed to a cycle process of the unit.Inside unit,the convolution coefficients are calculated in advance.This method has been applied to a section of avionics products with good results that the complexity of FPGA design is reduced,the computing speed of image scaling algorithms is increased and the real-time of system is enhanced. 【期刊名称】《电子设计工程》 【年(卷),期】2012(020)007 【总页数】3页(P163-165)
【关键词】FPGA;图像缩放;卷积运算;单元体
【作 者】郑鑫;闫钧华
【作者单位】光电控制技术重点实验室,河南洛阳471009;南京航空航天大学,江苏南京210016 【正文语种】中 文 【中图分类】TP312
航空电子图像处理系统为操作者提供各种图像及字符信息,随着传感器、显示器的性能指标不断提升,图像处理系统的设计面临越来越大的挑战,其中图像缩放的功能是图像处理系统的关键技术要求。图像缩放功能有两种实现方案:1)软件实现,其优点是算法选择灵活多样,生成的画面质量较高,缺点是运算时间长。2)硬件实现,其优点是分辨率高,实时性强,缺点是不易实现功能强大的优秀算法。 近年来,FPGA技术发展迅速,片内集成了PLL、硬件乘法器、存储器,具有了实现优秀算法的充足资源[1]。许多航空电子嵌入式图像处理系统是由固定的视频源和显示设备组成,系统中图像缩放的倍率是固定的。文中针对此展开重点研究,基于FPGA硬件,实现固定倍率的图像缩放。 1 图像缩放的算法
数字图像的缩放是一个处理2维离散信号的过程。输出图像中任一个像素 F (x,y),均可以在输入图像 f(x,y)的像素矩阵中找到其对应的位置,如图1所示。 F(x,y)的值可以对其邻域的原始图像进行二维卷积运算得到。
图1 输入和输出图像像素的映射关系Fig.1 Pix mapping of input and output image
其中 m×n 为邻域范围,f(i,j)是输入原始图像,s(i,j)为系数函数。 因为图像中邻近的像素存在着相关性,所以输出图像像素可以依据其在原始输入图像映射位置邻域的像素数据卷积得到。邻域范围内各个像素的相关度由系数函数决定,邻域的范围决定了算法的运算速度[2-3]。
基于FPGA硬件实现固定倍率的图像缩放,为了降低FPGA设计的复杂性,提高图像缩放算法的运算速度,增强系统的实时性,将2维卷积运算分解成2次1维卷积运算,对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。 2 图像缩放的FPGA实现
2.1 基于FPGA实现图像缩放的功能结构
基于FPGA实现图像缩放的功能结构图如图2所示。 图2 功能结构图Fig.2 Functional diagram
卷积计算模块的硬件结构由算法决定,每个点时钟周期内,对输入原始图像像素和系数先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。系数产生功能是依据控制模块确定的状态,产生算法要求的系数。输入缓存由控制模块不断刷新,保证每一时钟输入给卷积计算模块相应的像素数据。输出缓存提供下一环节数据流接口。
控制模块是核心逻辑部分,可以采用逆向映射方式(按照输出像素的时间顺序递增,选择对应的输入像素得到结果),也可以采用顺向映射方式(直接在输入像素的时序中产生输出像素)[4-5]。
逆向映射方式工作在输出图像的时钟域,控制模块根据缩放倍率、分辨率和同步信号,确定输入像素坐标的增量大小,使得在每一时钟周期输入缓存中出现相应的像素数据。因为逆向映射方式需要使输出时钟域与输入时钟域保持同步,所以需要大容量的输入数据存储空间,才能确保在每个时钟周期提供相应的输入像素数据[6]。
顺向映射方式输入和输出像素有很强的时序对应关系,按照输入像素的时序进程实时确定输出像素的时序,输出图像分辨率发生变化,但帧频一致。图像缩放过程中,输入一个像素可能会输出2个或3个像素,控制模块可以采用输出缓存、双口RAM、变换时钟域、增加数据总线宽度等方法达到这种同步。顺向映射方式符合输入图像的时序,不需要大容量的数据存储空间,具体根据图像缩放算法的邻域大小而定。
2.2 基于FPGA实现图像缩放的方法
基于FPGA实现图像缩放时,无论是逆向映射方式还是顺向映射方式,控制模块的设计都比较复杂。为了发挥FPGA的优势,大幅度降低设计难度,简化硬件结构,文中把图像缩放过程设计为一个单元体的循环过程,在单元体内部,可以事先计算出卷积系数。例如,把每行720个像素,放大到768个像素,相当于每输入15个像素,输出16个像素。此时可以把15个像素作为一个单元体,事先计算出每个输入像素周期的卷积系数,在FPGA中设计一个包含15种情况的状态机即可。单元体的像素数量越少,事先计算卷积系数和状态机设计的工作量就越少,因此像素的数量控制在20个以内,必要时可以采用近似的整数比。当输出像素的数量与实际要求相差很小时,图像边缘部分增加或减少几个像素对显示效果影响甚微,因此各种图像缩放倍率情况下,相应个数的输入像素都可以作为一个合适的单元体。 为论述方便,文中以将768×576的输入图像放大到1 024×768为例,说明基于FPGA实现对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。
2.2.1 基于FPGA实现行方向的卷积
图像在行方向的放大比例为3:4,即单元体为3个输入像素和4个输出像素,如图3所示。
图3 单元体示意图Fig.3 Small unit drawing
输入图像的 AB空间中均匀分布 X1、X2、X33个像素,放大后输出图像的这个空间将输出 Y0、Y1、Y2、Y34个像素。这个单元体的时序关系是:当输入X1像素时,输出Y0像素;当输入X2像素时,输出Y1像素;当输入 X3像素时,输出Y2和Y3像素。行方向的卷积公式为:
基于FPGA实现的源程序如下:
基于FPGA实现的仿真时序图如图4所示。
在本例中时钟为输入的点时钟,为了在X3像素周期时输出2个像素:Y2和 Y3,采用了扩充数据总线的方式。
图4 时序图Fig.4 Waveform of timing result 2.2.2 基于FPGA实现列方向的卷积
数据流在行方向放大后写入双口RAM,然后从另一侧端口读出进行列方向的放大。由于行方向的卷积算法,双口RAM中至少应存储连续的3行输入图像像素数据,其中2行输入图像像素数据处于被读出状态,产生放大后的输出图像像素,另一行空间被写入当前的输入图像像素数据,循环刷新。
列方向的单元体和行方向相同,也由3个输入像素和4个输出像素组成,每种状态下也是同样的卷积系数,只是图像横向的空间变换成图像竖向的空间,因此基于FPGA实现列方向的卷积的方法与基于FPGA实现行方向的卷积的方法相同,此处不再赘述。 3 结束语
基于FPGA实现图像缩放,需要根据图像缩放的倍率确定包含适当数量像素的单
元体。在单元体内部,根据图像缩放算法确定每个输出像素的计算公式和卷积系数,确定实现点时钟倍频效果的硬件方案。顺向映射方式输入和输出处于帧同步状态,由于输出像素数量多于输入像素,输出像素的点时钟频率要高于输入像素。本文行方向的放大过程,点时钟频率平均增加1/3倍,列方向的放大过程,点时钟频率还要继续增加1/3倍。实现倍频效果可以采用更高频的独立时钟,或者倍频输入点时钟,再或者增加数据总线宽度。为节省数据存储空间,当对图像放大时,先进行列方向的放大,后进行行方向的放大;当对图像缩小时,先进行行方向的缩小,后进行列方向的缩小。
基于FPGA实现图像缩放功能实时性强、分辨率高。许多航空电子嵌入式图像处理系统是由固定的视频源和显示设备组成,系统中图像缩放的倍率是固定的。本文基于FPGA硬件实现固定倍率的图像缩放,能够大幅度降低设计难度,减少工作量。
基于FPGA硬件实现固定倍率的图像缩放的方法已经应用于某款航空电子产品中,电路板的原有硬件没有变动,对电路板中FPGA重新进行了设计,增加了新的内容,应用效果良好。
【相关文献】
[1]王岳环,彭晓.基于FPGA的数字图像实时放大设计[J].计算机工程与应用,2005,41(8):108-110.
WANG Yue-huan,PENG Xiao.The FPGA-based design of digital image real-time enlargment[J].Computer Engineering and Applications,2005,41(8):108-110. [2]张阿珍,刘政林,邹雪城,等.基于双三次插值算法的图像缩放引擎的设计[J].到微电子学与计算机,2007,24(1):49-51.
ZHANG A-zhen,LIU Zheng-lin,ZHOU Xue-cheng,et al.Design of image scaling engine based bicubic interpolation algorithm[J].MicroelectronicsandComputer,2007,24(1):
49-51.
[3]焦戬,张辉,胡广书.基于FPGA的数字X射线图像的实时缩放模块[J].北京生物医学工程,2007,26(2):140-143.
JIAO Jian,ZHANG Hui,HU Guang-shu.A real-time image zooming module based on FPGA for X-ray imaging[J].Beijing Biomedical Engineering,2007,26(2):140-143. [4]胡小龙,冯彬.基于FPGA的高分辨实时监控图像缩放设计[J].液晶与显示,2009,24(6):882-885.
HU Xiao-long,FENG Bin.Design on FPGA based highresolution and real-time
monitoring image zooming[J].Chinese Journal of Liquid Crystals and Displays,2009,24(6):882-885.
[5]孙红进.FPGA实现的视频图像缩放显示 [J].液晶与显示,2010,25(1):130-133. SUN Hong-jin.FPGA realization of video image zooming display[J].Chinese Journal of Liquid Crystals and Displays,2010,25(1):130-133.
[6]刘政林,邹雪城,向祖权,等.定标器的设计与实现[J].电子学报,2006,34(1):185-188. LIU Zheng-lin,ZHOU Xue-cheng,XIANG Zu-quan,et al.The design and implementation ofscaler [J].ACTA Electronica Sinica,2006,34(1):185-188.
因篇幅问题不能全部显示,请点此查看更多更全内容