阈值分割的5个程序

附录1
灰度与阈值分割法程序:
I=imread('D:\schumacher.jpg ');
I1=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I1);
title(' 灰度图像')

[m,n]=size(I1); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
subplot(2,2,2),bar(0:255,GP,'g') %绘制直方图
title('灰度直方图')
xlabel('灰度值')
ylabel(' 出现概率')
I2=im2bw(I,100/255);
subplot(2,2,3),imshow(I2);
title('阈值100的分割图像')

I3=im2bw(I,150/255); %
subplot(2,2,4),imshow(I3);
title('阈值150的分割图像')

附录2
直方图阈值分割法程序:
yuan = imread('D:\schumacher1.jpg'); I = rgb2gray(yuan);
subplot(2,3,1);imshow(I);title('原图的灰度图');
subplot(2,3,2);imhist(I);
t1 = 50;

[m n]=size(I);
I1=zeros(m,n);
for i=1:m
for j=1:n
if I(i,j)>t1
I1(i,j)=1;
else
I1(i,j)=0;
end
end
end
subplot(2,3,3);imshow(I1);title('阈值50的分割图像');

附录3
最大阈值分割法程序:
I=imread('D:\girl.jpg');
Definition 'T'=Tvalue(I);
[R,C]=size(I); % 求出图象大小
b=double(I); %将图像矩阵浮点化以便运算
u1=max(max(I)); % 求出最大的图象强度
u2=min(min(I)); % 求出最小的图象强
u1=double(u1); %浮点化以便运算
u2=double(u2);
newT=(u1(1,1)+u2(1,1))/2; %将初始阈值设置为最大与最小图像强度的均值
T=0; %辅助阈值初始化
S0=0.0; N1=0.0; %初始化大于阈值的元素的个数及其灰度总值
S1=0.0; N2=0.0; %初始化小于阈值的元素的个数及其灰度总值

% 迭代式最佳阈值选择算法主体%

while(abs(T-newT)>0) %循环条件:阈值在变,没有固定
T=newT;
for i=1:R
for j=1:C
if I(i,j)>=T,
S0=S0+b(i,j); %记录大于阈值的元素个数及其灰度总值
N1=N1+1;
end
if I(i,j) %记录小于阈值的元素个数及其灰度总值
S1=S1+b(i,j);
N2=N2+1;
end
end
end
T0=S0/N1; %生成新阈值
T1=S1/N2;
newT=(T0+T1)/2;
S0=0.0; N1=0.0; %重置初值
S1=0.0; N2=0.0;
end

附录4
全局阈值分割法程序:
yuan = imread('D:\zidane1.jpg'); I = rgb2gray(yuan);
subplot(2,2,1);imshow(I);title('原图的灰度图');
t1 = 100;
[m n]=size(I);
I1=zeros(m,n);
for i=1:m
for j=1:n
if I(i,j)>t1
I1(i,j)=1;
else
I1(i,j)=0;
end
end
end
subplot(2,2,2);imshow(I1);title('阈值100的分割图像');

t2 = 150;
[m n]=size(I);
I1=zeros(m,n);
for i=1:m
for j=1:n
if I(i,j)>t2
I2(i,j)=1;
else
I2(i,j)=0;
end
end


end
subplot(2,2,3);imshow(I2);title('阈值150的分割图像');

t3 = 200;
[m n]=size(I);
I1=zeros(m,n);
for i=1:m
for j=1:n
if I(i,j)>t3
I3(i,j)=1;
else
I3(i,j)=0;
end
end
end
subplot(2,2,4);imshow(I3);title('阈值200的分割图像');

附录5
局部阈值分割分割法程序:
I=imread('D:\schumacher.jpg ');
I1=rgb2gray(I);
figure;
subplot(2,3,1);
imshow(I1);
title(' 灰度图像')
axis([0,200,0,100]);
rid on; %显示网格线
xis on; %显示坐标系

I2=im2bw(I,150/255);
subplot(2,3,2),imshow(I2);
title('阈值150的分割图像')
axis([50,200,50,100]);
grid on; %显示网格线
axis on; %显示坐标系

I3=im2bw(I,150/255);
subplot(2,3,3),imshow(I3);
title('阈值150的分割图像')
axis([50,200,150,200]);
grid on; %显示网格线
axis on; %显示坐标系


相关文档
最新文档