斑点跟踪算法

2023-11-24

我正在尝试使用 OpenCV 创建简单的斑点跟踪。我已经使用 findcontours 检测到了斑点。我想给这些斑点一个恒定的 ID。

我收集了前一帧和当前帧中的斑点列表。然后我计算了前一帧和当前帧中每个斑点之间的距离。我想知道还需要什么来跟踪斑点并给它们一个 ID。我只是获取了前一帧和当前帧 blob 之间的距离,但是如何使用测量的 blob 之间的距离为 blob 分配一致的 ID?


在第一帧中,您可以以任何方式分配 id,1 代表您找到的第一个,2 代表第二个......或者只是根据它们在集合中的位置给它们 ID。

然后在下一帧中您将必须使用最佳匹配。找到斑点,计算当前斑点与前一个图像的所有斑点之间的所有距离,并将每个先前的 ID 分配给最近的斑点。刚刚进入该字段的 Blob 将获得新的 ID。

现在你有了两帧,你可以对下一帧进行运动预测。只需计算 blob 的先前位置和当前位置之间的 deltaX 和 deltaY 即可。您可以使用此信息来猜测未来的位置。与这个未来的位置相匹配。

如果您没有太多重叠的斑点,并且每帧之间的运动不是太快且不稳定,那么这应该可行。

通过多个图像使用评分系统可能会更准确:
获取前 3 或 5 个图像的位置。对于第一帧的任何斑点,寻找第 2 帧上最接近的斑点,计算速度 (deltaX deltaY),寻找最接近第 3、4、5 帧的预测位置...总结预测位置和最近斑点之间的所有距离是分数。使用第 2 帧上第二个最接近的位置执行相同操作(它将向另一个方向寻找)。分数越低,最有可能是好的斑点。

如果你有很多斑点,你应该使用四叉树来加速处理。计算平方距离;它将避免大量的 sqrt 计算。

了解斑点通常如何移动以调整算法非常重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

斑点跟踪算法 的相关文章

  • 检测到 NuGet 包的版本冲突

    我正在开发 ASP Net core 2 1 Web 应用程序项目 我的解决方案中有 1 个项目和 3 个其他库 它是高级架构 数据访问层 DAL 业务层 BL 公共层 CL 所以我需要添加引用来连接一些库和项目 我已经添加了CL参考我的项
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12

随机推荐

  • 在x86 8086汇编中生成0-9范围内的随机数

    首先 我对 8086 Assembly 非常陌生 掌握知识对我来说相当困难 尽管如此 我还是会尽力而为 我一直在尝试编写一个代码来生成0 9范围内的随机数 在研究了几个例子和建议之后 这就是我的结论 为了简单起见 我没有对检索到的时钟计数应
  • 如何将新数据附加到新行

    我的代码如下所示 def storescores hs open hst txt a hs write name hs close 所以如果我运行它并输入 Ryan 然后再次运行并输入 Bob 文件 hst txt 看起来像 RyanBob
  • 使用不同版本的 JDK 以及相同的目标和源版本编译 Java 是否可以保证相同的执行?

    我们将把创建构建的 CI 系统从 Java 7 更新到 Java 8 稍后我们希望将项目一一迁移到 Java 8 当然 我们希望能够为仍然使用 Java 7 的旧版本创建错误修复版本 如果我们将构建相同的源 目标版本和源版本从 JDK 7
  • 在Asp.net core中间件中访问ModelState

    我需要访问ModelState在 Asp net Core 2 1 中间件中 但这只能从Controller 例如我有ResponseFormatterMiddleware在这个中间件中我需要忽略ModelState错误并在 响应消息 中显
  • 有没有办法区分 GUID 和随机数?

    在调试模糊的代码缺陷时 能够将 GUID 与随机数据区分开来非常有用 在 Windows 上 生成的每个 GUID 都是版本 4 因此它的第三部分的前半字节为 4 因此 如果 16 字节序列违反了该规则 那么它就不是版本 4 GUID 例如
  • 在 Scala 中使用“valcapacity:Int”而不是“val IntCapacity”的任何原因

    我正在读 Scala 我想知道 Why val capacity Int 代替 val Int capacity 做出这个选择的任何原因 如果不是 在我看来 放弃 Java 的声明方式似乎不是一个好的选择 会使从 Java 到 Scala
  • 如何将单个故事板 uiviewcontroller 用于多个子类

    假设我有一个故事板 其中包含UINavigationController作为初始视图控制器 它的根视图控制器是UITableViewController 即BasicViewController 它有IBAction连接到导航栏的右侧导航按
  • 我可以将所有标准 Python 库与 IronPython 一起使用吗?

    它需要某种包装吗 我当时认为 IronPython 是 Python 的 NET 实现 它以某种方式神奇地使使用 IronPython 构建的应用程序能够使用标准 Python 库 我相信它是原始 py 源或打包到鸡蛋中的 py 源 但是当
  • 将 Node crypto aes-256-cbc 转换为 CryptoJS

    如何转换以下Node的内置加密模块加密 to CryptoJS const crypto require crypto const pass some password with gt spec chars const cipher1 cr
  • 鼠标点击触发shift

    我可以触发点击事件element selector using trigger element selector trigger click Is it possible to trigger shift click I mean shif
  • 有哪些技术可用于发送短信? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在考虑向订阅用户列表发送定期自动短信 在使用过 Windows Mobile 设备后 我可以使用紧凑的 Net 框架 连接到 USB 的设备轻松
  • InputConnection.finishCompositingText() 方法中的空指针异常[重复]

    这个问题在这里已经有答案了 我在 inputmethod InputConnection finishCompositingText 中收到 NPE 日志消息如下 java lang NullPointerException Attempt
  • 动态应用内购买

    这个问题 Android 应用内计费动态产品列表 是在 3 年前被问到的 Android 仍然无法使用动态应用内购买项目吗 我希望实现此类功能的原因是因为我的应用程序提供了一种让某些用户创建自己的应用程序内购买以供其他人购买的方法 似乎另一
  • 为什么在向量循环中使用“!=”比使用“<”更好?(C++)

    为什么在向量循环中使用 比使用 因为您正在使用迭代器 并且它会使循环看起来与其他容器完全相同 所以您是否应该选择切换到其他容器类型 例如 set list unordered set 等 其中
  • 用递归解决动态嵌套for循环

    我试图得到如下所示的结果 Miniors Boys 54kg 62kg其中每个值均由管道 分隔来自包含某种 限制类型 的数组 例如 ageGroups genders weightClasses 如上所示 我现在能够得到这个结果的方法是 如
  • Java 9中如何让自动模块找到自己的资源?

    我试图让我的应用程序与 Java 9 一起运行 但不幸的是 当它尝试使用以下命令加载资源时 它是普通的 jar 依赖项之一 classLoader getResource name 得到一个空值 当然 这在 Java 8 中是有效的 我使用
  • 如何在 lesscss 中进行主题化

    当我处于开发应用程序的预生产周期时 我经常改变视觉效果 以便与客户验证的内容保持一致 保留同一页面的一些视觉效果 称为主题 会很有趣 以便我可以将它们快速呈现给客户 我发现的方法是创建一个放在主体上的外观类 通过更改它 我可以相应地更改页面
  • 本地主机上的 Laravel - 无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]

    我正在尝试使用 Mailgun driver gt env MAIL DRIVER mailgun host gt env MAIL HOST smtp mailgun org port gt env MAIL PORT 587 MAILG
  • Linq (EntityFramework) 中的正则表达式、数据库中的字符串处理

    我的表中有一个列 其中包含以下值 FilterA 123 234 34 FilterB 12 23 FilterC FilterD 45 过滤器由 分隔每个过滤器的值由 分隔 过滤器的名称和值之间有一个 现在 我可以做任何只能取出值部分的事
  • 斑点跟踪算法

    我正在尝试使用 OpenCV 创建简单的斑点跟踪 我已经使用 findcontours 检测到了斑点 我想给这些斑点一个恒定的 ID 我收集了前一帧和当前帧中的斑点列表 然后我计算了前一帧和当前帧中每个斑点之间的距离 我想知道还需要什么来跟