"利用给定像素周围的像素的值决定此像素的最终的输出值“
教学效果:
策略:
1. 拉普拉斯,突出小细节; 2. 梯度,突出边缘; 3. 平滑过的梯度图像用于掩蔽; 4. 灰度变换,增加灰度动态范围。
扩展阅读:
使用模糊技术进行 灰度变换 和 空间滤波 。
线性空间滤波
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.
空间相关与卷积
离散单位冲击
一个函数与离散单位冲击相关,在该冲击位置产生这个函数的一个翻转版本。
一维卷积:R = g*f
二维卷积:R = G**H
扩展到二维图像 (二维滤波器)
卷积后重现了了卷积核的内容。
二维相关与卷积
w:脉冲响应函数
叠加原理 & 位移不变性原理
移不变线性系统对激励的响应可以由卷积得到。
可分离的滤波
核函数是否可分离?
http://www.isnowfy.com/introduction-to-svd-and-lsa/
数学问题,待续。。。
常用的滤波器
模糊核(平滑核)或低通核(通过 较低频信号 衰减 较高频信号)
- 减少高频噪声。
- 通过非锐化掩模处理,对图像进行锐化。
度量效果?傅立叶分析查看频率响应。待续。。。
线性滤波算子的其他功能:
-
- 边缘处理的预处理阶段,例如Sobel算子。
- 兴趣点检测,例如角点检测器。
高斯滤波
如果不是高斯噪声,怎么办?
中值滤波(统计排序滤波器)
散离噪声通常位于邻域内正确值的两端。
(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)
双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,
权重系数 w(i,j,k,l) 取决于定义域核
和值域核 (中间像素与邻域像素的矢量距离)
的乘积
效果图:
高斯、中值、均值、双边滤波 (代码)
#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; }