大津算法,也被称作最大类间方差法,是一种自动确定二值化阈值的算法。

在这里作者不介绍算法推导的过程,算法推导过程网络上有许多介绍,这里只给出算法最终推导出的结论:

使得左侧 的值最大,就可以得到最好的二值化阈值 t

其中,和 是被阈值分开的两个类中的像素数占总像素数的比率。和 分别是这两个类的像素值的平均值。


废话不多说,直接上python代码:

import cv2import numpy as npdef BGR2GRAY(img):b = img[:, :, 0].copy()g = img[:, :, 1].copy()r = img[:, :, 2].copy()# Gray scaleout = 0.2126 * r + 0.7152 * g + 0.0722 * bout = out.astype(np.uint8)return out# Otsu Binarizationdef otsu_binarization(img, th=128):max_sigma = 0max_t = 0# determine thresholdfor _t in range(1, 255):v0 = out[np.where(out < _t)]m0 = np.mean(v0) if len(v0) > 0 else 0.w0 = len(v0) / (H * W)v1 = out[np.where(out >= _t)]m1 = np.mean(v1) if len(v1) > 0 else 0.w1 = len(v1) / (H * W)sigma = w0 * w1 * ((m0 - m1) ** 2)if sigma > max_sigma:max_sigma = sigmamax_t = _t# Binarizationprint("threshold >>", max_t)th = max_tout[out < th] = 0out[out >= th] = 255return out# Read imageimg = cv2.imread("../paojie.jpg").astype(np.float32)H, W, C =img.shape# Grayscaleout = BGR2GRAY(img)# Otsu's binarizationout = otsu_binarization(out)# Save resultcv2.imwrite("out.jpg", out)cv2.imshow("result", out)cv2.waitKey(0)cv2.destroyAllWindows()

输出:

threshold >> 157

原图

大津二值化后图像


当然,opencv已经为我们实现了 Otsu's binarization 算法,我们可以直接调用它:

import cv2import numpy as npdef BGR2GRAY(img):b = img[:, :, 0].copy()g = img[:, :, 1].copy()r = img[:, :, 2].copy()# Gray scaleout = 0.2126 * r + 0.7152 * g + 0.0722 * bout = out.astype(np.uint8)return out# Read imageimg = cv2.imread("../paojie.jpg").astype(np.float32)# Grayscaleout = BGR2GRAY(img)# Otsu's binarization of Opencvret2,th2 = cv2.threshold(out,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)print("threshold >>", ret2)# Save resultcv2.imwrite("out.jpg", th2)cv2.imshow("result", th2)cv2.waitKey(0)cv2.destroyAllWindows()

结果类似

threshold >> 156.0

输出图像在此不予展示


参考:https://www.cnblogs.com/wojianxin/p/12493658.html

参考:https://www.jianshu.com/p/67522af22197

大津二值化算法 ( Otsu's binarization ) 自动确定二值化图像时的阈值相关推荐

  1. 二值化算法OTSU源码解析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 概述: 本文中小编将会跟大家分享一下OpenCV3.1.0中图像二 ...

  2. 基于阈值方法的大津法(OTSU算法)---图像分割

    基于阈值方法的大津法(OTSU算法)---图像分割 主要分为三部分去实现: 1.基本概念 大津法:属于阈值分割的范畴.阈值分割方法:利用图像中要提取的目标物体和背景在灰度上的差异,选择一个合适的阈值, ...

  3. otsu阈值分割算法原理_大津二值化算法OTSU的理解

    otsu 大津算法介绍: OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法. 利用阈值将原图像分成前景,背景两个图象. 前景:用n1,csum,m1来表示在当前阈值下的 ...

  4. 大津二值化算法(Otsu)

    1. 简介 我们在最灰度图做二值化时,需要设定一个分割阈值,我们并没有一个万能的阈值.而Otsu大津算法则是根据灰度图本身的信息,自动确定最佳阈值,实现以最佳阈值对灰度图进行二值化. 需要注意的是,大 ...

  5. otsu阈值分割算法原理_大津法---OTSU算法

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

  6. matlab确定灰度阈值T,matlab灰度图像二值化【灰度图像二值化算法研究】

    摘要: 在很多图像处理的过程中,经常需要对灰度图像进行二值化.本文对几种常用的图像二值化算法进行了阐述,并通过仿真,进行比较研究.根据实验结果,阐明了各种算法的优缺点. Abstract: The b ...

  7. 动态阈值--大津法理解

    原文在这儿:点击打开链接 简介: 大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图 ...

  8. 灰度图像彩色化算法研究

    灰度图像彩色化这个课题,一直以来都有不少相关人员在研究,也算是个热门话题,能否把一张灰度图按照我们的意愿,准确的彩色化,成为成败的关键.最近一直在研究这个灰度图像彩色化算法,看了不少论文,做了不少实验 ...

  9. matlab中值滤波法算法,基于MATLAB中值滤波算法的优化与实现

    总第238期2014年第4期 舰 船 电 子 工 程 Ship Electronic Engineering Vol.34No.437 基于 MATLAB中值滤波算法的优化与实现* 赵建春 刘力源 ( ...

最新文章

  1. 优达学城《DeepLearning》2-5:风格迁移
  2. 二叉树的几种递归和非递归式遍历:
  3. 软件原型设计工具Axure RP安装教程
  4. airpods pro连接安卓声音小_谁才是最好用的安卓无线耳机,三个方面对比AirPods与荣耀FlyPods...
  5. hashcode的理解
  6. 6的变换_电源学报 | 2020年第3期:quot;高性能双向直流变换技术及其应用quot;专辑征稿启事...
  7. solr mysql 分词_solr学习篇(二) solr 分词器篇
  8. VC++绘图时,利用双缓冲解决屏幕闪烁 转载
  9. SAP License:ERP系统license过期了怎么办?
  10. 从数据库中读取数据,创建XML文件并更新维护XML
  11. java uml模型图 常见图形含义_uml图六种箭头的含义
  12. 【Qt开发】QThread中的互斥、读写锁、信号量、条件变量
  13. 闪耀暖暖的3D建模真好吗?
  14. 实验4 基于预测分析表法的语法分析程序_第三十届 脑功能磁共振数据处理分析培训班...
  15. caffe-ristretto:可以定点的层目录
  16. 机器学习系列:误差分析(Bias and Variance)和模型调优
  17. 64位机器上的控件注册
  18. SQL Server 【附】创建商品管理数据库、学生选课数据库的SQL语句
  19. 向量机SVM原理详解
  20. BlackArch-Tools

热门文章

  1. 浅谈智能语音交互,看一个Windows语音识别程序
  2. 分享 | 开源的中文语音识别系统
  3. 在线教育行业APP高效开发解决方案
  4. nd4j 向量_ND4J的基本操作
  5. React-setState修改状态
  6. window10设置文件夹备注
  7. Adobe Premiere 基本使用
  8. 域控下更改服务器密码策略,修改windows-2008-域控服务器密码策略
  9. 2018青岛大学计算机考研真题,2018年青岛大学师范学院880数学基础综合[专业硕士]之数学分析考研基础五套测试题...
  10. git修改本地仓库和远程仓库名称