zoukankan      html  css  js  c++  java
  • OTSU大津法对图像二值化

    OTSU算法

    (1)原理:

    对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于背景的像素个数占整幅图像像素个数的比例记为ω0,其平均灰度μ0;前景像素个数占整幅图像像素个数的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。

    可以将图像理解成255个图层,每一层分布了不同的像素,这些像素垂直叠加合成了一张完整的灰度图。

    假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数(即背景像素个数)记作N0,像素灰度大于阈值T的像素个数(即前景像素个数)记作N1,则有:
          ω0=N0/ M×N        (1)
          ω1=N1/ M×N        (2)
          N0+N1=M×N        (3)
          ω0+ω1=1      (4)
          μ=ω0*μ0+ω1*μ1   (5)

    公式(5)的推导:


    类间方差公式: g=ω0(μ0-μ)^2+ω1(μ1-μ)^2     (6)    (数学理论依据?)

    ω0相当于前景像素数所占权重

    ω1相当于背景像素数所占权重

    公式(6)的化简:


    将式(5)代入式(6),得到等价公式:
          g=ω0ω1(μ0-μ1)^2         (7)

    μ0是前景像素灰度平均值(第1类)。

    μ1是背景像素灰度平均值(第2类)。

    ω0相当于前景像素数所占权重

    ω1相当于背景像素数所占权重

    公式(7)就是类间方差(inter-class variance)。
    采用遍历的方法得到使类间方差g取最大值的阈值T,即为所求。

    将公式(5)带入(6)即可得到公式(7)。

    (2)matlab函数:

    matlab中函数graythresh既是使用大津法求得分割阈值T。用法如下:

          T = graythresh(img);

          BW = im2bw(img,T);

    参考链接:https://zhuanlan.zhihu.com/p/34112446

    另一个参考链接:https://blog.csdn.net/liyuanbhu/article/details/49387483

    方差越大,相关性越低,黑白越分明.

  • 相关阅读:
    Kafka常用操作备忘
    Spark执行流程(转)
    Spark性能优化总结
    Kafka学习笔记
    vue-简单例子初始化
    解析字符串模板函数
    js的apply 和 call区别
    水平垂直居中
    IE8 div旋转 Matrix,模拟轮播前后翻页按钮
    jsp 自定义标签-SimpleTagSupport 使用笔记
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/10888246.html
Copyright © 2011-2022 走看看