自动选择阈值--最大类间方差法(OTSU)原理及matlab实现
原理
基本思想:
把一幅图像分成两部分C0,C1.使前景和背景与平均灰度的差别最大。这种差异用方差sigmaB表示。
所以目标就是求最大方差sigmaB对应的阈值T。
matlab代码
clc
clear
x=imread('rice.png'); a=x;subplot(211); imshow(a,[]); %[count x]=imhist(a); [m,n]=size(a); N=m*n; L=256; for i=1:L count(i)=length(find(a==(i-1))); f(i)=count(i)/(N); %每个灰度对应的概率,i=1,对应灰度值为0(i-1)
end 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 p=st; q=nd-st+1;
u=0;
for i=1:q u=u+f(p+i)*(p+i-1); %u是像素的平均值 ua(i)=u; %ua(i)是前i+p个像素的平均灰度值 (前p个无取值)
end; for i=1:q w(i)=sum(f(1+p:i+p)); %w(i)是前i个像素的累加概率,对应公式中P0
end; w=w+eps; %对照sigmaB的公式写出目标函数。实际是遍历所有值
d=(w./(1-w)).*(ua./w-u).^2;
[y,tp]=max(d); %可以取出数组的最大值及取最大值的点
th=tp+p; subplot(212);
imshow(im2bw(a,th/255),[]); title('自己的最大类间方差');subplot(211);
imshow(im2bw(x,graythresh(x)),[]); title('matlab自带');
效果
可以看到自己编写的与matlab自带效果相同。
自动选择阈值--最大类间方差法(OTSU)原理及matlab实现相关推荐
- 图像分割 - 阈值处理 - 最大类间方差法(OTSU)
目录 1. OTSU 介绍 2. 代码实现 1. OTSU 介绍 OTSU 大津法,也是最大类间方差算法 OTSU 算法的思想通过不同的阈值K,将图像的分为两个区域,一个是灰度值 0 <= k ...
- 基于OTSU最大类间方差法的ROI分割、提取图像中的形状特征--面积、周长、离心率、zernike矩
分享一下最近学习的图像分类方面知识,整体的思路如下(之前的汇报ppt里截的) 把这个过程拆分几个部分共同学习一下吧 1.Otsu法原理 最大类间方差法OTSU是一种自适应的全局阈值确定的方法,根据灰度 ...
- 最大类间方差法(大津法OTSU)原理
算法介绍 最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分.当取最 ...
- 数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
文章目录 一.实验目的 二.实验原理 (一) 阈值分割 1. 直方图法 2.OTSU法(最大类间方差法)确定阈值 3. 迭代阈值法 4. 点检测 (二)边缘检测 三.实验内容 (一)阈值分割 1. 直 ...
- 【机器视觉学习笔记】大津法/Otsu最大类间方差法 最佳阈值处理(C++)
目录 概念 C++源码 OtsuThreshold 主函数 效果 完整源码 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自C+ ...
- 自适应阈值分割(最大类间分割法 + OTSU)
1.定义 最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU.它是按图像的灰度特性,将图像分成背景和目标两部分,或者 ...
- Ostu最大类间方差法的C++实现
一.Ostu的原理 最大类间方差法是由日本学者大津(Nobuyuki Ostu)在1979年提出的,该方法根据计算公式自动计算分割单域值,是一种根据灰度图像自动计算阈值的方法.它按照灰度图像的灰度值等 ...
- 图像二值化之最大类间方差法(大津法,OTSU)
参考文章1:图像二值化与otsu算法介绍 参考文章2:python opencv cv2.threshold() (将固定级别的阈值应用于每个数组元素)ThresholdTypes 最大类间方差法(大 ...
- CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)
引言 最近在做医疗设备相关的项目,故在项目中大量用到了各类图像分割的算法,为了在图像中分割出特定目标,用到的算法可以有很多,比如阈值分割,多通道分割,边缘分割以及一些前沿的组合分割.而对大多数图像来说 ...
- opencv与C++实现最大类间方差法(OTSU)进行图像二值化
直接上代码,使用最大类间方差法进行二值化的函数 void threshold_otsu(Mat &mat, Mat &mat_thresh) //mat为输入图像,mat_thresh ...
最新文章
- AI医疗版App Store来了:GE发布“爱迪生魔盒”,集成各方医疗方案,李开复点赞...
- db2查询字段备注_通过逐浪数据精灵管理sqlserver数据表备注以及字段说明
- hystrix源码小贴士之Yammer Publisher
- axios在IE下的兼容性处理
- php 链接文件名_7、php-fpm进程管理
- 操作系统04进程同步与通信
- python手枪_Python入门,爬虫训练——枪械查询
- 企业级账号 版本更新总结
- Android自动化测试之使用java调用monkeyrunner(补充篇)
- 使用Ueditor点击上传图片时显示延迟的问题
- 简单批处理内部命令简介(转)
- 【OpenCV学习笔记】【函数学习】四(origin+imageData+cvcopy()函数+CvMemStorage 类型+CvPoint类型)
- python 单向链表逆序_python实现单链表反转(经典笔试题)
- java面向接口编程思想
- 怎么把图片文字转换成文字
- IAR 设置程序下载地址
- android 阿里hotfix,Android 热修复方案--阿里百川HotFix
- 听《正面管教》,论如何教育孩子
- 用malloc动态申请一个二维数组的三种方法
- 微信表情图像代表什么意思_微信里的表情每个头像代表什么意思