数字图像处理复习笔记

本文最后更新于:2022年7月21日 下午

数字图像处理复习笔记

[TOC]

第一章 绪论

数字图像是一个被采样和量化后的二维函数$\bold{f(x,y)}$,其中,$x,y,f$都是有限的和离散的。

数字图像也可看做是一个二维矩阵,行列划分后,每个小块区域叫做像素,每个像素一般由一个0到255的数值表示(灰度图)或者由多个0到255的数值表示(彩色图像)。

为什么是0~255?因为$(255)_{10}=(1111\ 1111)_2$

数字图像的来源

  1. 伽马射线成像:用于核医学和天文观测
  2. X射线成像:用于医学、工业、天文
  3. 紫外波段成像:荧光显微法
  4. 可见光成像:最常见的
  5. 红外波段成像:用于海岸线测绘、矿物测绘、土壤温度测绘、土壤含水量测绘
  6. 微波波段成像:雷达图像,可以不被云层阻挡
  7. 无线电波段成像:核磁共振成像MRI
  8. 声波成像:医学超声波
  9. 计算机生成图像

数字图像的特点是什么?

  1. 信息量大
  2. 像素之间相关性较大、冗余较多
  3. 对三维景物的理解,使用单个视角二维图像不够
  4. 二维图像的观察受人的主观因素较大

数字图像处理是什么?

  • 狭义上指图像->图像,即通过处理把一副图像变为修改后的另一幅图像。
  • 广义上也指图像->非图像,即理解分析一副数字图像。

第二章 数字图像基础

人类视觉感知

  • 虹膜:类似光圈,控制进光亮

  • 晶状体:改变焦距、聚焦图像

  • 视网膜:感受图像。有锥状体和杆状体两种光感受器。

    • 锥状体:数量较少,中间凹的中间部分,颜色敏感,亮视觉
    • 杆状体:数量较多,分布面积大,颜色不敏感,对低照明度敏感,分辨率低,负责察觉运动,暗视觉
  • 中间凹:成像芯片

    image-20211207112703026

graph LR
	A[光信号] --> B[晶状体透镜]
	B --> C[中间凹区域]
	C --> D[光接收器]
	D --> E[电脉冲信号]
	E --> F[大脑解码]

视觉特性

  • 亮度适应

    人能感受到的光亮度最大值与最小值之比为$10^{10}$,随着光线亮度增加,人眼感受到的主观亮度对数增加。

$$
主观亮度=K\cdot ln(客观亮度) + k_0
$$

图中Scotopic和Photopic两条曲线代表杆状体和锥状体的亮度感知曲线,而红点处是指在某一个亮度下人眼能够同时分辨的亮度范围(人眼动态范围)

  • 马赫带现象:边界处,主观亮度对比强。

  • 同时对比现象:对于相同的亮度,背景变化时主观亮度会变化。

图像采样与量化

图像的数字化就是图像的采样和量化,采样是把空间坐标离散化,量化是把灰度离散化。

采样值决定空间分辨率(1920*1080 etc),量化值决定灰度分辨率(L级 etc)。

细节丰富的图像应该细采样、粗量化,避免模糊;缓变的图像应该细量化、粗采样,避免假轮廓。

图像内插

  • 最近邻插值:选择最近邻点的灰度值
  • 双线性插值:找到最近的4个点,进行加权平均,$v(x,y)=ax+by+cxy+d$
  • 双三次内插:找到最近的16个点$\sum^3_i\sum^3_j a_{ij}x^iy^j$

概率方法

对比度越高,图像标准差越大。

像素空间基本关系

邻域:

  • 4邻域:$N_4(p)$上下左右
  • 4对角邻域:$N_D{(p)}$左上 左下 右上 右下
  • 8邻域:$N_8(p)$周围一圈

邻接性:若两个像素邻接,那么空间上满足4、8或D邻域;灰度上应该属于同一个灰度值集合。

  • 4邻接:若p、q位置如图且灰度相似
  • 8邻接:若p、r位置如图且灰度相似
  • m邻接:若q在$N_4(p)$中或者q在$N_d(p)$中,且绿色部分(4邻域)没有灰度相似的像素。

通路:从p到q的像素序列依次邻接,根据邻接类型定义4、8或m通路。

连通:定义一个集合S,若S中的p、q存在完全由S中的像素组成的通路,则p和q在S中连通。

连通分量:对于S中任意像素p,S中连通到p的像素集合叫做连通分量。

连通集:若S中仅有一个连通分量,则S叫做连通集。

距离:满足$D(p,q)\ge0,D(p,q)=D(q,p),D(p,z)\le D(p,q)+D(q,z)$的函数。

  1. 欧氏距离,圆形
  2. $D_4$距离,$D_4(p,q)=|x-s|+|y-t|$,菱形,城市街区距离
  3. $D_8$距离,$D_8(p,q)=max(|x-s|,|y-t|)$,方形,棋盘距离

第三章 灰度变换 空间滤波

这一章主要针对图像空间域进行操作,灰度变换就是对单个像素进行操作,而空间滤波就是针对一个邻域(常见方形)使用算子$T$进行卷积操作,算子$T$也可以叫做空间滤波器、核、模板、窗口。
$$
g(x,y)=T[f(x,y)]
$$
图像卷积运算

灰度变换

用$s=T(r)$表示用$T$处理原始像素$r$得到处理后像素$s$。

名称 公式 作用
图像反转 $s=L-1-r$ 黑白反转
对数变换 $s=c\ log(1+r)$ 拓展暗像素值,压缩亮像素值。常用来可视化傅里叶频谱。
伽马变换 $s=cr^\gamma$ 拓展暗像素值,压缩亮像素值。用于伽马校正,增强对比度、处理“冲淡”了的图像。
对比度拉伸 分段函数 手动指定曲线形状
灰度级分层 分段函数 手动指定某一范围灰度进行调整
比特平面分层 分段函数 把256级图像看做由8个1bit平面组成的图像。然后针对每个比特平面进行处理。低阶比特平面存储细节,而高阶存储整体。
直方图均衡、直方图匹配(规定化) 分段函数 在直方图的角度,均衡就是把直方图处理成近似横线,匹配就是把直方图处理成想要的形状。

反转变换与恒等变换与对数变换伽马变换

对比度拉伸灰度级分层

位平面分解

用于辅助决定量化位数是否充足、图像压缩、数字水印。

直方图均衡

针对比较难的直方图均衡进行计算方法介绍(不涉及原理公式推导)

  1. 计算直方图$f(n_k)$
  2. 计算灰度分布频率$p_r(k)=f(n_k)/N$。
  3. 计算累计灰度分布频率$g_k=\sum p_r(k_i)$。
  4. 计算均衡后图像直方图$round(g_k\cdot (L-1))$。L为灰度层数。四舍五入累计概率×灰度最大值。
  5. 根据计算出的均衡直方图,将原图灰度映射到新图

直方图规定化

通过一个指定的函数产生一个特定的直方图。根据这个直方图确定一个灰度级变换。由此产生的新图像的直方图符合指定的直方图,这样的方法称为直方图匹配或直方图规定化

局部直方图均衡化

在一个小邻域内做直方图均衡化。

直方图统计

统计图像全局均值$m_G$和方差$\sigma_G^2$,然后统计小领域的均值$m$和$\sigma^2$,根据这四个值来进行操作,比如:将均值较小的地方(暗区域)和方差比较低但并非完全平滑的地方(低对比度区域)提升亮度。
$$
g(x,y)=\begin{cases}E\cdot f(x,y), \quad m \le k_0m_G\ and\ k_1\sigma_G \le \sigma \le k_2\sigma_G \ f(x,y),\qquad otherwise\end{cases}
$$

空间滤波

卷积操作$g(x,y)=\sum^a_{s=-a}\sum^b_{s=-b}w(s,t)f(x+s,y+t)$。

名称 模版 作用
线性平滑 $\frac{1}{9} \cdot \ \begin{matrix} 1&1&1\1&1&1\1&1&1\ \end{matrix}$ 平滑
高斯线性平滑 $\frac{1}{16} \cdot \ \begin{matrix} 1&2&1\2&4&2\1&2&1\ \end{matrix}$ 加权平均,平滑
统计排序(非线性)平滑 取中值 去掉椒盐噪声效果好(但是可能改变图像的性质,一般不用于医学图像处理
拉普拉斯锐化 $\begin{matrix} 0&1&0\1&-4&1\0&1&0\ \end{matrix}$ 微分算子,锐化边缘(需要加原图像
$\begin{matrix} 1&1&1\1&-8&1\1&1&1\ \end{matrix}$ 加对角线的版本
非锐化掩蔽、高提升滤波 印刷和出版业常用
Sobel锐化 $\begin{matrix} -1&-2&-1\0&0&0\1&2&1\ \end{matrix}$ x方向的一阶微分(需要加原图像
$\begin{matrix} -1&0&1\-2&0&2\-1&0&1\ \end{matrix}$ y方向的版本
$\begin{matrix} -2&-1&0\-1&0&1\0&1&2\ \end{matrix}$ 斜着的版本,朝着另一个方向斜也可以

拉普拉斯锐化

特点是模板所有数字和是0,这样是为了在平滑区域不改变。假如某个3x3区域全是1,那么计算之后的微分就是0。

拉普拉斯锐化后的结果是微分,需要和原图像相加或者相减(取决于中心是正数还是负数)。

拉普拉斯加上对角线是为了保证旋转不变性。

Sobel锐化

同样,所有数字和是0,使用的是一阶微分。0线的方向就是锐化的方向。权重2是为了平滑图像。

(注意下面和右边是正数)

一般使用x方向和y方向的绝对值之和作为梯度,此时非线性。

非锐化屏蔽

如图,原始信号模糊之后,再减去模糊信号能获得钝化模板。就是原始图像减去模糊图像得到被模糊掉的信号,然后把这个信号乘常数加回到原信号。

第四章 频率域滤波

就是通过傅里叶变换把图像从空域变换到频域进行处理。
$$
\bold{IDFT}(H(u,v) \cdot \bold{DFT}(f(x,y)))
$$
频域和时域通过卷积操作相通,但是根据信号与系统的规律,我们之前用的有限的时域卷积核对应着无限大的频域,而这一章从频域的角度使用有限的频域卷积核,对应着无限大的时域卷积核。

低通滤波器用来平滑图像,高通滤波器用来锐化图像。

名称 公式($D_0$是截止频率) 作用
理想低通滤波 ILPF $H(u,v)=\begin{cases}1, D(u,v)\le D_0 \ 0, D(u,v)> D_0 \end{cases}$ 强行截断频域的高频信号,会产生振铃效应
布特沃斯低通BLPF $H(u,v)=\frac{1}{1+[D(u,v)/D_0]^{2n}}$ n是阶数,越高越快从1到0
高斯低通滤波GLPF $H(u,v)=exp(-\frac{D^2(u,v)}{2D_0^2})$
理想高通滤波 IHPF $H(u,v)=\begin{cases}0, D(u,v)\le D_0 \ 1, D(u,v)> D_0 \end{cases}$ $1-低通$
布特沃斯高通BHPF $H(u,v)=\frac{1}{1+[D_0/D(u,v)]^{2n}}$ $1-低通$
高斯高通滤波GHPF $H(u,v)=1 - exp(-\frac{D^2(u,v)}{2D_0^2})$ $1-低通$
同态滤波 $H(u,v)=(\gamma_H-\gamma_L)[1 - exp(-c\frac{D^2(u,v)}{2D_0^2})]+\gamma_L$ 本来GHPF是0->1,然后压缩到$\gamma_H-\gamma_L$然后再上移。通过c来控制锐利程度。
带阻滤波器 用$\frac{DW}{D^2-D_0^2}$代替$\frac{D_0}{D}$,高斯exp括号内的2忽略。 能够有效去除周期噪声
带通滤波器 1-带阻滤波器

高频强调滤波器

$$
g(x,y)=\bold{IDFT}{[k_1+k_2H_{hp}(u,v)]F(u,v)}
$$

$k_2$控制高频贡献,$k_1$控制原点偏移量,使零频率不被过滤。

同态滤波

同态滤波的思想就是把图像的照射分量反射分量分开处理。照射分量就是光照在某个物体上的强度,而反射分量更接近与反射系数,值域为$[0,1]$,表示光在某个物体上的反射强度。

“同态”指的是特殊的映射,比如$f(x)=e^x$,有$f(a+b)=f(a)\times f(b)$,把原本的加法映射成乘法。

  1. 图像建模为$f(x,y)=i_{照射}(x,y)r_{反射}(x,y)$,使用对数操作转换成相加$ln\ f(x,y)=ln\ i(x,y)+ln\ r(x,y)$,这一步就是“同态”的关键。

  2. 然后就可以用傅里叶变换了$\bold{FT}[ln\ f(x,y)]=\bold{FT}[ln\ i(x,y)]+\bold{FT}[ln\ r(x,y)]$。把上式记作$Z(u,v)=F_i(u,v)+F_r(u,v)$,则用可以用滤波器进行处理$H(u,v)Z(u,v)=H(u,v)F_i(u,v)+H(u,v)F_r(u,v)$。

  3. 对于$F_i(u,v)$和$F_r(u,v)$,低频成分通常与照射光有关,而高频成分与反射相联系,所以使用修改过后的高斯高通滤波器作为$H(u,v)$。之后就傅里叶反变换回去$\bold{IFT}[H\cdot Z]=\bold{IFT}[H\cdot F_i]+\bold{IFT}[H\cdot F_r]$。再通过取指数把加法转换回乘法。

第五章 图像复原与重建

$g(x,y)$是退化图像。

图像复原与图像增强的区别

图像复原是客观过程,识图恢复图像原来的面貌,有客观的测量方法;而图像增强使从主观视觉角度改善图像质量,为了人类视觉而进行优化。

图像噪声是什么?

图像噪声指造成图像失真、质量下降的图像信号,主要来源于图像的获取和传输过程。噪声根据统计特性可以分为周期噪声随机噪声,还可能有空间特性(相关性)或者频率特性。随机噪声可以用概率密度函数(PDF)来建模,有高斯噪声、瑞利噪声、伽马噪声等。脉冲噪声(椒盐噪声)指的是数字化最大值或最小值的噪声。

名称 模版 / 公式 作用
算术均值滤波器 $\frac{1}{9} \cdot \ \begin{matrix} 1&1&1\1&1&1\1&1&1\ \end{matrix}$ 平滑图像来降低噪声,但是不抗椒盐噪声
几何均值滤波器 $[\prod g(x,y)]^{\frac{1}{mn}}$或者$exp(\frac{1}{9}log\ a + \frac{1}{9}log\ b + …)$ 丢失的细节更少,但是不抗椒盐噪声
谐波均值滤波器 $mn\cdot [\sum1/g(x,y)]^{-1}$ 处理高斯噪声和盐噪声,不抗椒噪声
逆谐波均值滤波器 $\frac{\sum g(s,t)^{Q+1}}{\sum g(s,t)^{Q}}$ $Q>0$抗椒,$Q<0$抗盐,$Q=0$就是算术均值,$Q=-1$就是谐波均值。
中值滤波器 找中值 椒盐噪声
最大值/最小值/中点滤波器 找最大值、最小值、最大值与最小值的平均 前两者只抗椒盐噪声中的一种,而后者处理高斯和均匀噪声
修正后阿尔法均值滤波器 把最大最小值去掉再求平均,去掉的值数量为$d$ 高斯噪声和椒盐噪声混合
自适应局部降低噪声滤波器 $g(x,y)-\frac{\sigma^2_\eta}{\sigma^2_L}[g(x,y)-m_L]$ $\sigma^2_\eta$是噪声方差,需要估计。剩下两个是局部的方差和均值。需要避免第二项是负值。
自适应中值滤波器 见下 能够比传统中值滤波器处理概率更大的椒盐噪声
陷波滤波器 见下 最有用的选择性滤波器

自适应局部降噪滤波器

噪声方差为0的时候返回原图像,噪声方差>=图像方差时取算术均值。

自适应中值滤波器

  1. 选择窗口$S_{xy}$,找到中值$z_{med}$,假如中值不符合$z_{min}<z_{med}<z_{max}$,则扩大窗口再选中值,直到窗口大小到达规定的$S_{max}$。
  2. 找到中值之后,判断窗口中心点符不符合$z_{min}<z_{xy}<z_{max}$,假如符合就不变,不符合就改成之前找到的中值。

假如噪声密度比较小,那么窗口就不会开太大,能够保留细节。

陷波滤波器

陷波滤波器必须是对称的。特殊的,位于原点处时是低通/高通滤波器。

退化模型

假设退化模型是线性不变的,那么受损图像,从时域可以看作是$g(x,y)=h(x,y)*f(x,y)+\eta(x,y)$,从频域可以看作是$G(u,v)=H(u,v)F(u,v)+N(u,v)$

进行图像复原的关键是获得$H,\eta$。获取$H$可以基于实验法、观察法、数学建模法。

逆滤波

获取之后,假设$\eta=0$,那么做逆滤波$F(u,v)=\frac{G(u,v)}{H(u,v)}, \hat f(x,y)=\bold {IDFT}(F(u,v))$。但是当$H(u,v)$很小时,$F$会很大,逆滤波复原会不稳定。

维纳滤波

目标:寻找一个滤波器使得滤波后图像与原图像的MSE最小。维纳滤波器假定图像与噪声均为平稳随机过程
$$
\hat F(u,v)=\frac{|H|^2}{|H|^2+\frac{S_\eta}{S_f}}\cdot \frac{G(u,v)}{H}
$$
其中$S_{\eta}$是噪声功率谱,$S_f$是原始图像功率谱,$\frac{S_\eta}{S_f}$常用常数代替。

求二维傅里叶幅度

第六章 彩色图像处理

彩色模型

RGB

从光的三原色得出了RGB色彩模式(加色模式)

CMY(K)

从原色相加的二次色得出了CMY(K)色彩模式(减色模式)

HSI

但是人最直观的彩色模型是HSI(色调、饱和度、亮度),通常所说的色度是色调和饱和度的统称。HSI指的是Hue, Saturation, Intensity,其中I就是RGB的平均值。

YUV

用于PAL制式的彩色电视信号传输,$Y$是RGB的加权平均数,$U=B-Y, V=R-Y$。

YCbCr

JPEG使用的彩色空间,Y和YUV一样,而Cb是U乘一个常数,Cr是V乘一个常数。

伪彩色

由于人眼对彩色的识别度更高,所以常将黑白照片根据灰度级人工分层成不同的颜色。

全彩色图像处理

  1. 可以分别处理每一个分量
  2. 也可以统一处理是三个分量
  3. 也可以只处理一个分量(比如调整亮度分量,做直方图均衡;或者把饱和度分量提高,增强对比度)

第九章 形态学滤波

图像的形态学指的是对图像形状和结构的分析及处理,本章主要讨论二值图像。

形态学滤波定义一个类似卷积核的领域,叫做结构元素Structure Element,可以是任意尺寸、任意形状,但是实际中一般填充为矩形。

逻辑运算

击中hit、击不中miss、包含fit

腐蚀erosion、膨胀dilation

腐蚀能够将图像的边界向内缩,膨胀则向外张

腐蚀:当结构元素(se)包含(fit)于二值图像$f(x,y)$时,中心点为1.(即进行操作)。可以用$A\ominus B$表示。

膨胀:当结构元素(se)击中(hit)于二值图像$f(x,y)$时,中心点为1.(即进行操作)。可以用$A\oplus B$表示。

腐蚀和膨胀不是一对可逆操作,但有对偶性。

开运算、闭运算

开运算即先腐蚀后膨胀,用$A\circ B$表示。作用为区分开物体、消除细突出物、降低噪声、平滑轮廓。

闭运算即先膨胀后腐蚀,用$A\bullet B$表示。作用为消除小孔洞、填补断裂。

开运算

闭运算

应用

边界提取

先腐蚀,然后减去腐蚀。
$$
A-(A\ominus se)
$$

孔洞填充

  1. 先选择一个在孔洞内的点集合$X_{0}$。
  2. $X_k=(X_{k-1}\oplus se) \cap \overline A$。
  3. 假如$X_k=X_{k-1}$,算法结束,取$X_k \cup A$作为结果。

即对选取的点进行条件膨胀,用图像$A$取反来限制。

提取连通分量

  1. 先选择一个在所需连通分量里的点集合$X_0$
  2. $X_k=(X_{k-1}\oplus se) \cap A$。
  3. 假如$X_k=X_{k-1}$,算法结束,取$X_k$作为结果。

和孔洞填充很像,直接用图像$A$来限制。

第十章 图像分割

图像分隔技术就是把图像分隔成若干个不同的区域。一般基于区域之间亮度值的不连续性和区域内的相似性。

点的检测

模板和要为0,从而在平滑区域响应为0。并且设置阈值可以避免检测过于灵敏。

线的检测

类似的检测方法,模板系数和要为0

边缘检测

边缘可能是对象的分界处、也可能是对象内部不同材料的分界处。在边缘上有边缘法线、边缘方向如图。而边缘附近的灰度分布有下面三种。

边缘检测的步骤:平滑降噪 -> 边缘点检测 -> 边缘定位

  • 平滑降噪:基于导数计算,所以容易受到噪声影响,但是平滑的同时也导致边缘强度的损失。
  • 边缘点检测:微分算子能够突出边缘,然后通过设置阈值来提取边缘点。
  • 边缘定位:精确确定边缘的位置。从候选点集中选择真实成员。

Sobel梯度法

Sobel既能提取x和y方向的微分,还有一定的平滑效果。提取出梯度之后,设置一个阈值,大于threshold的就设置为1,其余为0.

二阶导数 LoG法

二阶导数有以下优势:① 可以利用零交叉性质定位边缘,还可以确定一个像素是在暗的一边还是亮的一边。

边缘检测一般不用拉普拉斯算子的原始形式,因为①二阶导数对噪声更加敏感了;②对于一个边缘会产生两个幅值;③不能检测边缘方向。

所以一般用LoG方法

  1. 用高斯滤波器进行平滑降噪
  2. 用二阶拉普拉斯检测边缘点
  3. 根据二阶导数零交叉点定位边缘

所以LoG算子定义为高斯平滑的二阶导数:
$$
G_\sigma(x,y)=\frac{1}{2\pi\sigma^2}\cdot exp(-\frac{x^2+y^2}{2\sigma^2}) \ \nabla^2G_\sigma(x,y)=\frac{1}{2\pi\sigma^4}(\frac{x^2+y^2}{\sigma^2}-2)\cdot exp(-\frac{x^2+y^2}{2\sigma^2})
$$
然后寻找零交叉点:以p为中心的3x3邻域,比较左/右、上/下和两个对角的值,如果符号不一样且差值超过了一个阈值,那么这个点就是零交叉点。

Canny法

没说很详细,不考吧大概

  1. 用高斯滤波器进行平滑降噪
  2. 用一阶偏导的有限差分计算梯度幅值和方向
  3. 对梯度幅值进行非极大值抑制
  4. 双阈值算法和连接分析来检测并连接边缘

直方图阈值分割法

通过设置一个阈值,根据同一个区域的相似性进行分割。最简单的就是通过直方图找到阈值,但是会受到噪音的干扰。可以选取谷底,也可以选取两个峰值之间某个固定位置。

Isodata门限算法

  1. 选取门限的初值$T_0$
  2. 用$T_i$分隔图像,分成$G_1$和$G_2$两类像素
  3. 计算$G_1$和$G_2$的平均灰度$\mu_1$和$\mu_2$
  4. 令新门限$T_{i+1}=\frac{1}{2}(\mu_1+\mu_2)$
  5. 重复2-4,直至$\Delta T=0$

Otsu最佳全局阈值法

  1. 计算输入图像的归一化直方图

  2. 对于阈值$k=0,1,…,L-1$计算像素被分类到$[0,k]$的概率$P_1(k)$

  3. 对于阈值$k=0,1,…,L-1$计算像素被分类到$[0,k]$的平均灰度$m(k)=\sum^{k}_{i=0}ip_i$

  4. 计算整个图像的平均灰度$m_G=m(L-1)$

  5. 对于阈值$k=0,1,…,L-1$计算类间方差
    $$
    \sigma^2_B(k)=\frac{[m_GP_1(k)-m(k)]^2}{P_1(k)[1-P_1(k)]}
    $$
    其实类间方差是由$\sigma_B^2=P_1(m_1-m_G)^2+P_2(m_2-m_G)^2$的化简得来的。

  6. 让$\sigma_B^2(k)$最大的$k^*$值就是$Otsu$阈值。如果不唯一,则取每个$k^*$的平均。

可变阈值处理

把图像分成许多小块,然后分别用不同的门限进行分割。