2011-01-10 105 views
1

目前我有一个数据库,超过10万的图像,他们是不一样的大小或类似的东西,但我想为我的COMPAGNY如下:C# - 图像比较(快速的)

我插入/上传图像,系统返回最有可能相同的图像。我不知道要使用什么算法,但它需要很快。我可以预处理所有其他图像,并将一些信息放入我用于比较的数据库中。

现在我想知道的最快方法是对图像进行比较(与是相同的图像的好机会)什么什么。我应该将哪些数据保存到数据库中(如果我有算法,我可以自己弄清楚这个数据)。

它不应该采取更多然后5分钟上传的图像进行比较,以数据库中的所有图像。

在此先感谢!

朱利安

www.tineye.com,他们有某种算法,我要找的。猜测他们使用的是非常复杂的一个,我只需要一个能做同样的事情,但成功率较低的人。

+0

您可能会发现在http://stackoverflow.com/questions/1261687/ – hangy 2011-01-10 14:34:20

+0

一些有用的信息感谢您的评论hangy,我发现了一些其他帖子在stackoverflow。但是他们中的大多数没有任何代码/链接来编码,而是链接到数学艺术作品。我想知道是否有某种图书馆在那里。 – Julian 2011-01-10 14:36:15

回答

1

我会做的方式是我生成你对每比较像一个非常小的(说..原始图像大小的1/50)的图像,以及缩略图路径存储与沿数据库中的原始大小。我会保留缩略图作为未压缩的bmp的速度和无损性能(我只是写了这个单词!),因为它们太小了。

要对其他的人比较你的新形象,收缩下来相同的量,并通过像素也反对其他像素相比,具有一定的阈值(比方说..从原来的10%的差异)。

如果通过测试,你可以做一个完全成熟的逐像素比较与原始图像。

编辑:我只是想指出,我之前也走下概率的方式。它工作正常,但为这些图像构建元数据需要花费很长时间,并且存在很多误报。本能地,我认为为图像的每个网格矩形计算局部平均值(这是缩小图像的缩小比例)会给出类似的结果,即使不是更好的结果。

1

比较的最佳方法是将图像转换为灰度格式并比较灰度的灰度。它是实时系统中使用最快的方法。

此外,如果你想获得更高的qaullity并使用彩色图像 - 使用CIE 1994年或2000 CIE作为色差公式