DSP

Proof of Separable Convolution 2D 证明 二维卷积的可分性

2019-07-13 15:49发布

原文地址:http://www.songho.ca/dsp/convolution/convolution2d_separable.html 二维卷积的定义
Definition of 2D convolution 卷积的交换性 (x[n] * y[n] = y[n] * x[n]) 所以
alternative 2D convolution 假如 h[m, n] 可分离成 (M×1) 和 (1×N); 
 h[m,n]=h1[m]⊗h2[n] 原文为克罗内克积(物理上的直积)符号为⊗,避免与乘积相混  替换h[m, n] 则
一维卷积定义: 
Definition of 1D Convolution  因此二维卷积可以分割为两个一维卷积分别在水平和垂直方向
先行卷积再列卷积与先列卷积在行卷积,最终结果是一样的,顺便提一下这与二维傅里叶变换和二维小波变换是相似的,都可以把二维计算分割为先行计算再列计算。(后半句译者注)

Example

分割卷积法与通用的卷积法的比较 x[m,n] 
Input h[m,n] 
Separable Kernel i) 通用卷积法 2D 
ii) 用分割卷积法2D  首先,计算垂直1D卷积,n=1,行m=0,1,2;
  然后计算水平卷积m=1
个人理解:例如[1,2,3]    [1] 第一步行卷积    [4,5,6] *  [2]= [1,2,3]*[1]+[4,5,6]*[2]+[7,8,9]*[1]=[1+8+7,2+10+8,3+12+9]=[16,20,24]                             [7,8,9]     [3]          第二步列卷积   [16,20,24]*[1,2,1]=[16]*[1]+[20]*[2]+[24]*[1]=80                如果先列卷积  [1,2,3]               [1]        [2]        [3]         [8]                                    [4,5,6]*[1,2,1]=[4]*[1]+[5]*[2]+[6]*[1]=[20]                                    [7,8,9]               [7]       [8]        [9]       [32] 在行卷积                 [8]    [1]                                  [20]*[2]=8+40+32=80                                  [32]  [1]