基于SDRAM缓存的实时视频图像几何校正系统
2016-06-20陈文艺李龙龙刘禹韬
陈文艺,李龙龙,刘禹韬,冯 晨
(西安邮电大学 a.通信与信息工程学院;b.电子工程学院, 陕西 西安 710061)
基于SDRAM缓存的实时视频图像几何校正系统
陈文艺a,李龙龙b,刘禹韬a,冯晨b
(西安邮电大学 a.通信与信息工程学院;b.电子工程学院, 陕西 西安 710061)
摘要:采用基于后向映射查找表结构的几何校正算法,结合双线性插值算法和SDRAM的时序特性,利用FPGA内部存储资源设计了一个特殊的Cache来缓存图像数据,等效实现了对SDRAM缓存图像四邻域像素的快速随机读取。该方法处理延时小、实时性强、成本低,可实现高分辨率视频图像的实时几何校正,对不同畸变视频图像校正,只需修改映射查找表。
关键词:FPGA;SDRAM;实时几何校正;视频图像
在现实生活和实际应用中,经常会遇到将视频图像投影到非平面屏幕上的情况,而所有的视频图像在设计时都是针对平面屏幕的,投射的图像也是标准的矩形,当将标准的视频图像投射到柱面或球面的非平面屏幕上时,视频图像画面就会出现几何变形失真,因此需对投影前的视频图像进行几何校正,以抵消非平面屏幕几何形状造成的畸变[1]。对高分辨率的视频图像进行校正时,需要处理庞大的数据量,这就要求设计的硬件系统具有很高的实时性,而基于FPGA的视频图像实时几何校正,可以满足实时性要求高的场合[2]。
在视频图像几何校正处理过程中,通常采用灰度级插值算法来确定输出图像像素点的灰度值[3],需要对缓存图像进行高速的随机读取,因此一般的视频图像实时几何校正系统都采用SRAM作为图像缓存,成本较高。本文提出了一种高效的图像数据缓冲架构,利用FPGA内部丰富的RAM资源,设计一个特殊的Cache缓存图像数据,在插值运算时系统直接高效访问Cache获取所需图像数据,从而等效实现了对SDRAM缓存图像数据的快速随机读取。
1系统组成及工作原理
图1示出了几何校正系统的组成框图,其中FPGA是整个系统的核心,后向映射表中的数据是压缩预畸变系数,片外存储器SDRAM用来存储图像数据和预畸变系数,这两大块数据分开存储,起始地址分别为0和524 288,本系统对后向映射表中的数据进行压缩是为了缩短数据写入SDRAM的时间,并降低读出这部分数据的SDRAM带宽占有率。
图1 几何校正系统的组成框图
系统开始时先通过FPGA的控制把后向映射表中的数据写入Flash中,再次上电后把Flash中的数据读至片外存储器SDRAM中。视频输入模块负责输入1 280×1 024@60 Hz的单色数字视频图像,然后通过FPGA的控制将并行的数字视频信号转换成Avalon—ST视频信号流[4],并且按照块及四邻域像素的格式缓存至片外存储器SDRAM。顺序读出SDRAM中的预畸变系数,实时无损地解压得到原始的预畸变系数即后向映射坐标。根据映射坐标计算出访问SDRAM的读地址,读取图像数据,然后结合插值权值完成双线性插值运算,得到预畸变图像的像素值,同时按照VGA的显示时序同步产生控制信号。视频输出模块将插值后的数字视频信号经过D/A转换后送给显示器进行正常的显示。
2系统实现原理
本系统综合考虑价格、存储容量、体积等因素选取SDRAM作为图像存储器和预畸变系数存储器。虽然SDRAM控制时序比较复杂,无法满足快速随机的读取数据,但是可以通过其他方式来提高读取效率,从而满足系统的实时性。
2.1预畸变系数的存取
本文采用后向映射方法得到预畸变图像中各像素点的预畸变系数,即后向映射坐标[5-6],通过MATLAB完成算法仿真生成后向映射表,具体算法实现见文献[5]。如表1所示,后向映射坐标由x,dx,y,dy四部分组成,其中x,y分别为像素点的列坐标和行坐标,dx,dy分别为量化后的列坐标和行坐标的双线性插值权值。如图2所示,坐标N(x+dx,y+dy)表示当前输出的预畸变图像像素点M映射回原输入图像空间中的像素坐标[7]。
由于后向映射查找表中有1 280×1 024×32 bit=40 Mbit的数据,数据量太大,导致读出SDRAM时的总带宽占有率高,无法满足系统实时性,因此本系统对预畸变系数进行了压缩,压缩后的数据量只有原始数据量的1/4,压缩算法通过MATLAB实现。在系统需要查表时,先从SDRAM读出预畸变系数,实时无损地解压得到原始的后向映射坐标,然后再根据映射关系读取图像数据,解压算法在FPGA实现中。由于篇幅有限本文就不予详细介绍压缩和解压原理。
表1 后向映射坐标数据格式
图2 输出预畸变图像到输入标准矩形图像的坐标映射图
2.2图像数据的存取
本系统在进行双线性插值[8]运算时需要四邻域像素,如图2所示,计算M点的像素值时需要N点周围的四个像素值(P1.1,P1.2,P2.1,P2.2),这四个像素分布在原始图像的相邻两行和两列,然而SDRAM读取一个图像数据,需要经过行选通到列选通的延时tRCD、CAS潜伏期tCL的延时数据才能读出来,而且当需要读取的下一个数据不在当前选中的行时,需先发送预充电命令关闭激活的行,然后才能进行读取操作,因此读取效率低,肯定无法满足本系统实时性要求。
2.2.1图像数据分块思想
将1 280×1 024@60 Hz的单色数字视频图像分成4×8的块,SDRAM按照4×8块的形式来存取图像数据,从而提高读写效率,满足系统实时性。
图3为图像数据分块存储方式映射图,其中左图为标准图像数据格式,Px,y表示第x行,第y列的像素值,如P0,0表示第0行,第0列的像素值;右图为分块后的数据格式,Ku,v表示第u行,第v列的块数据,如:K0,0表示第0行,第0列的块数据,总共可以分成160×256个块。
图3 图像数据分块存储方式映射图
同时将图像数据按四邻域像素格式进行拼接并存储,如表2所示,把四邻域像素存储在一个SDRAM单元中,方便之后的读取和缓存操作。
表2 四邻域像素存储格式
从SDRAM读取一个图像数据需要6个时钟周期,其效率为1/6=16.7%;采用4×4分块存储,每次可以读取16个图像数据,其效率为:16/(16+6)=72.3%;采用4×8分块存储,每次可以读取32个图像数据,其效率为:32/(32+6)=84.2%。对比可知,按4×8块批量突发读取数据,极大地提高了SDRAM读取图像数据的效率。
2.2.2数据缓存思想
为了满足系统的实时性,快速随机地从SDRAM读取四邻域像素,本文借鉴Cache的工作原理[9-10],提出了分块按顺序突发读取图像数据的思想,利用FPGA内部的存储单元设计一个特殊的Cache,提前把双线性插值所需的图像数据存入Cache,以便在插值运算时可以直接访问Cache获取图像数据,避免直接访问SDRAM造成读取图像数据的延时。如图4所示,描述了分块读取图像数据算法的实现思路。
图4 分块存取图像数据算法原理图
该算法的具体实现过程如下:
第一,将1 280×1 024的数字视频图像按照4×8分块及四邻域的形式缓存,并写入片外SDRAM。
第二,读取SDRAM中的预畸变系数并逐行逐像素地进行解压,得到原始的后向映射坐标,然后计算像素的块地址,根据块地址先判断数据是否命中Cache,如果没有命中,从SDRAM中读取块数据存入Cache中;如果命中,无需操作,继续下一个后向映射坐标的判断。同时将后向映射坐标缓存至FIFO中。
第三,从缓存器FIFO[11]读出后向映射坐标,生成访问Cache的映射地址,一次从Cache中读出双线性插值算所需的四邻域像素数据。缓存器FIFO深度要足够大,确保在进行插值运算时四邻域像素能够百分百命中Cache。
第四,根据缓存器Cache读出的4个相邻像素值和后向映射坐标中的权值,完成双线性插值,得到该像素点的灰度值。
2.3系统硬件算法的实现
本系统要解决的核心问题是Cache和SDRAM的数据访问,在插值运算时,FPGA无需直接访问SDRAM获取图像数据,只需要和Cache进行数据通信获取图像数据,这就要求每次访问Cache时,必须保证所需图像数据能够百分之百命中Cache。
结合视频图像几何校正系统的特点,Cache以4×8块的方式来更新图像数据,构成帧缓存器,根据后向映射坐标生成访问SDRAM的读地址,读取图像数据块到Cache中。在缓存SDRAM中图像数据时,根据图像的几何畸变程度,来选择需要缓存多少个图像数据块,本文实现的几何校正系统,采用3行块,即160×3=480块作为图像缓存处理,就能够满足系统的要求。
本文首先采用FIFO的设计思想来实现硬件算法,实现过程如下:如图5所示,可以采用160个FIFO来等效模拟Cache进行仿真。FIFO存储器的主要功能是实现480个块的缓存,以便FPGA能够快速随机的读取视频图像数据进行插值运算,灰色部分为等效的160个FIFO存储器,循环自上而下刷新遍历整幅图像,构成一个大的环形BUFFER,来完成畸变图像的像素值缓存,最终实现一帧图像的快速读取。
012157158159012……253254255图5 FIFO实现硬件算法流程图
3畸变校正FPGA实现方案
结合上述硬件算法原理的实现结果,确定缓存器设计的相关参数,提出本系统的FPGA实现方案,如图6所示,为实时视频图像几何校正系统的FPGA实现框图。
图6 几何校正系统的FPGA实现框图
FPGA 硬件系统分为两部分,一部分是利用SOPC技术配置的NIOS II 系统,另一部分是几何预畸变电路。其中NIOS II 系统主要负责系统的调度以及读入和写入压缩预畸变系数的工作。几何预畸变电路则是整个视频图像几何校正系统的核心处理单元,如图7所示,是几何校正电路的实现框图,主要完成单色数字视频图像的接收、按块和四邻域像素格式缓存图像数据、解压预畸变系数、Cache和SDRAM之间的数据交换、Cache中块数据的替换策略[9-10],写Cache和读Cache的地址映射、插值运算以及VGA[12]输出显示控制等工作,各模块功能如下:
图7 几何校正电路详细实现框图
BUFFER_4X8模块:按块及四邻域像素格式准备图像数据。
DECOMPRES模块:预取一定数量的畸变系数并实时解压,至少提前解压一行的后向映射坐标,保证双线性插值的连续性。
CACHE_WR模块:由块地址判断数据是否命中Cache;生成访问SDRAM的读地址以及Cache的写地址。
FIFO_CDATA模块:缓存解压后的后向映射坐标,缓存一行后输出。
CACHE_RD模块:生成访问Cache的读地址,一次性读取四邻域像素。
IMFIFO_CTL模块:SDRAM读写预畸变系数和图像数据控制电路。
CACHE模块:在FPGA内部开辟4个独立的双端口RAM作为高速缓存器Cache来缓存视频图像,等效于硬件算法原理中的160个FIFO存储器,4个独立的双口RAM分别用来存储偶行偶列、偶行奇列、奇行偶列、奇行奇列像素,深度为3 840 byte,宽度为8 bit。
BLINERA_I模块:双线性插值电路。
VGA_CTL模块:VGA显示控制电路。
4实验结果及分析
本系统是在ALTERA公司的DE2-70实验平台上进行验证,主芯片为EP2C70F896C6[13],SDRAM是ISSI公司的IS42S16160B,用2片IS42S16160B构成本系统所需的位宽为32 bit的SDRAM,系统的预畸变电路使用Verilog[14]语言编写,并通过QuartusII 9.1和Modelsim6.2b对设计进行综合仿真调试,设计按照视频数据流的走向分模块进行仿真验证,这样不仅可以提高效率,而且还能确保设计的正确性和可行性。
将系统校正后的数字视频信号转换成VGA信号,输出到显示器观察结果,校正结果如图8所示。图8a中的黑色区域是由特殊的灰度值0所定义的像素值,这些像素点的坐标映射到输入的标准矩形图像时落在了界外,而图8b中曲边四边形的形状即是投影仪所需的预畸变图像的形状。通过数字投影仪,将图8b图像投影至对应形状的非平面屏幕,即可将其显示成如图8a所示的无畸变的投影图像。
图8 输入标准矩形图像和输出预畸变图像
5结论
本文结合双线性插值算法的特殊性和SDRAM的时序特性,借鉴Cache的工作原理,提出了图像数据的四邻域像素存储机制和分块按顺序突发读取图像数据的思想,利用FPGA内至的RAM资源,设计一个特殊的Cache,用来缓存SDRAM中的图像数据,从而能够快速随机获取插值运算所需图像数据。本系统的工作时钟为108 MHz,处理的视频图像为1 280×1 024@60 Hz,校正效果良好,而且处理延时小、实时性强,传统的校正系统需要多片SDRAM缓存图像数据和校正参数,本系统只需一片SDRAM就能实现,因此成本低。如果要实现不同畸变率的视频图像的几何校正,只需修改后向映射查找表和Cache的容量即可,因此本系统具有很高的工程应用价值。
参考文献:
[1]王健,陈文艺.投影图像畸变的一种校正方法[J]. 西安邮电学院学报,2011,16(1):65-69.
[2]郑永瑞,李洁.基于FPGA的视频图像实时几何畸变校正[J]. 电光与控制,2013,20(6):75-78.
[3]黄思敏. 视频图像几何校正卡的设计与实现[D]. 成都:电子科技大学,2005.
[4]邓超,付扬.基于Avalon-ST接口帧读取IP核的设计和应用[J].电子技术应用,2010,36(9):24-27.
[5]刘亚强,陈文艺.桶形畸变图像的一种校正方法[J].西安邮电学院学报,2012,17(2):27-30.
[6]周秉锋.一个基于线性变换的数字图像自由拉伸算法[J].北京大学学报(自然科学版),1997,33(6):770-775.
[7]陈文艺,田科.基于FPGA的实时视频图像几何校正系统设计[J].电视技术,2014,38(3):66-69.
[8]徐雨明,文双春.数字图像插值算法的分析与实现[J].福建电脑,2007(1):91-94.
[9]张喆. 处理器cache扩展数据集在FPGA的实现[D]. 北京:北京邮电大学,2008.
[10]黄河.计算机组成与体系结构[M].北京:机械工业出版社,2006.
[11]向厚振,张志杰. 基于FPGA视频和图像处理系统的FIFO缓存技术[J].电视技术,2012,36(9):41-43.
[12]谢磊.基于FPGA的VGA图像控制器的设计与实现[J].新乡学院学报,2009,26(6):51-53.
[13]ALTERA. Cyclone II device family datasheet[EB/OL].[2015-09-22].http://www.altera.com/literature/hb/cyc2/cyc2_cii51001.pdf.
[14]夏雨闻. Verilog数字系统设计教程[M]. 北京:北京航空航天大学出版社,2003.
陈文艺(1964— ),教授,主要从事通信集成电路设计、视频图像实时处理及传输的研究;
李龙龙(1988— ),硕士研究生,主研视频图像处理;
刘禹韬(1989— ),硕士研究生,主研信息处理技术及应用;
冯晨(1990— ),硕士研究生,主研视频图像处理。
责任编辑:闫雯雯
Real-time video image geometric correction system based on SDRAM cache
CHEN Wenyia,LI Longlongb,LIU Yutaoa,FENG Chenb
(a.DepartmentofCommunicationandInformationEngineering;b.DepartmentofElectronicsEngineering,Xi’anUniversityofPostsandTelecommunications,Xi′an710061,China)
Abstract:This design uses an algorithm of mapping lookup table architecture for geometric correction,combining with the bilinear interpolation algorithm and the timing characteristics of SDRAM,a special Cache is designed to cache the image data using the RAM resource in FPGA.It is equivalent to achieve a fast random access to the four neighborhood pixels of the SDRAM cache image.This method has the advantages of small processing time delay, strong real-time and low-cost,it can achieve real-time geometric correction of high resolution video images,it only needs to modify the mapping table for the correction of different distorted video images.
Key words:FPGA; SDRAM; geometric correction;video image
中图分类号:TN911.73
文献标志码:A
DOI:10.16280/j.videoe.2016.05.023
作者简介:
收稿日期:2015-09-22
文献引用格式:陈文艺,李龙龙,刘禹韬,等. 基于SDRAM缓存的实时视频图像几何校正系统[J].电视技术,2016,40(5):105-109.
CHEN W Y,LI L L,LIU Y T,et al. Real-time video image geometric correction system based on SDRAM cache [J].Video engineering,2016,40(5):105-109.