图像二值化算法

一、前言

图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。二值图像每个像素只有两种取值:要么纯黑,要么纯白。进行二值化有多种方式,其中最常用的就是采用阈值法(Thresholding)进行二值化。
根据阈值选取方式的不同,可以分为全局阈值和局部阈值。

在这里插入图片描述

二、全局阈值(Global Method)

全局阈值,指的是对整个图像中的每一个像素都选用相同的阈值。

1. OTSU算法

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

OTSU的基本思想是:首先将图像转换成灰度图像,按图像的灰度特性将图像分成背景(大于阈值)和目标(小于阈值)两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小,OTSU通过最大化类间方差来实现最佳阈值的选取。

应用: 是求图像全局阈值的最佳方法,应用不言而喻,适用于大部分需要求图像全局阈值的场合。

优点: 计算简单快速,不受图像亮度和对比度的影响。

缺点: 对图像噪声敏感;只能针对单一目标分割;当目标和背景大小比例悬殊、类间方差函数可能呈现双峰或者多峰,这个时候效果不好。

算法详解

扫描二维码关注公众号,回复: 16397924 查看本文章

三、局部阈值(Local Method)

局部阈值(Local Method)又称自适应阈值(Adaptive Thresholding)。
局部阈值法假定图像在一定区域内受到的光照比较接近。它用一个滑窗扫描图像,并取滑窗中心点亮度与滑窗内其他区域(称为邻域, neighborhood area)的亮度进行比较。如果中心点亮度高于邻域亮度,则将中心点标记为白色,否则标记为黑色。
局部阈值的应用非常广泛,特别是对白纸黑字的处理非常有效。光学字符识别(OCR)和二维码扫描的算法中,很多都用了局部阈值操作。

1. sauvola算法

假定当前像素点的坐标为(x,y),以该点为中心的领域为r*r,g(x,y)表示(x,y)处的灰度值,Sauvola算法的步骤为:

  1. 计算r*r邻域内的灰度均值m(x,y)与标准方差s(x,y)
    在这里插入图片描述
  2. 计算像素点(x,y)的阈值T(x,y)
    在这里插入图片描述

    在这里插入图片描述
    其中R为图像像素深度的一半,如8bit即256个灰度级别,而R=128

2. niblack算法

在这里插入图片描述

使用Niblack法的不足在于:

由于要利用域r×r模板遍历图像,导致边界区域(r-1)/2的像素范围内无法求取阈值;同时当进行图像遍历时,如果域r×r范围内都是背景,经NIBLACK计算后必有一部分被确定为目标,产生伪噪声。

总之,用Niblack方法进行图像分割时,选择的处理模板窗口R*R大小的选择很关键,选择的空间太小,则噪声抑制的效果不理想,目标主体不够突出,选择的空间太大,则目标的细节会被去除而丢失信息。

3. wolf-jolion算法(不了解)

在这里插入图片描述

注:

算法中的k为超参,取值在0和1之间。
这些自适应算法的阈值计算,都着重考虑了均值,然后考虑像素值分布的离散情况
k越大,像素值的波动(例如标准差、某些量的极值)的影响力越大(使得阈值上升的影响力)。例如Niblack和Sauvola算法,k代表着标准差的影响力

猜你喜欢

转载自blog.csdn.net/Mouer__/article/details/127211920