首页 > 范文大全 > 正文

基于FPGA 的传像光纤束图像预处理器

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于FPGA 的传像光纤束图像预处理器范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:针对传像光纤束成像的算法结构,提出一种基于fpga 的传像光纤束图像处理器设计方案。该图像预处理器相对于传统的图像预处理器具有充分利用FPGA有限的片上资源,合理安排数据操作之间的并行性和流水性等优点。具体实验结果表明,该预处理器能满足传像光纤束成像系统的实时性要求,达到预期效果。

关键词:FPGA;传像光纤束成像;图像预处理;片上资源

中图分类号:TP391文献标识码:A

文章编号:1004-373X(2010)04-042-03

Preprocessor for Image of Image-carrying Fiber Bundles Based on FPGA

WANG Jingming

(Network Education College,Shanghai Jiaotong University,Shanghai,200030,China,)

Abstract:A preprocessor for the image of image-carrying fiber bundles based on FPGA is presented for the algorithm structure of the imaging with image-carrying fiber paring with the traditional image- preprocessor,this preprocessor has several advantages like making best of the limited on-chip resources,reasonable arrangements of the parallelism and pipeline among the data operation.Experimental results show that the design can meet the real-time requirement of the imaging system and achieve the expecting purpose.

Keywords:FPGA;image-carrying fiber bundles;image preprocessing;on chip resource

0 引言

在传像光纤束成像系统中,基于FPGA的图像预处理都会涉及到矩阵化运算,这就势必需要用存储器(内部或者外部的)暂存几行或者整个一帧图像数据,然后按照矩阵相乘的方法来处理。如果需要处理一个n×n图像阵列,则需要大于等于n个RAM或FIFO作为图像数据缓冲,特别是对于高分辨率的扫描图像进行处理而言,不仅浪费了很多FPGA宝贵的片上RAM资源,而且会使边界效应的处理复杂化。不仅如此,由于在处理前需要存储多行图像数据,导致整个系统的实时性不高。

在此提出一种基于FPGA 的传像光纤束图像预处理器设计与实现方案,合理利用FPGA有限的片上资源,使边界效应的处理简便化,并充分利用数据操作之间的并行性和流水性,生成图像数据流,以满足传像光纤束成像算法对图像传输系统的功能要求和实时性要求。

1 传像光纤束成像系统

传像光纤束的成像算法主要涉及预处理算法和一些核心的成像算法,因此根据成像算法的特殊性构建了基于FPGA和DSP传像光纤束的成像系统。其中,用FPGA来完成传像光纤束图像的预处理;用DSP实现光纤束成像的核心算法;用USB芯片完成将处理完的数据传送至上位机的任务。系统中FPGA采用Xilinx的150万门级芯片XC3S1500;Spartan-3 FPGA采用90 nm制造技术来获得较低的硅裸片成本。该系列器件也是惟一拥有高效率可实现DSP功能所需要的所有系统特点(这些特点一度属于高端FPGA所专有)的低成本FPGA;DSP 采用的是TI 公司的TMS32DM642;USB选用Cypress公司的CY7C68013。该成像系统硬件结构图如图1所示。

图1 成像系统硬件结构

先由FPGA对摄像头采集到的图像数据进行预处理,以减轻DSP的运算负担,使得DSP能够工作在核心算法上,之后再由FPGA将处理后的图像送至DSP。DSP通过EDMA将图像数据搬运至片外SDRAM,然后对图像进行传像光纤束成像算法。经算法处理好的图像数据由DM642发送至FPGA,由FPGA通过在其内部设置FIFO完成图像数据缓冲功能,并控制USB传输图像数据。最后由68013完成USB数据的封装,并将封装后的数据传送到上位机。

2 预处理器的设计和实现

系统中的500万像素CMOS镜头输出图像格式为2 592×1 944×12 b的Bayer图像数据格式,为了后续DSP能够更好地处理数据,并减轻DSP的运算负担,需先将输出的图像数据提取成8 b,再通过使用RGB插值算法,将Bayer图像数据格式转换成RGB信号和亮度信号[1]。图1为是CMOS图像传感器输出的Bayer图像格式[2]:

图2 CMOS图像感器输出的Byer图像格式

颜色插值方法有很多种,常用的算法有邻域插值法、线性插值法、Mondriaan 的彩色图像信息模型法[3]、神经网络插值法、颜色差空间的线性插值法[4]等。邻域插值法和线性插值法能在图像相对平滑区域得到较好的结果。但是,在图像高频区域,如图像中边缘处色差大的区域,则不能很好地控制走样现象。神经网络插值算法的特点是图像质量好,但运算时间长。

为了使神经网络插值算法更加适合使用FPGA来实行,该系统中采用双线性插值法。这种插值方法具有算法计算量少,算法结构简单等优点,适合该系统的算法结构要求。算法的核心思想是:利用需要处理的原始图像中当前像素点周围3×3像素矩阵之内的9个像素点的相关性,将每个像素的RGB分量都由以这个像素为中心的3×3像素矩阵进行线性插值而成。按照这个思想可以将所有图像中的3×3矩阵分成三类[5,6]。它的分类情况如表1所示。

表1 Bayer图像格式分类

奇行偶列奇行奇列偶行偶列偶行奇列

BGBGBGGRGRGR

GRGRGRBGBGBG

BGBGBGGRGRGR

按照表1的分类,便可以得到各个矩阵的具体计算方式。例如,对于奇行偶列的像素点而言,它的红色分量为其本像素点的像素值,它的绿色分量为其上下左右的4个绿色像素和的1/4,它的蓝色分量为其左上、左下、右上和右下的4个蓝色像素和的1/4。其他图像矩阵的计算方式如下所示:

奇数行偶数列像素:

R(2,2)=R(2,2)

G(2,2)=(1/4)(G(1,2)+G(2,1)+G(2,3)+G(3,2))

B(2,2)=(1/4)(B(1,1)+B(1,3)+B(3,1)+B(3,3))

奇数行奇数列像素:

R(2,2)=(1/2)(R(2,1)+R(2,3))

G(2,2)=G(2,2)

B(2,2)=(1/2)(B(1,2)+B(3,2))

偶数行偶数列像素:

R(2,2)=(1/2)(R(1,2)+R(3,2))

G(2,2)=G(2,2)

B(2,2)=(1/2)(B(2,1)+B(2,3))

偶数行奇数列像素:

R(2,2)=(1/4)(R(1,1)+R(1,3)+R(3,1)+R(3,3))

G(2,2)=(1/4)(G(1,2)+G(2,1)+G(2,3)+G(3,2))

B(2,2)=B(2,2)

FPGA具有丰富的逻辑资源和触发器资源,其内嵌大量乘法器和丰富的RAM资源,特别适合大量数据的并行运算,软件设计时应该充分发挥FPGA的特长,以提高处理速度[7,8]。由于邻域线性插值法不可避免地需要将图像数据变换成3×3的图像矩阵。为了解决这一问题,该系统中采用了一种合理结合FPGA硬件结构的FIFO_FD算法模型。具体算法模型如图3所示。

图3 FIFO_FD的算法模型

运行流程: 8位图像信号送到第一个移位寄存器,经过移位操作从移位寄存器(FD)存入左边第一个4 192-Byte-FIFO(先入先出寄存器),存入一行图像数据后,当第二行图像数据送达并经过移位操作从FD存入左边第一个FIFO时,存储在第一个FIFO的数据开始读出到第四个FD,再经过移位操作存入第二个FIFO,等两行图像数据都存储之后,当第三行图像数据送达至第三个FD时,后两个FIFO分别读出前两行中前三个图像数据,此时就可以从FD和FIFO的输出端口读取到一个3×3的图像数据矩阵:

DIDHDG

DFDEDD

DCDBDA

然后可以根据插值计算公式计算R,G,B信号。

模板计算,不可避免地存在边界效应。运用本方法也可以简便地对其进行处理,对边界处理如下:对图像四周全部补零,即先将图像扩展成2 594×1 946大小,然后计算得到2 592×1 944大小的图像,这样得到的图像仍具完整尺寸。只需在运算时,针对不同四周特殊的像素采用裁减公式(系统中不产生零像素,只是对计算公式中相应边界元素补零)获得。过程如下:

第一行图像读入第一个FIFO后,第二行图像开始读入左边第一个FD时,开始计算第一行真彩数据,这时候第二个FIFO 没有数据,相当于在第一行的数据前面补零。第1 944行图像读入第一个FIFO后,第1 943行图像读入第二个FIFO时,开始计算最后一行(第1 944行),这时候第一个FD已经没有数据读入,相当于在第1 944行的数据后面补零。

对列的操作也是如此,每一行的第一个元素读出到B,E,H位置时开始计算,这样每一列的第一个元素前相当于是零元素。每一行的最后一个元素读出到B,E,H位置时开始计算,这样每一列的最后一个元素后相当于是零元素。

3结 语

针对Bayer滤色器彩色特性,结合FPGA的硬件结构,充分考虑了图像数据处理时所消耗的硬件资源和处理速度之间的矛盾,提出一种高流水深并行的FIFO加FD的图像处理架构。

这里提出的硬件架构对于处理一般的3×3的图像矩阵可以节省1/3的RAM或FIFO的资源开销,简便了边界效应的处理,实时性也达到了最高[9]。此方法更可以适用于FPGA对于一般图像信号的算法处理,例如Sobel算子、中值滤波、Bayer图像的彩色恢复等[10]。

参考文献

[1]Micron.1/2.5-inch 5 MP CMOS Digital Image Sensor[EB/OL]./imaging.

[2]Pei S C,Tam I K.Effective Color Interpolation in CCD Color Filter Arrays using Signal Correlation [J].IEEE Trans.on Circuits and Systems for Video Technology,2003,13(6):503-513.

[3]王开军,姜宇柏.面向CPLD/FPGA的VHDL[M].北京:机械工业出版社,2006.

[4]刘皖,何道君,谭明.FPGA设计与应用[M].北京:清华大学出版社,2006.

[5]刘方.基于Bayer彩色滤波阵列插值算法的研究[D].成都:电子科技大学,2006.

[6]彭俊,高伟.基于FPGA的Bayer图像彩色恢复快速算法研究及实现[J].科学技术与工程,2007,13(7):1 671-1 819.

[7]石英,李新新,姜宇柏.ISE 应用与开发技巧[M].北京:机械工业出版社,2007.

[8]华清远见.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社,2008.

[9]刘晓松,杨新,文逡,等.一种用于数字图像传感器的彩色插值算法[J].中国图像图形学报,2003,8(5):516-521.

[10]Meyeer Baese.数字信号处理的FPGA实现[M].北京:清华大学出版社,2006.

[11]许建,王福明.指纹图像预处理算法研究[J].现代电子技术,2009,32(1):84-86.