是什么让卷积核可分离?为了进行两个 1D 卷积而不是 2D 卷积,我如何能够分辨出这些可分离的部分是什么>
谢谢
是什么让卷积核可分离?为了进行两个 1D 卷积而不是 2D 卷积,我如何能够分辨出这些可分离的部分是什么>
谢谢
如果 2D 滤波器内核的 arank
为 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
您还可以将矩阵拆分为对称和倾斜部分并分离每个部分,这对于较大的 2d 卷积非常有效。