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

时间:2011-05-04 16:15:21

标签: math image-processing signal-processing convolution

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

由于

2 个答案:

答案 0 :(得分:18)

如果2D过滤器内核的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> 

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

请参阅DSP.stackexchange.com上的此问题:Fast/efficient way to decompose separable integer 2D filter coefficients

答案 1 :(得分:4)

你也可以将矩阵分成对称和偏斜的部分并将每个部分分开,这对于更大的2d卷积是有效的。