从集

时间:2018-05-25 17:17:34

标签: algorithm bitmap pattern-matching comparison

我有一组类似尺寸的小位图,比方说8x8。每个位置一位。该集由几百个这样的位图组成。

接下来,我有一个永无止境的数百万个位图流......对于每个位图,我需要从集合A中找到匹配最佳位图的位图。我可能找不到完美的搭配。一个很好的匹配是LOOKS相似的,如图片。即,所有“最左边”位设置的位图与具有所有最右位设置的位置匹配不佳。设置相同的位数,但也必须考虑它们的位置。向右移动一步的位图没有完全匹配的位,但它看起来与原始位置非常相似,所以这将是一个非常好的匹配。再转移一下它就不再那么好了。

Soo ......它可以是近似值,也可以是模糊的。速度优于完美。我查看了测量图像之间相似性的SSIM索引算法,但我认为它太过分了,我可能需要更专业的东西。

如果我可以做一些预先计算,然后只使用某种对性能有好处的查找表,但我不确定我是怎么做的。在这种情况下,散列不会有多大用处......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

两个二值图像之间的直线相似性度量是它们的汉明距离(即,每对相应的像素获得相同的权重)。这隐含地考虑了它们的几何位置,但不能应对变化。

为了处理轮班,我想你不能真正避免明确转移然后比较。如果你限制自己偏移±1,这意味着总共有9次比较而不是1.对于这样的微小图像来说,处理旋转或缩放似乎代价高昂/毫无意义。

为了加快搜索速度,您可以考虑从粗到细的方法:通过添加2x2块中的像素来形成缩小的图像,以获得4x4,然后是2x2甚至1x1的缩减。这些thumnails不再是二进制文件,但总位数会减少。相同的图像将具有相同的缩减,相似或移位的图像将具有相似的缩减。

现在,您可以将图像数据库组织为树,以便每个全分辨率图像指向其缩小,等等递归。然后匹配给定的图像,形成1x1缩略图,选择数据库中最接近的matche,并继续使用后代,同时逐步增加缩减。