h.m

来自「用MATLAB实现模拟立方体的重构」· M 代码 · 共 23 行

M
23
字号
function H=H(x1,x2,k,n)

%计算单应的函数x2=H*x1;x1,x2为3xn矩阵
%x1,x2分别为两幅图像的匹配点矩阵
%n为匹配对的个数(n>=4),k为维数
if k==2
    for i=1:n
    A(2*(i-1)+1,:)=[zeros(1,3) -x2(3,i)*x1(:,i)' x2(2,i)*x1(:,i)'];
    A(2*(i-1)+2,:)=[x2(3,i)*x1(:,i)' zeros(1,3) -x2(1,i)*x1(:,i)'];
end
end
if k==3
    for i=1:n
       A(3*(i-1)+1,:)=[x1(:,i)'*x2(4,i) zeros(1,8) -x1(:,i)'*x2(1,i)];
       A(3*(i-1)+2,:)=[zeros(1,4) x1(:,i)'*x2(4,i) zeros(1,4) -x1(:,i)'*x2(2,i) ];
       A(3*(i-1)+3,:)=[zeros(1,8) x1(:,i)'*x2(4,i) -x1(:,i)'*x2(3,i)]; 
    end 
end
    
[U,D,V]=svd(A);
h=V(:,(k+1)^2)/V((k+1)^2,(k+1)^2);
H=reshape(h,k+1,k+1)';

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?