问题标签 [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.
opencv - 大小和响应在 SURF 关键点中究竟代表什么?
我正在使用 OpenCV 2.3 进行关键点检测和匹配。但是我对检测算法给出的size
和参数有点困惑。response
它们到底是什么意思?
根据 OpenCV 手册,我无法弄清楚:
float size
:有意义的关键点邻域的直径
float response
:选择最强关键点的响应。可用于进一步排序或二次抽样
我认为跟踪的最佳点是响应最高的点,但似乎并非如此。那么,我如何对 surf 检测器返回的一组关键点进行二次采样,以仅在可追踪性方面保留最好的关键点呢?
c++ - 缩放和旋转模板匹配
我正在使用匹配模板的方法CV_TM_CCORR_NORMED
来比较两个图像......我想让这个旋转和缩放不变......有什么想法吗?
我尝试对图像和模板的傅里叶变换使用相同的方法,但旋转后的结果仍然不同
c# - 如何在c#中将图像与稍微不同的另一个图像(旋转、亮度、角度)进行比较
我正在创建一个应用程序来通过书脊识别书籍。我想做的是给书脊拍照并将其与书籍数据库相匹配。
我希望为此使用模式匹配和模板匹配。首先,我希望使用保存在数据库中的书脊模板通过模板匹配搜索书籍,并将它们与拍摄的照片匹配。但是这个过程非常昂贵,并且需要很长时间才能遍历数据库中保存的所有图像。
所以我想用直方图代替。使用直方图和阈值处理后,我能够找到类似的图像。但问题是,当涉及到书籍时,可能会有相同颜色甚至不同光照条件的书脊。因此,逐像素搜索和比较会产生很多假阴性结果,这些图像可能会因不同的光照条件、一点点旋转和大小而有所不同。
如果可以,请指导我如何通过书脊认出这本书。
到目前为止,我一直在使用颜色平均值,但这还不够,我可以用来识别这本书的其他独特功能是什么。
android - 使用 OpenCV 进行模板匹配
我试图在我的 Android 手机摄像头中抓取一张图像,使用该图像中的 ROI 定义一个模板,然后在抓取连续图像时,进行模板匹配以找到模板的新位置。
问题是模板匹配似乎没有运行:maxVal
值一直在 0.99 左右,而maxLoc
正是模板的原始位置(X
下面的Y
)。
我究竟做错了什么?
这是抓取帧时的代码:
这是生成模板的代码:
image-processing - 通过 opencv 进行 3D 模板匹配
我有一个 3D 矩阵(非常大,我们称之为 L)和一个 3D 小矩阵(非常小,我们称之为 S),并且想使用 OpenCV 找到 L 中最接近的模式。
OpenCV 会为我做吗?如果是,我应该如何使用它?谢谢。
c# - 为单个字符/字形(OCR)实现模板匹配
我正在开发一个可以识别希伯来字符的 C# OCR 程序(用于我自己的学习目的的项目,没有商业质量)。我计划通过从图像中分离字形然后应用模板匹配方法来做到这一点。
我在哪里
我现在有了它,这样我就可以将单个字形从图像中分离出来。每个字形都用一个 2D 像素数组表示。例如,字符“bet”看起来像:
在哪里 ”。” 表示空白,“*”表示填充像素。
我现在要应用模板匹配算法来识别这个二维像素数组代表什么字形(在这种情况下,它应该匹配“赌注”模板)。
问题
我很难找到一个好的模板匹配算法的简单解释(我发现的大部分是论文或代码库的链接),并且想知道是否有人知道我可能研究的任何内容。
我想强调一下,我想手动完成,而不是简单地使用库。我愿意研究图书馆如何解决这个问题,但是,如果它不分成十五亿个不同的部分。:)
我也愿意听听是否有更好的方法来做我想做的事情。
c++ - 依赖于 Alpha 的模板匹配
我正在使用具有 CUDA / CUBLAS / CUFFT 支持的 OpenCV 在灰度屏幕截图上执行一些非常基本的模板匹配以提取一些文本,这意味着我可以假设以下内容:
我确实知道我试图匹配的原始精灵的确切大小、颜色和旋转,即,我可以访问在观察程序的渲染过程中使用的纹理。
然而,由于精灵是部分透明的,正常的模板匹配通过cv::(gpu::)matchTemplate
(使用规范互相关)不能正常工作,因为透明区域的偏差对整体相关性有太大的负面影响。
基本上这些例子很好地总结了我想要实现的目标:
给定要匹配的模板及其 alpha 掩码:
我希望对这样的图像进行高到接近 100% 的匹配(任意背景、透明区域中的随机内容、部分遮挡):
然而,像这样的图像应该只产生非常低的百分比(错误的颜色,全黑):
目前我正在使用边缘检测来获得一些不错的匹配(Canny + 互相关),但正如您所看到的,根据背景,图像中可能存在也可能不存在边缘,这会产生不可靠的结果并且通常非常匹配“前卫”的领域。
我做了一些数学运算,得出了一个依赖于 alpha 的标准化互相关(基本上将 alpha 掩码预乘到模板和图像上),它在纸上运行良好,但几乎不可能以良好的性能实现。是的,性能确实是一个问题,因为多个精灵 (~10) 必须以近乎实时的方式 (~10 FPS) 匹配以跟上程序的速度。
我有点想不通了。有什么标准的方法吗?有什么想法或建议吗?
opencv - 如何检测 OpenCV 中的已知对象?
我尝试在窗口中实时绘制形状。形状像缠结,矩形,圆形,半圆形或圆形以及屏幕中使用黄色的“Z”。大小和形状可能与原始图像不同。但是程序知道所有原始形状。因为它们是预定义的。我想知道如何识别正确的形状。举个例子,
有没有办法做到这一点?我可以为此使用模板匹配吗?请在这件事上给予我帮助..
python - 使用矩阵乘法进行 numpy 模板匹配
我试图通过沿图像移动模板来将模板与二进制图像(仅黑白)匹配。并返回模板和图像之间的最小距离,以及该最小距离确实出现的相应位置。例如:
图像:
模板:
该模板在位置 (1,1) 与图像最匹配,然后距离将为 0。到目前为止,事情并不太难,我已经得到了一些可以解决问题的代码。
但是对于我需要的大小的图像(500 x 200 像素之间的图像和 250 x 100 之间的模板),这已经需要大约 4.5 秒,这太慢了。而且我知道使用矩阵乘法可以更快地完成同样的事情(在 matlab 中,我相信这可以使用 im2col 和 repmat 来完成)。谁能解释我如何在 python/numpy 中做到这一点?
顺便提一句。我知道有一个 opencv matchTemplate 函数可以完全满足我的需要,但是由于我稍后可能需要稍微更改代码,所以我更喜欢我完全理解并且可以更改的解决方案。
谢谢!
编辑:如果有人可以向我解释 opencv 如何在不到 0.2 秒的时间内做到这一点,那也很棒。我看了一眼源代码,但这些东西对我来说总是很复杂。
编辑2:赛通代码
java - Java 模板匹配越界
我最近对模板匹配感兴趣,我知道 OpenCV 之类的库存在,但我想创建一个简单的函数来查找可以在搜索 BufferedImage 中找到模板的所有点,而无需任何额外的库或安装软件等。
我在 wiki 上找到了一篇关于它的文章,其中包含一些代码:
http://en.wikipedia.org/wiki/Template_matching
它似乎完全符合我的需要,所以我已经将它移植到 Java 中,但不是灰度,而是稍微改变了它以使用颜色。使用纯白色模板图像(30x30)和搜索图像(508x307)进行测试,搜索图像也是纯白色,但在某些区域带有红色矩形,代码似乎可以正确输出到控制台一段时间,但是我收到错误:
我不确定这是否是由于它不是灰度的事实,或者 java 是否需要对循环量进行额外调整,但任何帮助使其正常工作的帮助将不胜感激。
我测试的图像:
Template.png(它是纯白色的,因此在页面上看起来不可见)
搜索.png