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

原文地址: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] 则
Proof of Separable Convolution 2D 证明 二维卷积的可分性_第1张图片

一维卷积定义: 
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]


你可能感兴趣的:(matlab,convolution,直积,卷积)