kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于FPGA的彩色图像实时采集显示系统设计
基于FPGA的彩色图像实时采集显示系统设计
徐成强, 何小海, 卿粼波, 吴小强
(四川大学 电子信息学院 图像信息研究所,四川 成都 610065)
摘要:设计并实现了一种基于FPGA硬件平台的Bayer到RGB格式图像数据转换实时采集显示系统。该系统能够对前端Camera Link接口的CMOS相机采集的分辨率为1 920×1 080、帧率100 f/s以上的Bayer格式图像进行实时处理,并且将处理得到的RGB彩色图像数据通过DVI显示器以60 f/s的帧率实时显示。根据FPGA并行处理能力强的特点,采用像素矩阵模板实现了Bayer到RGB的彩色图像插值算法,实现了高分辨率、高帧率彩色图像的实时采集显示。
Abstract:
Key words :

徐成强, 何小海, 卿粼波, 吴小强

(四川大学 电子信息学院 图像信息研究所,四川 成都 610065)

摘要:设计并实现了一种基于FPGA硬件平台的Bayer到RGB格式图像数据转换实时采集显示系统。该系统能够对前端Camera Link接口的CMOS相机采集的分辨率为1 920×1 080、帧率100 f/s以上的Bayer格式图像进行实时处理,并且将处理得到的RGB彩色图像数据通过DVI显示器以60 f/s的帧率实时显示。根据FPGA并行处理能力强的特点,采用像素矩阵模板实现了Bayer到RGB的彩色图像插值算法,实现了高分辨率、高帧率彩色图像的实时采集显示。

关键词:FPGA;Bayer滤波;DVI显示;Camera Link

0引言

  中央高校基本科研业务费(2015SCU04A11)高分辨率、高帧率图像的实时处理在军事、通信、航天航空、医学等领域有着越来越广泛的应用[1],RGB彩色图像是计算机、摄像机等设备最常采用的色彩空间,并且彩色图像更有利于进行观察与分析。在图像的实时处理过程中,图像数据量大,要求的运算速率高[2],因此选用善于高速并行处理大量数据的FPGA作为处理器是非常合适的。本文选用自主设计的以Xilinx公司Virtex5系列的xc5vfx70t芯片为核心的14层硬件平台。xc5vfx70t的最高运行频率为550 MHz,片内时钟、slice、存储等可用资源非常丰富,因此用于实现分辨率为1 920×1 080、帧率为100 f/s以上的Bayer到RGB彩色图像转换的实时采集显示是非常适合的。根据Bayer格式图像中R、G、B分量与邻近像素的R、G、B分量存在高度相关性的特点[3],本文设计的彩色图像转换算法是基于像素矩阵模板的插值算法,能够很好地实现彩色图像的恢复。

1CMOS图像传感器

  出于对成本及体积的考虑,目前大部分数字图像采集系统都是采用一块CCD/CMOS来作为接收图像的传感器,在传感器表面会覆盖CFA(Color Filter Array)颜色滤波矩阵以得到每个感光单元的分量灰度值[4]。基于FPGA的彩色图像采集显示系统一般由系统采集前端、FPGA内部各处理模块以及显示三个部分组成。本系统前端采用的CMOS相机为Basler公司的acA2000340kc,该相机支持的最大分辨率为2 046×1 086,最大帧率为340 f/s,其成像CFA模板如图1所示。acA2000340kc为Camera Link接口,支持三种配置模式即Base、Medium和Full,三种模式的最大数据带宽分别为255 MB/s、510 MB/s、680 MB/s[5],本文选用的是Full传输模式。

001.jpg

2Bayer插值算法

  实现Bayer到RGB图像格式转换的算法有很多,比如邻域插值法、线性插值法[67]、神经网络插值法等,好的插值方法对高质量图像的获取非常重要。一般而言,选用的方法越复杂,产生的图像质量越高,但是同时也需要付出更大的处理时间代价,在硬件中的实现也更困难。因此在处理速度与成像质量之间找到一种平衡是非常有必要的。文献[3]采用的是基于自适应的局部去马赛克算法,虽然处理效果好,但是算法复杂,难以在FPGA中实时实现;文献[4]中采用的是基于像素矩阵模板的插值算法,处理图像的分辨率为1 280×1 024;文献[6]中采用的是基于像素矩阵模板的插值算法,能够基本保证实时地处理分辨率为1 280×1 024的图像。综合考虑以上情况,本文采用基于像素矩阵模板的线性插值法,该方法运算量小,成像质量良好,易于在FPGA中实现。

  由图1可知Bayer CFA模板中可能出现的3×3像素矩阵有4种情况,如图2所示,其中(a)和(b)的中心像素点为G分量,(c)为R分量,(d)为B分量。本文针对不同情况下的像素矩阵,具体设计了不同的插值方法。

002.jpg

  2.1中心像素为G分量

  中心像素为G分量的包含图2中的(a)和(b)两种情况。在这里为了方便说明,以(a)为例,用Glu、Gld、Gru、Grd分别代表左上、左下、右上、右下的4个G值,左右两边的R值用Rl和Rr表示,上下方向的两个B值用Bu和Bd表示,当前中心点的G值为Gc,对中心点Gc进行插值之后得到的三个分量的值就用R、G、B来表示,之后的(b)、(c)、(d)中的像素点命名方式与此类似。本文在考虑了3×3像素矩阵相邻像素之间的影响之后,针对图(a)所示的情况,改进设计的插值方法如下:

  G=1/2Gc+1/8(Glu+Gld+Gru+Grd)(1)

  R=1/2Rl+1/2Rr(2)

  B=1/2Bu+1/2Bd(3)

  (b)与(a)的区别仅在于R和B分量的像素点位置刚好相反,改进方法与(a)的情况类似,这里就不再赘述。

  2.2中心像素为R(B)分量

  以图2中的(c)为例进行说明,插值的方法如下:

  G=1/4(Gu+Gd+Gl+Gr)(4)

  R=1/4(Rlu+Rld+Rru+Rrd)(5)

  B=Bc(6)

  (d)和(c)的区别也仅在于R和B分量的像素点位置刚好相反,改进方法与(c)的类似,这里也不再赘述。

3FPGA硬件设计与实现

  3.1硬件系统结构

  本文综合考虑所用FPGA的资源实现Bayer到RGB图像转换的硬件系统整体架构如图3所示。系统前端由Camera Link相机将采集的视频数据传送至三片DS90CR288A进行差分信号的转换,转换后的64 bit RGB单色数据传送至FPGA,FPGA利用两组DDR2对图像数据进行缓存、处理,最后控制DVI显示芯片CH7301C进行实时显示。

003.jpg

  FPGA内部首先通过图像采集模块将图像传送至Front_FIFO中,然后由乒乓操作模块将Front_FIFO中的数据读出进行乒乓操作处理后暂存在DDR2中,实现前后速度的匹配,再将数据输出至Back_FIFO中。Bayer2RGB模块读取Back_FIFO中的数据进行处理之后将生成的RGB彩色图像数据传送至Buffer_FIFO中,最后由DVI显示模块将数据读出以进行显示。FPGA内部各模块及其数据流向如图4所示。

004.jpg

  3.2Bayer2RGB模块

005.jpg

  Bayer2RGB模块的内部结构框图如图5所示,由Back_FIFO输出的8 bit位宽的图像数据shiftin首先传送到一个三行线性移位寄存器组进行缓存,同时shiftin会进入一个行、列计算模块对图像的行、列进行计数,由row_cnt和col_cnt两个变量输出。由于本文的算法是基于像素矩阵块的,因此在缓存完三行完整的图像数据后才能够开始进行Bayer到RGB的图像插值算法处理。图4FPGA内部模块及数据流向

  三行移位寄存器组的结构如图6所示,输入数据shiftin在时钟上升沿传送给line1[0],同时line1、line2和line3均要进行线性移位,line1[1919]移至line2[0],同样地,line2[1919]移至line3[0],系统每次取出图6中虚线框内的像素矩阵块与行、列计算模块的row_cnt和col_cnt一起传送至插值算法模块进行处理。

006.jpg

  插值算法模块根据中心点即line2[1918]的行、列值奇偶情况来选择相应的运算处理,总共有4种情况,分别对应图2所示的四种情况。本系统使用移位运算和加法运算对每种情况的插值算法设计了相应的硬件实图7G值硬件结构图现结构,这里以图2中的(a)为例,硬件结构如图7、8、9所示,分别对应公式(1)、(2)、(3)。

007.jpg

008.jpg

  本文最终的实验测试结果如图10所示,图(a)为整个系统的整体成像图,图(b)为Bayer2RGB模块处理后的彩色图像,图(c)为实物图,对比可知系统的实时彩色还原效果良好。

  系统前端Camera Link接口的CMOS相机采集帧率为120 f/s,分辨率为1 920×1 080,DVI显示帧率最大为60 f/s,视频电子标准协会VESA制

  定的显示分辨率标准如表1所示,根据表中的数据可以计算出显示时钟频率=2 200 (clk)1125(h)60(f/s)=148.5 MHz。

009.jpg

010.jpg

  由于Bayer2RGB模块需要缓存3行数据,处理时钟与DVI时钟频率一致为148.5 MHz,因此可以通过公式(7)粗略算出总延时t约为38.8 ns,完全实现了真正的高分辨率高帧率实时彩色图像采集显示。由本文算法可知采用FPGA的并行流水线结构,运算速度快,时延小,完全可以对分辨率更高的视频数据进行实时彩色图像的采集显示。本系统在Xilinx的FPGA开发工具ISE 10.1下综合之后的资源使用情况如表2所示,本系统仅消耗了xc5vfx70t中12%的slice资源,6%的Block RAM资源。

X{A~F%3VT2[$B]E2U25)5KN.png

011.jpg

5结论

  本文利用FPGA逻辑资源丰富、并行处理能力强等特点,实现了高分辨率高帧率的实时彩色图像采集显示。FPGA现在发展越来越快,片内可用资源越来越丰富,不但可以很方便地实现系统前端的高分辨率高帧率的视频采集,并且还能对图像进行算法处理。本文提出的Bayer到RGB图像转换算法简单,易于在FPGA中实现,移植性好,如果需要将本系统移植至其他FPGA硬件平台,只要该FPGA的逻辑资源满足表2中的资源需求,修改相应的管脚配置即可。本系统体积小、性能稳定、便于携带,目前已经稳定地应用在实验室相关的研究项目中,具有较强的工程应用价值。

参考文献

  [1] 滕伟, 安博文. 基于 FPGA+ DSP 技术的 Bayer 格式图像预处理[J]. 电子设计工程, 2010 (10): 145147.

  [2] MA H, LIU S, ZHOU J, et al. The FPGA realization of a realtime Bayer image restoration algorithm with better performance[C].International Symposium on Optoelectronic Technology and Application 2014. International Society for Optics and Photonics, 2014: 93010C93010C4.

  [3] TIAN Q, YANG X, ZHANG L, et al. Image reconstruction research on color filter array[J]. Procedia Engineering, 2012, 29(4): 22042208.


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