计算机视觉中的滤波

小鱼儿 2023-07-04 12:38 87阅读 0赞

文章目录

  • 写在前面
  • Padding
  • 滤波杂谈
  • 参考

博客: 博客园 | CSDN | blog

写在前面

http://setosa.io/ev/image-kernels/

在计算机视觉中,滤波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.

—— from Bilateral Filtering for Gray and Color Images

滤波本质上是一种特殊的函数,其作用在图像的每个位置,通过定义的计算方式得到输出,输出的值用于替换图像当前位置(滤波器中心)的值。

令滤波函数为 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类:

filtering

  • 图像处理:并不想从图像中提取信息,只想将图像转换成期望的样子;
  • 特征提取:想从图像中提取到某些信息,比如梯度、二阶导、纹理等;
  • 模式检测:想知道图像局部长什么样子,像哪种模式,比如模板匹配、稀疏表示等;

这两种分类方式并不是割裂的,而是互相交叉的,用于图像处理的滤波器也有线性、非线性、自适应之分。

Padding

滤波操作不可避免的一个问题是边界如何处理,当滤波器的中心压在图像边界处时,滤波器会有一部分落在图像外,但图像外并没有像素,该如何处理?通常需要对图像进行填充(padding),填充需要解决2个问题,填充的元素取什么值以及填充多少个元素

对于延拓元素的取值,通常有4种方式,

  • 常数填充(0填充):填充的元素取相同的常数值
  • 周期填充(circular):认为图像的上下左右被与自身相同的图像包围着
  • 复制填充(replicate):复制图像边界的元素
  • 对称填充(symmetric):填充的元素与图像关于边界对称

4种填充方式依次如下图所示,

https://www.cs.toronto.edu/~urtasun/courses/CV/lecture02.pdf

对于填充多少个元素,通常有3种方式,令滤波器的大小为$g\times g $ ,图像大小为 f × f f \times f f×f ,

  • full:边界分别填充 g − 1 g-1 g−1个元素,滤波结果为 ( f + g − 1 ) × ( f + g − 1 ) (f+g-1)\times (f+g-1) (f+g−1)×(f+g−1),比原图大
  • same:边界分别填充 ( g − 1 ) / 2 (g-1)/2 (g−1)/2个元素,滤波结果为 f × f f\times f f×f,与原图大小相同
  • valid:边界不填充,滤波结果为 ( f − g + 1 ) × ( f − g + 1 ) (f-g+1)\times (f-g+1) (f−g+1)×(f−g+1),比原图小

1DncG9.png

滤波杂谈

  • 基本假设:局部相关性(远处无关)、局部相似(edge处不满足)、噪声随机
  • 静止图像的去噪,若能获得图像序列,可以在时域上滤波(均值、中值等)单张图像在空域上滤波
  • 椒盐噪声用中值滤波。椒盐噪声会随机地将像素置为黑或白,在实践中,会大幅改变像素值的噪声一般采用中值滤波都是有效的。
  • 非椒盐噪声,均值为0的随机噪声(高斯噪声),可通过moving average滤波。
  • 与图像内容耦合的噪声,可能需要依赖先验知识,采用合适的自适应滤波器,更多内容可以查看参考链接。
  • 平滑相当于低通、锐化相当于高通、不同平滑半径的差相当于带通
  • 滤波的加速可以考虑:滤波器是否行列可分离、缓存不必要的重复计算、近似计算、SIMD等。
  • 差分算子对噪声敏感,所以差分前通常要先平滑。
  • 考虑到噪声,求梯度前通常要先(高斯)平滑再使用差分算子,sobel算子可以看成是DoG(Derivative of Gaussian)的近似,可以拆分成平滑和差分,如下所示,所以可以用sobel求梯度。
    G x = [ 1 2 1 ] ∗ ( [ + 1 0 − 1 ] ∗ A ) and G y = [ + 1 0 − 1 ] ∗ ( [ 1 2 1 ] ∗ A ) \mathbf{G}_{x}=\left[\begin{array}{l}{1} \\ {2} \\ {1}\end{array}\right] *\left(\left[\begin{array}{lll}{+1} & {0} & {-1}\end{array}\right] * \mathbf{A}\right) \quad \text { and } \quad \mathbf{G}_{y}=\left[\begin{array}{c}{+1} \\ {0} \\ {-1}\end{array}\right] *\left(\left[\begin{array}{lll}{1} & {2} & {1}\end{array}\right] * \mathbf{A}\right) Gx​=⎣⎡​121​⎦⎤​∗([+1​0​−1​]∗A) and Gy​=⎣⎡​+10−1​⎦⎤​∗([1​2​1​]∗A)
  • 考虑到噪声,求二阶导前通常也要先(高斯)平滑再使用拉普拉斯算子,两者合在一起即LoG(Laplacian of Gaussian),即对高斯求二阶导再离散采样,通常可以用**DoG(Difference of Gaussian)**即两个不同size高斯核的差近似,详见Laplacian/Laplacian of Gaussian,其中Laplacian算子为
    ∇ 2 f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \nabla^{2} f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} ∇2f=∂x2∂2f​+∂y2∂2f​
  • 模式检测需要根据期望探测的模式来定义filter,因为不同场景需要检测的模式不同,所以filter也多种多样。反映模式的filter可以根据领域知识来人工定义、可以通过SOM(Self Organizing Map)无监督生成、也可以像CNN那样通过数据驱动有监督学习得到。比如,模板匹配中的模板为filter,相似度函数为滤波的计算方法;稀疏表示中字典的每一列都是filter,像gabor小波字典,通过相关运算计算与每个filter的相似程度,从而知道每个图像局部“长什么样子”。

参考

  • CAP5415–Fall 2014-Lecture 2 (08/21/2014)–Filtering
  • Computer Vision: Filtering
  • Adaptive Filtering (Image Processing)
  • Adaptive Image Filters
  • Image Kernels

发表评论

表情:
评论列表 (有 0 条评论,87人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算机视觉-线性滤波

    在视觉处理的过程中,需要首先对图像或视频进行基础的处理,以便于后续图像模式的识别。基本的处理方法往往是通过是通过不同的加权模式计算像素的加权和,通过该方法可以达到平滑图像中的噪

    相关 计算机视觉(三)

    1、滤波器 傅里叶变换主要作用反应图像各区域像素变化的幅度。 滤波器(核)矩阵:一组权重集合(内部所有值加和为0),作用在源图像的一个区域(滑动),并由此生成目标图像的一个