上个博客讲到了空域滤波器。
空域滤波器
空域滤波是指利用像素以及像素邻域组成的空间增强图像的方法。邻域操作通常使用模板(也叫做窗、样板)来完成。模板运算的基本思想是将赋予某个像素的增强值作为它本身的灰度值及其相邻像素灰度值的函数,最常用的是模板卷积。这样用文字解释比较抽象,直接上图吧:
注意:我们每次计算卷积都在使用原图像的像素,而不是前面已经经过卷积计算得到的新像素值再次参与卷积运算(如果这样后边敲代码会把图像搞坏的)。
空域滤波器包含两类:平滑滤波器和锐化滤波器。
接下来就来仔细区分一下它们:
平滑滤波器
用于模糊处理和减少噪声。其实说白了就是平时我们在ps等p图软件中用到的模糊处理。
平滑滤波器能够减弱或消除图像中的高频率分量,但不影响或较少影响图像中的低频率分量。
简单解释一下这句话,高频率分量其实对应到图像上指的是像素值变化非常剧烈的地方,举个不太恰当的例子,就有点像是函数和它的导数,如果说图像是函数,频率所代表的就像是它的导数,导数值越大,说明函数变化越快,对应图像就是频率越高,像素值变化越快。之所以说这个例子不恰当是因为函数和它的导数都是连续的,而数字图像是离散的(一个一个像素点),因此浅浅理解就好。那么同理,低频率分量其实就是像素值变化缓慢的地方。
简单看一下平滑滤波器的样子:
平滑滤波器分为线性平滑滤波器和非线性平滑滤波器。
线性平滑滤波器所用的卷积模板的系数都是正数。
锐化滤波器
锐化滤波器能减弱或消除图像中的低频率分量,但并不影响高频率分量。利用锐化滤波器,我们可以轻松提取图像的边缘特征。如果将得到的边缘再叠加在原图像上,就可以得到一个更加清晰的图像了。
锐化滤波器常见的有拉普拉斯模板:
频域图像增强
上述所讲到的图像增强技术都是在空域进行的,然而事实上,也可以在变换域进行。最常用的变换域是频域。顾名思义,频域就是由频率组成的。上面我简单说过频率在图像中所表示的含义(也就是高频代表像素值的剧烈变化,低频代表像素值的缓慢变化)。我们该如何将图像从空域转换到频域呢?
在高等数学中,我们接触过,任何的周期函数都可表示为不同频率的正弦函数和或余弦函数之和,其中每个函数都乘以不同的系数(被称为傅里叶级数)。这个思想运用到信号处理和图像处理,思路是一致的,我们想要把隐藏在外表之下的信号和图像的本质特征(也就是频率)给表现出来,伟大的前人们在20世纪60年代提出来名叫傅里叶变换的算法。它的原理解释起来过于复杂且与本课关系并不是很大,因此我们只要知道它怎样工作的就可以了。
先来看傅里叶变换的公式吧:
正变换(空域-》频域):
其中,
逆变换(频域-》空域):
其中,
咳咳,如果你看到这里还没有晕的话,你应该可以从这两个公式中品出来一点相似之处。
我们先来解释一下各个参数:
数字图像处理课程中经常使用和函数一样的形式来表达二维图像,就像上述公式中的一样,你可以就把
当做一个二维图像,在公式中,它更形象的叫法应该是“空域”。空域其实就是我们所看到的图像本身。其中的
和
代表的是横轴和纵轴,和坐标系一样,通过唯一确定的
和
我们就可以确定图像中某一个确切的像素点。
同理,所代表的就是频域。你也可以简单粗暴把它当成一张图像,只不过它和空域图像长得一点都不一样罢了。同理
和
也可以确定频域图像中某一个确切的像素点。
这里要明确一点,一幅图像的空域图像和频域图像是等大的,这一点从公式中也能看出来。
这两个公式看起来很复杂,其实也很好理解,给出一个背景问题:有一张图像,我们想要得到它的频域图像,也就是图像中所有的像素点的值,我们应该怎么做呢?
公式已经写明了,就是上面那个正变换,接下来要怎么做不就很明确了吗?
我们可以一个一个像素代进去求嘛
我们不知道,但是我们有原图像,只要代入公式中计算就可以了。
假设我们要算,代入公式就得到:
现在这个式子看起来有没有简单些?然后就是循环累加的操作,计算出来的结果就是的值。