拉普拉斯算子

6 年前 · 来自专栏 图像处理与计算机视觉

最近在学习图像处理,准备把这本书(冈萨雷斯)的核心知识点都整理整理,为后期学习计算机视觉打好一定的先修基础。


本节讲给大家讲讲什么是拉普拉斯算子?

空域的拉普拉斯算子

拉普拉斯算子是一个在图像增强中经常出现的二阶微分算子。

我们知道,在做image processing的过程中,图像可以被看做是一个灰度级取值为[0,255]的matrix。回想高等数学的概念,我们在求解因变量随着自变量变化过程快慢的时候,用到的衡量标准就是求导数。而对于连续函数,我们根据导数的求导公式即可求出导数的值,也即知道了函数在改点的变化快慢。

那么对于图像这种特殊的函数,我们该怎么求导呢?我们用差分来定义这种微分的关系,然后在构造一个基于差分的filter。

而在研究filter的过程中,我们最关心的是一种各向同性滤波器,这种滤波器的响应与滤波器作用的图像的突变方向无关。

也就是说,各向同性滤波器是可以维持理论上的旋转不变性的。对一幅图像先进行滤波,然后再旋转。与先旋转再滤波得到的结果是相同的。或者,我们将这个filter旋转180°,得到的新的filter和原先的filter具有相同的形式。


首先引入这个刚刚讲过的二阶微分:

\nabla^2f = \frac{\partial^2f}{\partial x^2}+\frac{\partial^2f}{\partial y^2}

由一维情况下:

\frac{\partial^2f}{\partial x^2} = f(x+1)-f(x)-f(x)+f(x-1)

\frac{\partial^2f}{\partial y^2} = f(y+1)-f(y)-f(y)+f(y-1)

那么得到上述二阶微分:

\nabla^2f = \frac{\partial^2f}{\partial x^2}+\frac{\partial^2f}{\partial y^2}=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)


上述是数学表达形式的拉普拉斯算子,那么我们可以将其表达为模板的形式:

  • a的filter是一个90°旋转各向同性的结果
  • b的filter是一个45°旋转各向同性的结果
  • c和d都是上述两种filter的扩展

从filter的形式来看,如果在图像中的一个比较暗的区域出现了一个亮点,那么经过拉普拉斯算子处理后,这个亮点怎么变得更亮,为什么会这样呢?

因为在一个很暗的区域内,很亮的点和其周围的点属于差异比较大的点,在图像上,反映到差异大,其实说的就是这个亮点与周围点的pixel在数值上的差距。那么基于二阶微分的拉普拉斯算子就是求取这种像素值发生突然变换的点或线,此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。但是在进行锐化的过程中,我们又不希望这个filter改变了图像中其他pixel的信息,所以保证了每个filter的数值和加起来为0(1+1+1+1-4)


由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。

拉普拉斯锐化的基本方法可以由下式表示:

这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息。

  • 图a是是原始图像
  • 图b是经过拉普拉斯滤波器滤波后的图像
  • 图c先不用管
  • 图d是通过上述g(x,y)得到的增强后的图像

频率的拉普拉斯算子

关于拉普拉斯算子还必须掌握其傅里叶变换。

因为刚刚上述讲的过程都是在空域对图像进行操作的,如果我们在空域无法对图像进行拉普拉斯运算,那么就图像其先通过傅里叶变换放进频率,然后在频域进行处理,再将频率处理完的结果通过傅里叶反变换转换回空域。


DFT[\nabla^2f] = DFT[\frac{\partial^2f}{\partial x^2}+\frac{\partial^2f}{\partial y^2}] = (j2\pi u)^2F(u,v)+(j2\pi v)^2F(u,v) =-4\pi^2(u^2+v^2)F(u,v)

那么频域的拉普拉斯算子可由下式确定:

H(u,v)=-4\pi^2(u^2+v^2)

那么再通过傅里叶反变换,就可以把频域做完的一系列操作转换到空域了。

编辑于 2018-01-10 14:56

文章被以下专栏收录

    图像处理与计算机视觉

    图像处理与计算机视觉