问题标签 [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.
c++ - OpenCV中具有容差的模板匹配
我正在使用 OpenCV 和 C++。我想检查一个图像是否是另一个图像的一部分,并且已经找到了一个matchTemplate
正在工作的函数。但是如果模板图像有点不同怎么办?是否有一种功能或类似的方法matchTemplate
可以检查模板是否是源图像的一部分,但具有诸如位置、角度、大小甚至变形之类的容差参数?还是我需要一种与模板匹配完全不同的方法?
到目前为止,这是我的代码,它在源图像中找到模板图像,但没有(或几乎没有)容差。
我在代码中使用的图像:
c++ - 如何确定 CUDA gpu 性能?
我正在编写一个 cuda 程序,用于匹配每个分辨率 ~180X180 的输入图像,大约 10,000 个分辨率 ~128*128 的模板图像。目标是实现实时性能,即在 1 秒内对 25~30 个输入图像(每个都有 10,000 个模板)进行模板匹配。
目前我正在使用以下方法
- 在 GPU 全局内存上预加载所有模板以节省运行时 I/O 操作。
- 创建单个内核以将一个源图像与所有模板图像匹配,并为所有正匹配返回一个数组。
- 在时域中执行所有操作(不使用 FFT)。原因是,我尝试了 Radix-4 fft 实现,但它需要大量的中间全局读取和写入,最终会花费更多时间。
到目前为止,1 个输入图像到 10,000 个模板,大约需要 2 秒。
我的问题是:
- 有没有办法确定这个任务是否可以实时完成?我的意思是借助最大 FLOPS 和 I/O 带宽限制等
- 如何计算 GPU 是否被充分利用?
- 提高性能的可能方法?
机器规格:[i7-4770、8GB、GTX-680]
当前内核代码说明:
- 所有模板图像 [大小约为 128X128 RGB] 都加载到 GPU 内存上。想法是在运行时操作期间节省 I/O。
- 每个输入图像都加载到纹理内存中,原因是纹理是 2D 寻址的好选择。
- 每个“块”有 1024 个线程。
- 每个线程计算每个输出像素的值,输出大小为 [31X31 = 961 像素]。
- 启动的块数等于匹配的模板图像数。
内核代码:
image - 使用 javacv 在另一个图像中查找图像
我想在另一个图像中找到一个图像。我已经尝试过“模板匹配”方法,但我不知道如何使它不受比例、旋转、透视等变化的影响。
我已经阅读了有关特征检测的内容,并怀疑使用 sift-features 可能是最好的方法。除此之外,我需要使用 javacv 而不是 opencv 来实现使用特征检测。
是否有任何使用功能检测或任何其他建议来解决我的问题的实现?
java - 使用javacv中的匹配模板在图像中的特定区域查找图像
我试图在另一个特定区域内找到图像的位置。我正在使用 javacv 来解决这个问题。但是我的代码在执行cvMatchTemplate函数时出错。我想我想念使用cvSetImageROI。
这就是我使用它的方式:
这是错误:
有什么帮助吗?
matlab - 向量化这个 strfind 循环
我正在寻找矢量化这个循环:
indices
然后包含needle
每行中的起始位置(每行haystack
可能有不同的次数):
任何命令都可以,不必是strfind
,只要它是矢量化的。
c++ - 图像Opencv中旋转不变的多个模板出现
我有各种模板图像和一个大图像,其中每个模板多次出现,但是被旋转了。
我尝试过使用 SIFT 和 SURF,但只能使用每个模板的一次出现,并且 matchTemplate 不是旋转不变的。我正在用 C++ 编程。
拜托,你能给我一些建议吗?谢谢。
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
谢谢!
matlab - 在matlab中使用模板匹配进行货币识别
我正在尝试使用 Mat-lab 中的图像处理进行货币识别。我正在尝试从纸币扫描图像中获取 ROI,并将其用作模板,将其与原始纸币图像进行比较。在这种情况下,我将拥有每种纸币的模板,然后将每个模板与每个纸币图像进行比较。我已经从原始图像中裁剪了模板(我有 ROI)。用相关性进行模板匹配后,我得到了着色系数矩阵。我的问题是在这些矩阵之间进行比较以命名货币。任何人都可以帮助我或建议我解决问题的不同方式?
只是为了更清楚地说明我的问题:
我有 1,5,10,50 和 100 个单位货币。我有这些货币的扫描图像。而且我还有从货币图像中裁剪的每种货币的模板。现在我正在尝试使用模板匹配将模板与货币图像进行匹配。例如,在将 1 单位模板的模板与每张纸币图像(1、5、10、50 和 100 单位图像)匹配时,我得到了五个相关矩阵。我的问题是在这五个相关矩阵之间进行比较,以确定与正确纸币匹配的一个,在本例中为 1 单位模板。
以下是我的简单代码:
在对 5 个模板(sub_Note1 到 sub_Note5)重复相关后,我将有 25 个相关矩阵。我的目的是比较这些矩阵并找到最佳匹配。
c++ - OpenCV中的奇怪错误 - 在向量内添加所有矩阵
我正在做一个项目。我这里有一个vector<Mat> cache
. 当我运行此模块时,不知何故我收到了一个奇怪的错误(我已经检查了其他解决方案,但仍然出现):
我想要做的是,将每个Mat
内部添加cache
到sum_template
. 但是,出现以下错误sum_template += cache.at(i);
:
该操作既不是“array op array”(其中数组具有相同的大小和相同的通道数),也不是“array op scalar”,也不是函数 arithm_op 中的“scalar op array”
我只是添加Mat
s。我检查了,cache.at(i)
在崩溃之前正确显示,并且它显示的缓存大小为 10。知道这里有什么问题吗?
编辑缓存是类似于结果矩阵 R的矩阵向量, 如下所示
opencv - 如何使用 OPENCV 从图像中检测特定数字?
我住在土耳其,在土耳其,电视广告正在做一些倒计时,告诉我们电视节目或电影还剩多少分钟开始播放。
我想要做的是抓住 00:59 秒或柜台上的第二个“0”。算法必须理解“0”是“0”而不是任何其他数字。
之后,我尝试使用模板图像进行模板匹配,但它也检测到错误的数字。
所以我不知道哪种方法是最好的方法......
我试图从这些帧中检测:
如您所见,它检测到“1”而不是“0”。
下面是我的模板匹配代码;