图像处理之空间滤波

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_35732969/article/details/82825058

上图是一个以(x,y)为中心的3*3邻域 。

空间滤波是指:邻域中心从一个像素向另一个像素移动,对邻域中的像素应用算子T,并在该位置(领域中心)产生输出。典型地,该处理从输入图像的左上角开始,以水平扫描的方式逐像素处理。当该邻域的中心位于图像的边界上时部分邻域将位于图像外部,此时,用T做计算时可以忽略外侧邻点,或者用0或其他指定的灰度值填充图像的边缘。

邻域(典型的是一个较小的矩形)和预定义操作一起称为空间滤波器

如果在图像像素上执行的是线性操作,则滤波器称为线性空间滤波器,否则称为非线性空间滤波器。

使用一个m*n的滤波器模板,假设m = 2a + 1且n = 2b + 1,a,b为整数(即指奇数尺寸的滤波器),对大小为M*N的图像进行线性空间滤波,表示为下式:

g(x,y) = \sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t)

其中f(x,y)表示原图像(x,y)处的像素,g(x,y)表示滤波后(x,y)处的像素,w(s,t)为滤波器系数

 相关和卷积

一个大小为m*n的滤波器w(x,y)与一幅图像f(x,y)做相关操作,可表示为:w(x,y)☆f(x,y)

w(x,y)与f(x,y)的卷积表示为w(x,y)\bigstar f(x,y)

w(x,y)\bigstar f(x,y) = \sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x-s,y-t)

等式右侧的负号表示翻转f(即旋转180°),通常我们是将w旋转180°而不是f,效果是一样的。

平滑滤波器

平滑滤波器用于模糊处理降低噪声,常用于预处理任务中,例如大目标提取之前去除图像中的一些琐碎细节。平滑滤波器有线性和非线性之分。

平滑线性滤波器的输出是包含在滤波器模板邻域内的像素的简单平均值,所以有时也称为均值滤波器。另外典型的随机噪声由灰度级的急剧变化组成,所以平滑处理常用于降噪。需要注意的是,图像边缘也是由图像灰度尖锐变化带来的特性,所以均值滤波处理并不希望产生图像边缘的模糊。

上图是2个3*3滤波器模板,一个m*n模板有等于1/mn的归一化常数,上图的1/9和1/16就是归一化常数。

所有系数都相等的空间均值滤波器有时称为盒状滤波器,如左图。右图则产生更为重要的加权平均。赋予中心点最高权重,然后随着离中心点的距离增加而减小系数值的加权策略是在平滑处理中试图降低模糊。

加权滤波器滤波过程由下式给出:

g(x,y) = \frac{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t)}{\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)}

统计排序滤波器是一种非线性空间滤波器。其中最知名的是中值滤波器,它将像素邻域内的中值代替该像素(邻域中心)的值。中值滤波器对处理脉冲噪声(椒盐噪声,这种噪声以黑白点的形式叠加在图像上)非常有效。

锐化空间滤波器基础

锐化跟模糊可以看成是对应相反的操作,模糊处理中,我们使用均值滤波,均值与积分类似,所以可以猜想,锐化处理可由微分来实现。

图像处理中的一阶微分的基本定义:

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

对于二维函数f(x,y),沿着两个空间轴处理偏微分。

二阶微分定义如下:

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

一阶微分和二阶微分的定义见下图:

图像中的边缘在灰度上常常类似于斜坡过渡,这就导致图像在一阶微分上产生较粗的边缘,因为沿着斜坡的微分非0。而二阶微分产生由0分开的一个像素宽的双边缘。所以二阶微分在增强细节方面要比一阶微分好得多。

二阶微分锐化——拉普拉斯算子 

各向同性滤波器:这种滤波器的响应与图像 突变方向无关,也就是说,各向同性滤波器是旋转不变的,即将原图像旋转后进行滤波处理的结果和先对图像滤波后再旋转的结果相同。

最简单的各向同性微分算子是拉普拉斯算子,一个二维图像函数f(x,y)的拉普拉斯算子定义为:

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

在x方向上:

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

在y方向上:

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

所以:

\bigtriangledown^{2}f(x,y) = f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)

上式可以用下面的滤波模板实现:

这是一个以90°为增量旋转各向同性的模板。 

类似的,一个以45°为增量的各向同性的模板如下图:

实践中,可能有如下图的模板:

本质上是一样的,只是在做图像合并时需要注意符号上的差别。具体说来,如果所使用的定义具有负的中心系数,那么必须将原图像减去拉普拉斯变换后的图像,如果是正的则加上,从而得到锐化结果。用数学表示为:

g(x,y) = f(x,y)+c[\triangledown ^{2}f(x,y)]

f(x,y)和g(x,y)分别是输入图像和锐化后的图像,如果使用负的中心系数,则常数c = -1,如果使用正的中心系数,则c = 1。

一阶微分锐化——梯度

函数f(x,y)在坐标(x,y)处的梯度定义:

\triangledown f = grad(f) = \begin{bmatrix} g_{x}\\ g_{y} \end{bmatrix} = \begin{bmatrix} \frac{\partial f}{\partial x}\\ \\ \frac{\partial f}{\partial y} \end{bmatrix}

它指出在(x,y)处f的最大变化率的方向。

\triangledown f幅度值表示为M(x,y),即:

M(x,y) = \sqrt{g_{x}^{2}+g_{y}^{2}}

M(x,y)是与原图像大小相同的图像,称为梯度图像(或梯度)。

有时,用绝对值来近似上式,即:

M(x,y) = |g_{x}|+|g_{y}|

上图中是一个3*3区域内的图像点的灰度,如z_{5}表示f(x,y),z_{1}表示f(x-1,y-1)等。由之前的定义,一阶微分可表示为:g_{x} = z_{8}-z_{5},g_{y} = z_{6}-z_{5}。这里采用一阶微分的其他定义(交叉差分):

g_{x} = z_{9}-z_{5},g_{y} = z_{8}-z_{6}

对于以z_{5}为中心的一个3*3邻域:

g_{x} = \frac{\partial f}{\partial x} = (z_{7}+2z_{8}+z_{9}) - (z_{1}+2z_{2}+z_{3})

g_{y} = \frac{\partial f}{\partial y} = (z_{3}+2z_{6}+z_{9}) - (z_{1}+2z_{4}+z_{7})

这两个公式可以用下面的模板实现:

这两个模板称为Soble算子。中心系数使用权重2思想是通过突出中心点的作用而达到平滑的目的。发现模板中的系数总和为0, 表明灰度恒定区域响应为0。

其梯度幅值为:

M(x,y) = |(z_{7}+2z_{8}+z_{9})-(z_{1}+2z_{2}+z_{3})|+|(z_{3}+2z_{6}+z_{9})-(z_{1}+2z_{4}+z_{7})|

梯度处理经常用于工业检测,辅助人工检测产品缺陷,或作为自动检测的预处理,简化自动检测的计算任务。如下图中作为自动检测的预处理步骤,右侧的图像即为Soble模板得到的梯度图像(即M(x,y)):

参考资料:冈萨雷斯《数字图像处理》 

猜你喜欢

转载自blog.csdn.net/weixin_35732969/article/details/82825058
今日推荐