【数字图像处理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
测试: