【图像处理】阈值与二值化

47 阅读3分钟

引言

在进行图像的预处理的过程中,为了尽可能多的减少无用像素,保留关键像素。常会使用二值化的方式“剥离”无用像素,使得图像仅保留“物象”与“背景”。图像的二值化,即设定一个灰度阈值,将低于和高于该阈值的像素分别设置为像素值的两个极端值。不难推断,阈值的选取,对于二值化的效果至关重要。那么我们该如何合适的阈值呢?


一、何为“合适”的阈值?

通常,二值化的目的,是为让“物象”和“背景”尽可能地区分开,并尽可能的消除其他的无用像素。一个很常见的例子是,纸质资料的二值化。

原始图像
二值化后

来源: Basel, Universitätsbibliothek, A II 1, f. 1v – Nicolaus de Lyra, Postilla super Genesim et Exodum https://www.e- codices.ch/de/list/one/ubb/A- II- 0001 (CC0)

在这个例子中,一个合适的阈值,可以很清晰的分割出背景与文字。换句话说,一个合适的阈值,能很好的分割出图像中的“有用”像素。从信息的角度上来说,一个合适的阈值,能够使得我们获得最多的“有用”信息。

二、“合适”阈值的量化分析

2.1 双峰直方图

常见的二值化任务,是将物象与背景进行分离,例如下图中的钱包二值化。

在这个分离任务中, 钱包被分为了一类,而背景则被分为了另一类。为了更清晰的了解这个图片中的明暗像素的数量特点,我们生成一下该图片像素在各个像素强度上的数量分布直方图。

image.png

横轴为像素强度(0~255),纵轴为该强度下的像素出现次数。不难看出,该图片有两个像素集中出现的强度区域,对应的就是组成背景的像素与组成钱包的像素。类似于这样,有两个明显峰值的直方图,我们称之为双峰直方图

image.png

image.png

在双峰直方图的二值化过程中,为了保障尽可能地保证物象与背景的信息表达,我们需要找到一个合适的像素强度,作为阈值的取值。那该如何计算这个取值呢?

2.2 采用高斯概率密度函数的直方图建模

为什么要采用高斯概率密度函数对直方图进行建模?

  • 图像前景、背景灰度受光照、传感器噪声影响,天然服从高斯分布
  • 用高斯 PDF 建模直方图双峰,能拟合出最优分割阈值
  • 相比固定阈值,可自适应光线变化,二值化更稳定、分割误差更小;
  • 是 Otsu、自适应阈值等图像分割算法的数学基础

对背景峰 + 前景(人)峰,各用一个高斯正态分布拟合:

p(x)=12πσe(xμ)22σ2p(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}

第一步:统计灰度直方图 遍历整幅灰度图,统计 0~255 每个灰度的像素数量,得到直方图数组 hist[256]

第二步:找直方图两个峰值 1. 遍历 hist,找到最高峰(背景均值 μ1\mu_1) 2. 在另一区域找次高峰(前景均值 μ2\mu_2

第三步:分别计算两个高斯的参数 对每个峰周围像素,计算:

  1. 均值 μ\mu :灰度重心
  2. 方差 σ2\sigma^2 :灰度离散程度
  3. 权重 ww :该峰像素占总像素比例 得到两组参数:(μ1,σ1,w1)(\mu_1,\sigma_1,w_1)(μ2,σ2,w2)(\mu_2,\sigma_2,w_2)

第四步:建立双峰高斯混合模型 整体直方图 = 两个高斯加权叠加:

p(x)=w1G(x,μ1,σ1)+w2G(x,μ2,σ2)p(x)=w_1\cdot G(x,\mu_1,\sigma_1)+w_2\cdot G(x,\mu_2,\sigma_2)

通过这一系列步骤,我们能够得到如下图的模型:

image.png

2.3 计算最优阈值

在图像灰度直方图满足物象、背景服从双峰高斯分布的建模前提下,将物象与背景分别抽象为两个独立的高斯概率密度函数。灰度值对应某一高斯分布的概率密度,表征该灰度隶属于对应类别的置信程度。

令两个高斯分布概率密度相等,求解方程得到灰度交点 T,该交点即为最优二值化分割阈值

从分类原理来看,交点处像素隶属于物象与背景的后验概率相等;以该灰度值作为分割界限,小于阈值判定为前景目标,大于阈值判定为背景区域。此分割方式可使物象误判为背景、背景误判为前景的两类错分像素总数最少,实现最小误差分割

即对下式进行求解:

p012πσ0e12(xμ0σ0)2=(1p0)12πσ1e12(xμ1σ1)2p_0 \cdot \frac{1}{\sqrt{2\pi}\sigma_0} e^{-\frac{1}{2}\left(\frac{x-\mu_0}{\sigma_0}\right)^2} = (1-p_0) \cdot \frac{1}{\sqrt{2\pi}\sigma_1} e^{-\frac{1}{2}\left(\frac{x-\mu_1}{\sigma_1}\right)^2}

即可计算出最优二值化分割阈值。


未完待续