APP下载

基于FPGA的Prewitt边缘检测算子的实现

2015-09-09方惠蓉

关键词:像素点算子梯度

方惠蓉

(漳州职业技术学院)

0 引言

现实生活中,在照片、刊物、航空测量、卫星遥感等领域,数字图像处理技术是必不可少的,图像的边缘是图像最基本的特征,图像的边缘检测在数字图像处理中显得非常重要,这也使图像的边缘检测成为国内外研究的一个非常活跃的领域[3].边缘包含了图像丰富的信息,它是完实现图像分割、图像配准、图像分类以及图像识别的重要保障,如果边缘检测能够成功,那么图像分析就会变得很方便很简单,并且其精度也会得到相应的提高[4].边缘检测算子分为一阶微分算子和二阶微分算子.常见的一阶微分算子有Prewitt算子,Canny算子、Sobel算子、Roberts Cross算子,Kirsch算子,罗盘算子等等.二阶微分算子包括Laplacian算子和LOG算子等等[1].该文主要介绍了Prewitt边缘检测算子的原理以及基于FPGA的Prewitt边缘检测算法的实现.

1 Prewitt边缘检测算子简介

Prewitt算子是一种边缘模板算子,这种算法是利用局部差分平均方法来寻找边缘的,该算法体现了三对像素点像素值之差的平均概念.首先这些算子的模板是由理想的边缘算子图像构成的,然后依次用边缘模板去检测待检测的图像,再由与被检测区域最为相似的模板给出检测的最大值,并且用这个最大值代替算子的输出值,这样边缘像素就被检测出来了[7].

在这里假设在图像平面上有一个9个点的小区域:

Prewitt算子是通过对平面上9个点进行曲面拟合进而求拟合曲面偏导数,最后再计算梯度的幅值.根据Prewitt的定义可以得到Prewitt算子:

其中两个卷积为:

2 基于FPGA的设计思路

2.1 设计思路介绍

主要思路是,通过matlab软件采集图片的各个像素点,将灰度值写进image.txt文件里,然后通过quartusII软件进行编程,生成3*3的窗口,进行加法、减法以及绝对值计算操作,再通过testbench.v仿真文件对数据进行处理,经过modelsim软件仿真,将数据写进 image_process.txt里,由于简单的波形仿真无法看出具体的效果,所以最后通过matlab软件对image.txt和image_process.txt文件进行处理,输出处理图像.Prewitt边缘检测算子的原理如图1所示.

图1 Prewitt边缘检测算法原理图

首先分别计算水平梯度和垂直梯度,然后将两个方向的梯度值结合起来,接着通过一个门限值后,最后输出二值图像.通过前面的分析可知,假设输入的像素点分别为 a11,a12,a13,a21,a22,a23,a31,a32,a33.那么 x 方向的梯度和 y 方向的梯度分别为:

梯度结合后的梯度值G为:

门限处理函数:

在式(6)中GT是门限处理的阈值.根据以上分析,可以比较清晰地知道在空间域上实现Prewitt算子比较容易,并且采用这种方法可以比较有效地处理噪声的影响.

Prewitt算法的关键在于计算梯度值G.由前面分析可知

上述方法具体的算法实现框图如图2所示[2]:

图2 Prewitt算法实现框图

在框图 2 中 a11,a12,a13,a21,a22,a23,a31,a32,a33表示对应的像素点.在上述实现过程中进行的主要是加法操作和减法操作,框图中的abs框表示的是取绝对值操作.通过编译综合,最后生成的是RTL级框图,如图3所示,在图3中最左侧的模块所实现的功能是生成3*3窗口,接下来左边第二个模块的功能是计算水平梯度和垂直梯度,下一个模块的功能是计算绝对值,最后一个模块的功能是整合梯度以及计算阈值[2].

由图3能清晰地看出Prewitt的内部结构设计,而从图4这个Prewitt端口图则能清楚的看出这个模块部分的输入输出关系.

图4中的clk为时钟信号,rst是复位信号.median_out_flag是输出使能信号的输出端口,median_data_in是像素灰度信息的输入端口,它们是8位无符号数,取值范围是0~255.输出信号包括:输出结果sobel_data.已开始输出指示信号sobel_en.x和y是从内部行计数器输出的像素点的 x,y 坐标[2].

2.2 阈值修改

阈值修改边缘检测的阈值是在顶层文件Grads.v的下面这个语句中:

设定阈值,此时为675,修改(abs_data>=675)的数据就是更改阈值.算子的实现部分是在data_grads.v文件中实现的,具体代码如下所示://产生Gx横向梯度

图3 Prewitt算法的RTL级原理图

图4 Prewitt算法模块的端口

3 仿真结果以及分析

在quartus II创建的仿真工程中包括的文件主要有 abs.v、data_grads.v、fe_data3by3.v、fe_fifol.v、fe_fifo2.v、fe_generater_mode3by3d.v、Grads.v、Gx_grad.v、Gy_grad.vtestbench.v.其中Grads.v 是顶层文件,fe_generater_mode3by3.v 用于生成3*3的窗口,以串行的图像数据作为输入.fe_generater_mode3by3.v 调用有 fe_fifo1、fe_fifo2以及 data3by3,fe_fifo1、fe_fifo2 是 quartus II的IP核,data3by3文件最终生成3*3的窗口.data_grads.v作用是算子实现和计算,其输入为3*3的图像,输出是图像中心像素点的x方向和y方向的梯度.abs.v是计算绝对值得,testbench.v是仿真测试文件.仿真的时候将testbench.v设置为仿真测试文件,仿真结果如图5、图6.

图5 Prewitt算法的仿真结果

图6 Prewitt算法的仿真结果细节

图5是仿真的整体图,可以看到在这个图中clk时钟信号已经看不清楚,图6能清楚的看到sobel_data(Prewitt边缘检测结果数据)的输出变化.图6是将仿真图放大之后的效果,在这个图中能看出clk时钟信号和图像信息输入数据median_data_in的变化.可以看到出sobel_data只有两种状态0x00和0xff.当前点如果是在边缘上则通过系统之后该点的数值变为0xff,如果当前点不是在边缘上则该点输出为0x00.

需要说明的是仿真是通过以下程序进行读写操作的:

读程序initial

写程序integer w_file;

主要是写到 image_process.txt文件中去,所以quartussimulationmodelsim路径下有image_process.txt这个文件,当当然,此路径下 image.txt也是很重要的,在读程序中主要是读其中的数据,其中存放的主要是一些数,也就是灰度值,而image_process.txt是经过处理之后生成的文件,存放的主要是一些十六进制数.下面介绍MATLAB软件处理.在MATLAB中有一个文件image_write.m,用于读取图片信息,然后将数据写进image.txt中,这也是上述仿真中 image.txt文件的来源.另外一个就image_read.m,主要程序为

其主要功能为读取image.txt和image_process.txt中的数据,然后进行处理,输出如图7.

如图7(1)是处理前的图片,图7(2)是处理后的图片,处理后的图片将边缘亮点都标记出来了.这就实现了基于FPGA的Prewitt边缘检测.Prewitt算子具有平滑作用,能滤除一些噪声,去掉部分伪边缘,边缘性也比较完整,但同时也平滑了真正的边缘,但是定位精度不高.

图7 Prewitt边缘检测算子的仿真结果(阈值为675)

4 结束语

首先简单介绍了Prewitt边缘检测算子,分析了Prewitt算子的基本原理,然后结合理论分析阐述了基于FPGA的Prewitt边缘检测算子的设计思路,利用FPGA平台对各个模块进行了仿真,并利用MATLAB软件中的imshow函数实现了图像数据的显示,对实验数据进行了分析,分析得出Prewitt边缘检测具有平滑噪声的作用,边缘性也比较完整,但其定位精度有待提高,这是今后需要努力的地方.

[1]张亶,陈刚编.基于偏微分方程的图像处理.北京:高等教育出版社,2004.20–61

[2]范培培.基于FPGA的图像处理方法研究与实现[D].天津:河北工业大学,2010.

[3]张永军.基于FPGA的图像处理系统设计与算法实现研究[D].重庆:重庆大学,2006.

[4]付麦霞,张元,廉飞宇.基于CPLD的图像边缘检测器的研究[J].通信技术,2009,42(11):36-41.

[5]云霄.可配置FFT/IFFT处理器的设计及其FPGA构造[D].西安:西安电子科技大学,2009

[6]郑文明.基于FPGA的数字信号处理算法研究与高效实现[D].黑龙江:哈尔滨工程大学,2009.

[7]唐良瑞,马全明,景晓军,等.图像处理实用技术.北京:化学工业出版社,2002.1.

[8]褚镇勇.FPGA设计及应用.西安:西安电子科技大学出版社,2002.7.

猜你喜欢

像素点算子梯度
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
拟微分算子在Hp(ω)上的有界性
Heisenberg群上与Schrödinger算子相关的Riesz变换在Hardy空间上的有界性
基于局部相似性的特征匹配筛选算法
一种自适应Dai-Liao共轭梯度法
各向异性次Laplace算子和拟p-次Laplace算子的Picone恒等式及其应用
一个具梯度项的p-Laplace 方程弱解的存在性
基于5×5邻域像素点相关性的划痕修复算法