边缘检测是图像处理和计算机视觉的基本问题,是图像特征提取的一个研究领域,图像边缘含有图像丰富的特征信息,在图像分析和处理中有重要的意义。图像边缘指的是图像亮度变化明显的点,图像属性的明显变化表明了事件的显著变化。图像边缘检测剔除了不相关信息,减少了数据量。
在实时图像处理中,图像边缘检测有很多种算法,一阶的主要有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所示。
2 Sobel边缘检测算法原理Sobel算法主要用作边缘检测,在技术上是一离散性差分算子,用来运算图像亮度函数的近似值。在图像的任何一点使用算子,将会产生对应的灰度矢量或是其法向量[8-10]。
该算子包含2组3×3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,如式(1)、(2)所示。
(1) |
(2) |
图像的每一个像素的横向及纵向灰度值通过式(3)结合,来计算该点灰度的大小:
(3) |
通常为提高效率使用不开平方的近似值,但这样做会损失精度,迫不得已的时候可以做如下处理:
得到G后进行阈值比较,即将阈值与给定值进行比较,如果梯度G大于给定值,可以认为是边缘点。将该值置为255,否则为0。
3 FPGA实现Sobel边缘检测FPGA处理流程如图 2所示。
文中使用的语言是Verilog HDL;FPGA使用型号为Xilinx公司的XC6SLX100;输入图像协议为标准的Camera Link协议;输入图像为8位Lena灰度图像。输出的图像结果与上位机进行通信,将图像数据传给上位机,将上位机接收的数据进行处理,获得处理后的图像。
将输入图像,通过行缓存,对图像进行3×3模板梯度计算求出Gx。设生成的3×3模板的元素数据为P11、P12、P13、P21、P22、P23、P31、P32、P33,则计算出Gx的值为
为了防止产生负值,FPGA还需要花费一个周期,得出Gx的绝对值,使Gx永远为正值。同样的方法求出Gy。
由于FPGA的并行性,因此可同时得出Gy的值,因此FPGA会花费2个周期得出Gx、Gy的绝对值。在第3个周期求出Gx、Gy相加值,在第4个周期进行阈值比较,得出实验结果,将得出的数据传给上位机后进行处理,生成FPGA边缘处理后的实验图像。
4 FPGA仿真结果输入原始灰度图像,用FPGA对图像进行处理结果如图 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 |