最近写了一个基于直方图的图像阈值分割作业,代码如下:
clear all;
g=imread('Test_Img_1.jpg');
%g=rgb2gray(I);
%thresh(g,99,130,150);
%figure(2) %绘制直方图
[cnts, x] = imhist(g, 256);
[m, n] = size(g);
prob = cnts / m / n;
% sum(prob) == 1
subplot(1,2,1);
plot(x, prob); title('直方图');
y = medfilt1(prob,6);
subplot(1,2,2);
plot(x,y);title('中值滤波');
b=0;
KK=[ ];
T=0;
temp=100;
for k=2:250
Kt=0;
u0=0;
ub=0;
sigma0=0;
sigmab=0;
ind1=find(g<k);
ind2=find(g>=k);
% prob0 =zeros(k,1);
for i=1:k
prob0(i)=size(find(g==i))/size(ind1);
end
for i=1:k
u0=u0+i*prob0(i);
end
for i=1:k