图像分割——迭代式阈值分割

1、算法步骤:

(1)预定义两阈值之差dt

(2)选定初始阈值T0(一般为图像的平均灰度)

(3)用T分割图像为G1、G2两组,G1由灰度值大于T的所有像素组成,G2由灰度值小于等于T的所有像素组成。

(4)对G1和G2的像素分别计算平均灰度值m1,m2。

(5)计算出新的阈值:T1=(m1+m2)/2

(6)重复步骤3到步骤5,直到连续迭代中的阈值之间的差小于预定义的阈值差dt为止。

2、代码如下:

close all;clear all;clc;  %关闭所有图形窗口,清除工作空间所有变量,清空命令行
I=imread('cameraman.tif');
I=im2double(I);
dt=0.01;        %预定义两阈值之差
T0=(min(min(I))+max(max(I)))/2; %初始阈值
G1=find(I>T0);  %分组G1
G2=find(I<=T0); %分组G2
m1=mean(I(G1)); %平均灰度值
m2=mean(I(G2));
T1=(m1+m2)/2;   %新阈值
while abs(T1-T0)>dt
    T0=T1;
    G1=find(I>T0);
    G2=find(I<=T0);
    T2=(mean(I(G1))+mean(I(G2)))/2;
end
J=im2bw(I,T1);  %把图像转换为二值图,进行阈值分割
set(0,'defaultFigurePosition',[100,100,1000,500]);
set(0,'defaultFigureColor',[1 1 1]);
figure(1);
subplot(121),imshow(I);       
subplot(122),imshow(J);









3、运行效果如下:

扫描二维码关注公众号,回复: 2550656 查看本文章

猜你喜欢

转载自blog.csdn.net/ywxk1314/article/details/81407391