基于FPGA的高分辨率全景图像处理平台
2009-04-20
作者:赵有金,夏桂华,徐明道
摘 要:以FPGA为核心,利用其内部的Avalon总线技术,在SoPC Builder中将Flash和SRAM从外设及自己设计的两个DMA采集和DMA显示主外设集成到一个Avalon系统中,构建出基于FPGA的全景图像实时处理平台。结果证明,本系统可以完成对分辨率为2 048×2 048、15f/s的Camera Link接口全景图像的实时采集、存储并解算成适于观察的柱面图像,并以1 024×768的分辨率实时显示。
关键词:全景结算;Camera Link;Avalon总线;存储器
全景视觉具有大的视场范围,被广泛应用于各种领域,如机器人导航、太空探测、视频监控、视频会议和虚拟现实等各个方面。当今应用最广的全景视觉系统是在一块CCD或CMOS感光器件上形成360°的全景图像,然后通过软件算法还原成真实图像。这就会带来一个问题,即同样大小的感光器件上所容纳的视场越大,单个物体所占有的像素就会越少,从而导致所关心的具体目标分辨率大大降低,甚至不满足观测要求。这一问题只能通过增加感光器件自身的分辨率来解决,然而普通视频格式的分辨率是720×576,无法改变,所以采用IMPERX公司的IPX-4M15-LC型Camera Link接口的科学级高分辨率数字相机,分辨率为2 048×2 048,帧速率为15f/s,这样可以在很大程度上改善全景图像的清晰度。但是分辨率提高的同时,通信数据量也增加为普通视频的十倍多,这就对通用计算机CPU的处理能力和PCI总线的通信能力提出了挑战。经过试验,使用CPU主频为2.81GHz的通用计算机和PCI采集卡构成的高分辨率全景视觉系统,当进行柱面展开或者局部透视展开时,与普通视频全景成像系统相比,在图像清晰度提高的同时,帧速率下降为4f/s~6f/s,实时性大大降低,不能满足实时观测的应用领域的要求。另外通用计算机处理系统由于其体积、重量和稳定性等方面原因,在苛刻条件下亦无法使用。
1 全景系统介绍
1.1 全景成像原理
系统采用双曲面折反射式全景成像,折反射全景成像系统可根据是否满足单视点成像约束分为单视点成像系统和非单视点成像系统。在监视和场景的三维重建应用中,要求获得透视图像,因此在系统设计时应满足单视点约束,保证系统成像满足针孔模型。在本全景成像系统中,来自水平方向360°的光线都可以经过双曲面的反射和广角镜头的折射在CCD中成像,故系统水平视场为360°,来自垂直方向270°左右的光线可清晰成像,故系统垂直视场为270°,只有位于反射镜正上方约90°的视场范围为成像死角。系统组成如图1所示。
1.2 系统组成
折反射全景成像系统主要由以下几部分组成:
(1)光敏元件,如CCD器件。本系统中采用IMPERX公司的IPX-4M15-LC型Camera Link接口的科学级高分辨率数字相机,分辨率为2 048×2 048,帧速率为15f/s。
(2)成像透镜,如常规成像透镜或远心透镜。本系统采用Nikon广角近焦镜头。
(3)凸面反射镜,其面形为二次曲面,如球面、圆锥面、抛物面、双曲面等。本系统采用视场角为120°双曲反射面。
(4)实时图像处理平台。本系统采用以Altera公司Cyclone II系列FPGA EP2C35为核心的图像处理系统。
(5)显示部件,本系统的显示终端由LVDS接口的数字液晶显示器构成,分辨率为1 024×768,刷新频率为60Hz。
2 嵌入式硬件设计
2.1 FPGA核心处理系统
FPGA核心处理系统采用Altera公司的Cyclone II 处理器EP2C35F484C8。在Cyclone系列低成本FPGA中,Cyclone II FPGA系列是第二代产品,采用TSMC的1.2V、90nm、低k绝缘工艺,具有比第一代产品更多的性能优势,密度功能进一步提高。具有33 216个逻辑单元(LE),密度是第一代Cyclone FPGAs的三倍,每LE最低的成本;具有105个M4K的RAM,共组成483 840bit可用RAM,可达到250MHz的性能。有35个18×18bit或70个9×9bit嵌入式乘法器;跨越整个期间的16个低斜移、全局时钟网络,有16个专用输入时钟引脚反馈;4个锁相环(PLLs),每个具有3个输出抽头,具有可设置带宽、可设置占空比、扩谱时钟、锁定探测功能,以及具有移相功能的频率合成,可提供片内和片外全面的系统始终管理。除FPGA之外,电源系统有由AMS1084-3.3构成的3.3V供电,由AMS1084-adj调整出来的1.2V供电部分。配置芯片为EPCS16,时钟晶振为50MHz。
2.2 高速存储系统设计
图像处理系统对存储设备要求很高,不仅需要有大的存储容量,还要有非常高的存储速度。针对本系统中的处理要求,每帧图像的大小为4MB,所以要想实时、连贯地对图像做想要的处理,存储系统的最低容量应为能存储一帧图像的容量4MB。存取速度可以通过计算得出,相机数据总量:15f/s×2 048×2 048×8=480Mb/s,单路LVDS=总量×7/12=280Mb/s,单路TTL=单路LVDS/7=40Mb/s。通过计算可知,系统数字前端的通信速率是40MHz,已经属于高速电路信号的范畴。为了增加图像数据传输的带宽,Camera Link接口采用双通道传输模式,每通道数据为8bit,共16bit。在图像实时采集及显示的要求下,可采用两组RAM乒乓读写操作的方式,但这样会增加系统的复杂性;也可以使用双口RAM,但如此大容量的双口RAM的成本非常高。基于这两点考虑和系统的实际需求,本系统使用对单存储体分时复用读写的机制,可简化硬件设计和降低成本。系统中选用4片SRAM,型号为IS61LV51216,其单片容量为1MB,在硬件连接上扩展成1M×32bit的静态RAM存储体,总共4MB,为一帧图像的存储容量,而32bit的数据宽度可极大限度地增加系统的通信速率。
如图2所示,使用AVALON总线支持的8级流水线的方式不连续读取SRAM和SDRAM中的数据。当读SRAM中数据时,数据有效标志一直处于高电平有效状态,故可以在CLK的每一个周期返回一个有效数据;而读SDRAM时,数据有效标志大部分周期为低电平无效状态,所以实际的读取速度大打折扣,不及SRAM速度的1/3。这里简单分析一下原因:首先SDRAM的行列地址线是复用的,降低了总线速率;其次SDRAM的读写操作过程中需要多个额外的总线周期进行precharge和active操作,导致效率低下,尤其在不连续读写时更加严重。而SRAM完全不存在这个问题,可以完全随机读写,本系统选用的SRAM读和写都可以在10ns完成。
2.3 Camera Link采集接口与LVDS显示接口
科学级高分辨率数字相机IPX-4M15-LC使用Camera Link接口传输图像。经研究发现,此相机内部处理系统也是由一片一百万门的FPGA和一个32位处理器组成,最后由美国国家开云棋牌官网在线客服公司的DS90CR287MTD转换成LVDS信号,由Camera Link接口将图像传输出去。与DS90CR287MTD配套使用的芯片为DS90CR288AMTD,所以本系统使用DS90CR288AMTD作为Camera Link协议的解码芯片。具体使用中,在板级布线时,尤其应注意差分走线等长、平行、结成对耦等原则,这样会使信号的高频特性达到最好。
在显示终端方面,没有选择XGA接口的显示器,因为所有模拟接口的液晶显示器都是为了兼容以前的阴极射线管(CRT)显示器,而模拟信号传输存在一些缺点,如信号衰减、易受干扰,清晰度和细节表现力不高等。液晶显示器本身就可以由数字信号进行控制,所以本系统选用LVDS接口的液晶显示器,型号为上广电的SVA150XG04BT,分辨率为1 024×768。控制芯片为上广电推荐的平板液晶显示器LVDS接口芯片DS90C385A。
3 AVALON总线IP核设计
3.1 Avalon总线规范
在采集IP核设计上,采用具有可变等待周期的突发传输,在展开显示IP核设计上,采用具有可变等待周期和可变延迟的流水线传输。下面分别介绍这两种传输模式。Avalon接口可使用突发传输属性。该传输方式将多次传输作为一个单元来执行,而不是将每个数据单元作为一次独立的传输。当每次处理来自主端口的多个数据单元时,突发传输是从端口能达到最高效率的数据吞吐量。流水线传输使得主外设可以发起一次读传输,转而执行一个不相关的任务,等外设准备好数据后再接收数据。这个不相关的任务可以是发起的另一次读传输,尽管上一次读传输的数据还没有返回。在取指令操作和DMA操作中,流水线传输非常有用。在这两种状态下,CPU或DMA主外设会预取期望的数据,从而使同步存储器处于激活状态,并减少平均访问时间。
3.2 Camera Link接口协议分析
Camera Link是从Channel Link技术基础上发展而来的,以LVDS作为物理层。Channel Link包括一个发送和接收对。发送端接收28路单端的数据信号和一个单端的时钟信号,数据被以7:1的方式串行化为4路双端数据流,接收端接收这四路串行数据流和一个同步时钟,并解串成为28路单端数据信号。
Camera Link信号要求图像数据和图像使能信号必须包含在Channel Link总线中。四个使能信号被定义如下:
FVAL:帧有效(Frame Valid); LVAL:线有效(Line Valid); DVAL:数据有效(Data Valid);Spare:Spare作为以后使用的信号。保留了4个LVDS对用于实现对通用相机的控制,他们被定义为相机的输入和图像采集卡的输出。相机生产商设定这些信号来满足特殊产品的需要。这4个信号是:Camera Control 1~4。2个LVDS对已经被分配为实现相机和图像采集卡之间的异步串行通信,相机和图像采集卡应至少支持9 600b/s的波特率,这两个信号是SerTFG和SerTC。
3.3 图像采集存储IP核设计
高分辨率数字相机的像素为400万,帧率为15f/s,数据输出时钟为40MHz,数据宽度为16bit。如此大数据量的采集及写入RAM是使用CPU操作难以完成,所以编写了Avalon总线主外设,将采集到的数据以DMA的方式写入SRAM。Avalon总线传输支持多种数据传输方式,在这个主外设中,为了使数据传输能力达到最大,使用突发传输模式,突发长度为一行图像的数据1 024B,以16bit数据宽度进行传输,突发长度为512,使用状态机控制突发传输的几个状态,如图3所示。由于图像数据的时钟为40MHz,Avalon总线传输时钟为120MHz,涉及到异步时钟域同步问题,使用512个16bit写入32bit读出的FIFO进行数据同步。
3.4 图像显示原理分析
使用FPGA控制显示器显示所要的图像,主要是控制时序,就是将图像数据依据显示器需要的显示顺序送出,即正确的数据放到正确的显示器像素点上。本系统选用的显示器的现实时序控制比较简单,只需以CLK的上升沿为触发控制使能信号DE与数据信号DATA同步即可。DE为数据使能信号,高电平有效,在所有的显示周期该信号为高电平,在行消隐与场消隐期间为低电平。显示时序如图4所示。
3.5 图像显示IP核设计
在图像显示IP核设计上,读取SRAM内的图像数据时不宜采用突发传输模式,因为全景视觉系统图像显示需要先对环形的全景图像进行非线性还原,这涉及到大量的非连续地址图像数据读取,因而不适合使用突发传输。而Avalon总线协议支持多达8级流水线的读传输,可以很好地解决这一问题。流水线传输时序如图5所示。
4 全景图像展开算法设计与实现
4.1 全景图像柱面展开原理
以双曲面焦点F′为投影中心建立虚拟像机,将实际全向图像投影到虚拟像面上的过程称为系统成像的逆投影。如图6所示,F,F′分别为双曲线的两个焦点,OP为入射光线,PQ为反射光线,O为三维空间中的任一点,坐标为(x0,y0),Q为O点经反射镜反射后在像平面上的成像点,c为双曲面的焦距,f为摄像机焦距。根据逆投影模型可得已知三维空间中物点O坐标,由式2、式3可确定像点Q的坐标。
式中a、b为双曲线的参数,θ为入射光线与Z轴夹角。
当虚拟像面为圆柱面,且圆柱面的对称轴为成像系统的对称轴时,可以得到柱面全景图像。
4.2 展开算法的简化原理
全景图像展开原理和公式推倒是严谨、规范的,虽然展开图像的失真度最小,但复杂性也是最高的。它不仅需要不断地用到正弦余弦运算,还要知道双曲面反射镜的多个参数以及拍摄时的实时焦距参数。这对实时处理系统来说是无法容忍的。下面介绍全景图像简化展开算法。
为了满足进一步的图像视觉应用和人眼的观察习惯,需要将压缩的全景图像投影到柱面上。简化算法的思想是在不考虑双曲面反射镜自身参数的情况下,利用直角坐标和极坐标之间的坐标变换(如图7所示),将柱面展开图上像素点的值一个一个地从全景图中找到,然后根据显示效果调整R′的大小,使显示的宽高比例满足实际比例,从而达到满意的观察结果。
4.3 FPGA实现展开
如图8设计的Avalon总线系统,在对全景图像数据进行采集显示以及非线性展开处理时,为了达到15f/s的实时显示采集性能,全部使用Verilog HDL编写,这样就可以做到所有功能模块都并行处理。Verilog属于硬件描述语言,优点是执行效率高,缺点是无法进行复杂的数学运算,如展开公式中用到的三角函数、除法运算等。考虑到FPGA内部有高速的SRAM,所以查表可以很好地解决这一问题。除法运算转换成移位运算。在FPGA内部调用宏功能模块,生成ROM,并用正弦和余弦表来对其进行初始化。本系统中使用7 200点的正余弦表,精度为16位,足以满足要求。用Visual C++生成表,并作乘以1 024的处理。因为Verilog只能处理整数,最后处理时将处理结构右移10位,即可将结果还原回真实值。
系统的执行过程就是边读取内存中像素数据值边向显示接口发送数据的过程,只不过像素值的读取是按照显示的需求,并按照上一节中的简化展开算法原理做了非线性变换的。如需要向显示端口发送的像素点的坐标为(x1,y1),通过运算得到数据在原始全景图像中点的位置坐标为(x2,y2),其中x2=y1sin(2πx1/y1),y2=y1cos(2πx1/y1),正弦余弦通过查表获得。x1/y1则是把一圈360°的图像分成若干份数,每一份对应一个显示图像中水平显示方向的一个点。本系统将360°分成7 200份,每增加0.5°,其正弦余弦值可在表格中查得。图像的现实分辨率为1 024×768,所以整幅全景图像的显示需要7屏,在实际应用中利用按键实现读取像素参数的递增或递减,就可以做到对360°全景图像的扫描显示。
参考文献
[1] National Semiconductor.LVDS用户手册(第四版)[D].2008.
[2] National Semiconductor.Channel Link Design Guide[D].2006.
[3] Altera Corporation.Quartus II Version 7.1 Handbook[D].2006.