问题标签 [image-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1147 浏览

image-processing - 如何比较裁剪后的相同来源的图像?

假设我有一个图像文件/URL,并且我希望我的软件在最多 100 个图像(或至少在那个数量级)中搜索它。软件应该找到的目标图像应该是与给定图像“相同”的图像,但它仍然应该能够“原谅”对其中任何一个的轻微处理(这两个图像可能被不同地裁剪,或者它们被压缩不同)。问题是 - 这是一项可行的任务,因为在搜索之前我不会有任何图像(即,在搜索之前不会有任何索引。)它是否可能在亚秒内工作时间(请记住,比较集非常小)。如果可行,我可以使用哪些工具来完成这项任务?这可能是软件组件,甚至是在线服务(我可以接受它来证明概念)。OpenSURF帮帮我吗?为了进一步集中我的问题-我不是在问要使用哪种算法,此时我宁愿使用现有的工具/API/服务。

0 投票
1 回答
3923 浏览

machine-learning - 使用 SIFT 搜索图像数据库

关于SIFT 算法有几个问题,但它们似乎都集中在两个图像之间的简单比较上。与其确定两张图像的相似程度,不如使用 SIFT 从数千张图像的集合中找到最接近的匹配图像?换句话说,SIFT 是否可扩展?

例如,使用 SIFT 为一批图像生成关键点,将关键点存储在数据库中,然后找到与为“查询”图像生成的关键点具有最短欧几里德距离的那些是否可行?

在计算欧几里得距离的时候,会不会忽略关键点的x、y、尺度、方向部分,只看描述符?

0 投票
0 回答
670 浏览

java - 筛选算法的java代码

可能的重复:
在 Java 中实现 SIFT

嗨,我需要使用 sift 算法将图像与数据库中的图像进行比较 谁能告诉我在哪里可以获得用于实现这个概念的 java 编码 我是 java 编程和图像比较的新手 帮助我完成我的项目 在此先感谢

0 投票
2 回答
3250 浏览

c# - 确定边缘检测处理图像的相似性

我希望我可以从 stackoverflow 社区获得一些指导,以解决我在高级项目中遇到的困境。首先,我想声明我是一个新手程序员,我相信你们中的一些人会很快告诉我这个项目超出了我的想象。我很快就意识到这可能是真的。

现在这已经不碍事了,让我给出一些定义:

项目目标: 该项目的目标,就像许多其他人在各种 SO 问题中寻求实现的一样(其中许多问题在此工作过程中对我非常有帮助),是检测停车位是否已满或可用,最终将此类情况报告给用户(最好是通过 iPhone 或 Droid 或其他易于使用的移动应用程序——由于时间限制,这方面很快被认为超出了我的工作范围)。

使用中的工具: 我大量使用了 AForge.Net 库的资源,它为我提供了将项目整合到一起的所有构建块,包括从 IP 摄像机捕获视频、对图像应用过滤器以及最终完成检测的目的。结果,你就会知道我选择用 C# 编程,主要是因为初学者易于使用。其他选项包括 MATLAB/C++、带有 OpenCV 的 C++ 和其他替代方案。

问题

这是我遇到问题的地方。下面链接了一张在 AForge 图像处理实验室中经过预处理的图像。使用的过滤器和过程的顺序是:灰度、直方图均衡、Sobel 边缘检测,最后是 Otsu Thresholding(尽管我不相信需要最后一步)。

http://i.stack.imgur.com/u6eqk.jpg

当然,您可以用肉眼从图像中看出,检测到的边缘序列显然是停在我用相机监控的空间中的汽车。这些汽车的轮廓清晰地由亮化的车轮图案、基本上代表侧窗外边缘的那种“双铁轨”图案,甚至在这种情况下的车牌轮廓线所定义。具体来说,在项目的延续中,选择的摄像机将是一个 PTZ,以覆盖尽可能多的街区,因此我只想关注汽车的侧面特征(消除车牌等因素) . 也可以考虑天窗的矩形等特征,但显然这不是汽车的普遍特征,而一般的窗户轮廓是。

我们都可以看到这些模式存在差异,当然会因汽车制造商和型号而异。但是,通常这个序列不仅可以成功检索所需的特征,还可以从视野中消除道路(重要的是,如果您要检测空白空间,我打算使用道路颜色作为“第一个试金石”......如果我检测到与道路数据一致的灰度级,特别是如果在一个区域中没有检测到边缘,我觉得我可以安全地假设一个空白空间)。我的问题是这样的,希望它足够通用,对网站上的其他人实际上有益:

重点问题:
有没有办法拍摄一个图像片段(通过裁剪),然后将检测到的边缘序列与来自相机的未来新帧进行比较?更具体地说,有没有办法做到这一点,同时允许余地/基本上为边缘的微小差异创建公差阈值?

关于这个问题的个人想法/头脑风暴
——我确信有一种方法可以逐个像素地比较——裁剪到边缘周围的矩形,然后将裁剪后的图像滑过新处理的帧以进行比较像素-逐像素,但除非您与检测到的边缘完全匹配,否则这将无济于事。

感谢所有帮助,我也很乐意根据需要进行澄清。

0 投票
2 回答
3431 浏览

php - PHP的图像比较模块

是否有任何基本(免费或不免费)但可用 - 不像 libpuzzle - 用于 PHP 的图像指纹/相似性/比较模块,类似于 TinEye 或 Google 图像上传搜索?基本上需要避免将几乎相同(但带有水印、调整大小等)的图像两次上传到一组 50-300 张图像中。

0 投票
2 回答
1087 浏览

image-processing - 查找两个图像之间的差异,但*不是*像素到像素

我希望有人能帮助我。

我有一对黑白图像,这些图像是用大型扫描仪扫描文本的(结果文件高达 500M)。扫描的文本几乎相同,我需要检查是否有任何实质性差异。

显然,我无法逐像素比较,因为扫描到 bmp 中的相同图像每次扫描时都会给我带来略微不同的结果。

有谁知道我可以购买或下载的任何库(开源或商业库),并围绕它构建.NET 应用程序。

预先感谢您的帮助。海伦。

0 投票
1 回答
2220 浏览

image-processing - 基于内容的图像检索的直方图比较。不同的色彩空间(RGB、HSV 等)

我正在使用 OpenCv 完成基于内容的图像检索的最终学位项目。我已经开始比较直方图了。问题是我看到很多帖子说 RGB 是最糟糕的色彩空间操作,最好使用 HSV 或 YCrCb。但是,当我将图像与 RGB 进行比较时,结果总是比使用其他颜色空间时要好。

这是 YCrCb 颜色的代码:

范围对吗?

我对图像进行了标准化,但它根本没有改变任何东西。

你认为我应该尝试使用其他方法吗?

我还注意到垃圾箱的数量非常重要,如果我改变这个值,我会得到非常不同的结果,有没有办法控制这个?

问候

0 投票
3 回答
287 浏览

java - N张图像之间的距离:递增!(相同的裁剪,但重新压缩/调整)

我正在尝试找出图像的地理散列方法。这很难,因为可能图像的空间比 lat/lng 的维度要高得多。(地理散列将位置转换为字符串,其中字符串逐渐细化位置)

所以,我需要的是:

  • INPUT:磁盘上的 JPG 或 PNG 图像列表
  • 输出:对于每个图像一个字符串,其中任何两个图像之间的公共字符串前缀越长,两个图像相同的可能性就越高。

它不需要完美,也不需要处理极端情况,例如裁剪图像或经过大量调整的图像。它适用于不同分辨率和压缩级别的同一图像的多个副本。

我不能使用:

  • 文件或图像数据散列,因为即使两个图像之间的微小变化也会产生完全不同的散列,并且您不会得到任何接近
  • 图像减法,因为它不会是 N 对 N 比较。

我已阅读其他答案以尝试小波压缩或拉普拉斯/高斯金字塔,但我不确定如何在 Java 或 Python 中实现。不过,我进步了!

  1. 使用http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html将大小调整为 32x32以不丢弃数据。好的,一切都变成了一个正方形。
  2. 创建一个由逐渐缩小的缩略图组成的金字塔,一直到 2x2。
  3. 在 2x2 中,编码一串“下一个像素是否比当前像素亮?如果是,则为 1,否则为 0 ”(这会丢弃所有色调和饱和度,我可能想以某种方式使用色调)
  4. 对 8x8 和 32x32 金字塔中的连续二进制数进行编码
  5. 将大二进制数转换为更高的基数表示,如 Base62。

这似乎运作良好!压缩或色彩平衡的微小差异不足以改变“该区域的左侧是否比右侧更亮”。但是,我认为我正在重新发明轮子,某种渐进式编码可能会更好?SIFT 和其他特征检测是多余的,我不需要能够处理裁剪或旋转。

0 投票
5 回答
1739 浏览

matlab - 两个输入之间的不规则形状比较

我正在尝试为一些行为心理学研究提出一个评分系统。

我要求人们在绘图板上画一个字母,然后在它上面描摹。我想评估此跟踪的准确性。所以,你画任何一个字母('a'),然后你再画一次,然后我根据它与你第一次画它的相似程度来给它打分。绘图存储为像素位置。

准确性被评估为与原始字母的接近程度。该方法不需要允许缩放、旋转或位置改变。从概念上讲,它就像两条线之间的区域,只有两条线是高度不规则的,所以积分(据我所知)不起作用。

我正在用 MATLAB 写作,但我们将不胜感激任何概念上的帮助。我尝试将绘制的所有像素之间的最小距离相加,但这会为放置良好的单点提供良好的(低)分数。

这一定是以前做过的,但我的搜索没有任何运气。

--- 使用下面@Bill 建议的方法的部分解决方案。不起作用,因为 bwdist 梯度太陡了。而不是比尔展示的漂亮的第二张图片,它看起来更像原版。

0 投票
3 回答
2562 浏览

java - 欧几里得距离返回奇怪的结果

我正在编写一个程序来根据颜色和我使用欧几里德距离算法将两个图像相互比较但是当我运行它并传入两个图像时我得到一个距离然后当我传入相同的图像但反过来我得到一组完全不同的结果。

这是正常的还是答案应该是一样的?

我用来计算欧几里得距离的语句是: