数字图像处理 - Ch3 空间滤波基础

数字图像处理 Ch3 空间滤波基础

  • 空间滤波基础
    • 1. 线性空间滤波的原理
    • 2. 空间相关与卷积
    • 3. 可分离滤波器核

空间滤波基础

空间滤波通过把每个像素的值替换为该像素及其邻域的函数值来修改图像。如果对图像像素执行的运算是线性的,那么称该滤波器为线性空间滤波器

1. 线性空间滤波的原理

线性空间滤波器在 图像 f f f滤波器核 w w w 之间执行乘积之和运算。核是一个阵列,其大小定义了运算的邻域,其系数决定了该滤波器的性质。空间滤波器核也可以叫 模板窗口。我们使用术语 滤波器核或者

对于大小为 m × n m \times n m×n的核,假设 m = 2 a + 1 m=2a+1 m=2a+1 n = 2 b + 1 n=2b+1 n=2b+1 a a a b b b在这里均为非负整数。我们关注的是在两个坐标方向上奇数大小的核。(也可以使用偶数大小或者混合偶数与奇数大小的核,但是用奇数大小的核可以简化索引并且直观,因为核的中心落在整数值上,在空间上对称。)

一般来说,大小为 m × n m \times n m×n的核对大小为 M × N M\times N M×N的图像的线性空间滤波可以表示为: g ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)f(x+s,y+t) g(x,y)=s=aat=bbw(s,t)f(x+s,y+t)

2. 空间相关与卷积

以上式为空间相关的数学描述,相关的运算过程为:在图像上移动核的中心,并且在每个位置计算乘积之和。空间卷积的原理相同,只是将相关运算的核旋转了180度

下图显示了一维函数 f f f和一个核 w w w。左侧为空间相关,右侧为空间卷积。当核 w w w的一部分在 f f f之外时,一般的解决方案是在函数 f f f两侧补足够多的0。下图中的 ( g ) (g) (g)为完全相关, ( f ) (f) (f)为“标准”相关。这里的 f f f的1个元素是1,其余元素是0,我们称其为离散单位冲激函数。核 w w w与离散单位冲激函数相关时,会得到这个冲激的位置产生核的旋转版本。
数字图像处理 - Ch3 空间滤波基础_第1张图片
卷积的这一列运算与相关不同的是,在执行移位/乘积之和前,核预先旋转了180度。其实线性系统理论的基础就是将一个函数与一个冲激进行卷积,在冲激的位置产生这个函数的一个副本。

这个一维概念其实很容易推广到图像。
数字图像处理 - Ch3 空间滤波基础_第2张图片
坐标 ( x 0 , y 0 ) (x_0, y_0) (x0,y0)处的离散冲激强度(振幅) A A A定义为: δ ( x − x 0 , y − y 0 ) = { A , i f   x 0 = x   a n d   y 0 = y 0 , o t h e r w i s e \delta (x-x_0, y-y_0)=\left\{\begin{matrix} A, & if \ x_0=x \ and \ y_0=y\\ 0, & otherwise \end{matrix}\right. δ(xx0,yy0)={A,0,if x0=x and y0=yotherwise

卷积满足交换律,因此旋转 w w w还是旋转 f f f无关紧要,但是按照约定通常旋转核。

数字图像处理 - Ch3 空间滤波基础_第3张图片
如上图所示,可见 相关 不满足交换律和结合律,只满足分配律;而 卷积 都满足。因此,输入到相关算法中的函数的顺序确实会导致不同。

有时候,“核与图像卷积”这个描述,并不一定会区分相关和卷积,而只是表达一种 “滑动并且求乘积之和”的过程。通常“卷积”在这里表示这两种运算之一,但是书中也明确表示,书中的 线性空间滤波 这个术语即指 核与图像进行卷积运算。

3. 可分离滤波器核

空间滤波器核是一个矩阵,而可分离核是一个能够表示为两个向量的外积的矩阵。可分离和的重要性是卷积的结合律性质导致的计算优势。对于大小为 M × N M\times N M×N的图像和大小为 m × n m \times n m×n的核,实现式需要 M N m n MNmn MNmn次乘法和加法运算。但是,如果核是可分离的,则相当于与一个 m × 1 m \times 1 m×1的核进行卷积之后,再与 n × 1 n \times 1 n×1进行卷积,一共需要 M N ( m + n ) MN(m+n) MN(m+n)次乘法和加法运算。因此,使用可分离核执行卷积运算相对于使用不可分离核执行卷积运算的计算优势定义为: C = M N m n M N ( m + n ) = m n m + n C=\frac{MNmn}{MN(m+n)}=\frac{mn}{m+n} C=MN(m+n)MNmn=m+nmn核越大,计算优势更明显。

根据矩阵理论,我们知道一个列向量和一个行向量相乘得到的矩阵,其秩总是1。因此要确定一个核是否可分离,只要确定其秩为1就可以了。

矩阵的秩 => https://www.zhihu.com/question/21605094
按照秩的性质有 r ( A B ) ≤ m i n ( r ( A ) , r ( B ) ) r(AB)\leq min(r(A),r(B)) r(AB)min(r(A),r(B)),行向量和列向量本身秩都为1,所以 r ( A B ) ≤ 1 r(AB) \leq 1 r(AB)1,即乘积小于等于1。

一般计算机语言中会有预编程函数来求矩阵的秩,比如MATLAB中的rank函数。确定秩为1后,很容易求出两个向量 v \bm{v} v w \bm{w} w,因为他们的外积 v w T \bm{v}\bm{w}^T vwT等于这个核。这个方法包含3个步骤:

  1. 在核中找到任何一个非零元素,将其值表示为E。
  2. 形成向量 c c c r r r,他们分别等于核中包含步骤1中找到的元素的那一行和那一列。
  3. 参考 w = v w T w = \bm{v}\bm{w}^T w=vwT,令 v = c \bm{v}=\bm{c} v=c w T = r / E \bm{w}^T=\bm{r}/E wT=r/E

你可能感兴趣的:(数字图像处理,图像处理)