我希望能够快速确定给定的整数系数2D内核是否可分为两个具有整数系数的1D内核。例如
2 3 2
4 6 4
2 3 2
可分为
2 3 2
和
1
2
1
使用整数算术对可分离性的实际测试似乎相当简单,但是事实证明,分解为具有整数系数的一维滤波器比较困难。困难似乎在于以下事实:行或列之间的比率可能是非整数(比率分数),例如,在上述示例中,比率为2、1 / 2、3 / 2和2/3。
我真的不想使用像SVD这样的繁重方法,因为(a)满足我的需求在计算上相对昂贵,并且(b)仍然不一定有助于确定整数系数。
有任何想法吗 ?
更多信息
系数可以为正,负或零,并且可能存在一些病理情况,其中一维向量或两个一维向量之和为零。
-1 2 -1
0 0 0
1 -2 1
可分为
1 -2 1
和
-1
0
1
1
我记得在大学时曾试图解决这个问题。我几乎成功了,但我不记得如何。=)既然您提到了它,我就不会停止思考!
—
声音
@Phonon:呵呵-一直在想-我可以从中得到一些启发。;-)
—
Paul R
除了double或float值,是否可以做同样的事情?
—
Diego Catalano 2014年
@DiegoCatalano:请参阅下面的丹尼斯答案,以及他在math.stackexchange.com上链接到的问题-我认为这对于更通用的浮点系数情况可能有用。
—
Paul R
@PaulR,一个人如何通过电子邮件与您联系?谢谢。
—
罗伊