通常我们求解一维卷积或者二维卷积都是采用模板平移的方法,今天我们介绍一种新的求解方法,可以一次性求出所有的结果。
一维卷积
卷积定义
对于两个长度分别为m和n的序列x(i)和g(i)有,
h(i)=x(i)∗g(i)=∑jx(j)g(i−j)
上式给出了长度为N=m+n-1的输出序列。称为一维情况下的卷积公式。
循环矩阵
参考百度百科:
在线性代数中,循环矩阵是一种特殊形式的 Toeplitz矩阵,它的行向量的每个元素都是前一个行向量各元素依次右移一个位置得到的结果。由于可以用离散傅立叶变换快速解循环矩阵,所以在数值分析中有重要的应用。
定义
形式为
的 矩阵 C 就是循环矩阵。
性质
循环矩阵的性质:
1. 循环矩阵遵循代数运算法则。对于两个循环矩阵 A 与 B 来说,A + B 也是循环矩阵。AB 也是循环矩阵,并且 AB=BA。
2. 循环矩阵的特征向量矩阵是同样维数的离散傅立叶变换矩阵,因此循环矩阵的特征值可以很容易地通过快速傅立叶变换计算出来。
循环矩阵求解卷积
按照定义,卷积后的序列长为N=m+n-1;
于是分别用0扩充序列x,g,分别为:
xp(i)={x(i)01⩽x⩽mm<i⩽N
gp(i)={g(i)01⩽x⩽nn<i⩽N
由于是用g去卷积f,所以构造g的循环矩阵:
G=⎡⎣⎢⎢⎢⎢⎢⎢⎢gp(1)gp(2)⋮gp(N)gp(N)gp(1)⋮gp(N−1)gp(N−1)gp(2)⋮gp(N−2)⋯⋯⋱⋱gp(2)gp(3)⋮gp(1)⎤⎦⎥⎥⎥⎥⎥⎥⎥
则
h=G⋅xp=⎡⎣⎢⎢⎢⎢⎢⎢⎢gp(1)gp(2)⋮gp(N)gp(N)gp(1)⋮gp(N−1)gp(N−1)gp(2)⋮gp(N−2)⋯⋯⋱⋱gp(2)gp(3)⋮gp(1)⎤⎦⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢xp(1)xp(2)⋮xp(N)⎤⎦⎥⎥⎥⎥⎥
则h就是卷积后的向量。
二维卷积
卷积定义
循环矩阵求解方法
举例
参考文献
- 北大高级遥感数字图像处理(硕士生课程)
- 离散卷积与自相关