相关疑难解决方法(0)

OpenCV/SURF如何从描述符中生成图像哈希/指纹/签名?

这里有一些主题对如何找到类似的图片非常有帮助.

我想要做的是获取图片的指纹,并在数码相机拍摄的不同照片上找到相同的图片.SURF算法接缝是独立于缩放,角度和其他失真的最佳方式.

我正在使用带有SURF算法的OpenCV来提取样本图像上的特征.现在我想知道如何将所有这些特征数据(位置,拉普拉斯,大小,方向,粗麻布)转换为指纹或散列.

该指纹将存储在数据库中,并且搜索查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较.

更新:

似乎没有办法将所有描述符向量转换为简单的哈希.那么将图像描述符存储到数据库中以便快速查询的最佳方法是什么?

词汇树是一种选择吗?

我会非常感谢任何帮助.

opencv image-processing surf data-structures

37
推荐指数
1
解决办法
3万
查看次数

图像相似性比较

我最初在cstheory.stackexchange.com上提出了这个问题,但建议将其移至stats.stackexchange.com.

是否有现有算法返回两个位图图像之间的相似性度量?通过"相似",我的意思是人们会说这两幅图像是从同一张照片中改变的.例如,该算法应该说以下3个图像是相同的(原始,位置移位,收缩).

相同

在此输入图像描述 在此输入图像描述 在此输入图像描述

我不需要检测扭曲或翻转的图像.我也不需要检测它是否是不同方向的同一个对象.

不同

在此输入图像描述 在此输入图像描述

我想使用此算法来防止我的网站上的垃圾邮件.我注意到垃圾邮件发送者懒得改变他们的垃圾邮件图像.它不仅限于面孔.我已经知道那里已经有很多很棒的面部识别算法了.垃圾邮件图像可以是从URL到足球场到裸体的任何东西.

algorithm image-processing image-recognition

30
推荐指数
3
解决办法
5万
查看次数

如何在大数据中进行模糊搜索

我是那个地区的新手,我很想知道最先进的是什么以及我可以在哪里阅读它.

让我们假设我只有一个键/值存储,并且我以某种方式定义了一些距离(key1,key2)(不确定它是否必须是度量,即三角不等式是否必须始终保持).

我想要的主要是一个搜索(键)功能,它返回所有带有键的项目,直到搜索键一定距离.也许距离限制是可配置的.也许这也只是一个懒惰的迭代器.也许还有一个计数限制,一个项目(键,值)在返回集合中有一些概率P,其中P = 1 /距离(键,搜索键)左右(即,完美匹配肯定会是在集合和近似匹配中至少具有高概率).


一个示例应用是MusicBrainz中的指纹匹配.他们使用AcoustId指纹并定义了这个比较功能.他们使用PostgreSQL GIN索引,我猜(虽然我还没有完全理解/读取acoustid服务器代码)GIN部分匹配算法,但我还没有完全理解这是我要求的以及它是如何工作的.


对于文本,到目前为止我发现的是使用一些语音算法来根据发音简化单词.一个例子是在这里.这主要是为了将搜索空间缩小到更小的空间.然而,这有一些限制,例如它在较小的空间中仍然必须是完美的匹配.

但无论如何,我也在寻找更通用的解决方案,如果存在的话.

database indexing search fuzzy-search

15
推荐指数
2
解决办法
9242
查看次数

音乐识别与信号处理

我想建立类似于TunaticMidomi的东西(如果你不确定他们做了什么的话就试试看)我想知道我必须使用哪些算法; 我对这些应用程序的工作原理是这样的:

  1. 有一个有几首歌的大数据库
  2. 1中的每首歌曲.降低质量/比特率(例如64kbps)并计算声音"哈希"
  3. 有你想要识别的音乐的声音/摘录
  4. 对于3中的歌曲.降低质量/比特率(再次达到64kbps)并计算声音"哈希"
  5. 如果4.声音散列在2.中的任何一个中.声音散列返回匹配的音乐

我虽然因为环境噪声和编码差异而降低了质量/比特率.

我在这里走在正确的轨道上吗?任何人都可以提供任何具体的文档或示例吗?Midori似乎甚至认识到hum's,这真是令人印象深刻!他们是怎么做到的?

声音哈希存在还是我刚刚制作的东西?如果他们这样做,我该如何计算它们?更重要的是,我如何检查是否child-hashfather-hash

我将如何使用Python(可能是内置模块)或PHP构建类似的系统

一些例子(最好是Python或PHP)将不胜感激.提前致谢!

php python audio signal-processing audio-processing

14
推荐指数
3
解决办法
8499
查看次数

快速简单的图像哈希算法

我需要一个(最好是简单快速)的图像散列算法.散列值用于查找表,而不用于加密.

一些图像是"计算机图形" - 即纯色填充的光栅,光栅化文本等,而还有"摄影"图像 - 包含丰富的色谱,大多是光滑的,具有合理的噪声幅度.

我也希望哈希算法能够应用于特定的图像部分.我的意思是,图像可以分为网格单元格,每个单元格的哈希函数应该仅取决于该单元格的内容.因此,如果两个图像具有共同区域(如果它们被适当地对齐),则可以快速发现.

注意:我只需要知道两个图像(或它们的部分)是否相同.也就是说,我不需要匹配类似的图像,不需要特征识别,相关和其他DSP技术.

我想知道什么是首选的散列算法.

对于"摄影"图像,只需对网格单元格内的所有像素进行异或运算即可.不同图像的相同散列值的概率非常低,特别是因为(几乎白色)噪声的存在打破了所有潜在的对称性.此外,这种散列函数的频谱看起来很好(任何值都可能以几乎相同的概率).

但是这种天真的算法可能不会与"人工"图形一起使用.对于这样的图像,相同的像素,重复图案,几何偏移不变性是非常常见的.对于具有偶数个相同像素的任何图像,对所有像素进行异或将给出0.

使用像CRT-32这样的东西看起来很有希望,但我想更快地找出一些东西.我想到了迭代公式,每个新像素都会改变当前的哈希值,如下所示:

hashValue = (hashValue * /*something*/ | newPixelValue) % /* huge prime */
Run Code Online (Sandbox Code Playgroud)

做模数素数应该可以很好地分散,所以我倾向于这个选项.但我想知道是否有更好的变种.

提前致谢.

algorithm hash image

12
推荐指数
2
解决办法
2万
查看次数

OpenCV:指纹图像和数据库比较

我有一个图像数据库.当我拍摄新照片时,我想将其与此数据库中的图像进行比较,并获得相似性得分(使用OpenCV).这样我想要检测,如果我有一个图像,这与新图片非常相似.

是否可以创建我的数据库图像的指纹/哈希并匹配新的数据库图像?

我正在搜索alogrithm代码段或技术演示,而不是商业解决方案.

最好,

斯特凡

hash comparison opencv image fingerprint

9
推荐指数
1
解决办法
2万
查看次数

使用索引查找相似图像的算法

有一些令人惊讶的好图像比较工具,即使它们不完全相同(例如,尺寸,壁纸,亮度/对比度的变化),它们也能找到相似的图像.我在这里有一些示例应用程序:

我只尝试过第一个,但所有这些都是为Windows开发的,不是开源的.Unique Filer于2000年发布,主页似乎已经消失.它出乎意料地快(即使在当年的计算机上),因为它使用索引并使用索引比较一些10000个图像仅需要几秒钟(并且更新索引是一个可伸缩的过程).

由于这种算法以非常有效的形式存在至少15年,我认为它已被充分记录,并且可能已经作为开源库实现.有谁知道更多关于使用哪种算法或图像检测理论来实现这些应用程序?也许甚至可以使用它的开源实现?

我已经检查了算法找到类似的图像,但所有的答案通过比较一个图像来解决问题.对于1000多张图像,这将导致1000 ^ 2比较操作,这不是我正在寻找的.

algorithm image-processing similarity

9
推荐指数
1
解决办法
1018
查看次数

如何比较不同大小的图像

我在比较两张相同的图像时遇到了问题.如果图像大小相同则可以比较(没有问题),如果大小不同,那么我无法比较.我正逐像素地比较.

在C#.net中是否有任何方法来比较类似的图像,可以匹配约70%.

谢谢

拉克斯曼

c#

8
推荐指数
1
解决办法
4166
查看次数

OpenCv/C++ - 轻松地从具有大型数据库的图片中查找相似之处

我想从查询与数据库中的图片(约2000)进行比较.

在本网站发帖之前,我阅读了很多关于在大型数据库中匹配图片的方法的文章,并阅读了stackOverflow上的很多帖子.

关于论文,有一些有趣的东西,但技术性很强,很难理解算法.(我刚开始专注于这个领域)

帖子(最有趣的):

简单快速的方法来比较图像的相似性 ;

高维数据中最近的邻居?;

如何理解局部敏感哈希?;

图像指纹比较多个图像的相似度 ;

C++/SIFT/SQL - 如果有一种方法可以有效地比较图像的SIFT描述符和SQL数据库中的SIFT描述符?

论文:

具有大型词汇表和快速空间匹配的对象检索,

图像相似性搜索紧凑数据结构,

LSH,

近重复图像检测min-Hash和tf-idf加权

词汇树

聚合本地描述符

但我仍然困惑.

我做的第一件事就是实施BoW.我训练了Bag of Words(使用ORB作为探测器和描述符,并使用了VLAD功能)和5级,以测试其效率.经过长时间的培训,我推出了它.它运行良好,准确率为94%.那很不错.

但是我有一个问题:

  • 我不想做分类.在我的数据库中,我将有大约2000张不同的图片.我只是想找到我的查询和数据库之间的最佳匹配.因此,如果我有2000张不同的图片,如果我合乎逻辑我必须考虑这些2000张图片作为2000年的不同类,显然这是不可能的......

首先,你同意我的意见吗?这显然是做我想做的最好的方法吗?也许还有另一种方法可以使用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)
Run Code Online (Sandbox Code Playgroud)

最后,我有一个大向量,其中包含所有数据库的所有描述符.(所有关键点都一样)

然后,这就是我感到困惑的地方.开始时,我想计算循环内部的匹配,也就是说,对于数据库中的每个图像,计算其描述符并与查询匹配.但是花了很多时间.

因此,在阅读了大量关于如何在大数据库中找到相似之处的论文后,我发现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, …
Run Code Online (Sandbox Code Playgroud)

c++ mysql opencv

7
推荐指数
1
解决办法
2750
查看次数

使用图片上传查找相似图片

在这里,我想通过上传图像从 MySQL 中搜索图像。我已经尝试过hashrgb,也尝试过hex。但我没有像谷歌那样得到完美的图片。例如,如果您找到了Koala.jpg,那么您只能看到与 相关的那些照片Koala.jpg。但是我也通过上述尝试获得了其他照片。是否有任何建议我可以通过图像上传从数据库中搜索图像。提前致谢。

php google-image-search

0
推荐指数
1
解决办法
3873
查看次数