如何使用Matlab检测视频中的某些移动点

时间:2015-03-22 01:39:53

标签: matlab image-processing matlab-cvst

我有一个在实验中移动软管的视频,我需要检测软管中的某些点并计算它们的运动幅度,我使用下面的代码,我能够使用detectSURFFeatures提取所需的点,函数得到许多不必要的点,所以我使用cuba = ref_pts.selectStrongest(5);只选择五个点,问题是我无法获得一个函数来放置关于这5个点的边界框并通过视频得到它们的像素值,请建议可以使用哪些函数,谢谢:))

clear;
clc;
% Image aquisition from Video and converting into gray scale
vidIn = VideoReader('ItaS.mp4');

%% Load reference image, and compute surf features

ref_img = read(vidIn, 1);
ref_img_gray = rgb2gray(ref_img);
ref_pts = detectSURFFeatures(ref_img_gray);
[ref_features,  ref_validPts] = extractFeatures(ref_img_gray,  ref_pts);

figure; imshow(ref_img);
hold on; plot(ref_pts.selectStrongest(5));
cuba = ref_pts.selectStrongest(5);
stats1 = round(cuba.Location);

1 个答案:

答案 0 :(得分:0)

  • 如果要查找覆盖所选五个点的边界框:stats1现在包含所选5个点的(x,y)坐标。找到x和y坐标的最小值和最大值。最小值x和y为您提供矩形的起点。现在,边界框的宽度和高度是y和x方向上的最大值和最小值的差值。

  • 如果要在边界框内提取原始图像的一部分:只需将该部分复制到另一个变量即可。请考虑以下示例。

    img2 = img1(y:h,x:w,:)

这里,x和y是边界框左上角的x和y坐标。 w和h是边界框的宽度和高度。