📄 otsu-最大类间方差matlab代码.m
字号:
% Otsu-最大类间方差Matlab代码 最大类间方差法原理:最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2 部分。背景和目标之间的类间方差
% 大,说明构成图像的2 部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2 部
% 分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
% matlab代码:
function th=thresh_md(a);
x=imread(a);
a=rgb2gray(x);
imshow(a)
count=imhist(a);
[m,n]=size(a);
N=m*n;
L=256;
count=count/N;
for i=1:L
if count(i)~=0
st=i-1;
break;
end
end
for i=L:-1:1
if count(i)~=0
nd=i-1;
break;
end
end
f=count(st+1:nd+1); %f是每个灰度出现的概率
p=st; q=nd-st;
u=0;
for i=1:q
u=u+f(i)*(p+i-1); %u是像素的平均值
ua(i)=u; %ua(i)是前i个像素的平均灰度值
end;
for i=1:q
w(i)=sum(f(1:i)); %w(i)是前i个像素的累加概率
end;
d=(u*w-ua).^2./(w.*(1-w));
[y,tp]=max(d); %可以取出数组的最大值及取最大值的点
th=tp+p;
for i=1:m
for j=1:n
if a(i,j)>th
a(i,j)=0;
else
a(i,j)=255;
end
end
end
imshow(a);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -