如何确定我的卷积是否可分离?
是什么让卷积核可分离?我如何才能知道这些可分离的部分是什么,以便进行两个一维卷积而不是二维卷积>
谢谢
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果 2D 滤波器内核的
rank
为 1,则它是可分离的。您可以在 Matlab 或 Octave 中进行测试:另请参阅: 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: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
您还可以将矩阵拆分为对称部分和倾斜部分,并将每个部分分开,这对于较大的二维卷积非常有效。
you can also split the matrix into symmetric and skew parts and separate each part, which can be effective for larger 2d convolutions.