早教吧作业答案频道 -->其他-->
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求助就是这样的在调...的网友还看了以下:
1.约分后M的平方加2M减3的差分之M的平方减3M加2的和等于()2.已知M=M分之1,求代数式M 2020-05-13 …
英语翻译调节固定销使用说明左旋松开右旋松开将调节固定销向左旋开1-2圈后,向外拉起,将要调节的部件 2020-05-13 …
关于判断的题inta=1,b=2,c=3,d=4,m=2,n=2执行(m=a>b)&&(n=c>d 2020-06-14 …
请问下fori=1:100eval(['M',int2str(i),'=ones(10)']);e 2020-07-17 …
初三数学关于一元二次的根关于x的一元二次方程x2-mx+(m-2)=0的根的情况是答案是有2个不相 2020-08-02 …
初一数学,关于位置的问题,请各位大神教我可好?(¯﹃¯)七年级某班有54名学生,所在教室有六行九列座 2020-11-03 …
某小学六年级男女生人数相等,然后男生调走三分之一,女生调走40%,有调走男生14人组队,现在男女生比 2020-11-05 …
吉他1弦标准音是E,然后现在我不用调音器调弦把1弦调成自己舒服的感觉就好,然后以1弦作为参考弦,按5 2020-11-07 …
胶印的实地密度是如何作用于其他阶调值的?我没法理解为什么胶印师傅在测量完后,只是调节4色的实地密度就 2020-11-27 …
如图所示,质量分别为M和m的两个物体通过定滑轮用轻绳相连,开始时用手压住m使两物体静止,M距地面h高 2020-12-30 …