基于FPGA的实时彩色图像边缘检测算法的实现

2015-03-21 10:01凌朝东
液晶与显示 2015年1期
关键词:彩色图像算子梯度

陈 虎,凌朝东*,张 浩,杨 骁,汤 炜

(1.华侨大学 信息科学与工程学院,福建 厦门361021;2.厦门市专用集成电路系统重点实验室,福建 厦门361008)

1 引 言

边缘是图像的最基本特征,是图像局部亮度变化最显著的部分,是物体的轮廓或物体不同表面之间的交界在图像中的反映,它是图像分割、纹理特征提取和形状提取等图像分析的重要基础。边缘检测是利用物体和背景在某种图像特性上的差异来实现,这些差异包括灰度、颜色或者纹理特征。在实时图像处理中,由于实现边缘检测算法涉及的运算数据量很大,一般运算器的顺序执行或用传统的软件方法都很难达到实时性要求[1]。而采用FPGA 的并行结构和流水线技术,可提高图像边缘检测的处理速度,满足系统实时性要求。

Sobel算法是一种基于梯度的边缘检测算法,相比其他边缘检测算法,如Marr-Hildreth、Canny基于梯度信息的自适应平滑滤波和基于小波的边缘检测算子等[2-4],其计算简单,只涉及到乘加运算,同时具有非线性和一定的平滑效果。所以对于灰度图像Sobel算子能够取得很好的边缘检测效果,而对于彩色图像,由于不能充分利用彩色图像的颜色信息,因此会丢失原始图像的一些细节信息,出现边缘模糊现象,影响图像后续的分析和处理[5]。有研究表明,彩色图像中大约有90%与灰度图像边缘相同,但余下10%的边缘单靠灰度图像是检测不出来的。

本文针对上述存在的不足,对Sobel算子进行改进,通过增加边缘检测的方向模板,改善其对纹理复杂图像的适应能力,同时,引进一种快速中值滤波方法对输入图像数据进行去噪预处理,滤除由于图像获取、传输、存储、处理和随机干扰等产生的噪声。实验结果表明,本文涉及的系统能够满足实时性的要求,具有良好的检测精度和抗噪能力。

2 中值滤波原理

在实时图像采集中,不可避免的会引入噪声,尤其是干扰脉冲和椒盐类噪声,噪声的存在严重影响边缘检测的效果,中值滤波是一种基于排序统计理论的非线性平滑技术,能有效平滑噪声,且能有效保护图像的边缘信息,所以被广泛用于数字图像的边缘提取,其基本原理是把数字图像或数字序列中一点的值用该点一个邻域内各点的中值来代替。对二维中值滤波,其公式表示如下[6]:

其中:f (x ,y) ,g (x ,y) 分 别为原 始 图 像 和 输 出 图像,W 为二维窗口,大小为n×n(n 一般为奇数),可以是3×3或5×5等,常用的形状有方形、圆形和十字形等。

3 Sobel边缘检测算法

3.1 Sobel边缘检测算法原理

Sobel算子是一阶导数的边缘检测算子,它在图像空间利用两个3×3的方向模板与图像中的每个点进行邻域卷积来完成,其中,这两个方向模板分别检测水平和垂直边缘,如图1所示。

图1 (a)一副图像的3×3区域;(b)垂直Sobel算子;(c)水平Sobel算子 Fig.1 (a)3×3image area;(b)Vertical Sobel operator;(c)Horizontal Sobel operator

梯度值由式(2)确定[7]:

式中:I(x,y)为灰度图像,*为卷积运算,Si(i=1,2)分别代表2个方向模板,最后把梯度H 与设定的阈值Th 进行比较,若大于Th,则判定该点为边缘部分,把中央像素灰度值P5设为255,否则判为非边缘部分,灰度值P5设为0。

3.2 改进的Sobel边缘检测算法

由于彩色图像的每一个像素包含R、G、B 三个通道,且三者分布不一样,导致各个通道得到的边缘特征位置也不相同,因此直接利用传统灰度图像的处理方法来确定彩色图像边缘,就不能充分利用彩色图像的颜色信息。为了能够提取出清晰的边缘图像,并充分利用彩色图像的特点,本文把传统Sobel算子方向模板由2 个增加到了8个,如图2 所示,就可以从多个方向检测图像边缘,因此能在一定程度上解决了传统算子梯度计算中的方位局限问题。

图2 改进的Sobel算子8方向边缘检测模板Fig.2 Improved Sobel operator edge detection templates of 8directions

实际上,图像的灰度梯度方向的取值范围应为0°~360°,而这里只定义了8个方向的模板[8],当然,继续增加方向模板的数量可进一步提高定位精度,但出于计算效率的考虑和边缘宽度的限制,不宜再增加算子模板的数量[9]。

根据传统Sobel算子边缘检测理论和提出的8方向模板Si(i=1,2,…8),对图像中每个点进行邻域卷积运算,提取图像8个方向上的边缘成分,即:

图像中每个像素的梯度值可表示为:

4 基于Sobel边缘检测算法的系统总体设计

4.1 基于FPGA 的边缘检测算法的系统总体架构设计

根据系统要求,系统主要包括以下4 个模块[10],即:实时图像采集、图像数据存储、边缘检测、检测结果显示4 个模块,基于FPGA 的实时图像边缘检测硬件架构如图3。

图3 基于FPGA 的实时图像边缘检测系统框图Fig.3 System block diagram of real-time image detection based on FPGA

各模块的功能如下:CMOS摄像头实时采集数字图像数据,将采集到的原始图像数据送入色彩转换模块将其转换成RGB 格式图像数据;SDRAM 控制器将图像数据存储在片外存储芯片SDRAM 中;经快速中值滤波模块进行图像去噪处理后,在Sobel边缘检测模块进行梯度运算处理[11];LCD 液晶屏控制模块连续刷新屏幕将边缘检测的结果在液晶屏上显示[12]。

4.2 中值滤波算法的设计与实现

采用FPGA 实现中值滤波算法电路设计主要包括3×3 模板生成模块和排序模块,如图4所示[13]。

4.2.1 3×3模板生成模块

为了得到3×3模板生成模块,常使用FIFO模块作为图像数据的缓冲器,本设计通过调用Quartus II软件中基于RAM 的移位寄存器宏模块altshift_taps 实 现 行 延 迟 以 生 成3×3 模板[14-15],其中行缓存的深度等于输入图像的行像素总数,然后,每行通过3个移位寄存器(3行共9个)进行列延迟将数据并行输出,如图5所示。

图4 中值滤波图像处理流程图Fig.4 Image processing flow chart of median filtering

图5 3×3窗口输出数据硬件实现架构Fig.5 Hardware implementation architecture of 3×3 output data window

4.2.2 排序模块

图6 快速中值滤波算法流程图Fig.6 Fast median filtering algorithm flow chart

相比于传统中值滤波算法采用冒泡方法进行排序,快速中值滤波只需要19次比较运算即可得出中值,由于其设计简明扼要,易于用Verilog HDL语言编写,且在一定程度上节省了硬件资源,以满足图像实时性要求,图6为快速中值滤波算法流程图,其中,Pi(i=1,2,…9)为上述3×3窗生成模块的输出数据,也是算法模块的输入数据。A1,A2,A3,B1,B2,B3,C均为3点比较器,该比较器对输入的3个像素值进行排序输出,自左向右依次为最大值、中值、最小值(图中分别以max、med、min表示)。

由图6可知,共需要3级比较实现中值输出:第一级,通过比较器A1,A2,A3分别对输入的数据进行排序,将各自的最大值送入B1,中值送入B2,最小值送入B3。第二级,将B1的最小值送入C,B2的中值送入C,B3的最大值送入C[16]。第三级,将C 的中值作为输入9 个像素值的中值输出。

4.2.3 行列计数器模块

在对图像进行处理过程中,随着3×3方形框不断向右滑动,达到第n-1,n 和n+1行的最右端,此时,第n行处理完毕需转去处理n+1行数据,同时方形框开始移至第n,n+1和n+2行的最左端,开始对窗口内数据进行处理。因此,需要一个模块来判断数据是否已经到达图形边缘,本文图像数据为二维阵列,需要设计两个计数器:行、列计数器,其模块图如图7所示。

图7 行列计数器模块Fig.7 Rows and columns counter module

4.3 Sobel边缘检测算法的硬件实现

传统Sobel边缘检测算法框图如图8所示。

图8 传统Sobel算子边缘检测算法框图Fig.8 Block diagram of traditional Sobel operator edge detection algorithm

而本文在此基础上,对彩色图像每个颜色通道进行8个方向的实时边缘检测输出,则本文提出的基于改进的Sobel算子边缘检测算法框图如图9所示[17]。

图9 基于改进的Sobel算子的彩色图像边缘检测流程图Fig.9 Color image edge detection based on the improved Sobel operator flow chart

具体处理步骤如下:

(1)将彩色图像的每个像素点的颜色分解为R、G、B 3个分量。

(2)对(1)中3分量中的数据分别中值滤波图像去噪预处理。

(3)用公式(3)分别计算R、G、B 3个分量在0°,45°,…,315°8个方向的梯度值。

(4)用公式(4)分别对彩色图像的每个颜色分量计算每个像素的梯度值。

(5)综合(4)中三通道边缘信息,并与阈值比较,最终边缘图像输出。

(6)对彩色图像中的每一个像素进行上述5步骤处理。

由上分析知道,Sobel边缘检测算法实现的硬件实现系统应包括图像数据缓冲存储模块、梯度计算模块和阈值比较模块。各个模块功能的实现可通过调用Quartus II软件提供的各种宏功能模块(Megafunctions)实现[18],如图10所示。

图10 Sobel边缘检测算法硬件实现的系统框图Fig.10 System diagram of the hardware implementation of Sobel edge detection algorithm

由于梯度计算模块主要是为了完成各个算子分别与3×3图像像素矩阵的卷积运算,此处也通过调用altshift_taps实现3×3的图像数据缓冲存储[19]。下面主要介绍梯度计算模块和阈值比较模块。

4.3.1 梯度计算模块

图11是各方向3×3算子模板与图1(a)所示的3×3图像区域卷积运算的原理图。从图中可以看出,要实现卷积运算需做乘加运算,较之以往分立的D 触发器和加法器以及乘法器来完成,本文采用可编程乘加器altmult_add模块和可编程多路并行加法器parallel_add模块实现,大大简化了设计的同时提高了算法的性能。

图11 具有3条Line Buffer的卷积运算结构图Fig.11 Structure of 3line buffer convolution operation

由图2和公式(4),要处理图像中的每个像素点都用8个模板做卷积,每个模板分别对相应方向的边缘影响最大。边缘检测算子的中心与要检测的像素点相对应,进行8次卷积运算,8次卷积运算结果分别自乘平方相加送到浮点平方根altfp_sqrt模块,计算出的平方根作为该点的输出位,运算的结果是一副边缘幅度图像,在边缘检测中,Sobel算子对像素的位置的影响做了加权,加权平均边宽≥2像素,因此效果更好。

由图9框图可知,由于彩色图像的每一个像素包含R、G、B 3个通道,分别对其3个通道进行上述运算,最终得到3个中心像素点的梯度值。

4.3.2 阈值比较模块

此时,把上一步得到的彩色图像3 颜色(R、G、B)通道的中心像素点的梯度值分别与一个设定的阈值Th 进行比较,如果大于Th,则该颜色通道的输出为1,否则为0。最后将3个比较器的输出融合得到彩色图像的边缘图像,其中,最终边缘图像的获得通过一个3 输入的或门实现[20]。如果最终的边缘图像输出为一个,则每个颜色通道的值设定为255,否则设置为0,这些数据最终通过LCD 液晶显示模块控制器传送到LCD 液晶屏上进行结果显示。

5 实验结果与分析

为了验证本文所提出系统的边缘检测效果,以Altera DE2-70开发板为平台,将改进算法与传统的Sobel算法的边缘检测效果进行比较,如图12 所示。其中图12(a)为原彩色图像,图12(b)是传统Sobel算法处理后的边缘图像,图12(c)是经快速中值滤波预处理后,运用改进的Sobel算法处理后的结果。通过对比可知,与传统Sobel算法边缘检测效果相比,改进的Sobel算法获得了较多的边缘信息,视觉效果高于前者,且有效滤除部分噪声。实验结果表明,本文所设计的实时彩色图像边缘检测系统,具有良好环境适应能力,抗噪能力强,且图像边缘定位准确,能够实时有效地对图像进行边缘提取。

图12 (a)原彩色图像;(b)传统Sobel算法;(c)改进的Sobel算法(某帧视频边缘检测结果截图)Fig.12 (a)Original color image(b)Result of traditional Sobel algorithm;(c)Result of improved Sobel algorithm

本文所设计的系统,选用Altera 公司的EP2C70为目标芯片,经Quartus II 综合器综合后,得出改进的Sobel边缘检测模块硬件资源使用情况综合报告如表1所示,从表中可以看出,在算子模板由2个增加到8个,且对彩色图像进行算法实现的情况下,本文所用的改进的Sobel边缘检测模块仅占用了2%的逻辑单元,在算法复杂度提高的情况下,效果已相对改观,同时结合FPGA 流水线任务处理技术以及并行信息处理的特点,满足系统实时性要求。

表1 改进Sobel边缘检测模块片上资源占用情况Tab.1 On-chip resources occupancy of the improved Sobel edge detection module

6 结 论

借助Altera DE2-70FPGA 硬 件 开 发 平 台,提出了一种基于改进的实时彩色图像边缘检测系统。首先将彩色图像分离出R、G、B三个通道,再用快速中值滤波对每个通道输入图像数据进行去噪预处理,然后,在传统Sobel算子基础上增加方向算子模板,提高对复杂环境的适应能力。实验结果表明,本文系统将改进的Sobel边缘检测算法从灰度图像移植到彩色图像,有效地抑制了噪声,边缘定位更准确,并且能够获得比传统的边缘检测算子更多的边缘轮廓信息。可用于对实时性要求较高的智能监控、安防、工业控制等领域。

[1] 曹杨,苏丽娜,沈琪,等.一种改进的Sobel边缘检测算法的设计及其FPGA 实现[J].微电子学与计算机,2012,29(10):124-127.Cao Y,Su L N,Shen Q,et al.Design and realization of improved sobel edge detection algorithm based on FPGA[J].Microelectronics &Computer,2012,29(10):124-127.(in Chinese)

[2] Xin G,Ke C,Xiaoguang H.An improved Canny edge detection algorithm for color image[C]//2012 10th IEEE International Conference on Industrial Informatics(INDIN),IEEE,2012:113-117.

[3] 刘博超,赵建,孙强.基于边缘改进的Harris角点检测方法[J].液晶与显示,2013,28(6):939-942.Liu B C,Zhao J,Sun Q.Improved Harris corner detection method based on edge[J].Chinese journal of Liquid Crystals and Displays,2013,28(6):939-942.(in Chinese)

[4] 陈娟,陈乾辉,师路欢,等.图像跟踪中的边缘检测技术[J].中国光学与应用光学,2009,2(1):46-53.Chen J,Chen Q K,Shi L H,et al.Edge detection technology in imaging tracking[J].Chinese Journal of Optics and Applied Optics,2009,2(1):46-53.(in Chinese)

[5] 张凤晶,白新伟,于光,等.一种基于Sobel的彩色图像边缘检测新算法[J].长春理工大学学报(自然科学版),2012,35(1):122-124.Zhang F J,Bai X W,Yu G,et al.A new arithmetic of color image edge detection based on sobel operator[J].Journal of Changchun University of Science and Technology(Natural Science Edition),2012,35(1):122-124.(in Chinese)

[6] ZhouY L,Huang C,Zhai L F.A median image filtering algorithm based on statistical histogram[C]//2013 Fifth International Conference on Measuring Technology and Mechatronics Automation (ICMTMA),IEEE,2013:17-20.

[7] 陶李,王珏,邹永宁,等.改进的Zernike矩工业CT 图像边缘检测[J].中国光学,2012,5(1):48-56.Tao L,Wang Y,Zou Y N,et al.Improved Zernike moment of method for industrial CT image edge detection[J].Chinese Optics,2012,5(1):48-56.(in Chinese)

[8] 王田,刘伟宁,孙海江,等.基于复杂度和方向梯度的红外弱小目标检测方法[J].液晶与显示,2012,27(5):692-696.Wang T,Liu W N,et al.Detecting algorithm of infrared small dim targets based on complexity and orientation gradient[J].Chinese journal of Liquid Crystals and Displays,2012,27(5):692-696.(in Chinese)

[9] 马宇飞.基于梯度算子的图像边缘检测算法研究[D].西安电子科技大学,2012.Ma Y F.Research on image edge detection based on gradient operators[D].Xidian University,2012.(in Chinese)

[10] 杨新华,寇为刚.基于FPGA 的Sobel算子图像边缘检测算法[J].仪表技术与传感器,2013(1):34.Yang X H,Dou W G.Sobel operation image edge detection algorithm based on FPGA[J].Instrument Technique and Sensor,2013(1):34.(in Chinese)

[11] 冯辉宗,陈叶,徐洋.基于FPGA 的实时图像采集与Sobel边缘检测[J].传感器与微系统,2011,30(6):116-118.Feng H Z,Chen Y,Xu Y.Real-time image acquisition and Sobel edge detection based on FPGA[J].Transducer and Microsystem Technologies,2011,30(6):116-118.(in Chinese)

[12] 刘紫燕.实时图像边缘检测的设计及FPGA 实现[J].电子科技,2011,24(12):1-3.Liu Z Y.Edge detection of real-time image based on FPGA[J].Electronic Science &Technology,2011,24(12):1-3.(in Chinese)

[13] 王瑞,刘广斌.基于FPGA 的图像快速中值滤波算法实现[J].计算机工程与应用,2010,46(9S):32-34.Wang R,Liu G B.Hardware implementation of median filter based on FPGA for image processing[J].Computer Engineering and Application,2010,46(9S):32-34.(in Chinese)

[14] 王军辉,李瑞克,刘小洋.基于改进Sobel算法的实时边缘检测系统[J].计算机与数字工程,2012,40(6):130-132.Wang J H,Li R K,Liu X Y.Real-time edge detection system based improved Sobel algorithm [J].Computer&Digital Engineering,2012,40(6):130-132.(in Chinese)

[15] Alghurair D,Al-Rawi S S.Design of Sobel operator usingfield programmable gate arrays[C]//2013 International Conference on Technological Advances in Electrical,Electronics and Computer Engineering(TAEECE),IEEE,2013:589-594.

[16] 温建平.人脸检测算法及其FPGA 实现[D].上海:华南理工大学,2012.Wen J P.Face Detection algorithm and its FPGA implementation[D].Shanghai:South China University of Technology.2012.(in Chinese)

[17] 熊琰,龚华军,沈晔青.一种快速有效的彩色图像边缘检测方法[J].计算机技术与发展,2007,17(4):128-130.Xiong Y,Gong H J,Shen Y Q.Feature point detection based on color image[J].Computer Technology and Development,2007,17(4):128-130.(in Chinese)

[18] 张丽红,凌朝东.基于FPGA 的Sobel边缘检测应用[J].电子技术与应用,2011,37(8):26-29.Zhang L H,Ling C D.Application of Sobel edge detection based on FPGA [J].The application of electronic technology,2011,37(8):26-29.(in Chinese)

[19] 李明,赵勋杰,毛伟民.Sobel边缘检测的FPGA 实现[J].现代电子技术,2009,16:44-46.Li M,Zhao X J,Mao W M.Implementation of Sobel edge detection based on FPGA[J].Modern Electronic Technology,2009,16:44-46.(in Chinese)

[20] Singh S,Saini A K,Saini R.Real-time FPGA based implementation of color image edge detection[J].International Journal of Image,Graphics and Signal Processing (IJIGSP),2012,4(12):19-25.

猜你喜欢
彩色图像算子梯度
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
一类截断Hankel算子的复对称性
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
随机加速梯度算法的回归学习收敛速度
拟微分算子在Hp(ω)上的有界性
Heisenberg群上与Schrödinger算子相关的Riesz变换在Hardy空间上的有界性
基于FPGA的实时彩色图像边缘检测
一个具梯度项的p-Laplace 方程弱解的存在性
基于专家模糊技术的彩色图像对比度增强方法