首页 > 编程知识 正文

单应性矩阵,单应矩阵的自由度是几维

时间:2023-05-04 10:35:17 阅读:11871 作者:2111

网上有很多单应性矩阵的求解方法,但很少给出用4点求解单应性矩阵的方法和源代码的详细说明。 在这里说一下自己的理解。

首先发布matlab代码

%返回值h是3*3的矩阵

% pts1和pts2是与2*4坐标矩阵对应的特征点的(x,y )坐标

n=size (pt S1,2 );

a=Zeros(2*n,9 );

a(1:2:2*n,1:2 )=PTS1 ';

a(1:2:2*n,3 )=1;

a ) 233602:2*n,4:5 )=PTS1 ';

a ) 233602:2*n,6 )=1;

x1=pt S1 (1, );

y1=pt S1 (2, );

x2=pts2(1, ) );

y2=pts2(2, ) );

a(1:2:2*n,7 )=-x2.*x1;

a ) 233602:2*n,7 )=-y2.*x1;

a(1:2:2*n,8 )=-x2.*y1;

a ) 233602:2*n,8 )=-y2.*y1;

a ) A(1:2:2*n,9 )=-x2;

a ) 233602:2*n,9 )=-y2;

[evec,~]=EIG(a'*a );

h=reshape(EVEC ) :1 ),[ 3,3 ] ) );

h=h/h (结束); % makeh (3,3 )=1

在齐次坐标中,假设一点p(Xi,yi,1 )经过h矩阵的变换成为p )、yi )、1 ),即p )=h*p,通常对于透视变换,h矩阵有8自由度,需要求出至少4对特征点四个特征点对可以建立八个方程。 那么,对于有n对特征点的情况(超定方程),求解p'=H*p方程可以转化为亚纯方程组Ax=0的求解。 另一方面,Ax=0的求解被转换为min ||Ax||2的非线性优化问题(超稳态方程通过最大zqdtn次幂拟合得到近似解)。

对于给定点(xi,yi ),其变换可以表示为p'=H*p,赋值展开如下:

(1) ) ) )。

那么,得到:

(2) ) ) )。

进一步转换为:

(3) ) )。

这将创建系数矩阵。

(4) ) )。

可以使用系数矩阵建立以下线性方程: Ax=0:

(5) ) )。

也就是说:

(6) ) )。

)6)这样的超稳态方程式,可以用最zqdtn乘方求解。 通过对系数矩阵a求特征值和特征向量而得到。 用以下方法得到zqdtn乘方解最多:

([V,d]=EIG(a'*a ) )7) ) ) ) )。

其中,d表示由特征值对角矩阵(特征值沿主对角线降序),v表示与d特征值对应的特征向量)构成的特征矩阵,a )表示a的倒排。 其最大zqdtn乘方解是v(1),与系数矩阵a的最小特征值对应的特征向量是超联立方程组Ax=0的最大zqdtn乘方解。

至此,已经找到了h矩阵,后续可以通过随机采样一致性(RANSC )精选,也可以通过LM优化。

请注明出处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。