Kanade-Lucas-Tomasi 跟踪器 MATLAB
Kanade-Lucas-Tomasi Tracker MATLAB
我目前正尝试在 MATLAB 中使用 Kanade-Lucas-Tomasi 跟踪器,如本示例所用:Face Detection and Tracking Using the KLT Algorithm
问题:
1).看了一些文献,明白了KLT tracker的输出应该是运动矢量。但是,我只看到特征点作为输出。
2).我还希望在物体移动时绘制轨迹。有人可以解释一下如何做到这一点吗?
1) step
方法 vision.PointTracker
returns 点的新位置,而不是运动矢量。如果您需要运动矢量,您可以简单地从新点中减去旧点。
2) 对于每个 step
,只要您不调用 setPoints
,新点将按照与旧点完全相同的顺序返回。假设您已经跟踪了 2 帧的点数:
points1 = step(pointTracker, frame1);
points2 = step(pointTracker, frame2);
请记住,points1
和 points2
是 x-y 坐标的 M×2 矩阵。因此,要绘制第 i 个点的轨迹,您可以执行以下操作:
Xs = [points1(i,1), points2(i,1)];
Ys = [points1(i,2), points2(i,2)];
plot(Xs, Ys, '*-');
顺便说一句,一旦您对这个示例感到满意,请查看如何 detect and track multiple faces。
我目前正尝试在 MATLAB 中使用 Kanade-Lucas-Tomasi 跟踪器,如本示例所用:Face Detection and Tracking Using the KLT Algorithm
问题: 1).看了一些文献,明白了KLT tracker的输出应该是运动矢量。但是,我只看到特征点作为输出。
2).我还希望在物体移动时绘制轨迹。有人可以解释一下如何做到这一点吗?
1) step
方法 vision.PointTracker
returns 点的新位置,而不是运动矢量。如果您需要运动矢量,您可以简单地从新点中减去旧点。
2) 对于每个 step
,只要您不调用 setPoints
,新点将按照与旧点完全相同的顺序返回。假设您已经跟踪了 2 帧的点数:
points1 = step(pointTracker, frame1);
points2 = step(pointTracker, frame2);
请记住,points1
和 points2
是 x-y 坐标的 M×2 矩阵。因此,要绘制第 i 个点的轨迹,您可以执行以下操作:
Xs = [points1(i,1), points2(i,1)];
Ys = [points1(i,2), points2(i,2)];
plot(Xs, Ys, '*-');
顺便说一句,一旦您对这个示例感到满意,请查看如何 detect and track multiple faces。