Image matlab中基于互相关的帧间目标位移
我想估计对象上的位移(该对象是沿图像的曲线),我想知道它使用连续帧之间的互相关移动了多少: 我有一个问题,以确定正确的模板大小,当我改变模板的大小,它会给出不同的结果,你能帮我吗Image matlab中基于互相关的帧间目标位移,image,matlab,templates,Image,Matlab,Templates,我想估计对象上的位移(该对象是沿图像的曲线),我想知道它使用连续帧之间的互相关移动了多少: 我有一个问题,以确定正确的模板大小,当我改变模板的大小,它会给出不同的结果,你能帮我吗 a = imread('001.jpg'); a1 = imread('002.jpg'); im1 = imcrop(a,[500 400 200 100]); % Template im2 = imcrop(a1,[300 300 820 360]); c = normxcorr2
a = imread('001.jpg');
a1 = imread('002.jpg');
im1 = imcrop(a,[500 400 200 100]); % Template
im2 = imcrop(a1,[300 300 820 360]);
c = normxcorr2(im1,im2);
figure, surf(c), shading flat
%offset found by correlation
[max_c, imax] = max(abs(c(:)));
[ypeak, xpeak] = ind2sub(size(c),imax(1));
corr_offset = [(xpeak-size(im1,2))
(ypeak-size(im1,1))];
% relative offset of position of subimages
rect_offset = [(rect_a1(1)-rect_a(1))
(rect_a1(2)-rect_a(2))];
% total offset
offset = corr_offset + rect_offset;
xoffset = offset(1);
yoffset = offset(2);
您是否尝试过检查加载与
a
和a1
相同的图像时会发生什么?您没有定义rect\u a
和rect\u a1
。你是说rect_a=[500 400 200 100]
和rect_a1=[300 300 820 360]
?尝试用以下内容替换图像a,a1:a=0(700);a(450:490550:590)=一(41);a1=零(1200);a1(410:450860:900)=一(41)代码>。我做了替换,你的代码似乎工作得很好。这可能意味着图像的性质是,位移的对象无法100%清晰地检测到。您是否尝试检查加载与a
和a1
相同的图像时会发生什么?您尚未定义rect\u a
和rect\u a1
。你是说rect_a=[500 400 200 100]
和rect_a1=[300 300 820 360]
?尝试用以下内容替换图像a,a1:a=0(700);a(450:490550:590)=一(41);a1=零(1200);a1(410:450860:900)=一(41)代码>。我做了替换,你的代码似乎工作得很好。这可能意味着您的图像的性质是,移位的对象无法100%清晰地检测到