【图像分割】基于区域生长算法和Kmean聚类算法实现图像分割附matlab代码
【图像分割】基于区域生长算法和Kmean聚类算法实现图像分割附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
区域生长算法的基本思想是将具有相似性质(例如,颜色,亮度,纹理)的像素集合起来构成区域。具体实现时先确定一组种子像素作为生长的起点, 再将种子像素周围邻域中与种子像素有相同或相似性质的像素 (根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。并将这些新像素当作新的种子像素继续进行上面的过程, 直到再没有满足条件的像素可被包括进来为止。
2 部分代码
function [hp,hpind,minval,minind] = heap_pop(hp,hpind)
%pop min value in heap
if
length
(hp)==
0
disp(
’empty heap, no pop operation’
)
return
;
end
l =
length
(hp);
minval = hp(
1
);
minind = hpind(
1
);
hp(
1
) = hp(l);
hpind(
1
) = hpind(l);
l = l-
1
;
hp = hp(
1
:l);
hpind = hpind(
1
:l);
curnode =
1
;
halfl = fix(l/
2
);
while
(curnode<=halfl)
sonnode1 = curnode*
2
;
sonnode2 = sonnode1 +
1
;
val1 = hp(curnode);
val2 = hp(sonnode1);
if
l>=sonnode2
val3 = hp(sonnode2);
else
val3 = inf;
end
if
val1>val2
if
val2>val3
%1>
2
>
3
,move3
stat
=
3
;
else
%1>
2
,
3
>
2
, move
2
stat
=
2
;
end
else
if
val1>val3
%2>
1
>
3
move
3
stat
=
3
;
else
%2>
1
,
3
>
1
, stop
stat
=
0
;
end
end
if
(
stat
==
0
)
break
;
elseif (
stat
==
3
)
%swap value,
1
<->
3
hp(sonnode2) = val1;
hp(curnode) = val3;
%swap heapind
tmp = hpind(curnode);
hpind(curnode) = hpind(sonnode2);
hpind(sonnode2) = tmp;
curnode = sonnode2;
else
%
stat
==
2
%swap value,
1
<->
2
hp(sonnode1) = val1;
hp(curnode) = val2;
%swap heapind
tmp = hpind(curnode);
hpind(curnode) = hpind(sonnode1);
hpind(sonnode1) = tmp;
curnode = sonnode1;
end
end
3 仿真结果
4 参考文献
[1]谢理训, 杨宜民. 基于改进区域生长算法的彩色图像分割[J]. 微计算机信息, 2009(18):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
