如何确定我的卷积是否可分离?

Der*_*rek 19 math signal-processing image-processing convolution

什么使卷积内核可分离?我怎样才能分辨出那些可分离的部分是为了进行两次1D卷积而不是2D卷积>

谢谢

Pau*_*l R 18

如果2D滤波器内核的a rank为1,那么它是可分离的.你可以在Matlab或Octave中测试这个:

octave-3.2.3:1>     sobel = [-1 0 1 ; -2 0 2 ; -1 0 1];
octave-3.2.3:2>     rank(sobel)
ans =  1
octave-3.2.3:3> 
Run Code Online (Sandbox Code Playgroud)

另请参阅:http://blogs.mathworks.com/steve/2006/11/28/separable-convolution-part-2/ - 这包括使用SVD(奇异值分解)从可分离的2D内核中提取两个1D内核.

另请参阅DSP.stackexchange.com上的这个问题:快速/有效的方法来分解可分离的整数2D滤波器系数

  • SVD 就是解决这个问题的方法。可分离(即等级 1)内核非常具体,SVD 允许您通过可分离内核的(小)总和来近似您的内核。 (2认同)