图像分割—基于图像数据的自动选择阈值(基本全局阈值处理方法)
clear;clc;
g = imread('face_2.jpg');
f = rgb2gray(g);
cout=0;
T = mean2(f);
done = false;
% 阈值迭代算法
while ~done
cout = cout+1;
g = f>T;
Ttext = 0.5*(mean(f(g))+mean(f(~g)));% 产生新的阈值
done = abs(T-Ttext)<0.5; %设定结束的标志
T = Ttext;% 更新阈值
end
g = im2bw(f,T/255);%以得出的阈值进行分割图像。
imshow(f)
figure, imhist(f);
g = imread('face_2.jpg');
f = rgb2gray(g);
cout=0;
T = mean2(f);
done = false;
% 阈值迭代算法
while ~done
cout = cout+1;
g = f>T;
Ttext = 0.5*(mean(f(g))+mean(f(~g)));% 产生新的阈值
done = abs(T-Ttext)<0.5; %设定结束的标志
T = Ttext;% 更新阈值
end
g = im2bw(f,T/255);%以得出的阈值进行分割图像。
imshow(f)
figure, imhist(f);
figure, imshow(g);
上面采用的方法得到的阈值,和gray2thresh(采用类间方差)函数得到的阈值几乎相同,所以效果一样。
结果图像: