【数字图像处理matlab】(迭代阈值影像分割算法)

【数字图像处理matlab】(迭代阈值影像分割算法)

输入一张灰度图,采用迭代阈值算法实现影像分割。

function F=image_segmentation(image)   
%调用代码------------------------------------
%image=imread('seg2.jpg');
%image_segmentation(image);
%-------------------------------------------

%迭代阈值影像分割算法
X=im2double(image);
T=median(median(X)); 
[row,column]=size(X);    
t=T-0; T0=0.01;

%G1由灰度值大于T的像素组成,G2由灰度值小于T的像素组成(为逻辑值矩阵)
while t>T0
    G1=X>=T;
    G2=X<T;
    u1=sum(sum(G1.*X))/sum(sum(G1));    %平均灰度值u1,u2(分子为值之和,分母为个数之和)
    u2=sum(sum(G2.*X))/sum(sum(G2));
    T1=(u1+u2)/2;
    t=abs(T1-T);                                 
    T=T1;
end

%将大于等于阈值的像素作为背景,生成一个二值图像
Y=zeros(row,column);
for i=1:row
    for j=1:column
        if X(i,j)>=T
            Y(i,j)=1;
        else
            Y(i,j)=X(i,j);
        end
    end
end
subplot(1,2,1);imshow(X);title('原图像');
subplot(1,2,2);imshow(Y);title('迭代阈值影像分割结果');
  
end

测试:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gsgs1234/article/details/124144783