空域中图像处理算子
介绍
开始之前,有必要介绍一些基本的图像处理概念。
空域也叫空间域,是一种像素级上的操作,即直接对图像上的像素值进行增加或减少。对应的另一种图像处理的操作,是频域上的操作,频域可以由空域通过傅里叶变换转换过来,它更能体现图像中的能量特征。
处理图像的常用方法就是对图像进行滤波处理,即对图像的频率进行过滤,通常的滤波方法分为两种:高通滤波和低通滤波。顾名思义,高通滤波就是,减弱或阻隔低频信号,保留高频信号;而相应的,低通滤波是,减弱或阻隔高频信号,保留低频信号。虽然空域是图像在空间坐标的表示,但无论是空域还是频域,滤波都是处理图像的频率。
空域滤波按照过滤频率的高低,分为平滑(模糊)和锐化,平滑对应低通滤波;锐化对应高通滤波。也可以按照滤波的算法,分为线性滤波和非线性滤波,线性滤波就是滤波过程中,对像素的处理是线性的,如加减乘除等;而非线性滤波就是像素的处理是非线性的,如取最大值、取中值等。
空域滤波通常的方法是:取一个模板,然后平移这个模板,每次平移,都将进行一次计算,将计算的结果赋予给模板中间的像素,代替其原来的值,从而达到滤波的效果。空域中,不同的滤波方法就对应了不同的模板选取方式和模板中的计算方式。空域滤波器,可以看成一个函数,即算子,可以将一个像素值映射为另一个像素值。
下面介绍常用的空域中的图像处理算子。
低通滤波
邻域平均法
邻域平均法,顾名思义,就是邻域内各点灰度均值代替该点的像素值,也可以称为均值滤波。这是最简单,也是最常用的滤波方式。
公式如下:
其中M为集合S内像素总数,S是 f(i, j) 像素的邻域[不含 f(i, j)像 素]的像素集合, g(i, j)为平滑后的图像。
在这上面进行扩展,可能会得到更有效的滤波器,例如增加阈值(取阈值的邻域平均法):某像素的灰度大于其邻近像素的 平均灰度,并超过阈值 T ,用均值替代。
公式如下:
效果:
此外,也可以更改模板中的权值,变为邻域加权平均,例如:
注意:
为了保证邻域中的平均灰度在处理前后保持不变,权矩阵(模板)中各个元素的权值之和必须等于1。
中值滤波
这是一种非线性的处理技术,可用来抑制图像中的噪声而不使边缘模糊。
原理很简单:取一移动窗口,上下左右移动,用窗口内的像素(奇 数个)的中值代替窗口中心像素的灰度。
需要注意的是,中值滤波适合去除椒盐噪声,均值滤波适合去除高斯噪声。
高通滤波
高通滤波也就是锐化处理,通常是用于把图像变得更清晰,突出细节或是用于检测图像边缘。
锐化操作的模板矩阵通常带有负值,这样才能增大边缘之间的像素差,突出图像边缘特征。
下面用两个算子分别对同一张图片进行锐化处理:
Roberts算子
Roberts 算子是利用的局部像素差来进行边缘检测。是 2*2 窗口的,利用对角线相邻像素之差来进行检测。矩阵变化如下:
效果:
分别是蓝绿红三个通道的边缘和总的效果。
Sobel 算子
Sobel 算子是对阶跃边缘,对数字图像{f(i,j)}的每个像素,考察它上、下、左、右邻点 灰度的加权差。与之接近的邻点权大。
该算子是 3*3 窗口的,变换矩阵如下:
结果:
最后
还有很多其他算子,这里只是简单的介绍了四种。本文算是讲解了一个图像处理的基础知识,希望能够对大家有所帮助。
如有任何差错,请联系我改正,非常感谢。