灰度直方图与二值化
1、灰度直方图
灰度直方图是一个统计图表,描绘了图像中每个灰度级出现的像素数量(或频率)。通过观察直方图的形状和分布,我们可以快速判断图像的 ++对比度、亮度和曝光情况++,从而为后续的图像增强操作提供依据。
图像与灰度直方图间是多对一的关系。一个直方图可能对应多个不同的图像。
|----------------|-------------|--------|
| 直方图分布特征 | 图像 | 应采取的措施 |
| 分布狭窄且集中 | 对比度低(灰) | 对比度扩展 |
| 集中在左侧(低灰度) | 图像偏暗 | 提升亮度 |
| 集中在右侧 | 图像偏亮 | 降低亮度 |
通过直方图我们可以了解到图像中每个灰度级分别有多少像素。其X、Y坐标代表为:
- 横轴(x轴):灰度级。
- 纵轴(y轴):该灰度级出现的像素数量。
直方图的面积表示什么?
直方图的面积就是每个灰度级的像素数量相加,得到的就为图像的总像素数量。
因此,直方图面积 = 图像中像素的总个数。
对横轴积分可以得到面积。
平均灰度与标准差
直方图的平均灰度(
),代表图像的平均亮度。平均灰度越大,图像越亮;反之越暗。
而标准差(
),代表灰度值的离散程度。标准差越大,灰度分布越分散,图像对比度越高。
直方图是否与像素的位置有关?
直方图是全局统计量 。它只关心像素具有某一灰度值,与这些像素在图像中的具体位置无关。
尽管直方图是强大的分析工具,但它缺乏空间信息,这意味着它不能描述图像中的物体、纹理或边缘结构。
不同的图像是否可能存在相同的直方图?
存在。只要两幅图像的亮度值的数量分布相同,它们的直方图就完全相同,即使这两幅图像在视觉上看起来完全不同。
2、二值化
二值化就是将图像中的所有像素值转换为两个值,通常为黑白两色。根据灰度值,将每个像素判定为前景(白)和背景(黑)。
在转换像素到两个值时,我们需要设定一个阈值T,。例如,在8位图像中,当像素的灰度值 >= T时,该像素 = 255,为白;当灰度值 <= T时,该像素 = 0,为黑。
选取阈值
选取全局阈值时会考虑选择最优二值化阈值T*;是在进行二值化处理时,能将图像中的前景目标和背景分得最清楚、最准确的那个灰度值。所以有许多不同的算法进行对阈值的选取。
【补充】灰度直方图的双峰性:
图像的直方图会出现两个峰值,第一个峰值通常位于地灰度值区域,可能对应图像中的暗色区域;第二个通常位于高灰度值区域,可能对应亮色区域。而两个峰之间的谷底就代表了前景和背景之间的边界或过渡区域的灰度值。
最优阈值常常去双峰之间的谷底。
1、全局固定阈值
直接手动选取阈值,利于在8位图中选择(T = 128)。适用于光照均匀、前景和背景对比强烈的图像。
2、大津法选取全局阈值(Otsu)【重要】
Otsu 法是二值化中自动选取最佳全局阈值的经典方法;它假设图像的灰度直方图由前景和背景(双峰)两类像素组成。它会遍历所有可能的阈值 ,并计算一个统计量。
在该方法中,最优阈值T是通过计算得出的,使得前景和背景的类间方差最大时(或类内方差最小化)的那个灰度值。
3、熵法(Entropy)
通过最大化前景和背景的信息熵(信息量)来确定最优阈值。
4、Isodata
一种迭代聚类方法,通过迭代计算和调整前景/背景的平均值来确定阈值,是自适应阈值选择的代表之一。
3、直方图均衡化(HE)
直方图均衡化是一种自动增强图像对比度 的技术。它的原理是生成一个转换函数,将原始图像的像素灰度级映射到新的灰度级,使得结果图像的直方图尽可能地平坦(均匀)。
即直方图均衡化能使灰度更均匀,对比度增强。
HE提高对比度的方法是利用直方图的CDF(累积分布函数)将图像非线性拉伸;它能够将像素数量多的灰度级拉的更开,从而增强对比度。
直方图的均衡化可以提高图像的幅度分辨率。
4、直方图规定化
直方图规定化是将图像的直方图转换为一个预先定义的目标直方图。可以避免均衡化直方图带来的过度拉伸对比度问题。
简单来说,直方图均衡化是让直方图变均匀;而规定化是让直方图变成我们想要的任意形状。直方图均衡化和规定化都属于直方图变换。
为了将一幅图像的灰度分布变换成与另一幅图像或某个指定分布相匹配;直方图规定化中有两种灰度映射 的方法来处理;即SML 和GML。
(1)单映射规则(SML)
指在直方图规定化中使用的一种正向的、直接的单值映射。它是一种 一对一映射 ,计算简单直观。
(2)组映射规则(GML)
是一种 多对一映射 ,将输入图像的一段连续灰度级映射到参考图像的一个灰度级。在理论上来看,GML与SML相比更优;即GML为最优解。
(3)误差
一般情况下GML的误差比SML更小,但在某些特殊情况下二者的映射误差可能相同。所以,在误差上: GML <= SML。
这里我们说一个特殊情况,当原始直方图和规范化直方图中的灰度级数相等时(M = N),SML的误差一定等于GML。当M>N时,SML的误差一定更大。
图像运算
1、基本变换
由于像素的表示为(x,y),对图像的变换可以简单理解为下面的方式:
|----|-----------------------------------------------|
| 平移 | (x',y')= ( x +/- t , y +/- t) |
| 旋转 | x' = x*cosθ - y*sinθ;y' = x*sinθ + y*cosθ |
| 缩放 | (x', y') = (s_x * x, s_y * y) |
| 翻转 | 水平镜像 x' = -x;垂直镜像 y' = -y |
2、算数与逻辑运算
(1)算数运算(结果通常为灰度值)
加法:C(x,y) = A(x,y) + B(x,y) 。加法一般用于图像平均降噪,图像融合。
减法:C(x,y) = |A(x,y) - B(x,y)|。取绝对值。一般用于运动检测,背景减除,差异分析等等。
乘法/除法:常用于局部增强或校正(如遮罩操作、阴影校正)。
(2)逻辑运算(通常用于二值图像或位平面)
- 与(AND):提取交集。应用:掩模操作。
- 或(OR):合并区域。
- 非(NOT):取反,获得补集。
- 异或(XOR):找出差异区域。
2、像素间的基本关系与定义
(1)领域与邻接
- 4-邻域(N₄(p)):像素 p 的上、下、左、右4个像素。
- 对角邻域(N_D(p)):像素 p 的4个对角像素。
- 8-邻域(N₈(p)) :
N₄(p) ∪ N_D(p),即周围的8个像素。
如下图所示:

若两个像素在空间上相邻,那么它们按照对应的规则可以达成邻接。
- 4-邻接:基于4-邻域的邻接。
- 8-邻接:基于8-邻域的邻接。
- m-邻接(混合邻接) :为了解决8-邻接可能引起的歧义(如对角连接穿过缝隙)而定义。如果 q 在 p 的4-邻域内,或者 q 在 p 的对角邻域内且两者的4-邻域没有交集,则 p 和 q 是 m-邻接的。
关于m(混合)邻接:判断像素是否属于m邻接,我们要定义一个关注的像素值的集合V。什么意思呢?就比如在二值图像中,我们选取V = {1};那么值为1的像素就处于集合V中。当两个像素(p、q)处于4-邻域内,或者p与q处于对角线并且其4-邻域内没有属于集合V的像素才满足m。比如下面的例子:


左图中因为p和q的4-邻域内像素为1,属于V,因此不满足m邻接。而右图不属于V,所以满足m。
(2)像素间距离
欧几里得距离(欧 式距离):即两点间直线距离;计算方式为我们熟悉的两点相减后开平方。

城区距离 :这种距离只允许水平或垂直移动,对应于我们之前讨论的 4-邻接。它衡量的是从p到q所需的最少步数(如果步长为 1)。

棋盘距离:这种距离允许水平、垂直和对角线移动,对应于我们之前讨论的 8-邻接。它代表了从 p 到 q 所需的最少步数(如果步长为 1)。

示意图如下:

关于模版运算卷积和滤波我们在下次文章再做讲解。