gpt4 book ai didi

java - 用于根据检测到的特征确定对象中心的成本/映射函数

转载 作者:太空狗 更新时间:2023-10-30 03:03:53 26 4
gpt4 key购买 nike

我编写了一个对象跟踪器,它会尝试检测并跟踪录制视频中的移动对象。为了最大化检测率,我的算法使用了一堆检测和跟踪算法(级联、前景和粒子跟踪器)。每个跟踪算法都会返回一些兴趣点,它们可能是我要跟踪的对象的一部分。让我们假设(为简化此示例)我的对象是一个矩形,并且三个跟踪算法返回点 123:

Step0

根据这三个点的关系/距离,可以计算出被跟踪对象的重心(上图中的蓝色 X)。因此,对于每一帧,我都可以对重心做出一些很好的估计。但是,对象可能会从一帧移动到下一帧:

Step1

在这个例子中,我只是旋转了原始对象。我的算法将为我提供三个新的兴趣点:1'2'3'。我可以再次根据这三个新点计算重心,但我会丢弃从上一帧中获得的重要信息:基于点 123 我已经对这些点的关系有所了解,因此通过结合来自 12 的信息31',2'3' 我应该能够更好地估计重力。

此外,下一帧可能会产生第四个数据点:

Step2

这是我想做的(但我不知道怎么做):

基于从不同跟踪算法返回的各个点(以及它们之间的关系),我想建立一个被跟踪对象的定位图。直觉上我觉得我需要想出 A) 一个识别函数来识别跨帧的单个点和 B) 一些成本函数来确定跟踪点(以及它们之间的关系/距离)在帧与帧之间的相似程度,但我不知道如何实现它。或者,也许某种基于点的 map 构建会起作用。但同样,我不知道如何处理这个问题。非常感谢任何建议(和示例代码)!

编辑1一个简单的粒子过滤器也可能有效,但我又不知道如何定义成本函数。用于跟踪特定颜色的粒子过滤器很容易编程:对于每个像素,您计算目标颜色和像素颜色之间的差异。但是我如何做同样的事情来估计跟踪点之间的关系?

EDIT2 直觉上我觉得卡尔曼滤波器也可以帮助预测步骤。请参阅此 pdf 的幻灯片 24 - 32 .还是我被误导了?

最佳答案

我认为您要做的基本上是建立一个特征状态空间,它可以应用于过滤过程,例如 Extended Kalman Filter .当您在每一帧中都有多个观察结果,并且您正在尝试估计或测量这些观察结果指示的某些内容时,这是一个有用的框架。

要确定跟踪点的相似性,您可以针对点周围的小区域逐帧执行简单的模板匹配。一种方法是在 n 帧中围绕点 a 提取一个 NxN(例如,7x7)区域并指向 n+1 帧中的 a',然后是 normalised cross correlation在提取的区域之间。这将为您提供一个合理的衡量补丁有多相似的方法。如果补丁不相似,那么您可能已经忘记了这一点。

关于java - 用于根据检测到的特征确定对象中心的成本/映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com