我正在尝试使用Kanade-Lucas-Tomasi(KLT)算法,使用您可以找到here (Mathworks documentation)的函数来跟踪两帧之间的某些特征(使用multiscale-harrys探测器提取)。
我无法理解出了什么问题。没有一个点可以被跟踪。我尝试增加迭代次数并改变功能周围窗口的大小,但结果总是相同的,没有跟踪任何功能。
这是数据中的问题(图像分辨率太低(240x180像素))?
所选功能中存在问题吗?
这是我正在使用的两张图片:
这是我的代码:
img = single(imread('img.png'));
end_img = single(imread('end_img.png'));
coord_first = [24,21;25,97;29,134;37,25;37,55;37,64;38,94;38,103;40,131;41,139;43,14;44,22;44,54;44,63;46,93;46,101;47,111;49,131;49,140;52,166;55,52;62,151;76,51;78,89;81,151;81,165;83,13;92,165;111,18;111,96;155,42;155,62;155,81;155,100;156,129;163,133;168,126;170,40;170,65;172,26;173,134;174,59;174,84;174,103;174,116;175,73;178,97;186,142;186,149;190,119;190,132;194,75;209,99;210,42;210,66;212,133;212,152;215,61;215,79;218,119];
% display of the target image and all the features I want to track
figure
imshow(img,[]),
colormap gray
hold on
plot(coord_first(:,1), coord_first(:,2), 'r*');
% point tracker creation
% the paramters reported here are the default ones
pointTracker = vision.PointTracker('MaxIterations', 30, 'BlockSize', [31,31]);
% point tracker initialization
initialize(pointTracker,coord_first,img);
% actual tracking
[coord_end, point_validity] = step(pointTracker, end_img);
% display of all the correctly tracked featrures
figure
imshow(end_img,[]),
colormap gray
hold on
plot(coord_end(point_validity,1), coord_end(point_validity,2), 'r*');
答案 0 :(得分:0)
检查point_validity
的内容。如果points_validity
的所有元素都为false,那么您将看不到任何点。如果是这种情况,下一个问题是为什么没有跟踪点。
对于此尺寸的图片,请尝试将'NumPyramidLevels'
设置为1。