给定两个大小相等的二进制矩阵,计算模式相似性得分

时间:2013-02-06 07:20:02

标签: python matlab image-processing opencv matrix

假设我有两个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中编写了一个初始测试实现,所以两者中的库都没问题。)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这是直接的计算机视觉,但这是一个天真的启动:Convole每个可能的安排两个矩阵相互之间。