本周我们将学习计算机基础的第二章,底层视觉相关知识——图像直方图与平面几何变换。本次内容将分为三个部分进行讲解,分别是图像直方图、图像直方图变换和图像几何变换。这部分内容主要和数学有很强的相关性:图像直方图部分主要介绍图像直方图的定义、性质以及计算步骤;直方图变换部分主要介绍变换的操作步骤,包括点操作、通过单调映射函数实现直方图变换,并举例说明具体的应用之一——直方图均衡化;图像几何变换部分包括平移变换、仿射变换、图像插值和图像扭曲等内容。
一、图像直方图
我们先来了解一下图像直方图的定义:
- 直方图是一种用于描述数据统计分布情况的表示方法
- 横坐标为统计样本,每个柱条(bin)的宽度代表一段取值范围,纵坐标为期对应的某个属性的度
- 通常,人们也会对直方图进行归一化,即直方图上每个属性的计数除以所有属性的计数之和
- 图像直方图描述了图像像素值的分布情况
图像直方图 定义为数值为 g 的像素值的个数,其统计意义为图像中随机一个像素它具有像素值 𝑔 的概率:
![](https://img-blog.csdnimg.cn/7335153a96bd42429939508af9e4fd8e.png)
图像直方图的计算步骤如下:
计算复杂性:和像素个数成正比,所以是 𝑂(𝑁)。
下面我们举例说明图像直方图的计算:
对于下面这个小猫的图像,我们先构造一个长度为256的向量 h,然后将其初始化为0。我们开始遍历该小猫图像的所有像素点,对于图像中的每一个像素(i,j),我们计算该像素对应的像素值,将该像素值在直方图中对应的横坐标位置,增加1个单位纵坐标。表示增加一个像素值为该数值的像素点个数。如像素(1,1),对应的像素值为100,即 g(1,1) = 100,对应的就是直方图的横坐标为100,那么我们在直方图中 x = 100 的位置,将 y+1。然后按照上述规则依次遍历所有的像素点,构建出像素点个数关于像素值的图像直方图。
图像直方图表现的是图像像素值的分布情况,描述出了图像的亮度、对比度等信息。
那么如何去描述直方图呢,我们可以用一下统计量来描述:
- 均值 (Mean):描述图像的亮度
- 方差 (Variance):描述图像的对比度
- 中值 (Median):描述图像的亮度,比均值更加鲁棒
前面我们讨论的都是灰度图像直方图,彩色图像直方图由彩色图像的每个通道计算一个图像直方图得到的,如下所示:
二、图像直方图变换
在学习了图像直方图的基本概念和性质之后,我们需要知道图像直方图在计算机视觉中是用来做什么的,那么下面我们就来了解一下图像直方图变换。
通过对直方图进行变换,我们就可以改变图像直方图的性质,如增加方差,增加对比度,直方图均衡化等。通过这些变换来改变图像的基本信息,来达到想要的效果。
首先,我们来学习图像直方图变换的操作。
点操作 (Point Operator)
- 仅基于输入的单点像素值进行映射,将其映射到一个新的像素值;
- 对某一点像素值的映射只与它本身有关,与其他位置的像素值无关。
通过上面基于线性函数的点变换操作,我们能达到如下效果:
(1)调整亮度
增大 k>0
减小 k<0
(2)调整对比度
增大 m>1
减小 0<m<1
(3)对比度翻转
亮变暗或暗变亮 m=-1
考虑到像素值范围是[0 ... 255],因此对输出还要进行截断,保持其范围,即进行阈值截断操作。
![](https://img-blog.csdnimg.cn/5f0153053cf04e16a82deb6ad6ad7d2f.png)
接下来,我们将学习通过单调映射函数变换图像直方图。下面是两类不同的图像直方图变换:
在掌握基本概念之后,我们来进行图像直方图变换的公式推导:
最后,让我们来看一个直方图变换的例子——直方图均衡化,
其中,N为图像的像素点总数,N = H(255)。
让我们来看看直方图均衡化的效果:
直方图均衡化的优点如下:
- 增加对比度
- 局部对比度低的区域获得了更大的对比度增强
- 使整幅图像的像素值尽量均匀的分布
三、图像几何变换
平移变换和仿射变换如下:
图像插值分为最近邻插值和双图像插值:
最后是图像扭曲,包括前向扭曲映射和反向扭曲映射:
总结
本文主要聚焦于底层视觉的基本知识,从数学的角度,给大家讲解了图像直方图、直方图变换和平面几何变换这三个部分。本文主要分析的是理论部分的内容,希望大家能去网站上查看相关的论文,去Github上找相关的项目学习。理论与实践结合,有更好的学习效果噢~