Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于检测特征确定目标中心的成本/映射函数_Java_Python_Algorithm_Matlab_Tracking - Fatal编程技术网

Java 基于检测特征确定目标中心的成本/映射函数

Java 基于检测特征确定目标中心的成本/映射函数,java,python,algorithm,matlab,tracking,Java,Python,Algorithm,Matlab,Tracking,我写了一个物体跟踪器,它将尝试在录制的视频中检测并跟踪移动的物体。为了最大化检测率,我的算法使用了一系列检测和跟踪算法(级联、前景和粒子跟踪器)。每个跟踪算法都会返回一些可能是我试图跟踪的对象的一部分的兴趣点。让我们假设(为了本例的简单性)我的对象是一个矩形,三种跟踪算法返回点1、2和3: 根据这三个点的关系/距离,可以计算被跟踪对象的重心(上图中的蓝色X)。因此,对于每一帧,我可能会对重心做出一些很好的估计。但是,对象可能会从一帧移动到下一帧: 在这个例子中,我只是旋转了原始对象。我的算法

我写了一个物体跟踪器,它将尝试在录制的视频中检测并跟踪移动的物体。为了最大化检测率,我的算法使用了一系列检测和跟踪算法(级联、前景和粒子跟踪器)。每个跟踪算法都会返回一些可能是我试图跟踪的对象的一部分的
兴趣点。让我们假设(为了本例的简单性)我的对象是一个矩形,三种跟踪算法返回点
1
2
3

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

在这个例子中,我只是旋转了原始对象。我的算法将给我三个新的兴趣点:
1'
2'
3'
。我可以根据这三个新的点再次计算重心,但我会放弃从上一帧中获得的重要信息:基于点
1
2
3
我已经知道了这些点之间的关系,因此通过结合
1
2
3
1'
2'
3'
的信息,我应该能够更好地估计重心

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

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

基于从不同跟踪算法返回的各个点(以及它们之间的关系),我想建立一个被跟踪对象的
定位图。直觉上,我觉得我需要拿出A)一个识别函数来识别跨帧的各个点,B)一些成本函数来确定帧与帧之间类似的跟踪点(以及它们之间的关系/距离),但我无法理解如何实现这一点。或者,基于点的某种
map
构建可能会起作用。不过,我也不知道该怎么做。 任何建议(和示例代码)都将受到高度赞赏

EDIT1 一个简单的粒子过滤器可能也能工作,但我还是不知道如何定义代价函数。用于跟踪特定颜色的粒子过滤器很容易编程:对于每个像素,计算目标颜色和像素颜色之间的差异。但是,对于估计跟踪点之间的关系,我又该如何做呢


EDIT2直觉上,我觉得卡尔曼滤波器也可以帮助预测步骤。请参见本手册的幻灯片24-32。还是我被误导了

我认为您试图做的基本上是建立一个特性的状态空间,它可以应用于过滤过程,例如。这是一个有用的框架,当您在每一帧中都有多个观察值,并且您试图估计或测量这些观察值所指示的内容时


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

从80年代开始,有大量关于这一点和相关问题的文献。尝试搜索“光流”算法。这种算法的输入是同一场景的两个连续帧。输出是一个向量场,第二幅图像中每像素一个向量,它显示了特征在该场中的移动方向和速度。这是一个非常好的总结


光流的一个好处是,许多算法可以很好地并行,并映射到您最喜欢的视频卡GPU上,因此它们可以实时运行。想想ESPN覆盖图。

根据我的说法,为了在每个帧中识别谁是谁,您必须使用更大的维度。例如,如果您想知道哪一点在哪里下注在两个帧之间(考虑到提取的点是相同的),您必须构建向量或单纯形,然后推导点之间的组织(如角度值)

主要问题是,组合会随着点数的增加而增加。如果你的相机是一个固定点,那么你可以使用背景作为参考来推断物体的旋转和平移,我的意思是在背景兴趣点和物体点之间建立向量,以便清楚地识别它们。
希望能有帮助。

我建议使用除差滤波器(DDF),它类似于扩展卡尔曼滤波器(EKF),但不需要系统动力学的近似模型(您可能没有)。基本上,DDF使用差分方程近似EKF中使用的导数。网上有很多关于这方面的文章,但我不知道你是否可以访问它们,因此我没有将它们链接到这里。如果你在大学或公司工作,可以访问在线期刊(如IEEE Explore),然后查看一些文件。

谷歌“明星模型”和“hough投票”。@Shai您能给我介绍一些特别的例子吗?气味非常类似于胶体追踪()。它将在框架之间链接功能