【笔记】数字图像处理--图像增强(空间域+频率域)
前言 本篇文章仅作为博主学习笔记使用,各位小伙伴可以简单浏览大概了解一下图像增强方面的知识呀????,可能不是特别全面呦~Background 图像增强(Image Enhancement)是一种基本的图像处理技术,主要是为了改善图像的质量以及增强感兴趣部分,改善图像的视觉效果或使图像变得更利于计算机处理。 如曝光不足或过度的图像需要增强处理; 图像Fourier 频谱看不清,需要增强处理
前言
本篇文章仅作为博主学习笔记使用,各位小伙伴可以简单浏览大概了解一下图像增强方面的知识呀👀,可能不是特别全面呦~ 大家可以在评论区补充呀~
因为图片多一些会更生动一些,所以博主贴了许多图片和 ppt 呦~
Background
图像增强(Image Enhancement)是一种基本的图像处理技术,主要是为了改善图像的质量以及增强感兴趣部分,改善图像的视觉效果或使图像变得更利于计算机处理。
如曝光不足或过度的图像需要增强处理;
图像Fourier 频谱看不清,需要增强处理;
图像有雾,需要增强处理;
车牌识别预处理–车牌图像需要增强等。
相关的图像增强技术按照作用域可分为两类:基于空间域的处理和基于频率域的处理。空域处理是在像素二维平面上,直接对像素值进行处理(灰度变换);频域处理是对图像做 Fourier 变换,在变换域进行处理,再做逆变换得到增强图像。
图像增强的评价标准主要是人的视觉主观性。
图像空域增强
1. 图像灰度变换
灰度变换:基于点操作,将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值。也就是将一个灰度区间映射到另一个灰度区间的变换。目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。灰度变换函数公式如下:
g
(
x
,
y
)
=
T
[
f
(
x
,
y
)
]
g(x,y)=T[f(x,y)]
g(x,y)=T[f(x,y)] 其中,
f
(
x
,
y
)
f (x,y)
f(x,y)是原图像,
g
(
x
,
y
)
g(x,y)
g(x,y)是处理后的图像,T是作用于 f 的操作,定义在(x,y)的邻域。简化形式为
S
=
T
(
r
)
S=T(r)
S=T(r)。变换函数不同将导致不同的输出,其实现的变换效果也不一样。如下图所示为不同的灰度变换函数的作用结果。
1.1 线性灰度变换
1.1.1 基本线性变换
基本线性变换示意图如下。通过基本线性变换函数将输入图像f(x,y)转变为g(x,y)。定义式为
g
(
x
,
y
)
=
k
∗
f
(
x
,
y
)
g(x,y)=k*f(x,y)
g(x,y)=k∗f(x,y)。根据常数 k 的不同取值可以实现将图像灰度取值范围进行拉伸或者压缩,使得图像亮暗发生变化。(下面图中的 a
即为上式 k)
1.1.2 分段线性变换
分段线性灰度变换是将输入图像 f(x,y) 的灰度级区间分成两段或多段分别作线性灰度级变换,以获得增强图像 g(x,y)。典型的三段线性灰度级变换如下所示。
其中,参数a、b、c、d为用于确定三段线段斜率的常数,取值可根据具体变换需求来灵活设定。
1.2 非线性灰度变换
1.2.1 对数变换
基于对数变换的非线性灰度级变换表达式为:
s
=
c
∗
l
o
g
(
1
+
r
)
s = c * log(1+ r)
s=c∗log(1+r)。c 是尺度比例常数,r ≥ 0,r 取值为 r+1 是为了避免对 0 求对数,确保 log(1+ r) ≥ 0。
对数变换函数如下图所示,当希望对图像的低灰度区作较大拉伸、高灰度区作压缩时,可采用这种变换。它能使图像的灰度分布与人的视觉特性相匹配。对数变换一般适用于处理过暗图像。
1.2.2 指数变换
基于指数变换的非线性灰度级变换如下所示。
g
(
i
,
j
)
=
b
c
[
f
(
i
,
j
)
−
a
]
−
1
g(i,j)=b^{c[f(i,j)-a]}-1
g(i,j)=bc[f(i,j)−a]−1
其中,a 用于决定指数变换函数曲线的起始位置,b 是底数,c 用于决定指数变换曲线的陡度。
指数变换函数如下图所示,当希望对图像的低灰度区压缩、高灰度区作较大拉伸时,可采用这种变换。对数变换一般适用于处理过亮图像。
1.2.3 幂次变换
幂次变换常用语图像获取、打印和显示的各种装置设备的伽马校正中,这些装置设备的光电转换特性都是非线性的,是根据幂次规律产生响应的。幂次变换的指数值就是伽马值,因此幂次变换又称为伽马变换。
2. 直方图修正
在数字图像处理中,灰度直方图是最简单和常用的工具。
2.1 灰度直方图的定义
灰度直方图是灰度级的函数,表示的是数字图像中每一灰度与其出现频数(呈现该灰度的像素数目)间的统计关系。通常用横坐标表示灰度级,纵坐标表示频数或相对频数(呈现该灰度级的像素出现的概率)。灰度直方图的定义如下所示。
p
(
r
k
)
=
n
k
N
p(r_{k})=\frac{n_{k}}{N}
p(rk)=Nnk
其中,N 是一幅数字图像的像素总数,nk 是图像中灰度级为k的像素数,rk是第 k 个灰度级,k = 0,1,2,…,L-1。示例如下。
2.2 灰度直方图的性质
一幅图像的灰度直方图通常具有如下性质:
(1)直方图不具有空间特性。直方图描述了每个灰度级具有的像索的个数,但不能反映图像像素空间位置信息,即不能为这些像素在图像中的位置提供任何线索。
(2)直方图反映图像的大致描述,如图像灰度范围、灰度级分布、整幅图像平均亮度等。下图为四幅图像的直方图,可以从中判断出图像的相关特性。(a)中,大部分像素值集中在低灰度级区域,图像偏暗;(b)中的图像则相反,大部分像素的灰度集中在高灰度级区域,图像偏亮;四幅图像都存在动态范围不足的现象。
(3)一幅图像唯一对应相应的直方图,而不同的图像可以具有相同的直方图。因直方图只是统计图像中灰度出现的次数,与各个灰度出现的位置无关,因此,不同的图像可能具有相同的直方图。
(4)若一幅图像可分为多个子区,则多个子区直方图之和等于对应的全图直方图。
2.3 直方图均衡化
若一幅图像的像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调。
直方图均衡化是将任意分布规律直方图的原始图像变换为具有均匀分布直方图的图像。说得更清楚一些,以上面的直方图为例,可以看到像素主要集中在某些强度值上。直方图均衡化要做的就是拉伸这个范围,增加图像灰度的动态范围,达到增强图像对比度的效果。
直方图均衡化理论如下。
归一化是用图像中像素的总数N去除nk的每个值,得到归一化直方图。
直方图均衡化的方法如下。
直方图均衡化方法过程有点枯燥不生动,大家可以找一些视频看看例题就容易理解啦。
介绍一下空域滤波的基础知识和基本概念
空间滤波原理:
滤波的概念来源于在频域对信号进行处理的傅立叶变换。滤波是信号处理中的一个概念,是将信号中特定波段频率滤除的操作。
对图像中的每一点 (x,y),重复下面的操作:
对预先定义的以 (x,y) 为中心的邻域内的像素进行运算(此处的具体运算可以参考另一篇博客);
将运算的结果作为 (x,y) 点新的响应。
上述过程就称为邻域处理或空间域滤波。一幅数字图像可以看成一个二维函数 f(x,y),而 x-y 平面表明了空间位置信息,称为空间域,基于 x-y 空间邻域的滤波操作叫做空间域滤波。如果对于邻域中的像素计算为线性运算,则又称为线性空间域滤波,否则称为非线性空间域滤波。非线性空间滤波处理也是基于邻域处理,且掩模滑过的机理是一样的。
3 图像平滑
在图像的获取、传输和存储过程中常常会受到各种噪声的干扰和影响,使图像质量下降,为了获取高质量的数字图像,很有必要对图像进行消除噪声处理,并且尽可能地保持原始信息的完整性。关于噪声的详细介绍大家可以参考另一篇博文。
通常把抑制或消除图像中存在的噪声而改善图像质量的过程称为图像的平滑(Image Smoothing)。 图像平滑方法大致分为两大类:空域法和频域法。空域法主要借助模板运算,在像素点邻域内,利用噪声像素点特性进行滤波;频域法是指图像进行正交变换,利用噪声对应高频信息的特点进行滤波。
3.1 均值滤波
均值滤波,又称邻域平均法,是图像空间域平滑处理中最基本的方法之一,其基本思想是以某一像素为中心,在它的周围选择一邻域,将邻域内所有点的均值(灰度值相加求平均)来代替原来像素值,通过降低噪声点与周围像素点的差值以去除噪声点。
输人图像 f(x,y),经均值滤波处理后,得到输出图像g(x,y),如下所示:
均值滤波属于线性平滑滤波,可表示为卷积模板运算,典型的均值模板中所有系数都取相同值。常用的简单均值模板为3X3和5X5大小的。
图像均值滤波法的平滑效果与所用的邻域半径有关。邻域半径越大,噪声幅值降低越多,但图像的模糊程度越大。
3.2 高斯滤波
平均滤波对于邻域内的像素一视同仁,为了减少平滑处理中的模糊,得到更自然的平滑效果,很自然地想到了对模板上不同位置赋予不同的加权系数值,从而可以确保中心点看起来更接近于与它距离更近的点,基于这样的考虑得到的模板即为高斯模板。
常用的 3 × 3 的高斯模板如下:
H
1
=
1
16
[
1
2
1
2
4
2
1
2
1
]
H_{1}=\frac{1}{16}\begin{bmatrix} 1 & 2 & 1\\ 2 & 4 & 2\\ 1 & 2 & 1 \end{bmatrix}
H1=161⎣⎡121242121⎦⎤
高斯模板名字的由来是二维高斯函数,即我们熟悉的二维正态分布密度函数,一个均值为 0,方差为 σ2 的二维高斯函数为:
下图给出了 σ = 1 时二维高斯函数的三维示意图形:
当标准差 σ 取不同的值时,二维高斯函数的形状会有很大的变化,因而在实际应用中选择合适的 σ 值非常重要;如果 σ 过小,偏离中心的像素权重将会非常小,相当于加权和响应基本不考虑邻域像素的作用,这样滤波操作就退化成图像的点运算,无法起到平滑噪声的作用;相反如果 σ 过大,而邻域相对较小,这样在邻域内高斯模板将退化成平均模板;只有当 σ 取合适的值时才能得到一个像素值的较好估计。Matlab 中 σ 的默认值为 0.5,在实际应用中,通常对 3 × 3 的模板取 σ 为 0.8 左右,对于更大的模板可以适当增大 σ 的值。
3.3 设计平滑模板系数的原则
- 大于0
- 都选1,或者中间选1,周围选0.5
以上两种滤波器都是低通滤波器,关于低通滤波器的描述如下所示。
3.4 中值滤波
3.4.1 中值滤波的原理
图像中,噪声的出现,使该点像素比周围像素暗(亮)许多,若把其周围像素值排序,噪声点的值必然位于序列的前(后)端。序列的中值一般未受到噪声污染,所以可以用中值取代原像素点的值来滤除噪声。
因此,中值滤波即是以数字序列或数字图像中某一点为中心,选择周围一个窗口(邻域),把窗口内所有像素值按照大小排序,取中值代替该像素点的值。
例如,采用 3 × 3 中值滤波器,某点 (i,j) 的 8 个邻域的一系列像素值为 12、18、18、11、23、22、13、25、118,统计排序结果为 11、12、13、18、18、22、23、25、118。排在中间位置(第 5 位)的 18 即作为 (i,j) 点中值滤波的新像素 g(i,j)。显然,中值滤波是非线性滤波器。
3.4.2 中值滤波MATLAB函数表示
B = medfilt(A,[M N]); %用[M N]大小的滤波器对图像A进行中值滤波,输出图像B,滤波器大小默认为3x3。
3.4.3 中值滤波效果分析
- 对于椒盐噪声,中值滤波比均值滤波效果好,模糊程度轻微,边缘保留较好;
- 而对于高斯噪声,均值滤波比中值滤波效果好;
- 在去除噪声的同时,中值滤波可以比较好地保留边缘轮廓信息和图像的细节 ,示例如下。
4 图像锐化
对人眼视觉系统的研究表明,人类对形状的感知一般通过识别边缘、轮廓、前景和背景而形成。在图像处理中,边缘信息也十分重要。边缘是图像中亮度突变的区域,通过计算局部图像区域的亮度差异,从而检测出不同目标或场景各部分之间的边界,是图像锐化、图像分割、区域形状特征提取等技术的重要基础。 图像锐化(ImageSharpening) 的目的是加强图像中景物的边缘和轮廓,突出图像中的细节或增强被模糊了的细节。关于边缘的详细介绍大家可以参考另一篇博客。
图像平滑是通过积分过程使图像边缘模糊,图像锐化是通过微分过程使图像边缘突出、清晰。
锐化滤波器的作用如下。
4.1 设计锐化模板系数的原则
- 中心系数为正值,外围为负值
- 系数之和为0
通过分析边缘变化曲线和其一二阶微分曲线,可知图像中的边缘对应微分的特殊点,因此可以利用求微分来检测图像中的边缘。
4.2 一阶微分算子
4.2.1 梯度算子
梯度的定义:
对于连续二维函数 f(x,y),其在点 (x,y) 处的梯度是下面的二维列向量:
G
[
f
(
x
,
y
)
]
=
[
∂
f
∂
x
∂
f
∂
y
]
G[f(x,y)]=\begin{bmatrix} \frac{\partial f}{\partial x}\\ \frac{\partial f}{\partial y} \end{bmatrix}
G[f(x,y)]=[∂x∂f∂y∂f]
其中,G表示对二维函数 f(x,y) 计算梯度,两微分含义如下:
梯度的方向就是函数 f(x,y) 最大变化率的方向。
梯度的幅值作为变化率大小的度量,其值为
因为图像为离散的数字矩阵,可用有限差分来代替微分,得梯度图像 g(x,y):
尽管梯度和幅值两者有着本质的区别,但在数字图像处理中提到梯度时,往往不加区分,即将上式的梯度幅值称为梯度。
图像锐化的实质是原图像和梯度图像相加以增强图中的变化。
边缘检测需要进一步判断梯度图像中的局部极值点,一般通过对梯度图像进行阈值化来实现:即设定一个阈值,凡是梯度值大于该阈值的变为1,表示边缘点;小于该阈值的变为0,表示非边缘点。可以看出,检测效果受到阈值的影响:阈值越低,能够检测出的边线越多,结果也就越容易受到图像噪声的影响;相反,阈值越高,检测出的边线越少,有可能会遗失较弱的边线。实际中可以在边缘检测前进行滤波,降低噪声的影响。
直观理解梯度算子公式,就是计算图中每一个像素点和其右邻点、下邻点差值的绝对值和,并赋给该像素点,不存在右邻点和下邻点的直接赋背景值0。
4.2.2 Robert 算子
Robert 算子通过交叉求微分检测局部变化,其运算公式如下。
用模板可表示为
式中:w1 对接近 +45° 边缘有较强的响应;w2 对接近 -45° 边缘有较强的响应。
直观理解 Robert 算子公式,就是计算以图中每一个像素点为像素坐标系原点而组成的 2x2 矩阵分别与W1和W2相加的绝对值和,并赋给该像素点,模板罩不住的像素点直接赋背景值0。
【注】在进行锐化滤波之前,我们要将图像类型从 unit8 转换为 double,这是因为锐化模板的负系数常常使得输出产生负值,如果采用无符号的 unit8 型,则负值就会被截断。具体操作如下。
Image=im2double(rgb2gray(imread('lotus.jpg'))); %转换为 double 类型,这样可以保存负值,否则 unit8 型会把负值裁掉。
4.2.3 Sobel 算子
Sobel 算子是一种 3x3 模板下的微分运算,因为滤波时我们总是喜欢奇数尺寸的模板,因而 Sobel 梯度的 Sobel 模板更加常用。其模板表示为
其中,w1 对水平边缘有较大响应的竖直梯度;w2 为对竖直边缘有较大影响的水平梯度。
Sobel 算子引入平均元素,对图像中的随机噪声有一定的平滑作用;像个两行或两列求差分,故边缘两侧的元素得到了增强,边缘显得粗而亮。
直观理解 Sobel 算子公式,就是计算以图中每一个像素点为像素坐标系原点而组成的 3x3 矩阵分别与W1和W2相加的绝对值和,并赋给该像素点,模板罩不住的像素点直接赋背景值0。
4.2.4 Prewitt 算子
Prewitt 算子与 Sobel 算子思路类似,但模板系数不一样,如下所示:
由于Prewitt 算子与 Sobel 算子计算思路类似,这里不再赘述啦~
4.3 二阶微分算子----拉普拉斯算子
应用广泛的二维函数 f(x,y) 的二阶微分(拉普拉斯算子)定义为:
对于离散的二维图像 f(i,j),可以用下式作为对二阶偏微分的近似:
就得到了用于图像锐化的拉普拉斯算子:
对应的滤波模板如下:
因为在锐化过程增强中,绝对值相同的正值和负值实际上表示相同的响应,故也等同于使用如下的模板 W2:
【注】图像像素值不能为负,可以采用如下两种处理办法将像素值负值转化为正值:
(1)取绝对值,得到梯度图像的效果;
(2)整体加一个正值(图中最小值的绝对值),得到类似浮雕的效果。
图像频域增强
下面简单介绍一下频域滤波的基本概念和几种滤波器~
在傅里叶变换域,变换系数反映了某些图像特征。如频谱的直流分量比例于图像的平均亮度,噪声对应于频率较高的区域,图像大部分实体位于频率较低的区域等。变换域具有的这些内在特性常被用于图像的频域滤波。
频域滤波输出表达式为 G(u,v)= H(u,v)F(u,v),其中,F(u,v) 为图像 f(x,y) 的傅里叶变换,H(u,v) 为频域滤波器函数。频域滤波就是选择合适的 H(u,v) 对 F(u,v) 进行调整,经傅里叶反变换得到滤波输出图像 g(x,y)。图像的频域滤波过程描述如下图所示。
1 图像平滑
频率平滑滤波的目的是为了实现在频率域去除噪声。由于噪声表现为高频成分,因此可以通过构造一个低通滤波器 H(u,v),使得低频分量顺利通过而有效地阻止或减弱高频分量,即可滤除频域噪声,再经反变换来取得平滑图像。可见,频率平滑滤波的关键为设计合适的频域低通滤波器 H(u,v)。
1.1 理想低通滤波(Ideal LowPass Filters-ILPF)
理想低通滤波器是在傅里叶平面上半径为D0的圆形滤波器,其传递函数如下:
其中,D(u,v) 为点 (u,v) 到傅里叶频率域原点的距离,定义为
D
(
u
,
v
)
=
u
2
+
v
2
D(u,v)=\sqrt{u^{2}+v^{2}}
D(u,v)=u2+v2。D0>0,为理想低通滤波器的截止频率。
“理想”是指小于D0的频率可以完全不受影响地通过滤波器,而大于D0的频率完全通不过。也就是说,D0 半径内的频率分量无损通过,而半径外的频率分量会被滤除。在D0适当的情况下,理想低通滤波器不失为简单易行的平滑工具。但由于滤除的高频分量中含有大量的边缘信息,因此采用该滤波器在去噪声的同时将会导致边缘信息损失而发生图像边缘模糊现象,并且会产生“振铃”效应(图像周围出现波纹现象)。
上图说明,低通滤波是一个以牺牲图像清晰度为代价来减少干扰的修饰过程。
1.2 巴特沃斯(Butterworth)低通滤波
理想低通滤波器的截止频率是直上直下的,在物理理上不可实现。而巴特沃斯低通滤波器的通带和阻带之间没有明显足的不连续性,因此不会出现“振会“效应.模糊程度也相对要小。
因此,巴特沃斯低通滤波器 (BLPF) 又称为最大平坦滤波器。一个阶为n,截止频率为D0的巴特沃斯低通滤波器的转移函数 H(u,v) 由下式决定:
其中,n为阶数,取正整数,用来控制曲线的衰减速度。
下图给出了巴特沃斯低通滤波器的转移函数透视图、显示图像以及 n=1,2,3,4 时的不同阶数剖面图,其特性是连续衰减,而不像理想滤波器那样陡峭和明显的不连续。因此采用该滤波器在抑制噪声的同时,图像边缘的模糊程度大大减小且振铃效应减弱。
1.3 高斯(Gaussian)低通滤波
2 图像锐化
图像中的边缘对应于高频分量,所以图像锐化可以采用高通滤波器实现。将图像 f(x,y) 通过正交变换变换为 F(u.v),设计高通滤波器 H(u,v) 滤波后反变换回图像 g(x,y)。频域高通滤波的关键在于选择合适的高通滤波器传递函数 H(u,v)。
2.1 理想高通滤波(Ideal HighPass Filters-IHPF)
理想高通滤波器的传递函数为
式中,D0为截止频率,大于0;
D
(
u
,
v
)
=
u
2
+
v
2
D(u,v)=\sqrt{u^{2}+v^{2}}
D(u,v)=u2+v2是点 (u,v) 到傅里叶频率域原点的距离。
理想高通滤波器传递函数及其剖面图如下图所示,与理想低通滤波器正好相反。通过高通滤波器把以D0为半径的圆内频率成分衰减掉,圆外的频率成分则无损通过。
2.2 巴特沃斯高通滤波
2.3 高斯高通滤波
以上为博主整理几天的学习笔记博客,希望可以对大家有帮助,如果有问题,欢迎大家评论区交流呀~
版权说明
文章作者:早知晓
博文链接:Click here
希望大家都走在开满鲜花的路上,加油鸭~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)