最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标两部分,或者说,是寻找一个阈值为K,将图像的颜色分为1,2.....K和K+1.....256两部分。

如何确定这个阈值K?算法分类的原理是让背景和目标之间的类间方差最大,因为背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,错分的可能性越小。下面进行公式推导:

首先是符号说明:对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1。

图像的总平均灰度为:   (1)

前景和背景图象的方差:  (2)

将(1)代入(2)得:

采用遍历的方法得到寻找到类间方差最大值,对应的阈值,即为所求。

int Otsu(const IplImage *frame) //大津法求阈值
{
#define GrayScale 256    //frame灰度级int width = frame->width;int height = frame->height;int pixelCount[GrayScale]={0};float pixelPro[GrayScale]={0};int i, j, pixelSum = width * height, threshold = 0;uchar* data = (uchar*)frame->imageData;//统计每个灰度级中像素的个数for(i = 0; i < height; i++){for(j = 0;j < width;j++){pixelCount[(int)data[i * width + j]]++;}}//计算每个灰度级的像素数目占整幅图像的比例for(i = 0; i < GrayScale; i++){pixelPro[i] = (float)pixelCount[i] / pixelSum;}//遍历灰度级[0,255],寻找合适的thresholdfloat w0, w1, u0tmp, u1tmp, u0, u1, deltaTmp, deltaMax = 0;for(i = 0; i < GrayScale; i++){w0 = w1 = u0tmp = u1tmp = u0 = u1 = deltaTmp = 0;for(j = 0; j < GrayScale; j++){if(j <= i)   //背景部分{w0 += pixelPro[j];u0tmp += j * pixelPro[j];}else   //前景部分{w1 += pixelPro[j];u1tmp += j * pixelPro[j];}}u0 = u0tmp / w0;u1 = u1tmp / w1;deltaTmp = (float)(w0 *w1* pow((u0 - u1), 2)) ;if(deltaTmp > deltaMax){deltaMax = deltaTmp;threshold = i;}}return threshold;
}

opencv提供的阈值化方法有threshold和adaptiveThreshold,以及OTSU方法。

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;int main(int argc, char* argv[])
{Mat img = imread(argv[1], -1);if (img.empty()){cout <<"Error: Could not load image" <<endl;return 0;}Mat gray;cvtColor(img, gray, CV_BGR2GRAY);Mat dst;threshold(gray, dst, 0, 255, CV_THRESH_OTSU);imshow("src", img);imshow("gray", gray);imshow("dst", dst);waitKey(0);return 0;
}

参考:

【1】https://baike.baidu.com/item/otsu/16252828?fr=aladdin

【2】Otsu N. A threshold selection method from gray-level histogram. IEEE Trans,1979;SMC-9;62-66

【3】https://blog.csdn.net/momo026/article/details/84026075

图像二值化——OTSU大津法相关推荐

  1. 【智能车】图像二值化算法--大津法OTSU

    图像二值化算法–大津法OTSU 大津算法是一种图像二值化算法,作用是确定将图像分成黑白两个部分的阈值. 大津法是针对灰度值进行阈值分割二值化,如果是彩色图像的话需要先转化成灰度图再进行计算. 方差越大 ...

  2. 图像二值化_三角阈值法

    前言 一.三角阈值法是什么? 二.算法原理 1.算法 总结 参考文献 前言 图像二值化有很多方法,比较经典的为OTSU,三角阈值法,本文主要想一探三角阈值法的算法原理. 一.三角阈值法是什么? 三角阈 ...

  3. 图像二值化----otsu(最大类间方差法、大津算法)(二)

    转自:http://blog.stevenwang.name/ostu-threshold-56002.html OTSU算法也称最大类间差法,有时也称之为大津算法,被认为是图像分割中阈值选取的最佳算 ...

  4. C#,图像二值化(06)——全局阈值的大津算法(OTSU Thresholding)及其源代码

    1.大津算法OTSU ALGORITHM OTSU算法效果很一般. 最大类间方差法是1979年由日本学者大津(Nobuyuki Otsu)提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU, ...

  5. 自适应阈值图像二值化

    一.二值化 关于二值化的介绍,以前的博客中有介绍,这里就不再描述了,二值化介绍:二值化分为固定阈值二值化和自适应阈值二值化,固定阈值二值化方式是我们常用的二值化方式,需要自己摸索一个经验阈值,不断调整 ...

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

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

  7. 图像二值化(Image Binarization):平均值法、双峰法、大津算法(OTSU)

    图像二值化(Image Binarization):平均值法.双峰法.大津算法(OTSU) 编程实现图像的二值化,分析不同的阈值对二值化图像的影响. 问题描述 传统的机器视觉通常包括两个步骤:预处理和 ...

  8. otsu阈值分割算法原理_OTSU_图像二值化分割阈值的算法

    简介: 大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景 ...

  9. 基于OTSU(大津法)的图像分块的阈值分割

    一.开发环境: Qt版本:Qt5.12.3VS版本:VS2017opencv版本:opencv-4.5.1-vc14_vc15 二.要求:实现基于图像分块+OTSU的图像分割 1.OTSU大津法实现 ...

最新文章

  1. 串口的波特率误差对数据发送影响
  2. ShopEx安装过程
  3. failover.mysql_mysqlfailover测试
  4. 解决VS.NET 里Atuomation 服务器不能创建对象
  5. jcifs java_通过jcifs实现java访问网络共享文件
  6. hibernate课程 初探单表映射1-2 ORM定义
  7. composer切换源_composer的安装 及 常用命令(切换源等)
  8. 【计算机图形学】Laplacian_Surface_Editiing拉普拉斯曲面编辑算法
  9. activex控件无法安装解决方法
  10. “诗词吾爱”第38期擂台赛《伤春、惜春》获胜作品欣赏【转载】
  11. 卡西欧计算机开机键,卡西欧手表怎么开机
  12. 用python制作简单的可视化地图
  13. 在8086中,逻辑地址、偏移地址、物理地址,分别指的是什么
  14. 斑马打印机常见问题解决方案 条码打印机常见问题解决方案
  15. 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天
  16. 2022年陕西最新建筑八大员(质量员)模拟考试题库及答案解析
  17. 给你一部电梯,如何对其进行测试?
  18. 利元转债,奕瑞转债上市价格预测
  19. dB与放大倍数的关系
  20. simple rpc framework

热门文章

  1. 【项目管理】-任务拆分
  2. 港美股互联网券商系统建设
  3. 拯救2K屏手机!修改屏幕分辨率省电教程
  4. 大众、特斯拉、麦当劳、英特尔、爱奇艺、瑞幸等公司高管变动
  5. Echarts河北地图缺少雄安新区(合并、调整地图边缘)的解决办法
  6. 微信分享卡片制作_微信分享卡片自定义制作
  7. Track to Detect and Segment: An Online Multi-Object Tracker
  8. RDM-Redis可视化工具图文安装教程
  9. docker虚拟化技术文档(自己总结最全版本)
  10. 一在线计算机系统 有4条输入通信,2012年9月计算机等考《一级MS Office》全真模拟试卷(4)...