zoukankan      html  css  js  c++  java
  • 3.4 Fundamentals of Spatial Filtering

    本章介绍了空间滤波器的一些概念。

    线性空间滤波器

    线性空间滤波器在图像\(f\)和滤波核\(w\)之间进行运算。滤波核是一个数组,其大小定义了运算的区域,其系数决定了滤波器的性质。\(filter\ kernel\)可以称为mask,template,window。

    一般来说,核大小都是奇数。进行滤波的一般公式如下:

    \[g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) \]

    其中,核大小为\(m\times n,m=2a+1,n=2b+1\)。在这个式子中,\(x\)\(y\)是变化的,这样这个式子可以遍历到图像中的每个像素。若将\(x\)\(y\)固定,则有:

    \[g(x,y)=w(-1,-1)f(x-1,y-1)+w(-1,0)f(x-1,y)+\dots+\\w(0,0)f(x,y)+\dots w(1,1)f(x+1,y+1) \]

    为什么使用奇数大小:方便索引,并且滤波器是空间对称的。

    空间相关与卷积

    空间相关与卷积原理相同,区别在于,卷积将空间相关的滤波器旋转了\(180°\)

    一维

    首先是一维卷积:

    \[g(x)=\sum_{s=-a}^a w(s)f(x+s) \]

    下面是一个例子:

    image

    可以看到,空间相关与卷积的差别只是将卷积核反转了\(180°\)。需要注意的是,因为起始是将图像的原点与卷积核的中心对准,所以左右必须进行\(0\)填充。

    对上图的一些解释:
    \(g(0)=w(-2)f(-2)+w(-1)f(-1)+\dots +w(2)f(2)=0\)

    相当于卷积核在图像上进行移动,相乘求和,最后的结果对应于输出图像的一个像素。

    当内核\(w\)与只包含一个\(1\),其余为\(0\)\(f\)相关联时,会将w水平反转180°(像上图一样)。这种只有一个\(1\),其余全为\(0\)\(f\)称为离散单元脉冲。

    上图右侧是卷积的相关操作,内核被事先旋转,所以最后我们得到的结果就是内核的准确复制。

    二维

    二维操作与一维类似。对于二维,将核旋转\(180°\)相当于在\(x\)\(y\)轴上同时做对称。

    image

    脉冲是线性系统理论的基础。位于坐标\((x_0,y_0)\)的离散强度脉冲(振幅)A定义为:

    \[\sigma(x-x_0,y-y_0)= \left\{ \begin{array}{**lr**} A,如果x=x_0并且y=y_0\\ 0,其他情况 \end{array} \right. \]

    比如下图中,只有当x=3时有值。这就可以表示为\(\sigma(x-3)\)(而且在这个例子中,振幅A为1,所以这还是一个单元脉冲)

    image

    对上面的空间相关总结如下:

    一张图片\(f(x,y)\),核\(w\),大小为\(m\times n\),空间相关的操作记为:

    \[(w☆f)(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) \]

    卷积相关的操作如下:

    \[(w★f)(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x-s,y-t) \]

    其中\(m,n\)为奇数,并且\(a=(m-1)/2,b=(n-1)/2\)

    下表是空间相关与卷积的相关性质:

    性质 卷积 相关
    对称性 \(f★g=g★f\) -
    结合律 \(f★(g★h)=(f★g)★h\) -
    分配律 \(f★(g+h)=(f★g)+(f★h)\) \(f☆(g+h)=(f☆g)+(f☆h)\)

    有时候,每个阶段会使用不同的内核,按顺序、分阶段对图像进行过滤(卷积):

    \[w=w_1★w_2★w_3★\dots★w_Q \]

    注意,对于空间相关不适用于上面的式子,因为只有卷积具有交换律。

    Separable Filter Kernels

    一个二维函数G(x,y)如果可以写为两个一维函数的乘积,则称它是可分离的:

    \[G(x,y)=G_1(x)G_2(y) \]

    对于卷积核\(\omega\)来说,\(\omega\)可以分离为\(\omega=vw^T\)

    结合上面的卷积结合律,一个输入\(f\)与卷积核\(\omega\)可以写为

    \[\omega★f=(w_1★w_2)★f=(w_2★w_1)★f=w_2★(w_1★f)=(w_1★f)★w_2 \]

    也就是说,对一张图片进行卷积,可以通过将卷积核先分解为两个小卷积核\(w_1\)\(w_2\),然后分别进行卷积。

    对于一张大小为\(M\times N\)的图片和一个\(m\times n\) 大小的核,如果使用\((6)\)的方式计算,一共需要\(MNmn\)次加法与乘法。但是如果将核分离,并先计算\(w_1★f\),需要使用\(MNm\)次加法与乘法;将上一步的结果再与\(w_2\)进行卷积,需要\(MNn\)次。一共加起来是\(MN(m+n)\)次。与不分离相比,计算量的优势为:

    \[C=\frac{MNmn}{MN(m+n)}=\frac{mn}{m+n} \]

    由矩阵原理可知,一个列向量与行向量相乘,结果的秩总是1。所以说,一个可分离的核,其秩一定是1。

    现在假设有一个秩为1的矩阵,用下面三步来将其分解为两个向量\(v\)\(w\)的乘积:

    1. 现在矩阵中找到任何非零元素,并让E代表其值;
    2. 让向量\(c\)\(r\)等于在步骤1中知道到的元素所在的行和列;
    3. 参考\(\omega=vw^T\),让\(v=c,w^T=r/E\)

    例如:\(kernel=\left[ \matrix{ 1&2&3\\4&5&6\\7&8&9 }\right]\),先任意找到一个非零元素E,比如2。然后用c表示其列向量,\(c=\left[ \matrix{2\\4\\6}\right]\)\(r\)表示其行向量,\(r=\left[\matrix{2&4&6}\right]\)\(v=c=\left[ \matrix{2\\4\\6}\right],w=\frac{1}{E}r=\frac{1}{2}\left[\matrix{2&4&6}\right]=\left[\matrix{\frac{1}{2}&1&\frac{3}{2}}\right]\)

    循环对称核(circularly symmetric kernels):可以使用核中心的一列来描述整个核,\(w=vv^T/c\)\(c\)为核中心的值。将这个核分解,可以得到\(w_1=v,w_2=v^T/c\)

  • 相关阅读:
    linux内存查看方法
    setInterval/setTimeout传参方法
    MBT简述:基于模型的测试
    mac如何挂载移动硬盘、存储设备、U盘
    Jquery获取元素方法
    jquery如何判断元素是否被点击、属性操作、class操作
    SQL Server数据库中还原孤立用户的方法集合
    密码有效性验证失败。该密码不够复杂,不符合 Windows 策略要求
    还原SQLServer2008数据库报用户无法登录 .
    disable jboss JMXInvokerServlet .
  • 原文地址:https://www.cnblogs.com/KangYh/p/15581030.html
Copyright © 2011-2022 走看看