[英]How would I implement a particle filter for vision tracking?
所以我只是在人工智能上做了sebsastian thrun的课程。 在那里,他提到了如何构建一个粒子滤波器,用于跟踪基于航向θ和前进运动的移动xy机器人。
代码在这里: https : //gist.github.com/soulslicer/b4765ee8e01958374d3b
在他的实施中,他做了以下事情:
1. Get Range from Sensor of all bearings after moving R=1, Theta=0.5
2. Move all the particles by R=1, Theta=0.5
3. Compute the weights of all particles ranges against the measured range from sensor
4. Resample and draw new particles
这适用于运动模型很棒。 这怎么能用于计算机视觉跟踪? 例如,我想跟踪黄色圆形斑点。 我将如何“移动”粒子? 我的成本函数可能是什么? 特别是移动部分,我不知道我是如何为计算机视觉跟踪做这一步的
这是我认为它可能有用的方式,但我可能错了:
1. Get features from image, and compute the optical flow velocities of each feature
2. Place alot of particles in the scene with varying x,y,xvel,yvel
3. For the computation of weights, we can compare the each particle's velocity and position against all features
If we can threshold out the object based on color/shape, can match image features to shapes and put that in the cost function
4. Resample and draw new particles
要使用粒子过滤,您需要:
明确定义空间也很有帮助
现在,根据您问题中的描述,我假设目标是根据计算出的最佳流量特征跟踪黄色斑点的位置。 然后我会建模
def move(self, turn, forward):
仅使用+ random.gauss(0.0, self.turn_noise)
或+ random.gauss(0.0, self.forward_noise)
部分def move(self, turn, forward):
我看到的问题是定义观察模型,斑点位置和最佳流量输出之间的似然函数不是微不足道/直观的,例如,黄色斑点是否可能位于高光流输出区域的中心? 如果是这样我怎么能表达这种关系作为似然函数? 出于这个原因,我会研究使用不同的观察结果,例如,使用嘈杂的黄色斑点探测器的输出。
我的答案是基于http://www.probabilistic-robotics.org/上的particle-filters.ppt文件第16页。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.