- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我写了一段代码,它通过 KNN 算法找到 K 个最接近的匹配项。在获得 matMatch 和 matchIndices 之后,我尝试在两个结果帧之间绘制匹配对。
我将 matMask 和 matchIndices 送入函数 Features2DToolbox.DrawMatches :
Image<Bgr, byte> imResult = Features2DToolbox.DrawMatches(imModelCurr, imModel.keyPoints, imObserPrev,imObser.keyPoints, **matchIndices**, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red), **matMask**, Features2DToolbox.KeypointDrawType.NOT_DRAW_SINGLE_POINTS);
http://www.emgu.com/wiki/files/2.4.0/document/html/e92d37e6-fe4a-ad09-9304-cd2d2533bfa8.htm但我注意到它给了我匹配对之间的错误绘图:
然后我尝试自己实现这样的功能:
for (int i = 0; i < matMask.Rows; ++i)
{
if (**matMask[i, 0]** > 0)
{
int indForCurrFrm = **matchIndices[i, 0]**;
int indForPrevFrm = i;
//for frame i-1
PointF fromFirstFrame = getImgObserved(keyPoints[indForPrevFrm]);
//for frame i
PointF NextCorrespondingMatchedFrame = getImModelXY(keyPoints[indForCurrFrm]);
imColorPrv2.Draw(new CircleF(fromFirstFrame, 5), new Bgr(mtchColor), 3);// for frame i-1
imColorShow.Draw(new CircleF(NextCorrespondingMatchedFrame, 5), new Bgr(mtchColor), 3); // for frame i
// draw line on my own matching
imResult.Draw(new LineSegment2DF(fromFirstFrame,NextCorrespondingMatchedFrame),new Bgr(System.Drawing.Color.FloralWhite),1);
}
}
并获取对应的对点坐标(X,Y)并自行绘制[结果见快照]。
在左下角你可以看到匹配项(用白线显示)和每个对应的对都有一个相同颜色的圆圈[通过我自己的函数],在另一侧 - 右下角,它是由 DrawMatches 绘制的结果来自 Emgu 的函数。请注意,这两个函数使用相同的 matMash 和 matchIndices。
所以我想知道 EMGU 的 DrawMatches 是否有错误或者我做错了什么?
最佳答案
使用每个对应对的描述符之间的欧氏距离从 matchIndices 中过滤最佳匹配可能非常有用。有时,第一张图像中的一个关键点可以很好地匹配第二张图像中的许多关键点,这可能会混淆结果中的绘制线。
过滤可能是这样的:
vector< DMatch > filtered_matches;
for( int i = 0; i < descriptors_of_model.rows; i++ )
{
if( matchIndices[i].distance < SMALL_THRESHOLD )
filtered_matches.push_back( matchIndices[i]);
}
关于c# - KNN 计算的图像中的绘图匹配对和 Features2DToolbox.DrawMatches 中的潜在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15823994/
好的,所以我刚刚开始尝试将 BDD 用于我们正在进行的一些新开发,并且我为日志查看器功能写了一个这样的故事: 故事:用户查看工作流执行日志 As a user I want to review the
我正在尝试使用 TensorFlow 编写一个简单的深度机器学习模型。我正在使用我在 Excel 中制作的玩具数据集,只是为了让模型工作并接受数据。我的代码如下: import pandas as p
我是机器学习的初学者。我很困惑如何将数据集的不同特征组合成一个特征。 例如,我在 Python Pandas 数据框架中有一个数据集,其特征如下: movie unknown actio
我正在做一项功能调查,为一个研究项目做准备。 说出难以优化的主流语言或语言功能,以及为什么该功能值得或不值得付出代价,或者只是用轶事证据驳斥我下面的理论。在有人将其标记为主观之前,我要求提供语言或功能
这是一个有点哲学问题。我正在为我的软件添加一个小功能,我认为大多数用户都会使用它,但他们使用该软件的次数可能只有 10%。换句话说,该软件没有它 3 个月就很好,但是有 4 或 5 个用户要求它,我同
我开始使用 git flow。我创建了一个功能: git flow feature start eval 然后我做了一些工作并添加并提交了更改: git add (files) git commit
pull 请求是内置在 Git 中还是 GitHub 虚构的概念? 最佳答案 概念和该概念的实现之间存在区别。 “请求 pull ”的概念是 DVCS 系统有别于传统版本控制系统的部分原因。使用传统的
研究该主题,可以找到作者使用“词袋”模型进行图像分类/检索的论文,而其他人则使用“特征袋”模型进行类似任务。 尽管我对所涉及的方法有基本的了解(检测和提取视觉词、构建视觉词典、使用机器学习训练分类器)
有时一首歌会有不止一个艺术家。例如,Jay-z 的新歌“A Star is Born”以艺术家 Cole 为主角,因此在目录中会被列为“Jay-z(以 Cole 为主角)- A Star is Bor
This question already has an answer here: How do I 'pass down' feature flags to subdependencies in C
This question and answer演示当使用 scikit-learn 的专用特征选择例程之一执行特征选择时,可以按如下方式检索所选特征的名称: np.asarray(vectorize
例如,我定义了 2 个没有依赖关系的特性: [features] default = [] py2 = [] py3 = [] 基于选定的功能 (--features py3) 我想为依赖项 (cpy
我正在完成一个小型 Wordpress“杂志”类型网站的定制。由于我是 PHP 的新手,我遇到了一些需要帮助的问题。 我有一个“首屏,主要特色区域,包含 3 张图片”和帖子标题的小摘录。在首屏下,我在
我已经为 Windows 10 创建了一个 C# 应用程序。它是通过使用 WIX 生成的 MSI 安装的。但是,当它为一台机器上的一个用户安装时,并非出于我的意图,它不会为同一台机器上的其他用户安装。
在 ArcGIS Runtime Java API 文档中,有一个 identifyLayersAsync() method . 来自文档: Asynchronously identifies the
我是 GIT 和 GIT-Flow 的新手。 [在我的 python-django 项目上] 我做了什么: git flow feature start new_feature # perform s
我是 Angular 的新手,我正在尝试使用 Angular/d3 构建德国 map 。 map 数据存储在 Topojson 文件 plz_map_ger.json 中: { "type": "To
我一直在使用 503 服务不可用 或停机维护。 但是一些 http 客户端库,即 axios 将 503 视为可重试错误。 如果由于高负载而产生响应,则重试它是有意义的,但 503 也适合功能切换情况
要列出您希望包含在生成的 features.xml 中的一堆包,文档说: bundles File A properties file that contains a list of bund
我在 Visual Studio 2010 下开发 C# T4 预处理模板时遇到以下编译错误: A template containing a class feature must end with
我是一名优秀的程序员,十分优秀!