博客: 博客园 | CSDN | blog
写在前面
在计算机视觉中,滤波(filtering)是指
Image filtering: compute function of local neighborhood at each position.
—— from CAP5415–Fall 2014-Lecture 2 (08/21/2014)–Filtering
In the broadest sense of the term “filtering”, the value of the filtered image at a given location is a function of the values of the input image in a small neighborhood of the same location.
滤波本质上是一种特殊的函数,其作用在图像的每个位置,通过定义的计算方式得到输出,输出的值用于替换图像当前位置(滤波器中心)的值。
令滤波函数为 g ( x ; w ) g(x;\ w) g(x; w) ,其中 x x x为图像的局部邻域, w w w为滤波器的权重,滤波器可以分成如下3类,
- 线性滤波器(Linear filter):线性滤波的输出为输入的线性组合,即 g = w ⋅ x g = w \cdot x g=w⋅x,线性滤波器最为常见;
- 非线性滤波器(Non-Linear Filter):不满足上条性质的为非线性滤波,典型的非线性滤波如最大值/最小值/中值滤波、膨胀/腐蚀等;
- 自适应滤波器(Adaptive filter):线性滤波中的 w w w在滑动过程中固定不变(与图像内容独立无关),自适应滤波的 w w w在滑动过程中会随着窗口内像素的性质和结构发生变化。直觉上,自适应滤波器在某些复杂情况下可能取得更好的效果,但相对线性滤波器,其计算代价更高也更难优化加速。
从滤波目的或者解决的问题上,也可分成3类:
- 图像处理:并不想从图像中提取信息,只想将图像转换成期望的样子;
- 特征提取:想从图像中提取到某些信息,比如梯度、二阶导、纹理等;
- 模式检测:想知道图像局部长什么样子,像哪种模式,比如模板匹配、稀疏表示等;
这两种分类方式并不是割裂的,而是互相交叉的,用于图像处理的滤波器也有线性、非线性、自适应之分。
Padding
滤波操作不可避免的一个问题是边界如何处理,当滤波器的中心压在图像边界处时,滤波器会有一部分落在图像外,但图像外并没有像素,该如何处理?通常需要对图像进行填充(padding),填充需要解决2个问题,填充的元素取什么值以及填充多少个元素。
对于延拓元素的取值,通常有4种方式,
- 常数填充(0填充):填充的元素取相同的常数值
- 周期填充(circular):认为图像的上下左右被与自身相同的图像包围着
- 复制填充(replicate):复制图像边界的元素
- 对称填充(symmetric):填充的元素与图像关于边界对称
4种填充方式依次如下图所示,
对于填充多少个元素,通常有3种方式,令滤波器的大小为$g\times g $ ,图像大小为 f × f f \times f f×f ,
- full:边界分别填充 g − 1 g-1