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

Math 如何确定卷积是否可分离?,math,image-processing,signal-processing,convolution,Math,Image Processing,Signal Processing,Convolution,什么使卷积核可分离?为了进行两次1D卷积而不是2D卷积,我如何才能知道这些可分离部分是什么 谢谢如果2D过滤器内核的秩为1,那么它是可分离的。您可以在Matlab或倍频程中进行测试: 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> 另请参见:-这包括使用SVD(奇异值分解)从可分离的2D内核中提取两

什么使卷积核可分离?为了进行两次1D卷积而不是2D卷积,我如何才能知道这些可分离部分是什么


谢谢

如果2D过滤器内核的
为1,那么它是可分离的。您可以在Matlab或倍频程中进行测试:

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> 
另请参见:-这包括使用
SVD
(奇异值分解)从可分离的2D内核中提取两个1D内核


另请参见以下问题:

您还可以将矩阵拆分为对称部分和倾斜部分,并将每个部分分开,这对于更大的2d卷积是有效的。

SVD是解决此问题的方法。可分离(即秩1)的核非常具体,SVD允许你用可分离核的(小)和来近似你的核。你能举个例子澄清一下吗?如果你能把你的2d矩阵安排成向量积
x.y'+u.v'
等,你可以对行和列进行一组1d卷积,而不是2d卷积,只需要4N乘法/加法,而不是N^2。如果
u.v'
的尺寸较小,则减小幅度较大。这通常假设您事先了解矩阵的结构,以便于分离。这也将取决于你的计算引擎——GPU可能支持另一种结构。