柳 欢 高亚兰
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
边缘是图像的重要的特征,传统的图像边缘检测方法[1-3]的关键是阈值的选择。Sobel 算子[4]对噪声具有平滑作用,但它要人工设定阈值,如果阈值设定过大,会丢失边缘,而阈值设定过小,会产生伪边缘。
ABC 算法[5-6]是Karaboga 在研究了蜜蜂群体的活动规律之后,提出的一种将蜂群模型应用到实际的求最优解的问题中的方法。为了得到更准确的边缘,防止产生伪边缘和丢失边缘,本文将Sobel 和ABC 算法结合起来得到一个新算法,即ABCSobel 算法。
Sobel 边缘检测[7]使用图1 中的模板来数字化近似一阶导数和,那么图像中任意一点(x,y)处的梯度值可按下式计算:
其中,
再通过设定阈值t,如果,在位置(x,y)处G≥t,则该点为边缘点,反之则不是边缘点。从而实现边缘检测。
图1 Sobel 模板和图像邻域
Otsu 方法[8]思想:假设选定一个阈值t,C0是一组灰度值小于t 的像素,C1是一组灰度值大于t 等于的像素。Otsu 选最大化类间方差σ2B的阈值t,那么类间方差定义为:
其中,ω0为C0中像素点数占图像总像素数的比例,ω1为C1中像素点数占图像总像素数的比例,μ0为C0中平均像素灰度值,μ1为C1中平均像素灰度值,μT为图像平均像素灰度值。
本文将Sobel 算子与ABC 算法结合起来,先得到梯度图,再用ABC 算法搜索出最佳阈值,其中适应度函数用内间方差函数,最后使用阈值法得到边缘。
使用内间方差作为评价函数的ABC 算法步骤如下:
步骤1:初始化种群。随机产生个蜜源,第个蜜源位置为:
式中,xlb,xub为蜜源位置的可能取值的最小值和最大值。ri为[0,1]之间的随机数。
步骤2:计算适应度值。将类间方差作为适应度函数,利用式(4)计算适应度值。
步骤3:雇佣蜂邻域搜索。雇佣蜂在蜜源附近搜索新蜜源,第个新蜜源的位置为:
式中,k∈{1,2,…N},xi为旧的蜜源i 的位置,xk为随机选取的不等于i 的蜜源k 的位置,Vi为产生的新蜜源的位置,Ri为在[-1,1]之间产生的随机数。
步骤4:根据步骤2 中的适应度函数判断前后蜜源优劣,雇佣蜂选择较优蜜源。
步骤5:观察蜂选择蜜源及邻域搜索。随机产生一个[0,1]之间的数r,若r<pi,则观察蜂选择该pi所对应的蜜源i,否则继续判断下一蜜源。其中pi定义如下:
式中,fi为第i 个蜜源的适应度值,i∈{1,2,…N},f 为所有的蜜源适应度值,a,b 为常数,选择好蜜源后,观察蜂再根据式6在该蜜源附近搜索,得到新蜜源。
步骤6: 比较步骤4 中雇佣蜂和步骤5 观察蜂的花蜜源适应度值,选择适应度值较高的花蜜源位置作为本次迭代的花蜜源位置,即雇佣蜂的位置。
步骤7:是否出现侦查蜂,设置一个参数cp,若cp 经次循环后,一个蜜源仍没有改变,那该蜜源对应的雇佣蜂抛弃该蜜源,转化成侦查蜂,按照式(5)随机生成新蜜源。
步骤8:判断算法是否结束,设置算法的最大循环次数max cycle,如果达到了最大循环次数,那么结束并输出最佳解,不然再转到步骤2 重新搜索。
本文提出的边缘提取算法步骤如下:
步骤1:对图像进行预处理。
步骤2:用2.1 节中介绍的Sobel 方法来得到预处理后图像任意一点的梯度值。
步骤3: 用3.1 节中把类间方差当作评价函数的ABC 算法搜索出最佳阈值t。
步骤4:利用步骤3 搜索的最佳阈值t 进行边缘提取,边缘点为梯度值大于等于阈值t 的点,置为1,其余的置为0。
为了检验ABC-Sobel 的性能,并与传统的提取边缘方法相比,我们在MATLAB 环境中仿真。
实验一: 本文方法与传统的Sobel 方法进行提取图像边缘比较,ABC-Sobel 中,取种群大小NP=20,cp=5,max cycle=50,xlb=0,xub=1,a=0.9,b=0.1,图2 为仿真结果。
图2 Sobel 和ABC-Sobel 边缘检测仿真结果
由图可知,使用传统Sobel 算法来获得边缘,阈值设置较高时会遗漏一些边缘,反之则会得到一些虚假的边缘,而ABCSobel 算法能够主动搜索到最佳阈值,不需要用人工设置,且所得到的边缘更加完整更准确。
实验二: 本文算法与Roberts、Prewitt 算法进行提取图像边缘 比 较,ABC-Sobel 算 法 中,取 种 群 大 小,NP=20,cp=5,maxcycle=50,xlb=0,xub=1,a=0.9,b=0.1。图3 显示了仿真结果。
图3 ABC-Sobel、Prewitt 和Roberts 提取边缘仿真结果
由图知,采用Prewitt 方法和Roberts 方法得到边缘的方法容易遗漏一些边缘,且所得的边缘易断点不连续,而ABC-Sobel 算法能够获得到更加完整、清楚的边缘。
针对Sobel 算法边缘检测的缺点,本文在Sobel 算法的阈值选取过程中引入了ABC 算法,很好的防止了阈值过高丢失边缘,阈值过低产生伪边缘的现象。仿真结果显示,该算法能较好地自动提取图像边缘、检测速度快及易实现全局最优。
[1]蔡小琼,贺赛先.一种快速自适应边缘提取方法的研究[J].计算机测量与控制,2006.14(3):307-309.
[2]孙慧,周红霞,李朝晖等.图像处理中边缘检测技术的研究[J].电脑开发与应用,2002(10):8-10.
[3]陈彦燕,王元庆.常用边缘检测算法的定量比较[J].计算机工程,2008,34(17):202-204.
[4]王桥.数字图像处理[M].北京:科学出版社,2009.
[5]Karaboga D,Basturk B.On the performance of artificial bee colony(ABC)algorithm[J].Applied Soft Computing,2008.8(1):687-697.
[6]毕晓君,王艳娇.改进人工蜂群算法[J].哈尔滨工程大学学报,2012,33(1):117-124.
[7]马宇飞.基于梯度算子的图像边缘检测算法研究[D].西安:西安电子科技大学,2012.
[8] Otsu N.A Threshold Selection Method from Graylevel Histograms [J].IEEE Transactions on Syst-em Man and Cybernetic,1979,9(1):62-66.