【发布时间】:2010-05-07 05:34:58
【问题描述】:
如果您有 2 个维度为 N*M 的矩阵。 获得差异 Rect 的最佳方法是什么?
例子:
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 4 5 4 3 2 3 <---> 2 3 2 3 2 3 2 3
2 3 4 5 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
|
|
\ /
Rect([2,2] , [3,4])
4 5 4
4 5 2-> A (2 x 3 Matrix)
我能想到的最好的方法是从左上角扫描到有差异的点。 然后从右下角扫描并点击有差异的点。
但在最坏的情况下,这是 O(N*M)。有没有更高效的算法?或者我可以用我如何表示它们来做些什么,以便您可以应用更有效的算法?请注意,这个矩阵可能非常大。
【问题讨论】:
-
这是一个非常有趣的问题。您能告诉我您将它用于哪些应用程序,或者这更像是一项研究?
-
@Xavier Ho - 不学习。我可以在原始图像上应用相同的算法
-
您可以比较每一行和每一列的傅立叶变换并比较结果。 DFT 非常快,因此它可能更有效。试试看 OpenCV,它是一个很棒的图像处理库,而且它是免费的。使用一张图像在另一张图像上的卷积也可能有效 - 你必须验证它(从数学上讲)