"利用给定像素周围的像素的值决定此像素的最终的输出值“


教学效果:

 [OpenCV] Image Processing - Spatial Filtering

策略:

1
. 拉普拉斯,突出小细节; 2. 梯度,突出边缘; 3. 平滑过的梯度图像用于掩蔽; 4. 灰度变换,增加灰度动态范围。

 

扩展阅读:

使用模糊技术进行 灰度变换 和 空间滤波 

 


 

线性空间滤波

 

[OpenCV] Image Processing - Spatial Filtering

 

Some neighborhood operations (邻域算子):

(a) original image;

(b) blurred;

(c) sharpened;

(d) smoothed with edge-preserving filter;

(e) binary image;

(f) dilated;

(g) distance transform;

(h) connected components.

 


 

空间相关与卷积

[OpenCV] Image Processing - Spatial Filtering   

 

 

离散单位冲击

一个函数与离散单位冲击相关,在该冲击位置产生这个函数的一个翻转版本
一维卷积:R = g*f

二维卷积:R = G**H 

 

  

扩展到二维图像 (二维滤波器)

[OpenCV] Image Processing - Spatial Filtering

卷积后重现了了卷积核的内容。 

 

二维相关与卷积

[OpenCV] Image Processing - Spatial Filtering

[OpenCV] Image Processing - Spatial Filtering

w:脉冲响应函数

 

 

叠加原理 & 位移不变性原理

[OpenCV] Image Processing - Spatial Filtering

 

移不变线性系统对激励的响应可以由卷积得到。

 


 

可分离的滤波

核函数是否可分离?

http://www.isnowfy.com/introduction-to-svd-and-lsa/

数学问题,待续。。。

 


 

常用的滤波器

[OpenCV] Image Processing - Spatial Filtering

 

模糊核(平滑核)或低通核(通过 较低频信号 衰减 较高频信号)

    1. 减少高频噪声。
    2. 通过非锐化掩模处理,对图像进行锐化。

度量效果?傅立叶分析查看频率响应。待续。。。

 

线性滤波算子的其他功能:

    • 边缘处理的预处理阶段,例如Sobel算子。
    • 兴趣点检测,例如角点检测器。

 

高斯滤波

[OpenCV] Image Processing - Spatial Filtering

  如果不是高斯噪声,怎么办?

 

中值滤波(统计排序滤波器)

  散离噪声通常位于邻域内正确值的两端。

  [OpenCV] Image Processing - Spatial Filtering

(a) original image with Gaussian noise; (b) Gaussian filtered; (c) median filtered; (d) bilaterally filtered;

(e) original image with shot noise;     (f) Gaussian filtered; (g) median filtered; (h) bilaterally filtered. 

 

中值滤波、阿尔法截尾法中值滤波、加权法中值滤波。

滤波器大的保边效果好!而高斯滤波对边缘不好。但中值也好不到哪里去,对裂痕的平滑效果不好。

中值滤波适合去除椒盐噪声。

 

双边滤波器

  同时考虑了像素和距离两个因素

  定义域核(c) 乘以 值域核(d)

  [OpenCV] Image Processing - Spatial Filtering

  

双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,

[OpenCV] Image Processing - Spatial Filtering

权重系数 w(i,j,k,l) 取决于定义域核

[OpenCV] Image Processing - Spatial Filtering

值域核 (中间像素与邻域像素的矢量距离)

[OpenCV] Image Processing - Spatial Filtering

乘积

[OpenCV] Image Processing - Spatial Filtering

 

效果图:

  [OpenCV] Image Processing - Spatial Filtering

[OpenCV] Image Processing - Spatial Filtering

 


高斯、中值、均值、双边滤波 (代码) 

#include "cv.h"
#include "highgui.h"
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
        Mat src = imread("/home/unsw/lolo.jpg");
        Mat dst;

        //参数是按顺序写的

        //高斯滤波
        //src:输入图像
        //dst:输出图像
        //Size(5,5)模板大小,为奇数
        //x方向方差
        //Y方向方差
        GaussianBlur(src,dst,Size(5,5),0,0);
        imwrite("gauss.jpg",dst);

        //中值滤波
        //src:输入图像
        //dst::输出图像
        //模板宽度,为奇数
        medianBlur(src,dst,3);
        imwrite("med.jpg",dst);

        //均值滤波
        //src:输入图像
        //dst:输出图像
        //模板大小
        //Point(-1,-1):被平滑点位置,为负值取核中心
        blur(src,dst,Size(3,3),Point(-1,-1));
        imwrite("mean.jpg",dst);

        //双边滤波
        //src:输入图像
        //dst:输入图像
        //滤波模板半径
        //颜色空间标准差
        //坐标空间标准差
        bilateralFilter(src,dst,25, 25*2, 25/2);
        imwrite("bil.jpg",dst);

        waitKey();
        return 0;
}
四大滤波器 

相关文章: