基于FPGA的可变算子图像边缘检测方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的可变算子图像边缘检测方法
李枚娟;李灿平;赖章勇
【摘要】图像边缘是图像最基本的特征,携带了图像大部分的信息.通常图像边缘检测是采用图像与边缘算子卷积运算得到,此方法运算量大,普通微处理器处理速度慢,利用FPGA具有高速并行处理的优势,可以大大提高图像边缘检测速度.每个边缘检测模板均有各自的适用范围,因此,通过自由选择Sobel算子与Prewitt算子对图像边缘进行检测,并利用matlab与modelsim联合仿真,验证图像边缘检测结果.以此为思路可将两算子可选扩展到多算子可选的边缘检测,根据实际情况选择不同的算子进行检测.
【期刊名称】《通信技术》
【年(卷),期】2016(049)001
【总页数】4页(P113-116)
【关键词】FPGA;Megafunction;可变算子;边缘检测
【作者】李枚娟;李灿平;赖章勇
【作者单位】成都理工大学,四川成都610059;成都理工大学,四川成都610059;成都理工大学,四川成都610059
【正文语种】中文
边缘是图像最基本的特征,携带了图像大部分的信息,不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。

经典边缘检测是基于检测算子的方法,通过计算待测点在某个邻域内的灰度变化,利用一阶或者二阶方向导数变化
规律,根据一定的判断标准检测出边缘,由于图像处理处理的数据量大,对处理速度要求高,因此用纯软件的方法很难达到要求。

FPGA(Field Programmable Gate Array,现场可编程逻辑器件)在集成度,速度等方面具有明显优势,适合高速并行信号处理。

本文讨论了图像经典边缘检测的优缺点,给出选择算子的依据,提出一种简单可行的可变算子的图像边缘检测。

并利用FPGA实现,通过matlab与modelsim仿真,验证该方法的可行性。

各种算子的存在就是对导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位,常见的边缘算子有Roberts算子、Sobel算子、Prewitt算子、LOG算子、Canny算子等。

每一种模板均有其优缺点以及适用范围,图1是用matlab对这几种算子的仿真。

通过方针对比,总结如下:
Roberts利用对角线方向相邻两像素只差表示信号的突变,检测水平和垂直方向边缘的性能好于斜线方向,定位精度比较高,但对噪声敏感,检测出的边缘较细。

Sobel边缘检测算子是像素领域的加权和,模板中心值较大,不但产生较好的边缘效果,而且对噪声具有平滑作用。

但存在伪边缘,边缘比较粗定位精度低。

Prewitt在检测中与真实梯度值更接近,对噪声有平滑作用,检测出的边缘较粗,定位精度容易损失角点。

Log算子首先用高斯函数进行滤波,然后用Laplacian算子检测边缘,克服了Laplacian算子抗噪声能力比较差的缺点,Log算子中高斯函数中方差参数σ的选则很关键,σ越大避免了虚假边缘的检出,边缘也被平滑造成边缘点的丢失。

σ越小,噪声抑制能力相对下降,容易出现虚假边缘。

因此在不知道物体的尺度和位置的情况下,很难准确确定滤波器的尺度。

Canny:采用高斯函数对图像进行平滑处理,因此具有较强的噪声抑制能力;同样
该算子也将一些高频边缘平滑掉,造成边缘丢失,采用了双阈值算法检测和连接边缘,边缘的连续性较好。

Canny算子能检查出细微的边缘,这是其优点也是缺点。

Roberts、Prewitt、Sobel这类一阶算子由于算法简单,检测所需的时间比二阶
算子要少很多,但是一阶算子与二阶算子相比对噪声极为敏感。

因此在实际使用中,可针对不同的需求选取恰当的算子进行检测以达到最优的性能。

2.1 系统原理框图
该系统在FPGA中利用Quartus ii自带的IP Core搭建Sobel算子与Prewitt算
子的实现原理图,如图2所示,通过输入选择信号选择图像检测模板,并输出检
测结果。

2.2 Sobel算子基本原理
Sobel算子与Prewitt算子实现方法类似,因此,此处只介绍Sobel检测原理。

Sobel算子利用水平和竖直方向上相邻像素之差进行梯度幅度计算,再根据边界判断条件确定边缘。

图3给出了Sobel边缘检测框图。

假设连续图像为f(x,y),函数在(x,y)处的梯度是一个具有方向和大小的梯度矢量,

式中,i、j分别为x、y方向的单位矢量。

基于梯度的算子都是建立在这一基础上,大部分梯度算子把(x,y)处的边缘梯度幅度和方向分别定义为:
而计算出的值即为图像的微分数据,因为上式是对连续的图像函数的处理,而在实际应用中,采集的图像为一定像素大小的离散数据,因此在图像处理中,常用相邻或间隔像素差分值来代表图像的边缘信息。

而Sobel算子是对离散的数据进行加
权计算,采用式(4)的卷积模板,利用模板与对应的图像数据进行卷积来做近似计算。

Sobel算子卷及模板为:
式中,Gx是水平方向梯度,Gy是垂直方向梯度。

选取适当的阈值TH,本设计取灰度值的80%作为门限阈值,此处门限值设置为204,对每一个像素点做判断:
式中,g(x,y)为图像f(x,y)的边缘图像。

2.3 Sobel边缘检测FPGA实现
图2提供的Sobel边缘检测算法的框图,利用Quartus II自带的IP 核实现图像输入,梯度运算,梯度结合,门限判定,Sobel检测结构如图4所示。

2.3 算子选择
利用译码器外部输入选择信号切换图像边缘算子,使能所选算子模块,关断其余检测算子模块使能信号,输出所选算子的边缘检测结果。

由于本文只涉及到了两种算子的选择,因此只需要一个反相器,如图5所示。

其中Choise_IN与Choise_IN’分别连接两个算子的时钟允许端。

通过Matlab与Modelsim联合仿真,验证该系统的边缘检测结果。

本文通过文
件读写的方式实现Matlab和Modelsim的联合仿真。

3.1 是通过文件读写的方式实现Matlab与Modelsim的联合仿真
本文利用Matlab将原始图像lena.jpg转化为灰度图像,将灰度像素值保存在lena.txt文件中。

通过在Quartus II里编写testbench测试文件的方式将lena.txt 的灰度值数据读入系统,再将边缘检测后的边缘值保存在Edge_out.txt中,用Matlab将Edge_out.txt文件中的边缘点显示成图像,验证算法的可行性。

梯度
计算模块的Modelsim仿真结果见图5,其中值得注意的是仿真从数据开始输入时,便有数据输出,但是其中大部分是冗余的,应该剔除。

本文中计算数据输入缓冲与乘加器产生的缓冲时间,得到其有效数据范围在时钟计数为1 547到
262 664时输出的数据。

同时,滤波模板与原始图像数据卷积时会导致原始图像
周围一圈的图像丢失,见图6,因此提取图像边缘信息时还要剔除每一列的两个冗余数据。

即真正的有效数据范围是在时钟计数范围为
Count~(1547+512×i,1547+512×i+510),0≤i≤510
其中,Count为时钟计数器的输出值。

3.2 仿真结果
仿真结果如图7所示,该实验根据使用者的需求,通过对Choice_IN的选择实现图像边缘检测算子的切换,例如,在包含Sobel与Prewitt的选择中,若需要一个与真实梯度值更接近的边缘检测,则选择Prewitt算子;若需要一个边缘效果较好且边缘较粗的图像边缘,则可选择Sobel算子。

在实际应用中,可实现更多边缘算子检测,以达到用户更多的需求。

对于图像边缘检测来说,不同的检测方法有各自的适用场合,基于此为思路可添加多个边缘算子,在不同的场合根据不同的需求选择适当的算子。

由于图像处理数据大,处理速度要求高,本文利用FPGA具有高速并行处理的优势,提高图像边缘检测速度。

最后通过FPGA仿真验证了本方案的可行性,由于该方法利用Quartus II 提供的IP核实现,避免了用户大量编写程序代码,大大降低了代码编写的复杂度。

总的来说,本方法的优势在于能根据不同的需求选择最合适的算子进行边缘检测,具有高速便捷的处理优势,计算简单,易于硬件实现,具有
一定的参考和应用价值,作者认为该方法仍有改进的地方,若能根据需求由设备自适应选择适合的算子则更加完整。

李枚娟(1992—),女,硕士研究生,主要研究方向为现代信号处理;
李灿平(1957—),男,硕士生导师,副教授,主要研究方向为数字图像处理、信息安全等;
赖章勇(1988—),男,硕士研究生,主要研究方向为嵌入式方法技术。

【相关文献】
[1] 李明,赵勋杰,毛卫民.Sobel边缘检测的FPGA实现[J].现代电子技术,2009(16):44-46. LI Ming, ZHAO Xun-jie, MAO Wei-
ming. Sobel Edge Detection of FPGA Implementation [J].Journal of Modern Electronic Tec hnology, 2009:44-46.
[2] 李正明,刘春国,安明建.基于FPGA的Sobel图像边缘检测设计[J].现代科学仪器,
2012(04):84-86.
LI Zheng-ming, LIU Chun-guo, AN Ming-
jian.Sobel Image Edge Detection based on FPGA Design [J]. Modern Scientific Instrument, 2012(04):84-86.
[3] 付麦霞,张元,廉飞宇.基于 CPLD 的图像边缘检测器的研究[J].通信技术,2009,
215(42):157-159.
FU Mai-xia, ZHANG Yuan, LIAN Fei-
yu. Image Edge Edge Detector based on CPLD Research [J]. Journal of Communications Te chnology,2009,215(42):157-159.
[4] 李涛.基于FPGA的Sobel算子实时图像边缘检测系统的设计[D].北京:北京交通大学,2013. LI Tao. Sobel Operator Real-
Time Image Edge Detection System based on FPGA Design [D]. Beijing: Beijing Jiaotong U niversity,2013.
[5] 张杰. 基于FPGA的数字图像处理[D].武汉:武汉科技大学,2009.
ZHANG Jie. Digital Image Processing based on FPGA [D]. Wuhan: Wuhan University of Sci ence and Technology, 2009.
[6] 甘金来. 图像边缘检测算法的比较研究[D].成都:电子科技大学,2005.
GAN Jin-
lai. Comparative Study of Image Edge Detection Algorithm [D]. Chengdu: University of Ele ctronic Science and Technology,2005.。

相关文档
最新文档