问题标签 [template-matching]

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 投票
1 回答
4824 浏览

c++ - OpenCV中具有容差的模板匹配

我正在使用 OpenCV 和 C++。我想检查一个图像是否是另一个图像的一部分,并且已经找到了一个matchTemplate正在工作的函数。但是如果模板图像有点不同怎么办?是否有一种功能或类似的方法matchTemplate可以检查模板是否是源图像的一部分,但具有诸如位置角度大小甚至变形之类的容差参数?还是我需要一种与模板匹配完全不同的方法?

到目前为止,这是我的代码,它在源图像中找到模板图像,但没有(或几乎没有)容差。

我在代码中使用的图像:

源图片a1.jpg 模板图片a2.jpg

0 投票
1 回答
675 浏览

c++ - 如何确定 CUDA gpu 性能?

我正在编写一个 cuda 程序,用于匹配每个分辨率 ~180X180 的输入图像,大约 10,000 个分辨率 ~128*128 的模板图像。目标是实现实时性能,即在 1 秒内对 25~30 个输入图像(每个都有 10,000 个模板)进行模板匹配。

目前我正在使用以下方法

  1. 在 GPU 全局内存上预加载所有模板以节省运行时 I/O 操作。
  2. 创建单个内核以将一个源图像与所有模板图像匹配,并为所有正匹配返回一个数组。
  3. 在时域中执行所有操作(不使用 FFT)。原因是,我尝试了 Radix-4 fft 实现,但它需要大量的中间全局读取和写入,最终会花费更多时间。

到目前为止,1 个输入图像到 10,000 个模板,大约需要 2 秒。

我的问题是:

  1. 有没有办法确定这个任务是否可以实时完成?我的意思是借助最大 FLOPS 和 I/O 带宽限制等
  2. 如何计算 GPU 是否被充分利用?
  3. 提高性能的可能方法?

机器规格:[i7-4770、8GB、GTX-680]

当前内核代码说明:

  1. 所有模板图像 [大小约为 128X128 RGB] 都加载到 GPU 内存上。想法是在运行时操作期间节省 I/O。
  2. 每个输入图像都加载到纹理内存中,原因是纹理是 2D 寻址的好选择。
  3. 每个“块”有 1024 个线程。
  4. 每个线程计算每个输出像素的值,输出大小为 [31X31 = 961 像素]。
  5. 启动的块数等于匹配的模板图像数。

内核代码:

0 投票
2 回答
2045 浏览

image - 使用 javacv 在另一个图像中查找图像

我想在另一个图像中找到一个图像。我已经尝试过“模板匹配”方法,但我不知道如何使它不受比例、旋转、透视等变化的影响。

我已经阅读了有关特征检测的内容,并怀疑使用 sift-features 可能是最好的方法。除此之外,我需要使用 javacv 而不是 opencv 来实现使用特征检测。

是否有任何使用功能检测或任何其他建议来解决我的问题的实现?

0 投票
2 回答
2101 浏览

java - 使用javacv中的匹配模板在图像中的特定区域查找图像

我试图在另一个特定区域内找到图像的位置。我正在使用 javacv 来解决这个问题。但是我的代码在执行cvMatchTemplate函数时出错。我想我想念使用cvSetImageROI

这就是我使用它的方式:

这是错误:

有什么帮助吗?

0 投票
4 回答
249 浏览

matlab - 向量化这个 strfind 循环

我正在寻找矢量化这个循环:

indices然后包含needle每行中的起始位置(每行haystack可能有不同的次数):

任何命令都可以,不必是strfind,只要它是矢量化的。

0 投票
1 回答
738 浏览

c++ - 图像Opencv中旋转不变的多个模板出现

我有各种模板图像和一个大图像,其中每个模板多次出现,但是被旋转了。

我尝试过使用 SIFT 和 SURF,但只能使用每个模板的一次出现,并且 matchTemplate 不是旋转不变的。我正在用 C++ 编程。

拜托,你能给我一些建议吗?谢谢。

0 投票
1 回答
781 浏览

java - JavaCV 图像处理错误

我正在开发一个在图像中包含匹配模板的 java 项目。我看过一些源代码,两者都没有关于导入的错误(我已经有了 javaCV 库)等。但是当我运行它时,它给出了这个错误。

这是我尝试过的两个源代码。

MatchTemplate.java 来自 GitHub Stackoverflow 问题

在此处输入图像描述

这里要清楚。

OpenCV 错误:cvInitImageHeader 中的未知错误代码 -25(错误输入 roi),文件 /build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp,第 2918 行

线程“主”java.lang.RuntimeException 中的异常:/build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp:2918:错误:(-25) 函数 cvInitImageHeader 中的错误输入 roi

Java 结果:1

谢谢!

0 投票
0 回答
1342 浏览

matlab - 在matlab中使用模板匹配进行货币识别

我正在尝试使用 Mat-lab 中的图像处理进行货币识别。我正在尝试从纸币扫描图像中获取 ROI,并将其用作模板,将其与原始纸币图像进行比较。在这种情况下,我将拥有每种纸币的模板,然后将每个模板与每个纸币图像进行比较。我已经从原始图像中裁剪了模板(我有 ROI)。用相关性进行模板匹配后,我得到了着色系数矩阵。我的问题是在这些矩阵之间进行比较以命名货币。任何人都可以帮助我或建议我解决问题的不同方式?

只是为了更清楚地说明我的问题:

我有 1,5,10,50 和 100 个单位货币。我有这些货币的扫描图像。而且我还有从货币图像中裁剪的每种货币的模板。现在我正在尝试使用模板匹配将模板与货币图像进行匹配。例如,在将 1 单位模板的模板与每张纸币图像(1、5、10、50 和 100 单位图像)匹配时,我得到了五个相关矩阵。我的问题是在这五个相关矩阵之间进行比较,以确定与正确纸币匹配的一个,在本例中为 1 单位模板。

以下是我的简单代码:

在对 5 个模板(sub_Note1 到 sub_Note5)重复相关后,我将有 25 个相关矩阵。我的目的是比较这些矩阵并找到最佳匹配。

0 投票
0 回答
153 浏览

c++ - OpenCV中的奇怪错误 - 在向量内添加所有矩阵

我正在做一个项目。我这里有一个vector<Mat> cache. 当我运行此模块时,不知何故我收到了一个奇怪的错误(我已经检查了其他解决方案,但仍然出现):

我想要做的是,将每个Mat内部添加cachesum_template. 但是,出现以下错误sum_template += cache.at(i);

该操作既不是“array op array”(其中数组具有相同的大小和相同的通道数),也不是“array op scalar”,也不是函数 arithm_op 中的“scalar op array”

我只是添加Mats。我检查了,cache.at(i)在崩溃之前正确显示,并且它显示的缓存大小为 10。知道这里有什么问题吗?

编辑缓存是类似于结果矩阵 R的矩阵向量, 如下所示

0 投票
1 回答
381 浏览

opencv - 如何使用 OPENCV 从图像中检测特定数字?

我住在土耳其,在土耳其,电视广告正在做一些倒计时,告诉我们电视节目或电影还剩多少分钟开始播放。

我想要做的是抓住 00:59 秒或柜台上的第二个“0”。算法必须理解“0”是“0”而不是任何其他数字。

之后,我尝试使用模板图像进行模板匹配,但它也检测到错误的数字。

所以我不知道哪种方法是最好的方法......

我试图从这些帧中检测:

示例图片 1

示例图像 2

如您所见,它检测到“1”而不是“0”。

下面是我的模板匹配代码;