灰度图像二值化方法matlab代码
来源:动视网
责编:小OO
时间:2025-09-23 23:56:55
灰度图像二值化方法matlab代码
OTSU算法代码:I=imread('****');th=graythresh(I);J=im2bw(I,th);subplot(121)imshow(I);subplot(122)imshow(J);Bernsen算法代码:clc;clearallcloseallI=imread('****');[m,n]=size(I);I_gray=double(I);T=zeros(m,n);M=3;N=3;fori=M+1:m-Mforj=N+1:n-Nmax=1;min=255;fork=i-M:
导读OTSU算法代码:I=imread('****');th=graythresh(I);J=im2bw(I,th);subplot(121)imshow(I);subplot(122)imshow(J);Bernsen算法代码:clc;clearallcloseallI=imread('****');[m,n]=size(I);I_gray=double(I);T=zeros(m,n);M=3;N=3;fori=M+1:m-Mforj=N+1:n-Nmax=1;min=255;fork=i-M:
OTSU算法代码:
I=imread('****');
th=graythresh(I);
J=im2bw(I,th);
subplot(121)
imshow(I);
subplot(122)
imshow(J);
Bernsen算法代码:
clc;
clear all
close all
I=imread('****');
[m,n] = size(I);
I_gray=double(I);
T=zeros(m,n);
M=3;
N=3;
for i=M+1:m-M
for j=N+1:n-N
max=1;min=255;
for k=i-M:i+M
for l=j-N:j+N
if I_gray(k,l)>max
max=I_gray(k,l);
end
if I_gray(k,l) min=I_gray(k,l); end
end
end
T(i,j)=(max+min)/2;
end
end
I_bw=zeros(m,n);
for i=1:m
for j=1:n
if I_gray(i,j)>T(i,j)
I_bw(i,j)=255;
else
I_bw(i,j)=0;
end
end
end
subplot(121),imshow(I);
subplot(122),imshow(I_bw);
改进的Bernsen算法代码:
clc;
clear all
close all
I=imread('****');
I_gray=double(I);
[m,n] = size(I);
a=0.3;
A=0;T1=0;S=0;
for i=1:m
for j=1:n
A=A+I_gray(i,j) ;
end
end
A=A*0.9;
while(S T1=T1+1; for i=1:m
for j=1:n
if(I_gray(i,j)==T1)
S=S+I_gray(i,j);
end
end
end
end
T2=zeros(m,n);
T3=zeros(m,n);
M=3;
N=3;
for i=M+1:m-M
for j=N+1:n-N
max=1;min=255;
for k=i-M:i+M
for l=j-N:j+N
if I_gray(k,l)>max
max=I_gray(k,l);
end
if I_gray(k,l) min=I_gray(k,l); end
end
end
T2(i,j)=(max+min)/2;
T3(i,j)=max-min;
end
end
T4=medfilt2(T2,[M,N]);
T5=(T1+T4)/2;
I_bw=zeros(m,n);
for i=1:m
for j=1:n
if I_gray(i,j)>(1+a)*T1
I_bw(i,j)=255;
end
if I_gray(i,j)<(1-a)*T1
I_bw(i,j)=0;
end
if (1-a)*T1<=I_gray(i,j)<=(1-a)*T1
if T3(i,j)>a*T1
if I_gray(i,j)>=T4(i,j)
I_bw(i,j)=255;
else
I_bw(i,j)=0;
end
else if I_gray(i,j)>=T5(i,j)
I_bw(i,j)=255;
else
I_bw(i,j)=0;
end
end
end
end
end
subplot(121),imshow(I);
subplot(122),imshow(I_bw);
灰度图像二值化方法matlab代码
OTSU算法代码:I=imread('****');th=graythresh(I);J=im2bw(I,th);subplot(121)imshow(I);subplot(122)imshow(J);Bernsen算法代码:clc;clearallcloseallI=imread('****');[m,n]=size(I);I_gray=double(I);T=zeros(m,n);M=3;N=3;fori=M+1:m-Mforj=N+1:n-Nmax=1;min=255;fork=i-M: