早教吧 育儿知识 作业答案 考试题库 百科 知识分享

MATLAB求助就是这样的在调用函数L=LK(A,B,windowsize)后为什么L值为u的矩阵而不是既有u又有vfunction[u,v]=LK(im1,im2,windowSize);%LucasKanadelucaskanadealgorithm,withoutpyramids(only1level);%REVISION:NaNvalsa

题目详情
MATLAB求助 就是这样的 在调用函数L=LK(A,B,windowsize)后 为什么L值为u的矩阵而不是既有u又有v
function [u,v] = LK(im1,im2,windowSize);
%LucasKanade lucas kanade algorithm,without pyramids (only 1 level);
%REVISION:NaN vals are replaced by zeros
[fx,fy,ft] = ComputeDerivatives(im1,im2);
u = zeros(size(im1));
v = zeros(size(im2));
halfWindow = floor(windowSize/2);
%k=0;
for i = halfWindow+1:size(fx,1)-halfWindow
for j = halfWindow+1:size(fx,2)-halfWindow
curFx = fx(i-halfWindow:i+halfWindow,j-halfWindow:j+halfWindow);
curFy = fy(i-halfWindow:i+halfWindow,j-halfWindow:j+halfWindow);
curFt = ft(i-halfWindow:i+halfWindow,j-halfWindow:j+halfWindow);
curFx = curFx';
curFy = curFy';
curFt = curFt';
curFx = curFx(:);
curFy = curFy(:);
curFt = -curFt(:);
A = [curFx curFy];
U = pinv(A'*A)*A'*curFt;
u(i,j)=U(1);
v(i,j)=U(2);
% k=k+1;
%UU(:,k)=U(1);
%VV(:,k)=U(2);
end;
end;
size(u)
size(v)
UU1=reshape(u,1,196);
A1=sum(UU1)
VV1=reshape(v,1,196);
B1=sum(VV1)
u(isnan(u))=0;
v(isnan(v))=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [fx,fy,ft] = ComputeDerivatives(im1,im2);
fx = conv2(double(im1),double(0.25* [-1 1; -1 1])) + conv2(double(im2),double(0.25*[-1 1; -1 1]));
fy = conv2(double(im1),double(0.25*[-1 -1; 1 1])) + conv2(double(im2),double(0.25*[-1 -1; 1 1]));
ft = conv2(double(im1),double(0.25*ones(2))) + conv2(double(im2),double(-0.25*ones(2)));
% make same size as input
fx=fx(1:size(fx,1)-1,1:size(fx,2)-1);
fy=fy(1:size(fy,1)-1,1:size(fy,2)-1);
ft=ft(1:size(ft,1)-1,1:size(ft,2)-1);
▼优质解答
答案和解析
function [u,v] = LK(im1,im2,windowSize);会返回2个矩阵,u和v.
运行L=LK(A,B,windowsize)后,函数只返回第一个参数u给L
你改写成[u,v] = LK(im1,im2,windowSize);就没问题了
看了MATLAB求助就是这样的在调...的网友还看了以下: