作者简介:车翔玖(1969-),男,教授,博士生导师.研究方向:医学图像分割,图像传输与信息隐藏,大数据三维可视化及其在地学和医学中的应用.E-mail:chexj@jlu.edu.cn
针对蚁群算法在提取边缘不连续以及难以搜索到弱边缘的问题提出了改进措施,利用Otsu预处理,并对信息素矩阵和启发式矩阵初始化做了改进,同时加入信息素异步更新策略和参数自适应修改来避免过早陷入停滞从而发现更多弱边缘。通过主观对比和定量分析,本文方法提取了更多的连续边缘以及弱边缘,具有更好的鲁棒性。
An ant colony algorithm with features of high robustness, distributed computing, and positive feedback, is used to solve edge detection problem. In order to prevent extracting discontinuous edges and missing weak edges by using ant colony algorithm, some improving measures are put forward. An Ostsu's method for pre-processing is proposed, the initialization of pheromones matrix and heuristic matrix is improved; meanwhile, pheromones asynchronous update strategy and parameter self-adaptive modification are applied to avoid early stagnancy. Experiments show that the proposed method can extract more continuous edges and weak edges with better robustness.
边缘检测的实质是利用某种策略来提取图像中前景和背景的边界线。边缘即为图像中灰度发生剧烈变化的区域边界。图像灰度变化的梯度反映了图像灰度的变化程度, 因此经常利用图像中各像素的小范围邻域来构造边缘检测算子。常用的边缘检测算子有Sobel算子[1], Prewitt算子[2], Laplacian算子[3], Canny算子[4]。近年来, 涌现了许多新兴的算法如:基于小波变换的边缘检测算法[5], 基于模糊理论的边缘检测方法[6], 基于聚类的边缘检测方法[7], 基于群体智能的边缘检测算法。
群体智能作为人工智能的一个分支, 利用了自组织分散算法提供了动态、自组织、灵活的解决方案。因为群体智能在其大部分过程中保有随机性, 它在众多领域都提供了具有鲁棒性的解决方案, 近几年针对科学研究和工程问题, 群体智能的应用有大幅增长。
本文所使用蚁群算法作为群体智能中的经典算法之一, 最早由Dorigo[8]提出, 运用正反馈的原理和蚂蚁间分布式合作来找到最优解。作为以种群为基础寻求更佳路线的方法, 蚂蚁个体间的信息交换尤其重要, 寻找出洞穴到食物的最佳路线。由于蚁群算法的这个特性, 2005年, Bao等[9]将其应用到边缘检测中, 取得了不错的成果。2013年, Mullen等[10]提出了一种自适应变化的阈值策略, 利用每只蚂蚁的局部阈值代替全局阈值, 而且每只蚂蚁个体的局部阈值在其移动过程中都将发生动态变化, 优化了边缘检测的结果。2015年, Liu等[11]采用一种新的启发式函数, 并利用用户定义阈值的信息素更新过程, 提供一组合适的参数值进一步提高了检测精度。2016年, Dorrani等[12]在Liu的基础上对含噪声的图像实验同样取得了良好的效果, 同年, Che等[13]提出了将Otsu算法作为蚁群算法的初始化流程。
本文利用Otsu预处理, 在信息素矩阵和启发式矩阵初始化做了改进, 同时加入信息素异步更新策略和参数自适应修改来避免过早陷入停滞从而发现更多弱边缘。本文方法提取了更多的连续边缘以及弱边缘, 具有更好的鲁棒性。
本文基于文献[13]的研究成果加以改进, 成功地发现了更多的连续边缘以及弱边缘。蚁群算法的基本过程如下:
设N只蚂蚁被初始随机分配在若干不同的N个像素点上, 每个蚂蚁个体都有一个移动的准则, 遵循:
(1)由像素i到下一允许访问的像素点j由启发式信息及边上的信息素同时控制选取哪一像素点, 可以用函数表达。
(2)为强行制约蚁群合理地移动, 规定每个个体不能经过刚访问的像素点, 由tabu表控制。
(3)每当做完周游后, 蚂蚁个体能于经过的边残留下信息素。
令τ ij(t)为像素点i与像素点j之间的信息素大小。在每次发生蚂蚁移动后, 信息素发生变化, 由于信息素有一个蒸发率, 所以有如下信息素更新准则:
式中:ρ 为从这次周游后信息素消散水平。
式中:Δ
η x-1, y-1=I(x-1, y)-I(x, y-1)
η x-1, y=I(x-1, y-1)-I(x-1, y+1)
η x-1, y+1=I(x-1, y)-I(x, y+1)
η x, y-1=I(x+1, y-1)-I(x-1, y-1)
η x, y+1=I(x-1, y+1)-I(x+1, y+1)
η x+1, y-1=I(x, y-1)-I(x+1, y)
η x+1, y=I(x+1, y-1)-I(x+1, y+1)
η x+1, y+1=I(x+1, y)-I(x, y+1)
以上各项均为取绝对值后的结果。
定义从像素i转到像素j在时刻t转移概率为:
式中:allok为第k只蚂蚁的周围8个像素点, 已走过的任意像素即tabu表中的像素点除外; α 和β 分别控制相对信息素路径和可见性的相对重要性, 转移几率是灰度梯度(梯度大的被选几率高, 贪婪性试探法)和信息素浓度共同作用的结果。
很显然, 阈值T是直接影响信息素路径的关键, 进而影响了算法的效果, 当T值很小时, 蚂蚁将释放大量信息素, 其中包括了很多的弱边缘, 而且提取许多背景信息或噪声信息, 不利于提取。当T值很大时, 只允许蚂蚁释放少量信息素, 导致了蚂蚁只能搜索到强边缘而忽略弱边缘, 并且出现许多不连续的边缘线。所以, 取合适的T值显得尤为重要。
文献[13]提出了一种T自适应的阈值改进措施, 代替一个用户自定义的全局阈值, T的更新策略如下:
式中:
一般地, 将彩色图像从RGB色彩表示转变为灰度图像使用的是如下公式:
Gray=0.29900* R+0.58700* G+0.11400* B
这种方法虽然将求图像的边缘问题转化为求灰度梯度的问题, 但是图像的背景与前景同样发生了变化, 保留了过多背景信息, 这将不利于蚂蚁发现真正的边缘。为了更好地提取到感兴趣区域以及消除背景, 采用了Otsu阈值分割法, 依照图像的灰度特性, 自适应地定义阈值来分割出目标图像的前景和背景。因为Otsu衡量的标准是最大类间方差, 往往能取到很好的阈值, 使得目标的前景和背景被更好地分离。本文利用Otsu方法对原始彩色图像做预处理, 得到一个二值图像, 然后将其作为蚁群算法的输入图像。
设输入图像是M* N的图像I, 原始K个蚂蚁分布在图像的不同像素点上。这些像素点满足梯度幅值超过特定阈值的条件, 初始候选点被选中的概率由其梯度幅值确定。概率公式如下:
式中:Gi为i点的梯度幅值; ∑ Gf为所有候选点梯度幅值之和。
信息素矩阵τ 0被赋予一个初值τ init。τ init是由τ min限制的, 是一个大于0的常数, 目的是为了防止蚂蚁运动陷入停滞, 根据最大最小蚁群系统[14], 本文将值设为0.0001, 且τ init=τ min。
本文对启发式信息矩阵的初始化进行修改, 由像素点(i, j)处的局部统计信息计算[15]:
式中:λ 为按情况进行选取的调整参数; Ii, j为图像I在(i, j)点处的灰度值。
当迭代次数到达一定次数之后, 蚂蚁大多趋向于走固定的路径, 不利于发现较弱的边缘。因此, 本文增加信息素异步更新策略。当所有蚂蚁个体做完当次迭代, 对整个图中所有蚂蚁个体所经过的边缘信息量按照下式再做一次全局修改:
式中:θ 为信息素的衰减系数, 是(0, 1)间的某个正常数, 本文选取为0.2; c为最初信息素大小。
异步更新的作用在于, 当该蚂蚁周围有多个像素点可以到达时, 若其本次迭代已经过某条支路, 则该支路信息素将会减少, 使得个体选取该支路的可能性降低, 从而将增加探索周围其余像素点的机会, 有利于发现更多更弱的边缘, 使算法不会过早陷入停滞。
信息启发式因子α 的大小表示信息素总量挑选此路径作用的水平大小, 也就是表示蚂蚁在移动中信息量指示个体搜寻相对作用大小, 即α 数值表示个体在搜寻最优行动轨迹时随机因子的影响力大小, α 值越大, 群体在选取之前经过边的倾向性更高, 查寻新路径倾向性将减小。然而, α 值太小时, 又容易让群体的搜寻太早发生停滞。参数初始值选取同文献[11]一样。
基于此, 本文提出了一种自适应修改策略, 当迭代次数到达一定次数时, 通过减小信息素相对影响力因子来减小信息素对该路径被选取的影响。
当发生停滞后, 按照如下方法更改蚂蚁数量K, 通过增加新的蚂蚁, 使得信息素不再是只在停滞之后的道路上才会更新, 使算法有能力继续扩大搜寻范围, 再次搜寻图像的边缘。
实验流程图如图1所示。
由于蚁群算法处理的问题都是NP完全问题, 不存在最优解, 以下初始参数选取均是实验中取得最好效果的值。
蚂蚁数量K:由于蚁群算法是群智能算法, 依赖群体之间的协作和信息传递, 蚂蚁数量越多取得效果越好, 本文设置为
信息素蒸发率因子ρ :ρ 影响到整个方法收敛速度与功能。ρ 越大, 增长越快, ρ =1时, 只需一次就到达了最大阈值; ρ 越小, 收敛速度越快, 本文将其设置为0.1。
启发式因子β :β 是启发式信息在搜寻时指示个体选取最优行动轨迹的影响力, 若β 太小, 便变为纯正的任意搜寻方法, 找寻到最佳方案的可能性非常低; 若β 太大, 所搜寻到的最佳方案将会有越来越差的趋向。本文将其设置成2。
初始信息素大小:由文献[11]给出, 本实验将其设置为0.0001。
用户自定义初始阈值T:由文献[13]给出, 本实验将其设置为35。
最大迭代次数:迭代次数越大, 蚂蚁可以寻到越多路径(边缘), 由文献[13]给出, 本实验将其设置为300。
其他参数如下:信息素相对影响力因子α 变化后分别为2, 1, 0.5; λ 为1; 异步更新时的迭代次数为50; 信息素相对影响因子修改时的迭代次数为100。
图2~图5分别为基于Lena图像以及从USC-SIPI数据集中的Peppers, House, Cameraman图像在Matlab实验环境下所得到的结果, 图中从左上至右下依次为原图, 文献[11]方法, 文献[13]方法和本文方法结果。
对比每幅图的左下和右下图像可以看出, 本文方法在文献[11]和文献[13]的基础上效果有很大的改进, 能更精确、更多地发现弱边缘, 而且, 本文方法也减少了图像中背景被归为边缘的错误, 在查准率和查全率方面都有明显提高。
对于有噪声的图像, 本文同样发现了了更多的弱边缘。
本文使用的是BSDS300数据库, 该数据库包含了彩色、灰度以及标注过的真实数据, 即边缘二值图像。基于如下指标进行评价:TP, 预测为边缘, 实际也是边缘的像素数; FP, 预测为边缘, 实际不是边缘的像素数; TN, 预测不是边缘, 实际不是边缘的像素数; FN, 预测不是边缘, 实际是边缘的像素数; TPR=TP/(TP+FN), 实际是边缘的像素被成功提取的百分比; FPR=FP/(FP+TN), 实际不是边缘的像素被错误提取为边缘像素的百分比。表1为实验结果对比。
针对蚁群算法检测检测边缘时出现的边缘不连续以及算法易陷入停滞的问题, 提出了改进的方法, 有效地提取了更多的弱边缘和连续的边缘, 在有噪声的图像中能够得到较好的结果, 在对自然图像提取边缘方面具有鲁棒性和精确性。本文对于自然图像的实验取得了较好的结果, 但是对于特定领域的图像如医学图像, 因为其存在一些特定的病理情况或其他特殊原因, 结构边缘十分模糊, 所以很难被准确检测。对于这类图像, 蚁群算法在提取边缘过程中往往不能提取到较细的边缘特征, 以至于不能得到较精确的检测结果。
The authors have declared that no competing interests exist.