大津法是由大津展之(おおつのぶゆき)发明的算法,故称大津法。

一、 数学原理

大津法又叫最大类间方差法、最大类间阈值法(OTSU)。它的基本思想是,用一个阈值将图像中的数据分为两类,一类中图像的像素点的灰度均小于这个阈值,另一类中的图像的像素点的灰度均大于或者等于该阈值。如果这两个类中像素点的灰度的方差越大,说明获取到的阈值就是最佳的阈值(方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。)。则利用该阈值可以将图像分为前景和背景两个部分。而我们所感兴趣的部分一般为前景。

        其优点是计算简单快速,不受图像亮度和对比度的影响。缺点是对图像噪声敏感;只能针对单一目标分割;当目标和背景大小比例悬殊、类间方差函数可能呈现双峰或者多峰,这个时候效果不好。

二、编程实现

程序是通过matlab实现的,通常,我们在智能车大赛的过程中也常常会用到,代码含义已注释。

filename='E:\learning\机器视觉\machinevision\saidao.jpg';
rgb = imread(filename);
gray = rgb2gray(rgb);%转换为灰度图
gray_max = max(max(gray));
gray_min = min(min(gray));
gray_list = gray_min : gray_max;%阈值范围
ISIZE = size(gray);%图像大小
pixel_all = ISIZE(1) * ISIZE(2);%总像素个数
Tmp = 0;%存放类间方差
threshold = 0;%存放阈值for i = 1 : length(gray_list)  %从MIN到MAXgray_value = gray_list(1,i);pixel_front = 0;%前景像素个数pixel_back = 0;%背景像素个数gray_front = 0;%前景总灰度gray_back = 0;%背景总灰度for j = 1 : ISIZE(1)for k=1 : ISIZE(2)pixelgray = gray(j,k);if(pixelgray >= gray_value)pixel_front = pixel_front+1;gray_front = gray_front + double(pixelgray);elsepixel_back = pixel_back+1;gray_back = gray_back+double(pixelgray);endendendw0 = pixel_front/pixel_all;%前景点数比例w1 = pixel_back/pixel_all;%背景点数比例u0 = gray_front/pixel_front;%前景点数平均灰度u1 = gray_back/pixel_back;%背景点数平均灰度u = (gray_front+gray_back)/pixel_all;%图像总平均灰度tmp = w0*(u0-u)*(u0-u) + w1*(u1-u)*(u1-u);if(Tmp < tmp)threshold = gray_value;Tmp = tmp;end
end%二值化
black_and_white = gray;
for j = 1:ISIZE(1)for k = 1:ISIZE(2)if(black_and_white(j,k) >= threshold)black_and_white(j,k) = 255;elseblack_and_white(j,k) = 0;endend
endlevel = graythresh(gray);
imgbw = im2bw(gray,level);level2=double(threshold)/255;
imgbw2 = im2bw(gray,level2);subplot(221); imshow(gray);
subplot(222); imshow(black_and_white);
subplot(223); imshow(imgbw);
subplot(224); imshow(imgbw2);

三、处理效果

可见效果较好。

大津法(最大类间方差法OTSU)相关推荐

  1. 图像处理_Ostu算法(大律法、最大类间方差法)

    一.算法简述 Otsu算法是一种用于二值化最佳阈值的选取方法.基本原理是根据阈值T将图像中的像素点分为C1和C2两类,不断的调整阈值T之后若此时两类之间存在最大的类间方差,那么此阈值即是最佳阈值. 二 ...

  2. 图像二值化之最大类间方差法(大津法,OTSU)

    参考文章1:图像二值化与otsu算法介绍 参考文章2:python opencv cv2.threshold() (将固定级别的阈值应用于每个数组元素)ThresholdTypes 最大类间方差法(大 ...

  3. 【机器视觉学习笔记】大津法/Otsu最大类间方差法 最佳阈值处理(C++)

    目录 概念 C++源码 OtsuThreshold 主函数 效果 完整源码 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自C+ ...

  4. CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)

    引言 最近在做医疗设备相关的项目,故在项目中大量用到了各类图像分割的算法,为了在图像中分割出特定目标,用到的算法可以有很多,比如阈值分割,多通道分割,边缘分割以及一些前沿的组合分割.而对大多数图像来说 ...

  5. 最大类间方差法(大津法OTSU)原理

    算法介绍 最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分.当取最 ...

  6. 基于OTSU最大类间方差法的ROI分割、提取图像中的形状特征--面积、周长、离心率、zernike矩

    分享一下最近学习的图像分类方面知识,整体的思路如下(之前的汇报ppt里截的) 把这个过程拆分几个部分共同学习一下吧 1.Otsu法原理 最大类间方差法OTSU是一种自适应的全局阈值确定的方法,根据灰度 ...

  7. 图像分割 - 阈值处理 - 最大类间方差法(OTSU)

    目录 1. OTSU 介绍 2. 代码实现 1. OTSU 介绍 OTSU 大津法,也是最大类间方差算法 OTSU 算法的思想通过不同的阈值K,将图像的分为两个区域,一个是灰度值 0 <= k ...

  8. 基于遗传算法的二维最大类间方差法的图像分割优化

    一.背景 最大类间方差阈值分割法日本大津展之在1980年提出的,其基本思路是将图像的直方图以某一灰度为阈值,将图像分成两组并计算两组的方差,当被分成的两组之间的方差最大时,就以这个灰度值为國值分割图像 ...

  9. Ostu最大类间方差法的C++实现

    一.Ostu的原理 最大类间方差法是由日本学者大津(Nobuyuki Ostu)在1979年提出的,该方法根据计算公式自动计算分割单域值,是一种根据灰度图像自动计算阈值的方法.它按照灰度图像的灰度值等 ...

  10. opencv与C++实现最大类间方差法(OTSU)进行图像二值化

    直接上代码,使用最大类间方差法进行二值化的函数 void threshold_otsu(Mat &mat, Mat &mat_thresh) //mat为输入图像,mat_thresh ...

最新文章

  1. 日期如何比较 java_如何比较Java中的日期?
  2. windows7怎么安装python库_如何在Windows 7安装Python2.7
  3. Python300篇电子书免费送
  4. Tomcat在自定义xml文件中配置虚拟目录
  5. STL 之replace,replace_if,replace_copy,replace_copy_if
  6. web.xml中的那些标签和意义
  7. 华为欧拉系统服务器开接口,华为操作系统 euleros
  8. VS2010自定义新建文件模版
  9. 看新闻的时间用的太多了
  10. Java 修改文件最后的创建日期
  11. 【Kafka】docker下kafka报错 IOException: Connection to xxx:19093 (id: 1002 rack: null) failed
  12. hdu 4609 3-idiots——FFT
  13. Oracle数据库批量插入的问题
  14. java arraylist对象_Java中ArrayList的对象引用问题
  15. [离散数学]集合论基础P_4:运算定律及其证明
  16. tplink路由器设置网址方法
  17. 外星人台式机无盘服务器,外星人电脑Aurora R6/Aurora R7无盘无法正常引导解决方案...
  18. Codeforces Round 63 (Rated for Div. 2) F. Delivery Oligopoly dp+图论状态转移
  19. 学习云计算怎么入门,如何学习云计算?
  20. java枚举报错_java枚举类

热门文章

  1. QNX实时操作系统简介
  2. 迁移学习:他山之石,可以攻玉【VALSE Webinar】Panel实录
  3. QQxml和json代码生成卡片的方法
  4. 数领科技|做工业设计可能会用到哪些软件?
  5. (二十)STM32——电容触摸按键?建议改名为卫生纸按键
  6. 【老生谈算法】matlab实现一维曲线分形维数算法源码——一维曲线分形维数
  7. html中pt与px的转换,ptpx换算(pt和像素换算)
  8. python与plc通讯实例_python连接plc 相关实例(示例源码)下载 - 好例子网
  9. 电路串联和并联图解_电路的串联和并联有什么区别
  10. 5配置单臂路由器 VLAN 间路由