APP下载

实时图像自适应阈值边缘检测FPGA实现

2014-03-22刘紫燕

仪表技术与传感器 2014年9期
关键词:像素点算子梯度

祁 佳,刘紫燕,冯 亮

(贵州大学计算机科学与信息学院,贵州贵阳 550025)

0 引言

图像的边缘含有图像最重要的信息,图像的边缘一般指图像的灰度变化率最大的像素点之间的总和,边缘非常广泛地分布于物体之间、物体与背景之间。图像的边缘同时也是人眼和计算机识别图像以及获取信息的重要特征,因此,图像的边缘检测在航空、军事、医学、人工智能等领域都有着广泛的应用与研究[1]。传统的软件方式来实现图像边缘检测运算量大、实时性差[2],而利用FPGA瞬时并行高速处理数据的特点可以提高图像边缘检测的效率[3],满足实时性的要求。

Sobel边缘检测算子是传统的图像边缘检测常用的算子[4],因为其算法简单,同时由于提取边缘清晰并对噪声平滑效果较好,容易在硬件上实现。

文中在对传统的实时图像Sobel自适应阈值的边缘检测进行深入研究的基础上,将中值滤波的思想引入每一像素点的局部边边缘阈值确定中,并在FPGA上实现。

1 系统总体设计

系统主要是由TRDB-D5M型的CMOS摄像头、DE2-70型的FPGA芯片、SDRAM存储单元以及TRDB-LTM液晶显示屏构成。其处理过程主要是将处理得到的灰度图像同时送入梯度计算模块以及自适应阈值计算模块,用计算好的阈值与梯度进行比较得出边缘,并在液晶屏上显示。系统的总体框架设计如图1所示。

图1 系统总体框架

2 主要模块设计及实现

2.1中值滤波

中值滤波是一种非线性空间滤波方法,与线性滤波(如均值滤波、高斯滤波)等方法相比,能很好地滤除脉冲噪声,对多种噪声都有着很好的适应性,并且可有效地保护图像的边缘[5],它将某个像素领域中的像素按灰度进行排序,然后选择该序列的中间值作为输出像素值,若其周围像素灰度值与该点像素值相差较大,则取与周围的像素接近的值为该点像素灰度值,从而消除噪声。

实现中值滤波的方法是:在文献[4]中首先以某一个像素为中心点,一般为3×3或5×5的矩形邻域,然后再将该像素点的邻域各像素点的灰度值进行排序,并把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。

(1)

对二维序列{Xij}进行中值滤波时,滤波窗口是二维的,但二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波如式(2)所示。

(2)

式中A为滤波窗口。

二维中值滤波保持了图像中有效的细线状物体,能够较好地保留原图像中的跃变部分。

2.2自适应阈值的边缘检测模块

传统Sobel边缘检测算法较为简单,检测出的实时图像边缘较好,但是对于噪声平滑效果有限[6]。文献[4]先将实时图像进行中值滤波,并计算当前帧的阈值,送入下帧进行边缘判断。文中提出一种新方法,先不进行中值滤波,而将中值滤波引入本帧每一个像素的边缘阈值判断中,其算法的结构如图2所示。

图2 自适应阈值Sobel实时边缘检测

2.2.1结合中值滤波的自适应阈值计算

文中结合中值滤波来实现自适应阈值计算,系统中的自适应阈值就是将数字图像中某一点的边缘阈值利用该点邻域中各点值的中值与部分点和的平均值代替,从而每一个像素点都可以取到自适应的阈值。在一个阈值判断的模板中,设像素点为f1,f2,…,f3n,其中n≥3,求自适应阈值的主要步骤如下所示。

第一步:第一次分组,将每3个连续的像素点分为一组,得到集合X1~Xn:

X1={f1,f2,f3}

(3)

X2={f4,f5,f6}

(4)

Xn={f3n-2,f3n-1,f3n}

(5)

第二步:第一次排序。

对于第一组:

Y1=Min{f1,f2,f3}

(6)

Y3=Max{f1,f2,f3}

(7)

(8)

同理可求出第n组的排序:

Y3n-2=Min{f3n-2,f3n-1,f3n}

(9)

Y3n=Max{f3n-2,f3n-1,f3n}

(10)

(11)

第三步:第二次分组。

将第二步排好的数再分为三组。设集合:

Z1={Y1,Y4,…,Y3n-2}

(12)

Z2={Y2,Y5,…,Y3n-1}

(13)

Z3={Y3,Y6,…,Y3n}

(14)

第四步:第二次排序。

在第三步分好的组中求出想要的数,设:

K1=Min{Y1,Y4,…,Y3n-2}

(15)

对Z2先进行升排序,可得:

(16)

再取出排在中间的值:

(17)

K3=Max{Y3,Y6,…,Y3n}

(18)

第五步:求出自适应阈值。

经过上述步骤,即可得最终阈值P为:

(19)

由于每一帧图像中的像素点的灰度值是在不断变化的,所以Ki的值也是不断变化的,据此求得的阈值实现了自适应的效果。

中值滤波模块主要是由窗口模块和排序模块两部分组成,若要判断某点是否是边缘点,先使其领域内的9个点通过3×3的滑动窗口,得到这9个点,如图3所示,其中P1~P9是领域中的9个像素点的灰度值。

图3 3×3滑动窗口数据输出结构图

再将这9个点进行排序,得到其中值及另两点的和的平均值作为该点的自适应阈值,如图4所示。

图4 自适应阈值算法框图

2.2.2Sobel算子梯度计算

Sobel计算梯度需要计算水平方向和垂直方向的梯度,再求两方向梯度的绝对值和得最终梯度值,再与自适应阈值进行判断,最终得到实时的边缘图像[7]。

Sobel边缘检测算子是一阶微分的边缘检测算子,它把待检测图像看作一个曲面,把Sobel边缘检测算子作为梯度算子,作用于图像f(x,y),于是可得到向量场:

(20)

可得到局部梯度强度:

(21)

以及局部梯度方向:

(22)

在对图像进行边缘检测的实际应用与研究中,通常只需要计算出 ,便可以得到图像边缘信息,经差分等相关技术进行离散化,可得较为简单边缘算子模板[7]。

在FPGA中水平梯度和垂直梯度的计算,同样可以使用altshift_taрs模块3×3的滑动窗口来实现。对于卷积运算,可以使用Quartus II中的可编程乘加器altmult_add模块以及可编程多路并行加法器рarallel_add模块来实现。其原理如图5所示,其中P1~P9是Sobel算子模板中中的9个像素点的灰度值。

将运算得到的垂直方向和水平方向的梯度绝对值相加,再与自适应的阈值进行比较判断,得出边缘。

图5 卷积运算原理图

3 实验结果及分析

系统在DE2-70型的FPGA实验平台实现,采用自适应阈值Sobel算法的实时边缘与传统Sobel算法实时边缘检测的实验结果如图6所示,图6(a)为传统Sobel算法实时边缘图像,图6(b)为自适应阈值Sobel边缘检测的实时图像。通过对比实验结果可以看出,自适应阈值Sobel边缘检测算法有更好的实时边缘检测效果,其检测出的边缘精细,同时能很好地抑制背景噪声。

4 结束语

文中提出了一种自适应阈值Sobel边缘检测算法对实时图像进行边缘检测,其通过结合中值滤波方法得出Sobel算法的自适应阈值,并在DE2-70的FPGA平台上实现。实验结果表明,与传统的Sobel边缘检测相比,自适应阈值Sobel边缘检测算法对边缘检测效果精细,同时有较强的抑制噪声能力。

(a)Sobel算法

(b)自适应阈值Sobel算法

参考文献:

[1]刘紫燕.实时图像边缘检测的设计及FPGA实现.电子科技,2011,24(12):1-3;6.

[2]李明,赵勋杰,毛伟民.Sobel边缘检测的FPGA实现.现代电子技术,2009,33(16):44-46.

[3]杨新华,寇为刚.基于FPGA的Sobel算子图像边缘检测算法.仪表技术与传感器,2013(1):102-104.

[4]王军辉,李瑞克,刘小洋.基于改进Sobel算法的实时边缘检测系统.计算机与数学工程,2012,40(6):130-132.

[5]薛丽霞,李涛,王佐成.一种自适应的Canny边缘检测算法.计算机应用研究,2010,27(9):3588-3590.

[6]杨娴,李勃,丁文,等.基于局部自适应色差阈值的彩色图像边缘检测.电子与信息学报,2012,34(9):2058- 2063.

[7]李杰,彭月英,元昌安,等.基于数学形态学细化算法的图像边缘细化.计算机应用,2012,32(2):514-516.

猜你喜欢

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