图像中
高频:图像中灰度变化剧烈的点,一般是图像轮廓或者是噪声。
低频:图像中平坦的,灰度变化不大的点,图像中的大部分区域。
根据图像的高频与低频的特征,有相应的高通与低通滤波器,高通滤波可以检测图像中尖锐、变化明显的地方;低通滤波可以让图像变得光滑,滤除图像中的噪声。OpenCV中提供的低通滤波有:线性的均值滤波器、高斯滤波器,非线性的双边滤波器、中值滤波器;高通滤波有基于Canny,Sobel等各种边缘滤波。
滤波器常常使用一介或者二阶差分(或微分,对于数字图像而言,其为离散信号,常用差分代替导数)核算子对图像进行滤波。
一介差分常用于求取图像边缘。常用有Soble算子、Roberts算子、Prewitt算子
二阶差分常用于图像增强。常用拉普拉斯算子
- 高斯滤波(Gaussian filter): 参考博客: https://blog.csdn.net/nima1994/article/details/79776802
- 双边滤波(bilateral filter): 参考博客:http://www.360doc.com/content/17/0306/14/28838452_634420847.shtml
高斯滤波只考虑了周边点与中心点的空间距离来计算得到权重。存在一个问题是如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不合理的,因此考虑再利用像素点的值的大小进行补充,因为边缘两侧的点的像素值差别很大,因此会使得其加权的时候权重具有很大的差别。可以理解成先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。
双边滤波与高斯滤波相比,对于图像的边缘信息能够更好的保留,其原理为一个与空间距离相关的高斯核函数与一个灰度距离相关的高斯函数相乘。
对于高斯滤波,仅用空间距离的权值系数核与图像卷积后确定中心点的灰度值。即认为离中心点越近,其权值系数越大。
双边滤波中加入了对灰度信息的权重,即在领域内,灰度值越接近中心点灰度值的点的权值更大,灰度值相差大的点权重越小。其权重大小则由值域高斯函数确定。
两者权重系数相乘,得到最终的卷积模板,由于双边滤波需要每个中心点领域的灰度信息来确定其系数,所以速度比一般的滤波慢得多,而且计算量增长速度为核的大小的平方。
参数的选择:空间域σσ的选取,和值域σσ的选取。
结论:σσ越大,边缘越模糊;σσ越小,边缘越清晰。
Sobel operator:Sobel算子通过计算水平和垂直方向上的一节差分来进行计算。在OpenCV函数中,可通过使用Sobel函数进行计算。强调图像中的高频分量,使用高通滤波器进行边缘检测。Sobel算子是一种经典的边缘检测线性滤波器,可被认为是图像在垂直和水平方向变化的测量。
Laplacian operator:Laplacian算子通过计算二阶差分(微分)来进行计算。在OpenCV函数中,可通过使用Laplacian函数进行计算。 参考博客:https://blog.csdn.net/zb1165048017/article/details/49330171
运用拉普拉斯可以增强图像的细节,找到图像的边缘。但是有时候会把噪音也给增强了,那么可以在锐化前对图像进行平滑处理。
下面我们来推导二阶微分与像素的关系:
先看一阶偏微分和推出的二元函数微分:
一阶微分法能够用来检测边缘是否存在。
那么二阶微分法,也就是拉普拉斯算子就可以确定边缘的位置。(有的文章中称下式为拉普拉斯掩膜中心系数)
这样可以找到一个模板矩阵:
这个成为四邻域也就是上面的二阶微分法
这个是八邻域。
【注】从上面的两种模板中就可以看出,如果一个黑色平面中有一个白点,那么模板矩阵可以使这个白点更亮。由于图像边缘就是灰度发生跳变的区域,所以拉普拉斯模板对边缘检测很有用。
八邻域的表示法为:
将算得的值替换原(x,y)处的像素值,可以得到类似边界的地方,然后根据下式得到锐化图像:
来源:CSDN
作者:qq_25283239
链接:https://blog.csdn.net/qq_25283239/article/details/104760010