2

假设我有两个 4*4 矩阵(表示二进制图像),我想计算两个矩阵上显示的模式的相似度得分(从 0 到 1)。两个矩阵之间的“on”像素数始终相同,例如:

M1
0 1 1 1
0 0 0 1
0 0 0 0
0 0 0 0

M2
0 0 0 0
0 0 0 0
1 1 1 0
0 0 1 0

M3
1 0 0 1
0 0 0 0
0 0 0 0
1 0 0 1

M4
0 0 0 0
1 1 1 0
0 0 0 1
0 0 0 0

在这种情况下,我希望 M1:M2 给出满分 (1),因为图案的位置无关紧要。M1:M3 应该给出一个很差的分数,而 M1:M4 会得到一个很好但不完美的分数。目前,我只对相同方向的图案感兴趣,因此不需要检查图案方向。

任何有关算法的帮助或建议将不胜感激!

这个的最终实现将用 Matlab 编写,但我正在用 Python 编写一个初始测试实现,所以任何一个库都很好:)

4

2 回答 2

1

似乎对conv2将进行的操作是相关的,但这只是建议。这是一种不同的方法,因为 M1 和 M2 是相同的,它们具有相同的主成分,因此svd可以作为相似度的度量,例如:

abs(sum(svd(M1)-svd(M2)))
ans =
   1.1102e-16

abs(sum(svd(M1)-svd(M4)))
ans =
   0.1189

abs(sum(svd(M3)-svd(M4)))
ans =
    0.7321
于 2013-02-06T07:26:43.057 回答
0

这是直接的计算机视觉,但这里是一个幼稚的开始:针对每种可能的排列将两个矩阵相互卷积。

于 2013-02-06T07:24:35.627 回答