b8a8ff2bc6
实现内容: - 网格划分:投影分析 + 自相关估周期 + 白顶帽去背景 + 质心提取 - 三种阈值分割:人工阈值、Otsu自动阈值、迭代阈值 - TV去噪(Chambolle投影算法) - 后处理:去小连通域 + 保留最大连通域 - 完整可视化:网格叠加、阈值对比、收敛曲线、分割结果 参考MATLAB代码:NewGridAndCV/demo_GriddingAndCV.m
52 lines
930 B
Matlab
52 lines
930 B
Matlab
function U1=choice(u0,Daxiao)
|
|
L = bwlabel(u0,8);
|
|
%%提取物体属性
|
|
STATS = regionprops(L,'Area');
|
|
|
|
%%提取面积数组
|
|
area=[STATS.Area];
|
|
% [m_area,n_area]=size(area);
|
|
% num_big=0;
|
|
% for i=1:n_area
|
|
% if area(1,i)>100
|
|
% num_big=num_big+1;
|
|
% end
|
|
% end
|
|
|
|
%选取面积大的目标
|
|
area_num=area(area>Daxiao);
|
|
%计算大目标数量
|
|
Length_area_num=numel(area_num) ;
|
|
%设定数组,用来存储对于目标的标号
|
|
array=zeros(1,Length_area_num);
|
|
|
|
%将对于目标的编号存储在数字array中
|
|
% for k=1:Length_area_num
|
|
% % array(1,k)=find(area==area_num(1,k));
|
|
%
|
|
% end
|
|
num_big=1;
|
|
[m_area,n_area]=size(area);
|
|
for i=1:n_area
|
|
if area(1,i)>100
|
|
array(1,num_big)=i;
|
|
num_big=num_big+1;
|
|
end
|
|
end
|
|
|
|
|
|
L_new=L;
|
|
[m_L_new,n_L_new]=size(L_new);
|
|
for i=1:m_L_new
|
|
for j=1:n_L_new
|
|
for k1=1:Length_area_num
|
|
if (L_new(i,j)==array(1,k1))
|
|
L_new(i,j)=0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
U1=L_new;
|
|
|
|
|