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

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

posted on 2019-05-19 09:59  一杯明月  阅读(815)  评论(0编辑  收藏  举报