您的位置:首页 > 其它

基于Otsu的全局阈值处理的实现

2017-08-18 09:52 183 查看
基于Otsu的全局阈值处理又称最大类间方差法,即在对图像进行阈值分割时,选定的分割阈值应使前景区域的平均灰度,背景区域的平均灰度与整幅图像的平均灰度之间差别最大,这种差异用区域的方差来表示

设图像中灰度为i的像素数为ni,灰度范围为[0,L-1], 总的像素数为



各灰度值出现的概率为



对于Pi



把图中的像素用阈值T分为两类C0和C1,C0由灰度值在[0,T-1]的像素组成,C1由灰度值在[T,L-1]的像素组成,则区域C0和C1的概率分别为



区域C0和C1的平均灰度分别为:



U是整幅图像的平均灰度



两个区域的总方差为:



让T在[0,L-1]范围内依次取值,使区域方差最大的T值便是最佳区域分割阈值

Matlab代码实现

I=imread('car.jpg');   %读入图像
I=I(:,:,1);
figure(1);
imshow(I);
[m,n]=size(I);
[counts,x]=imhist(I,256);  %灰度级为[0,255]
[Q,~]=size(x)
Pi=counts/m/n;
Variance=zeros(1,Q);       %存放区域方差
for k =1:Q-1
P0=sum(Pi(1:k))
P1=sum(Pi(k+1:Q))

Mu0=(1/P0)*([1:k]*counts(1:k));
Mu1=(1/P1)*([k+1:Q]*counts(k+1:Q));

Mu=P0*Mu0+P1*Mu1;

variance=P0*P1*(Mu0-Mu1)^2;
Variance(k)= variance;
end

[m1,n1]=max(Variance);
I1=im2bw(I,n1/255);
figure(2);
imshow(I1)


运行结果:T=n1=137





以上是关于Otsu的全局阈值处理的实现,欢迎大家一起交流学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: