【图像边缘检测】基于蚁群算法实现图像边缘检测matlab代码
【图像边缘检测】基于蚁群算法实现图像边缘检测matlab代码
TT_Matlab
每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183
1 简介
目的提出基于蚂蚁算法的图像分割技术,解决传统的图像分割算法分割图像的效果不理想、不能满足图像分割要求等问题。方法将图像的灰度、梯度和邻域特征组合成蚂蚁,通过MATLAB实现蚁群图像分割算法对图像的外廓提取。结果与结论相对于传统的图像分割算法,基于蚂蚁算法的图像分割算法的外廓提取具有更高的仿真精度,得到的图形外廓更为理想。
蚁群算法是由意 大利科 学 家A.Colorni、M.Dorigo和V.Maniezzo等人提出的一种通过模仿蚂蚁的觅食行为来寻找复杂优化问题近似解的启发式算法。
蚂蚁是一种社会性群居昆虫,个体非常简单,但通过多数蚂蚁之间的团结与合作,是能够完成非常复杂的、具有“智能”的活动,它们都可以找到由巢穴到食物之间的最佳的路径,例如:当有障碍物突然出现在蚂蚁运动路线上时,它们能够迅速的再次找到最佳路径。那么,这样一个庞大的工作量,小小的蚂蚁是通过什么来完成的呢?在许多科学研究者不懈的努力下,他们得知,蚂蚁个体间是通过一种被称之为信息激素(pheromone)的物质进行信息传送的,其可以相互合作来完成困难的任务。
在对昆虫进行一段时间的观察之后,我们发现,虽然真实的蚂蚁没有视觉构造,但是蚂蚁在寻找食物源时,途中释 放信 息激 素[15],而且它们分泌的信息量会随着所走路线的增长和时间的推迟而不断挥发,在附近的其他蚂蚁能够在这个过程当中,随着时间的流逝,渐渐感知到信息素的存在和它的强弱,并由此决定它们以后的行为。从同一个地方快速启动时一群蚂蚁选择适合自己的方式找到了相同的各路径的食物来源,,找到最短路径的蚂蚁,能够更快的将食物搬回巢穴。信息素会随着时间的推移而蒸发。当一只蚂蚁经过很长一段路程的旅行,信息素蒸发的时间就更长。因此,时间短就更有利于在更快速的行进中更大的弥补蒸发的信息素。信息素密度能够在较短路径内维持高水平是因为它蒸发快。如此往复,就形成了一 个正 反馈的系统,最后大部分蚂蚁会根据这个正反馈系统选择一个最短的运输路线,这就是蚁群算法搜索寻优的过程。
2 部分代码
function edge_ACO %参考文献:"An Ant Colony Optimization Algorithm For Image Edge close all ; clear all ; clc ; % 读入图像 filename = ’ant128’ ; % img=rgb2gray(imread(’ant.jpg’)); img = imread ( ’rice.png’ ); img = double ( img ) ./ 255 ; [ nrow , ncol ] = size ( img ); %公式(3.24.4)初始化 % 产生边缘图矩阵,运用信息素函数判断是否是边缘 % 调用子函数进行二值分割 T = func_seperate_two_class ( p ); fprintf ( ’Done! ’ ); imwrite ( uint8 ( abs (( p > = T ) .* 255-255 )), gray ( 256 ), [ filename ’_edge_aco_’ num2str ( nMethod ) ’.jpg’ ], ’jpg’ ); end %%%%%%%%子函数%%%%%%% function level = func_seperate_two_class ( I ) % 功能:进行二值分割 I = I (:); % STEP 1: 通过直方图计算灰度均值, 设定T=mean(I) [ counts , N ]= hist ( I , 256 ); i = 1 ; mu = cumsum ( counts ); T ( i )=( sum ( N .* counts )) / mu ( end ); % STEP 2: 计算灰度值大于 T (MAT)像素的均值和灰度值小于 T(MBT)像素的均值 % step 1 mu2 = cumsum ( counts ( N < = T ( i ))); MBT = sum ( N ( N < = T ( i )) .* counts ( N < = T ( i ))) / mu2 ( end ); mu3 = cumsum ( counts ( N > T ( i ))); MAT = sum ( N ( N > T ( i )) .* counts ( N > T ( i ))) / mu3 ( end ); i = i +1 ; T ( i )=( MAT + MBT ) / 2 ; % STEP 3 :当T(i)~=T(i-1),重复STEP 2 Threshold = T ( i ); while abs ( T ( i ) - T ( i -1 )) > = 1 mu2 = cumsum ( counts ( N < = T ( i ))); MBT = sum ( N ( N < = T ( i )) .* counts ( N < = T ( i ))) / mu2 ( end ); mu3 = cumsum ( counts ( N > T ( i ))); MAT = sum ( N ( N > T ( i )) .* counts ( N > T ( i ))) / mu3 ( end ); i = i +1 ; T ( i )=( MAT + MBT ) / 2 ; Threshold = T ( i ); end % 归一化均值到 [i, 1]之间. level = Threshold ;
3 仿真结果
4 参考文献
[1]高蕊, and 马磊. "基于蚁群算法的图像分割方法." 宝鸡文理学院学报(自然科学版) (2018).
部分理论引用网络文献,若有侵权联系博主删除。
微信扫一扫赞赏作者
赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03