这里有一些主题对如何找到类似的图片非常有帮助.
我想要做的是获取图片的指纹,并在数码相机拍摄的不同照片上找到相同的图片.SURF算法接缝是独立于缩放,角度和其他失真的最佳方式.
我正在使用带有SURF算法的OpenCV来提取样本图像上的特征.现在我想知道如何将所有这些特征数据(位置,拉普拉斯,大小,方向,粗麻布)转换为指纹或散列.
该指纹将存储在数据库中,并且搜索查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较.
更新:
似乎没有办法将所有描述符向量转换为简单的哈希.那么将图像描述符存储到数据库中以便快速查询的最佳方法是什么?
词汇树是一种选择吗?
我会非常感谢任何帮助.
我最初在cstheory.stackexchange.com上提出了这个问题,但建议将其移至stats.stackexchange.com.
是否有现有算法返回两个位图图像之间的相似性度量?通过"相似",我的意思是人们会说这两幅图像是从同一张照片中改变的.例如,该算法应该说以下3个图像是相同的(原始,位置移位,收缩).
 
  
  
 
我不需要检测扭曲或翻转的图像.我也不需要检测它是否是不同方向的同一个对象.
 
 
我想使用此算法来防止我的网站上的垃圾邮件.我注意到垃圾邮件发送者懒得改变他们的垃圾邮件图像.它不仅限于面孔.我已经知道那里已经有很多很棒的面部识别算法了.垃圾邮件图像可以是从URL到足球场到裸体的任何东西.
我是那个地区的新手,我很想知道最先进的是什么以及我可以在哪里阅读它.
让我们假设我只有一个键/值存储,并且我以某种方式定义了一些距离(key1,key2)(不确定它是否必须是度量,即三角不等式是否必须始终保持).
我想要的主要是一个搜索(键)功能,它返回所有带有键的项目,直到搜索键一定距离.也许距离限制是可配置的.也许这也只是一个懒惰的迭代器.也许还有一个计数限制,一个项目(键,值)在返回集合中有一些概率P,其中P = 1 /距离(键,搜索键)左右(即,完美匹配肯定会是在集合和近似匹配中至少具有高概率).
一个示例应用是MusicBrainz中的指纹匹配.他们使用AcoustId指纹并定义了这个比较功能.他们使用PostgreSQL GIN索引,我猜(虽然我还没有完全理解/读取acoustid服务器代码)GIN部分匹配算法,但我还没有完全理解这是我要求的以及它是如何工作的.
对于文本,到目前为止我发现的是使用一些语音算法来根据发音简化单词.一个例子是在这里.这主要是为了将搜索空间缩小到更小的空间.然而,这有一些限制,例如它在较小的空间中仍然必须是完美的匹配.
但无论如何,我也在寻找更通用的解决方案,如果存在的话.
我想建立类似于Tunatic或Midomi的东西(如果你不确定他们做了什么的话就试试看)我想知道我必须使用哪些算法; 我对这些应用程序的工作原理是这样的:
我虽然因为环境噪声和编码差异而降低了质量/比特率.
我在这里走在正确的轨道上吗?任何人都可以提供任何具体的文档或示例吗?Midori似乎甚至认识到hum's,这真是令人印象深刻!他们是怎么做到的?
声音哈希存在还是我刚刚制作的东西?如果他们这样做,我该如何计算它们?更重要的是,我如何检查是否child-hash在father-hash?
我将如何使用Python(可能是内置模块)或PHP构建类似的系统?
一些例子(最好是Python或PHP)将不胜感激.提前致谢!
我需要一个(最好是简单快速)的图像散列算法.散列值用于查找表,而不用于加密.
一些图像是"计算机图形" - 即纯色填充的光栅,光栅化文本等,而还有"摄影"图像 - 包含丰富的色谱,大多是光滑的,具有合理的噪声幅度.
我也希望哈希算法能够应用于特定的图像部分.我的意思是,图像可以分为网格单元格,每个单元格的哈希函数应该仅取决于该单元格的内容.因此,如果两个图像具有共同区域(如果它们被适当地对齐),则可以快速发现.
注意:我只需要知道两个图像(或它们的部分)是否相同.也就是说,我不需要匹配类似的图像,不需要特征识别,相关和其他DSP技术.
我想知道什么是首选的散列算法.
对于"摄影"图像,只需对网格单元格内的所有像素进行异或运算即可.不同图像的相同散列值的概率非常低,特别是因为(几乎白色)噪声的存在打破了所有潜在的对称性.此外,这种散列函数的频谱看起来很好(任何值都可能以几乎相同的概率).
但是这种天真的算法可能不会与"人工"图形一起使用.对于这样的图像,相同的像素,重复图案,几何偏移不变性是非常常见的.对于具有偶数个相同像素的任何图像,对所有像素进行异或将给出0.
使用像CRT-32这样的东西看起来很有希望,但我想更快地找出一些东西.我想到了迭代公式,每个新像素都会改变当前的哈希值,如下所示:
hashValue = (hashValue * /*something*/ | newPixelValue) % /* huge prime */
做模数素数应该可以很好地分散,所以我倾向于这个选项.但我想知道是否有更好的变种.
提前致谢.
我有一个图像数据库.当我拍摄新照片时,我想将其与此数据库中的图像进行比较,并获得相似性得分(使用OpenCV).这样我想要检测,如果我有一个图像,这与新图片非常相似.
是否可以创建我的数据库图像的指纹/哈希并匹配新的数据库图像?
我正在搜索alogrithm代码段或技术演示,而不是商业解决方案.
最好,
斯特凡
有一些令人惊讶的好图像比较工具,即使它们不完全相同(例如,尺寸,壁纸,亮度/对比度的变化),它们也能找到相似的图像.我在这里有一些示例应用程序:
我只尝试过第一个,但所有这些都是为Windows开发的,不是开源的.Unique Filer于2000年发布,主页似乎已经消失.它出乎意料地快(即使在当年的计算机上),因为它使用索引并使用索引比较一些10000个图像仅需要几秒钟(并且更新索引是一个可伸缩的过程).
由于这种算法以非常有效的形式存在至少15年,我认为它已被充分记录,并且可能已经作为开源库实现.有谁知道更多关于使用哪种算法或图像检测理论来实现这些应用程序?也许甚至可以使用它的开源实现?
我已经检查了算法找到类似的图像,但所有的答案通过比较一个图像来解决问题.对于1000多张图像,这将导致1000 ^ 2比较操作,这不是我正在寻找的.
我在比较两张相同的图像时遇到了问题.如果图像大小相同则可以比较(没有问题),如果大小不同,那么我无法比较.我正逐像素地比较.
在C#.net中是否有任何方法来比较类似的图像,可以匹配约70%.
谢谢
拉克斯曼
我想从查询与数据库中的图片(约2000)进行比较.
在本网站发帖之前,我阅读了很多关于在大型数据库中匹配图片的方法的文章,并阅读了stackOverflow上的很多帖子.
关于论文,有一些有趣的东西,但技术性很强,很难理解算法.(我刚开始专注于这个领域)
帖子(最有趣的):
C++/SIFT/SQL - 如果有一种方法可以有效地比较图像的SIFT描述符和SQL数据库中的SIFT描述符?
论文:
具有大型词汇表和快速空间匹配的对象检索,
图像相似性搜索紧凑数据结构,
LSH,
近重复图像检测min-Hash和tf-idf加权
词汇树
聚合本地描述符
但我仍然困惑.
我做的第一件事就是实施BoW.我训练了Bag of Words(使用ORB作为探测器和描述符,并使用了VLAD功能)和5级,以测试其效率.经过长时间的培训,我推出了它.它运行良好,准确率为94%.那很不错.
但是我有一个问题:
首先,你同意我的意见吗?这显然是做我想做的最好的方法吗?也许还有另一种方法可以使用BoW来查找数据库中的相似之处?
我做的第二件事是"更简单".我计算查询的描述符.然后我在我的所有数据库上做了一个循环,我计算了每个图片的描述符,然后在向量中添加了每个描述符.
std::vector<cv::Mat> all_descriptors_database;
for (i ? 2000) :
    cv::Mat request=cv::imread(img);
    computeKeypoints(request) ;
    computeDescriptors(request) ;
    all_descriptors_database.pushback(descriptors_of_request)
最后,我有一个大向量,其中包含所有数据库的所有描述符.(所有关键点都一样)
然后,这就是我感到困惑的地方.开始时,我想计算循环内部的匹配,也就是说,对于数据库中的每个图像,计算其描述符并与查询匹配.但是花了很多时间.
因此,在阅读了大量关于如何在大数据库中找到相似之处的论文后,我发现LSH算法似乎适合于那种搜索.
因此我想使用这种方法.所以在我的循环中我做了类似的事情:
//Create Flann LSH index
cv::flann::Index flannIndex(all_descriptors_database.at(i), cv::flann::LshIndexParams(12, 20, 2), cvflann::FLANN_DIST_HAMMING);
        cv::Mat results, dists;
        int k=2; // find the 2 nearest neighbors
        // search (nearest neighbor)
        flannIndex.knnSearch(query_descriptors, results, …在这里,我想通过上传图像从 MySQL 中搜索图像。我已经尝试过hash和rgb,也尝试过hex。但我没有像谷歌那样得到完美的图片。例如,如果您找到了Koala.jpg,那么您只能看到与 相关的那些照片Koala.jpg。但是我也通过上述尝试获得了其他照片。是否有任何建议我可以通过图像上传从数据库中搜索图像。提前致谢。
algorithm ×3
opencv ×3
hash ×2
image ×2
php ×2
audio ×1
c# ×1
c++ ×1
comparison ×1
database ×1
fingerprint ×1
fuzzy-search ×1
indexing ×1
mysql ×1
python ×1
search ×1
similarity ×1
surf ×1