文章快速检索  
  高级检索
基于FPGA的Sobel图像边缘检测算法
刘博峰 , 郜丽鹏
哈尔滨工程大学 信息与通信工程学院, 黑龙江 哈尔滨 150001     
摘要: 数字图像处理主要是对图像像素进行处理,由于像素众多,因而图像处理需要消耗大量时间,而FPGA并行性、实时性等优点可有效弥补这一缺点。文中主要介绍如何用FPGA来实现图像的Sobel边缘检测算法,并同Matlab联合仿真,验证FPGA图像处理的可靠性,最终得到让人满意的处理图案。
关键词: FPGA     MATLAB     Sobel     图像处理     边缘检测    
Sobel image edge detection method based on FPGA
LIU Bofeng, GAO Lipeng
College of Information and Communication Engineering, Harbin Engineering University, Harbin 150001, China
Abstract: Image pixels are mainly processed in digital image processing. Due to the large number of pixels, the image processing costs a lot of time. The advantages of FPGA, such as parallelism, real-time, can effectively compensate this shortcoming. This article describes how to use FPGA to implement Sobel image edge detection algorithm, by verifies the reliability of FPGA image processing by co-simulation with Matlab, and finally obtains a satisfactory processing pattern.
Key words: FPGA     MATLAB     Sobel     image processing     edge detection    

边缘检测是图像处理和计算机视觉的基本问题,是图像特征提取的一个研究领域,图像边缘含有图像丰富的特征信息,在图像分析和处理中有重要的意义。图像边缘指的是图像亮度变化明显的点,图像属性的明显变化表明了事件的显著变化。图像边缘检测剔除了不相关信息,减少了数据量。

在实时图像处理中,图像边缘检测有很多种算法,一阶的主要有Sobel算子、Prewitt算子,二阶的主要有Canny算子、Laplacian算子,文中主要介绍Sobel算子。在实时图像处理中,对时间要求很高,因此软件应用太局限,基于FPGA的图像处理有实时性、并行性等优点,非常适合于图像处理[1]

文中论述了Sobel算子的原理,如何用FPGA实现图像的3×3矩阵,用FPGA实现Sobel算子滤波[2]

1 模板和模板卷积操作

模板操作是数字图像处理中常用的一种运算方式,图像的平滑、锐化、细化和边缘检测等基于领域计算的图像处理算法都运用到模板操作。模板操作使用1个窗口, 这个窗口可以是1个点(origin)周围的特定长度或形状的领域, 来计算图像算法的输出。比如一个3×3的方形窗,而模板卷积就是将图像模板下的像素与模板系数的乘积求和操作[3-4]

文中的设计就是基于3×3模板, 用模板和模板卷积来研究图像预处理算法的FPGA实现。我们用ISE软件自带的Shift Ram以及Reg型寄存器构成图像3×3矩阵,使用2个Shift Ram形成图像的行缓存,假如图片的格式为200×200的8位灰度图像,那么设计Shift Ram时,可设计其存储深度为197。

ISE中的Shift Ram学名叫做移位存储器[5],与传统的先入先出队列(FIFO)不同,FIFO需要设置使能为1才可以开始移位,ISE的Shift Ram随着时钟上升沿到来,可以自动移位,方便、快捷、不繁琐,非常适用于数字实时图像处理[6-7]。ISE生成矩阵方法如图 1所示。

图 1 ISE生成矩阵方法
2 Sobel边缘检测算法原理

Sobel算法主要用作边缘检测,在技术上是一离散性差分算子,用来运算图像亮度函数的近似值。在图像的任何一点使用算子,将会产生对应的灰度矢量或是其法向量[8-10]

该算子包含2组3×3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,GxGy分别代表经横向及纵向边缘检测的图像灰度值,如式(1)、(2)所示。

图像的每一个像素的横向及纵向灰度值通过式(3)结合,来计算该点灰度的大小:

通常为提高效率使用不开平方的近似值,但这样做会损失精度,迫不得已的时候可以做如下处理:

得到G后进行阈值比较,即将阈值与给定值进行比较,如果梯度G大于给定值,可以认为是边缘点。将该值置为255,否则为0。

3 FPGA实现Sobel边缘检测

FPGA处理流程如图 2所示。

图 2 FPGA处理流程

文中使用的语言是Verilog HDL;FPGA使用型号为Xilinx公司的XC6SLX100;输入图像协议为标准的Camera Link协议;输入图像为8位Lena灰度图像。输出的图像结果与上位机进行通信,将图像数据传给上位机,将上位机接收的数据进行处理,获得处理后的图像。

将输入图像,通过行缓存,对图像进行3×3模板梯度计算求出Gx。设生成的3×3模板的元素数据为P11P12P13P21P22P23P31P32P33,则计算出Gx的值为

为了防止产生负值,FPGA还需要花费一个周期,得出Gx的绝对值,使Gx永远为正值。同样的方法求出Gy

由于FPGA的并行性,因此可同时得出Gy的值,因此FPGA会花费2个周期得出GxGy的绝对值。在第3个周期求出GxGy相加值,在第4个周期进行阈值比较,得出实验结果,将得出的数据传给上位机后进行处理,生成FPGA边缘处理后的实验图像。

4 FPGA仿真结果

输入原始灰度图像,用FPGA对图像进行处理结果如图 34所示。

图 3 光滑物体灰度原始图像与边缘检测效果
图 4 棱角物体灰度原始图像与边缘检测效果

实验仿真图中,图 3(a)图 4(a)像为输入原始灰度图像,图 3(b)图 4(b)为FPGA Sobel滤波图像,通过实验仿真图可以得出,该系统较好地完成了算子边缘检测的任务,实验结果表明使用FPGA器件能较为准确地检测出有用的边缘信息,为图像处理提供了另一种可靠的捷径。

5 结束语

文中给出了Sobel算法的原理,硬件实现图像处理的方法,FPGA实现Sobel图像边缘检测的详细步骤以及仿真图。该设计利用FPGA的并行性、实时性等优点,功能模块可重复利用,移植性强,同时占用的FPGA资源较少,在此原理上可在FPGA上尝试并实现更为复杂的算法。

参考文献
[1] 方翰华, 陈新华, 沈国新, 等. 基于FPGA图像滤波算法硬件化设计[J]. 电子测量技术 , 2009, 32 (12) : 68-71
[2] 于洋, 兰旭腾. 基于FPGA的图像处理系统算法研究[J]. 电子技术与软件工程 , 2015 (10) : 91
[3] 安春燕. 基于FPGA的图像处理算法的研究[J]. 电子制作 , 2015 (5) : 105
[4] 周光宇, 刘慧忠. 边缘检测算法的FPGA实现[J]. 计算机系统应用 , 2015, 24 (10) : 271-275
[5] 方惠蓉. FPGA在边缘检测中的应用[J]. 信息通信 , 2015 (1) : 9-12
[6] 郭平, 赵刚, 张晶. 基于Matlab数字图像处理的方法应用教学[J]. 山东工业技术 , 2015 (8) : 270-271
[7] 杨悦梅, 冯冬芹. 基于FPGA的高速图像处理技术[J]. 舰船科学技术 , 2015, 37 (4) : 207-210
[8] 陈虎, 凌朝东, 张浩, 等. 基于FPGA的实时彩色图像边缘检测算法的实现[J]. 液晶与显示 , 2015, 30 (1) : 143-150
[9] 李杏华, 刘宁, 张晶. 基于FPGA的图像实时处理系统的设计[J]. 半导体光电 , 2014, 35 (3) : 563-566
[10] 刘慧忠, 汤伟. 基于FPGA的纸病检测预处理算法的实现[J]. 中国造纸学报 , 2014, 29 (1) : 53-57

文章信息

刘博峰, 郜丽鹏
LIU Bofeng, GAO Lipeng
基于FPGA的Sobel图像边缘检测算法
Sobel image edge detection method based on FPGA
应用科技, 2016, 43(6): 59-61
Applied Science and Technology, 2016, 43(6): 59-61
DOI: 10.11991/yykj.201511014

文章历史

收稿日期: 2015-11-19
网络出版日期: 2016-11-27

相关文章

工作空间