APP下载

基于FPGA的动态可重构边缘检测系统设计

2012-06-25向厚振张志杰

电视技术 2012年7期
关键词:通滤波算子边缘

王 鹏,向厚振,张志杰

(中北大学信息与通信工程学院,山西 太原 030051)

通常情况下,对图像的数字处理算法都是建立在冯诺依曼结构的通用处理器的软件上进行,如果将其移植到几十兆赫兹的微控制器运行时,运行效果会非常不理想,根本无法达到实时处理的要求。随着科技的发展,FPGA由于其高度的灵活性、现场可编程优点以及高度的并行运算能力,成为了工程师们设计的首选。利用FPGA的流水线操作可以解决数字信号处理时数据传输需要的高带宽,利用其并行运算提高运算速度,尤其是其灵活性特点使得硬件实现的算法能够支持大范围数字信号处理应用成为可能。

边缘检测在图像处理领域有广泛的应用,Sobel算子属于传统边缘检测算子,对噪声比较敏感,在硬件实现时,效果并不理想,而高通滤波可以抑制低频分量,凸显边缘,降低噪声,因此,先对图像进行高通处理再进行边缘检测,可以获得较好的效果。但缺点是两种算法计算量都较大,消耗较多的硬件逻辑资源,造成浪费。考虑到FPGA内部构造出的时序逻辑系统,并非每个模块都时刻在工作,而是依据逻辑功能要求,轮流工作[1],因此利用可重构计算技术可以解决这样的问题。

依据以上论述而设计的边缘检测系统,不仅提高芯片利用率,并且使得该算法系统易于扩展,易于移植,拥有较好的性能效果。

1 Virtex-4系列动态自重构系统介绍

早在20世纪60年代,可重构计算技术已经出现,虽然比较粗糙,但为之后的研究奠定了基础。基于SRAM的FPGA的出现,使得可重构计算技术得到更好的发展和应用,并且使得传统设计方法中随着数字系统规模增大,单片FPGA资源利用率下降的问题得到较好解决。

部分可重构允许在不破坏FPGA其他资源继续运行的情况下联机重配置FPGA的一部分,通过删除在那一刻FPGA中没有有效执行的功能来提高有效的逻辑密度。

尽管基于SRAM的FPGA均可实现重构功能,但是并非都可以实现动态可重构功能。Xilinx公司的Virtex-4系列芯片基于SRAM结构,且具有动态重构性能。本文使用该系列的SC4VSX25芯片,它内部拥有1片32位MicroBlaze,4 个 DCM 模块,128 个 Xtreme DSP Slice,9 个Bank,128个18 kbyte的Block RAM,23040个Logic Cells,10240个 Slice,64 ×40 Array。

本文使用的CCD摄像机采集的视频输出信号是模拟信号,要进行进一步处理,需要首先进行A/D转换。使用EDK工具中I2C核对TVP5150芯片配置,当芯片上电工作时,输出的是 BT.656格式的视频数据,此时利用TVP5150的AVID管脚为高电平且VBLK管脚为低电平时输出的视频数据为有效数据的特点,将1帧的576×720个有效灰度数据存入外部存储器中。

Sobel算子的边缘检测程序比特流和高通滤波程序比特流分别存放在外部存储器的的不同位置中,在嵌入式32位MicroBlaze控制下,从片外存储器读取配置数据写入内部配置端口(ICAP),可以完成芯片的动态重构[2]。FPGA的系统架构如图1所示。

图1 FPGA的系统架构

在这个架构中,硬件资源可分为两部分:

1)动态可重构区域。高通滤波和边缘检测算法可以自动在这里按照应用要求重新配置。

2)静态区域。包括32位的MicroBlaze,可重构控制器,还有系统的其他部分。

其中,MicroBlaze充当CPU,用于决定何时使用何种算法。可以利用Xilinx公司的EDK工具,生成MicroBlaze以及DDR控制器、DMA等资源,它们均通过OPB总线连接在一起,之后将EDK作为子模块添加到ISE工程中[3]。DMA的作用是解放CPU,使得存储在DDR中的图像数据,直接与动态可重构区域交互,以提高传输速度。可重构控制器主要负责将存储在外部的比特流通过ICAP接口读入内部配置存储单元。

对于动态可重构的模块法和差别设计法,模块法可以充分利用并行性特点,且各模块相互独立便于优化,提高整体性能和设计效率,因此选用模块方法。需要注意的是,静态模块和动态模块之间不是相互独立的,而是需要使用总线宏来进行连接,以便各子模块通信。

配置的流程如图2所示。

图2 配置的流程

2 高通滤波子模块

CCD摄像机采集的数据,通常情况有很多噪声,而Sobel算子对噪声比较敏感,如果不首先将这些噪声滤除掉,势必影响之后的检测效果。虽然Sobel算子也具有一定的噪声平滑作用,但是精度不高。

滤波算法一般都是用模板来进行,而模板的尺寸均为奇数,通常采用的是3×3,5×5,7×7。这里采用空间域3×3模板。所谓空间域滤波,就是将模板在待处理的原始图像中逐点的滑动,预先定义的滤波器系数与滤波模板对应的像素进行特定的计算得出该点所需的响应[4]。实现的步骤如图3所示。

图3 滤波算法实现步骤

这里所采用的高通滤波模板如图4所示。

图4 高通滤波模板

为了可以同时提取模板中的9个像素,本文采用了图5所示的结构。其中,每个FIFO使用的是片内的BRAM,用CoreGenerator生成,容量为1 k×8 bit,存储1行720个灰度数据,SRi为8位的移位寄存器,用VHDL语言描述,这样在FIFO和SR的输出端口恰好构成1个3×3的模板。值得注意的是,为了保证能够有较稳定的数据,设置FIFO的读时钟较写时钟晚半个周期。以上模板中的负数,采用补码方式进行计算,并且预留进位。经过图3的计算步骤,边缘频率分量得以保存[5]。

图5 模板结构

3 Sobel算子下的边缘检测模块实现

Sobel算子是通常用于水平和垂直边缘的一个简单检测子[6],能够很好地处理灰度渐变且噪声多的图像。水平梯度Gx和垂直梯度Gy可以由下面公式计算得出

式中:S为强度,θ为方向。但在这里,只使用强度S。与高通部分相同的是,仍然要构建3×3模板,只是模板内系数不同,并且需要水平和垂直方向两个模板分别对Gx和Gy进行计算。详细的构建流程如图6所示。

图6 构建流程图

正如图6所示,来自高通滤波器的数据流分别同时使用2个3×3模板进行卷积处理,其中,Gx的模板如图7所示,Gy的模板如图8所示。

图7 Gx的模板

图8 Gy的模板

经过运算后的9个数据需要再经过加法器(见图9)求和,将和值送出,与Gy求得的和值进行均方运算。

图9 加法器

对2个矩阵对应像素求均方根,得到的数据即为该点的像素梯度强度值,最后判断其与阈值的关系,满足T1≤S≤T2,输出235,否则输出16。因为在BT.656格式中,色度信号被填充为128,代表无色度信号,灰度信号被填充为16或235,分别代表黑色和白色。可以使用VHDL来构造状态机,实现BT.656视频格式,完成图像在LCD上的显示,亦可利用TVP5150的视频输出信号,填充有效数据,但需要注意时序问题,否则会造成显示的不同步。而阈值的选择,需要根据不同背景不同光照来选择。在这里,模板中的负数,仍然采用补码方式进行计算,并且预留进位。乘法器可以使用VHDL语言进行编写,也可以使用Xilinx自带的CoreGenerator来生成,这里选择后者。

当然,由于Gx与Gy的计算方式仅仅是模板内部系数不同,所以,可以在完成Gx结构之后,将其复制并修改模板系数就可以完成Gy结构。

4 实验结果及其分析

本文采用合众达公司的SEED-XDTK FPGA教学实验平台,截取视频中一幅图片,在LCD显示器上显示,实验结果如图10所示。由图10可见,本文的设计初步达到要求,但与软件处理的效果仍稍有差距。

5 小结

本文首先利用Xilinx公司的EDK嵌入式开发软件完成了硬件平台搭建,并将其作为子模块嵌入到ISE工程中,之后,在ISE中完成算法模块搭建,由于使用了大量FPGA自带的硬件资源,避免了编写大量程序代码,利用硬件平台完成了高通滤波和Sobel算法的动态重构,有效提高了硬件资源利用率并且方便算法扩展,有较强的通用性和移植性。

[1]朱明程.FPGA动态可重构技术及其应用[J].电子产品世界,2000(6):13-14.

[2]覃祥菊,朱明程,张太镒.FPGA动态可重构技术原理及实现方法分析[J]. 电子器件,2004,27(2):277-282.

[3]田耘,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2011.

[4]赵磊.基于FPGA图像增强技术的实现[D].昆明:昆明理工大学,2008.

[5]王德胜,康令州.基于FPGA的实时图像采集与预处理[J].电视技术,2011,35(3):32-35.

[6]SONKA M,HLAVAC V,BOYLE R.图像处理、分析与机器视觉[M].3版.艾海舟,苏延超,等,译.北京:清华大学出版社,2011.

猜你喜欢

通滤波算子边缘
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
声呐发射机负载阻抗变化仿真分析
拟微分算子在Hp(ω)上的有界性
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一类Markov模算子半群与相应的算子值Dirichlet型刻画
二阶有源低通滤波电路的计算机辅助设计
一张图看懂边缘计算
基于复带通滤波的智能电表量测算法及其DSP实现
基于频域分析和低通滤波的光伏并网逆变器谐振抑制研究
在边缘寻找自我