任 雁, 李 强, 张鹏军
(中北大学 机电工程学院, 山西 太原 030051)
一幅图像就是一个信息系统, 它的信息量是由图像边缘包围的像素点所组成的[1]. 在现实中, 采集到的图像并不完美, 图像当中存在大量不完整或模糊的数据信息, 尤其是在图像边缘更为典型. 边缘检测的目的就是要提取目标图像中有用的边缘信息, 从而为后续的图像处理打下良好的基础. 因此, 能否获得完整、 清晰、 精细的良好边缘对顺利开展后续的研究具有重要意义.
准确无误的枪弹外形几何参数是确保枪弹质量的重要指标之一, 典型的枪弹外形几何参数有弹丸全长、 弹壳直径、 弹体同轴度等. 在基于图像处理的枪弹外形几何参数测量中, 边缘信息作为最基本的图像信息, 它的准确提取为整个测量的准确性奠定了坚实的基础. 在枪弹图像测量过程中, 往往会出现大量不完整或模糊的图像数据, 尤其是图像边缘信息的缺失会造成测量结果出现较大偏差, 甚至是测量失败. 作为最基本的图像特征, 图像边缘检测质量显得尤为重要.
群智能算法是人工智能生物仿生学的重要分支, 包括对蚂蚁觅食行为进行模拟的基于遗传机制的遗传算法, 和从鸟类的捕食行为中提取出的粒子群优化算法. 一方面, 蚁群优化(ACO)算法可以应用于多种领域, 且该算法具有正向反馈、 分布性和鲁棒性优等特点. 另一方面, 图像在现实生活中具有重要意义, 而边缘又是图像的关键因素, 因此, 人们研究了基于蚁群算法的图像边缘检测方法[2-3].
1965年, Robert以系统的方式来研究边缘检测. 从那以后, 关于边缘检测的研究日益增多, 其中基于图像梯度的微分算子法最为经典, 它需要计算每一个像素并且通常在实际应用中对子区域掩模卷积进行近似计算. 然而, 这种方法存在的问题是, 直到整个图像空间被遍历后, 才能检测到图像边缘, 经常会出现边缘遗漏或冗余现象. 当图像空间过大或图像背景过于复杂时, 检测时间和结果都不理想. 因此, 传统的图像边缘算法在实用性方面受到了严重的影响[4].
本文对蚁群优化算法的基本原理和模型进行研究, 并列出蚁群优化算法的主要操作步骤. 然后给出基于本文混合算法的边缘检测过程, 并对具体实现过程进行深入研究和分析, 给出具体的实现过程. 蚂蚁在启发函数的引导下向图像边缘移动, 将信息素留在边缘像素点上构建信息素矩阵, 最终实验证明该算法获得的边缘信息完整.
在实际的测量中, 枪弹的边缘不够清晰, 并且采集到的图像信号中都存在或多或少的噪声. 由于噪声与边缘都属于高频信号, 很难用滤波器进行过滤, 故要想准确无误地提取枪弹图像的边缘信息实属不易. 图像中的枪弹边缘表现为灰度发生变化, 可以通过计算灰度的不连续性来提取边缘. 常见的边缘部分包括屋顶状边缘、 阶梯状边缘和脉冲状边缘, 如图 1 所示.
图 1 常见边缘部分分类Fig.1 Common edge classification
梯度是函数变化的度量, 它是与二维函数对应的图像的一阶导数, 图像可以看作是一组采样点, 有两个与梯度有关的重要性质[5]: 一个是矢量G(x,y)的方向是函数f(x,y)增加时的最大变化率的方向, 另一个是梯度的幅度, 即
a(x,y)=arctan(Gy/Gx).
(1)
对于数字图像, 一阶偏导数可以用差分逼近, 边缘往往发生在差值的最大值处、 最小值处或零点处.
Gx=f(x+1,y)=f(x,y),
(2)
Gy=f(x,y+1)-f(x,y).
(3)
计算梯度时, 计算相同空间位置的真实偏导数具有重要意义, 但用上述公式计算的梯度近似值不在相同的位置.
因此, 2×2的一阶差分掩模通常用于计算位于插值点的x和y方向的偏导数. 此时,Gx和Gy可以表示为
(4)
由于图像的灰度值变化很大, 对应于函数梯度变化很大的地方, 如何找到更好的梯度算子成为研究重点. 通过梯度算子可以对图形的边缘信息进行增强[6], 常用的梯度算子有Roberts算子、 Sobel算子、 Prewitt算子、 Laplace算子等.
Roberts算子又被称作梯度交叉算子, 该算子是通过对局部差分进行计算从而寻找目标的边缘. 其优点是能够准确发现边缘, 计算方法简便, 能够直观显示结果; 缺点是容易受噪声干扰, 图像包含噪声时检测效果大大下降. 该算子适用于处理边缘特征显著同时噪声不明显的图像.
常用的Robert算子有如下两个模板
(5)
Robert算子是通过计算被检测图像的卷积得到水平方向和垂直方向的梯度值Mx(x,y)和My(x,y), 如式(6)和(7)所示, 然后根据式(8)计算出图像M(x,y)的幅值.
Mx(x,y)=0×f(x,y)+1×f(x+1,y)+
(-1)×f(x,y+1)+0×f(x+1,y+1),
(6)
My(x,y)=1×f(x,y)+0×f(x+1,y)+0×
f(x,y+1)+(-1)×f(x+1,y+1),
(7)
M(x,y)=max(|f(x,y)-f(x+1,y+1)|,
|(f(x,y+1)-f(x+1,y)|).
(8)
Sobel算子是滤波算子, 也是边缘检测中最常用的算子之一. Sobel梯度算子先进行加权平均, 然后计算所得到结果的微分, 最后求其图像梯度值. Sobel算子的优势是计算复杂度低, 而且所提取出的图像目标边缘较为光滑. Sobel算子的缺点是所提取到的边缘特征比较粗, 容易丢失部分细节信息. 该算子要求邻域内的其他像素点对中心像素点产生的作用不能等同, 因而以距离差值代表不同的权值, 距离中心像素点越近的像素点产生的影响越明显, 反之亦然.
Sobel算子有两个模版, 用于水平边缘检测的水平模版, 对于水平边缘响应较大, 如
(9)
用于垂直边缘检测的垂直模版, 对于垂直边缘响应较大, 如
(10)
Sobel算子是通过利用所检测到的边缘点计算其极值, 该方法认为在极值位置找到的就是边缘点, 通过改变其加权系数, 使得检测到的边缘特征更准确, 同时也可以检测到不同方向的边缘梯度, 其幅度值不变.
某些点的一阶导数大于阈值, 若将这些点作为边界点, 可能会出现过多的边缘点被检测到, 同时存储过多的信息. 正是因为一阶导数局部最大值与二阶导数的过零点相对应, 在这种情况下, 通过寻找图像灰度二阶导数的过零点, 可以更好地识别出精确的边缘点.
Laplace算子是二阶微分算子, 其特点是梯度不随坐标轴旋转而变化, 定义为
(11)
该算子要求其中心像素值大于0, 其邻域内像素系数为负数, 同时模板内所有的像素系数之和为0. Laplace算子的典型模板为
(12)
Laplace算子对噪声非常敏感, 其幅值容易产生伪边缘, 会影响图像分割的结果. Laplace算子适用于有陡峭边缘且不包含噪声的图像.
Prewitt算子通过计算像素的平均值从而达到对图像降噪的效果, 常用的两个典型模板分别为
(13)
将所检测到图像中边缘像素值与上述公式进行卷积计算, 先求x方向和y方向的梯度值Mx(x,y) 和My(x,y), 然后利用式(13)求出图像的幅度值M(x,y). Prewitt算子对于图像中含有较大噪声、 图像灰度值发生较大变化的图像具有出众的检测效果.
图 2 为4种边缘检测算子的实际检测效果图, 表 1 为4种边缘检测算子的检测性能比较.
图 2 4种边缘检测算子效果图Fig.2 Edge detection results of four different operators
根据实验结果可以看出, 4种检测算子在轮廓清晰度、 细节完整度、 计算速度等方面均表现出不同的特点, 但是也存在一些缺陷和不足. Robert算子轮廓清晰度高但细节完整度差, Laplace算子细节完整度好但轮廓较粗, 所以为了能够尽可能弥补这些算法的不足之处, 必须找到一种更好的边缘检测算法.
表 1 4种边缘检测算子检测效果比较Tab.1 Comparison of edge detection results offour different operators
结合枪弹的外形特点, 针对上文提到的传统图像边缘检测存在的缺陷, 本文对ACO的图像边缘检测方法进行了改进, 提出了一种基于粒子群和蚁群算法的图像边缘检测方法: 群体优化算法.
由于蚁群算法具有离散性和并行性、 启发式因子和正反馈机制等特点, 基于蚁群算法的图像边缘检测技术, 已经成为当今研究的主要方向. Marco和Dorigo于1992年首次提出了一个蚁群算法的模型, 它是通过模拟自然界中蚂蚁寻找食物时的行为而发现的一种仿生算法. 当蚂蚁移动时, 它们会在移动的过程中留下一种传递信息的物质, 这种物质就是信息素, 蚂蚁通过感知这些信息素来改变它们的运动轨迹. 因此, 大量蚂蚁的集体行为表现为信息的正反馈: 蚂蚁沿着路线走得越多, 选择路线的概率就越大; 反之, 蚂蚁沿着路线走得越小, 选择路线的概率就越小. 蚁群算法中的参数很少, 同时在搜索过程中很容易修改手动设置, 从而解决图像边缘检测方法中出现的细节模糊、 伪边缘和不间断边缘等问题, 因而蚁群算法常用于图像边缘检测以获得完整的边缘信息[7-8].
传统的检测算法对图像边缘检测的效果不好, 容易陷入局部最优[9], 从而会失去两种算法之间的平衡, 导致收敛速度过慢, 故本文研究的关键是将上述两种算法结合起来进行图像边缘检测. 首先, 该方法对图像进行粒子群优化(PSO), 并将其次优解转换为蚁群优化(ACO)的初始信息素分布[10]. 然后, 执行ACO, 并显示图像的边缘信息. 其中一些蚂蚁被用来在二维图像中构造信息素的矩阵, 每一个元素代表对应像素点的边缘信息[11]. 此外, 通过改变图像强度的大小调整蚂蚁移动方向的变化. 这些蚂蚁在寻找食物的时候会采取不同的路线, 它们以一种随机的方式沿着特定的方向运动[12]. 在这种情况下, 他们可以打破常规, 进行创新. 优化的路线不断被保留, 其选择的概率被提高, 以确保相对优秀的信息能够被保存. 这种随机性保证了创新的能力, 而积极的反馈则确保了优秀的特性可以得到增强. 为了将此算法应用于图像边缘检测, 将图像视为无向图[13]. 图像由具有灰度信息的像素点组成, 每个像素点为蚂蚁的一个节点, 以下是该算法的具体实施步骤.
在图像中随机分配K个蚂蚁,大小为N1*N2,将图像当中的每一个像素点看作是一个节点.将信息素矩阵λ(0)中每个元素的初始值设为常数λinit.
在第t步的实现过程中, 从上述K个蚂蚁中随机选择一个蚂蚁, 并在图像中连续移动这个蚂蚁M步. 该蚂蚁由下面的式(14)定义的变换概率从节点(m,n)移动到相邻节点(x,y).
(14)
实施过程中存在两个关键问题: 首先是如何确定式(15)中的启发式信息. 这里的启发式信息由像素点(x,y)的局部统计量决定. 启发式信息函数表示像素与聚类中心之间的相似度, 其在以下式(15)中定义为d.
(15)
式中:ρk是权重因子, 根据像素的每个分量来设置对聚类的影响程度;r是聚类半径;c是聚类中心, 并且聚类半径r的值越大, 启发式信息函数的值也越大, 选择聚类中心的概率将会增加.
更新信息素矩阵时, 执行两次更新操作.
1) 第一次更新是在每个实施步骤中每只蚂蚁移动之后进行的, 信息素矩阵当中的每个元素根据式(16)进行更新.
(16)
2) 第二次更新是在所有蚂蚁按照式(17)完成每步动作之后执行的.
λ(t+1)=ελ0+(1-ε)λt.
(17)
在这个过程中, 通过使用最终的信息素矩阵λ的阈值νthre来确定这个像素点是否是图像的边缘点. 通过以下方法来计算矩阵λ的阈值νthre, 设阈值的初始值为v0, 用信息素矩阵的平均值来表示. 然后, 将信息素矩阵的元素分成两组: 大于v0和小于v0, 新的阈值就是这两组平均值的平均值. 不断重复这个过程, 直到阈值不再发生变化时停止.
该算法将ACO和PSO两种算法的规则结合起来,使算法同时具有多样性和正反馈. 当蚂蚁寻找食物时, 多样性使得蚂蚁不会走进死胡同和无限循环, 这是一种创新能力. 当PSO达到预定收敛条件后,保持良好的正反馈信息,这是一种学习增强能力. 将两种算法的组合使用,能够使此算法更加智能. 如果多样性过度,系统过于活跃,将导致出现过多的随机动作和混乱.如果多样性不够,正反馈会导致僵化,当环境发生变化时,蚁群不能相应调整.
为了验证本文算法的可行性, 用Matlab进行了模拟实验, 系统采用win 7系统, 内存为4G. 本文的所有实验结果均在此配置和平台上完成. 每种算法进行多次试验, 并将该算法的实验结果与经典图像边缘检测算法进行比较, 如图 3 和图 4 所示, 其中, 图 3 针对12.7 mm枪弹, 图 4 针对 5.8 mm枪弹.
图 3 12.7 mm枪弹不同算法的图像边缘检测结果Fig.3 Edge detection results of 12.7 mm bullet image with different algorithms
图 4 5.8 mm枪弹不同算法的图像边缘检测结果Fig.4 Edge detection results of 5.8 mm bullet image with different algorithms
通过Sobel算子、 Prewitt算子、 Roberts算子、 Laplace算子和本文提出的群体优化算法进行主客观对比, 主观评价可以得到如下结论:
1) 本文的算法能够提取轮廓清晰, 边缘连续的优秀图像边缘. 而在传统算法的边缘检测中, 容易出现噪声和假边缘, 并对边缘进行细分.
2) 本文的算法能够在保留目标信息的同时, 有效地过滤图像的背景信息. 而且保证提取出的边缘是单边而不是双边. 因此, 该方法是一种非常有效的边缘检测方法.
3) 本文的算法可以更好地解决蚂蚁搜索步长不灵活的问题. 在蚂蚁采用大步策略之后, 一次搜索的结果不再是单个像素点组成的, 而是由多个边组成的一段连续边. 因此, 蚂蚁可以在相同的动作下找到更多的边缘点, 进而缩短搜索时间. 通过协作策略, 蚂蚁可以实现以一定边缘为中心的双向搜索, 在每次迭代之后, 可以获得更多的边缘点, 从而提高了搜索效率.
本文利用边缘强度和边缘保持度对图像进行客观评价.
边缘强度是沿边缘的法线方向图像局部变化强度的量度, 它是描述图像边缘好坏的客观评价指标, 值越大表明边缘效果越好. 边缘强度的计算公式定义为
(18)
式中:Edge(x,y)表示边缘强度;f(x+m,y+n)为邻域像素的灰度, 窗口大小为M×N, 一般取3×3 或5×5,mean(x-m∶x+m,y-n∶y+n)为区域均值.
边缘保持度(边缘互信息)用以表示实验图像从源图像保留了多少边缘特征信息. 首先对实验图像和源图像进行边缘特征提取, 分别计算实验图像从源图像获得的边缘信息, 将边缘信息保持量作为边缘保持度来评价实验图像, 值越大, 说明实验图像获得的源图像边缘信息就越多, 边缘检测效果就越好. 边缘保持度的计算公式为
(19)
式中:gI(i,j)为实验图像在(i,j)处的边缘特征幅度;QFI(i,j)为实验图像和源图像之间在(i,j)处的边缘信息保留值.
利用两种客观评价指标可以定量对边缘检测结果进行评价, 具体结果如表 2 和表 3 所示.
表 2 边缘强度计算结果Tab.2 Edge strength results of bullet image with different algorithms
表 3 边缘保持度计算结果Tab.3 Edge retention results of bullet image with different algorithms
根据表 2 和表 3 中边缘强度和边缘保持度计算结果可以看出, 本文方法所得到的客观评价指标值均为最高, 因此, 本文算法在主客观评价都具有很好的效果, 从而验证本文算法的有效性.
枪弹图像边缘检测直接影响整个枪弹图像的后续处理, 因此对图像边缘检测的研究具有重要意义. 蚁群优化和粒子群算法都是群体智能算法, 具有正反馈, 分布性和鲁棒性优等特点, 这两种算法已经在很多领域得到了广泛应用. 因此本文将粒子群算法和蚁群算法两种方法结合起来, 提出了一种改进的边缘检测算法——群体优化算法, 对枪弹图像进行边缘检测. 粒子群算法的全局搜索能力与蚁群算法的快速收敛性相结合, 可以提高混合算法收敛时间, 防止局部收敛. 实验证明, 该算法具有许多优良的特征和较好的边缘检测精度.
参考文献:
[1] 龚声荣, 刘纯平, 王强, 等. 数字图像处理与分析[M]. 北京: 清华大学出版社, 2006.
[2] Rizk-Allah R M, Zaki E M, El-Sawy A A. Hybridizing ant colony optimization with firefly algorithm for unconstrained optimization problems[J]. Applied Mathematics and Computation, 2013, 224(11): 473-483.
[3] Jorge F B, Ricardo C G, Angel R V. Ultralow-power processing array for image enhancement and edge detection[J]. IEEE Transactions on Circuits and Systems II-Express Briefs, 2012, 59(11): 751-755.
[4] El-Sayed M A, Bahgat S F, Abdel-Khalek S. Novel approach of edges detection for digital images based on hybrid types of entropy[J]. Applied Mathematics & Information Sciences, 2013, 7(5): 1809-1817.
[5] 董鸿燕. 边缘检测的若干技术研究[D]. 长沙: 国防科学技术大学, 2008.
[6] 马苗, 樊养余, 谢松云, 等. 基于灰色系统理论的图像边缘检测新算法[J]. 中国图像图形学报, 2003, 8(10): 1136-1139.
Ma Miao, Fan Yangyu, Xie Songyun, et al. A novel algorithm of image edge detection based on gray system theory[J]. Journal of Image and Graphics, 2003, 8(10): 1136-1139. (in Chinese)
[7] Liu Mingyang, Liu Shufen, Wang Xiaoyan, et al. Knowledge-domain semantic searching and recommendation based on improved ant colony algorithmz[J]. Journal of Bionic Engineering, 2013, 10(10): 532-540.
[8] Hoseini P, Shayesteh M G. Efficient contrast enhancement of images using hybrid ant colony optimisation, genetic algorithm, and simulated annealing[J]. Digital Signal Processing, 2013, 23(5): 879-893.
[9] 叶秋冬. 枪弹外观检测中的图像处理及识别算法应用研究[D]. 重庆: 重庆理工大学, 2012.
[10] 夏小云, 周育人. 蚁群优化算法的理论研究进展[J]. 智能系统学报, 2016, 11(1): 27-36.
Xia Xiaoyun, Zhou Yuren. Advances in theoretical research of ant colony optimization[J]. CAAI Transactions on Intelligent Systems, 2016, 11(1): 27-36. (in Chinese)
[11] 孙京浩, 李秋艳, 杨欣斌, 等. 基于蚁群算法的故障识别[J]. 华东理工大学学报(自然科学版), 2004, 30(2): 194-198.
Sun Jinghao, Li Qiuyan, Yang Xinbin, et al. Research on fault identification based on ant colony algorithm[J]. Journal of East China University of Science and Technology(Natural Science Edition), 2004, 30(2): 194-198. (in Chinese)
[12] Ducatelle F, Levine J. Ant colony optimisation and local search for bin packing and cutting stock problems[J]. Journal of Operational Research Society, 2004, 55(7): 705-716.
[13] 高尚, 钟娟, 莫述军. 连续优化问题的蚁群算法研究[J]. 微机发展, 2003, 13(1): 21-22.
Gao Shang, Zhong Juan, Mo Shujun. Research on ant colony algorithm for continuous optimization problem[J]. Microcomputer Development, 2003, 13(1): 21-22. (in Chinese)