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

发布于 2024-11-05 05:45:31 字数 69 浏览 3 评论 0原文

是什么让卷积核可分离?我如何才能知道这些可分离的部分是什么,以便进行两个一维卷积而不是二维卷积>

谢谢

What makes a convolution kernel separable? How would I be able to tell what those separable parts were in order to do two 1D convolutions instead of a 2D convolution>

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画尸师 2024-11-12 05:45:31

如果 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-volving-part-2/ - 这涵盖了使用 SVD(奇异值分解)从可分离的 2D 内核中提取两个 1D 内核。

另请参阅 DSP.stackexchange.com 上的此问题:快速/高效地分解可分离整数二维滤波器系数

If the 2D filter kernel has a rank of 1 then it is separable. You can test this in e.g. Matlab or 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> 

See also: http://blogs.mathworks.com/steve/2006/11/28/separable-convolution-part-2/ - this covers using SVD (Singular Value Decomposition) to extract the two 1D kernels from a separable 2D kernel.

See also this question on DSP.stackexchange.com: Fast/efficient way to decompose separable integer 2D filter coefficients

清晨说晚安 2024-11-12 05:45:31

您还可以将矩阵拆分为对称部分和倾斜部分,并将每个部分分开,这对于较大的二维卷积非常有效。

you can also split the matrix into symmetric and skew parts and separate each part, which can be effective for larger 2d convolutions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文