早教吧作业答案频道 -->其他-->
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);
%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);就没问题了
运行L=LK(A,B,windowsize)后,函数只返回第一个参数u给L
你改写成[u,v] = LK(im1,im2,windowSize);就没问题了
看了MATLAB求助就是这样的在调...的网友还看了以下:
本人9月份去伦敦读alevel,但是英语不是很好.现在希望找一些书能帮助我学习的.高数,经济第一学 2020-04-08 …
关于辅助线可以可以通过辅助线在题目的原有的条件上,加上一个或几个条件?比如说:题目给一个三角形,说 2020-05-13 …
火箭是怎么在宇宙中飞的?我知道火箭在地面上是借助空气的反作用力飞上天的,但火箭飞上太空后没有了可以 2020-05-17 …
双曲线参数方程我有一个小问题,双曲线的参数方程,用几何方法来推导的话,画两个辅助圆,在第一现象作辅 2020-06-13 …
CoreIDRAW12在core12里怎么设置斜的辅助线?怎么在一个圆里以圆心为中心设置6根把圆平 2020-06-14 …
英语翻译你还有10天就来了是么?你是说你可以在7月15日.去看兰键军么?你是不是可以来呼和浩特呢? 2020-06-19 …
过年时要去泰国自助旅行,有没有什么在日常交往中很实用的英语,过年时要去泰国自助旅行,有没有什么在日 2020-07-04 …
她乐于助人,在任何时候都愿意帮助需要帮助的人用英语怎么说 2020-12-01 …
[紧急求助]在狭义相对论中,为什么在碰撞过程中质量守恒,而在物体加速过程却又不守恒哪?我看质速公.. 2020-12-08 …
请教古文中的音节助词音节助词在句子中不做成分,这类词一般是那些?它们在句子中有什么特点?怎么去找出( 2020-12-10 …