基于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代码实现
运行结果:T=n1=137
以上是关于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的全局阈值处理的实现,欢迎大家一起交流学习
相关文章推荐
- 利用边缘改进全局阈值处理-c#实现-基于EmguCv
- Otsu的全局阈值处理实现
- Android全局异常处理 实现自己定义做强制退出和carsh日志抓取
- springMVC实现全局异常处理
- 多阈值处理利用双Otsu阈值-C#实现-基于EmguCv
- 基本全局阈值处理
- 【图像处理】图像分割-全局固定值阈值分割,局部阈值分割、大津Otsu自适应阈值分割
- 基本全局阈值处理
- 基于直方图的图像全局二值化算法原理、实现--百分比阈值(P-Tile)
- 基于直方图的图像全局二值化算法原理、实现--基于双峰平均值的阈值
- otsu结合OpenCV实现灰度图像自动阈值处理
- 【VS开发】【图像处理】基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、实现及效果
- 实现ErrorControler接口处理全局异常
- SpringMvc教程(十一)--如何实现全局的异常处理
- 基于直方图的图像全局二值化算法原理、实现--基于谷底最小值的阈值
- 基于直方图的图像全局二值化算法原理、实现--迭代最佳阈值
- 商务综合管理-day2~5 分页实现,shiro(验证授权,MD5Hash加密),struts2全局异常处理
- spring mvc 如何实现全局的异常处理?
- SpringMVC实现全局异常捕获处理