首页 > 编程知识 正文

浅谈行列式的理论及其应用,布尔矩阵理论及其应用

时间:2023-05-04 11:28:46 阅读:11888 作者:2850

同构矩阵的理解与求解1 .齐次坐标(Homogeneous Coordinate )一张二维图像上的非齐次坐标为(x,y ),但齐次坐标为(x,y,1 ),(x/z,y/z,1 ) 例如,可以清楚地确认一个点不在直线上:

t(x ) I=0,t表示倒排矩阵;

也可以描述无限远点。 (x、y、0 );

有些人可能不希望平移和旋转写在一个矩阵中(),但摄影测量使用的是非齐次坐标,平移和旋转是分开写的)。

具体来说,您可以看到计算机视觉的多视图几何体,i.e .multipleviewgeometryincomputervision。

2 .同型矩阵两个不同视点图像上的点对的homogeneous coordinate可以用一个投影变换(projective transformation )来表示。 即,x1=H*x2

二维和三维图标如下:

射影变换又称“单应”--Homography,“Homo”的前缀是same的意思,表示“同”,homography是产生于同一来源的graphy,翻译成中文大概是“单应”。

因此,上式的矩阵h称为单应性矩阵。 由于上式中的x1和x2都是3*1的齐次坐标,因此h是3*3的矩阵。 {h00、h01、h02; h10、h11、h12; h20、h21、h22}。

但是,单应矩阵的自由度是多少?

如果给出某个单应H={h_ij},并将该要素乘以相同个数的a,则得到的单应a*H和h起相同的作用。 因为新的单应只是将齐次点x1改为齐次点a*x1,是同样的事情。 因此,可以用1/h22替换a,h是只有8个自由元素的矩阵。

那么,求解这个h需要几点? 如果需要唯一的解,四个点对(对应于八个方程,求解h中的八个未知数)。

3.2个应用实例1 )如何进行两幅图像的拼接?

解答:通过图像特征点匹配RANSAC可以得到图像间的同构矩阵,一个图像通过这个矩阵投影到另一个图像上就完成了基本的拼接。

例2 )摄像机内部参数标定过程中用于求解单应性矩阵吗?

在拍摄某棋盘眼睛的照片时,棋盘眼睛的世界坐标系是用户任意设定的,标定时,默认的世界坐标系是以标定板左上角的点为原点,z轴垂直于标定板,xoy面与标定板重叠的三维直角坐标系。 棋盘格的格子长度是已知的,因此可以知道各角的世界坐标系坐标XYZ(z=0)。 由于Z=0,所以z维度可以被忽略,并且从世界坐标系中的一个坐标(x,y,z,1 )到图像坐标) x,y,1的变换等效于从) x,y,1到图像坐标) x,y,1的变换。 此时的变换矩阵从3*4变为3*3,成为同构矩阵。

因此,可以在四个拐角处计算h的八个参数。 棋盘网格以不同角度拍摄3张可以得到3个h,zqdbb标定法可以得到6个约束方程,可以求解b矩阵(对称矩阵)的6个未知参数,进而通过Cholesky分解可以求解内参矩阵a的参数。

4 .在单应矩阵Homography求解《从零开始学习「张氏相机标定法」(一)成像几何模型》中,得到了像素坐标系和世界坐标系下的坐标映射关系

在此,u、v是像素坐标系中坐标,s是比例因子,fx、fy、u0、v0、(制造误差引起的两个坐标轴的变形参数,通常为小)是5个照相机内参数,r、t是照相机外参数,xx

单应性概念的引出

在这里,我们引入了一个新概念:同构(Homography )变换。 这可以很容易地理解,用于描述世界坐标系和像素坐标系之间物体的位置映射关系。 对应的变换矩阵称为同构矩阵。 在上述方程中,同构矩阵定义如下。

其中,m是内参矩阵。

从单应矩阵定义式来看,既包括摄像机内参,也包括外参。 在进一步介绍摄像机校准知识之前,重点了解以下单应性有助于深入了解摄像机校准: 因为在计算机视觉领域,单应性是一个非常重要的概念。

为了避免读者被官方的大海淹没而失去兴趣,我们将颠倒顺序,首先看看单应性是如何有用的,然后介绍单应矩阵的估计方法。

单响应性在计算机视觉中的应用

单应性是计算机视觉领域非常重要的概念,在http://www.Sina.com/http://www.Sina.com /等领域发挥着非常重要的作用。

1 .图像校正

使用单应矩阵进行图像矫正的例子如下图所示,至少需要4个对应点对(后面给出理由)才能实现。

2 .视角转换

单应用矩阵用

于视角变换的例子如下图所示,可以方便地将左边普通视图转换为右图的鸟瞰图。

3. 图像拼接

既然单应矩阵可以进行视角转换,那我们把不同角度拍摄的图像都转换到同样的视角下,就可以实现图像拼接了。如下图所示,通过单应矩阵H可以将image1和image2都变换到同一个平面。

单应矩阵用于图像拼接的例子如下所示。

4. 增强现实(AR)

平面二维标记图案(marker)经常用来做AR展示。根据marker不同视角下的图像可以方便的得到虚拟物体的位置姿态并进行显示,如下图所示。

如何估计单应矩阵?

了解了上述单应性的部分应用后,我们就有很大的动力来学习单应矩阵的推导和计算了。首先,我们假设两张图像中的对应点对齐次坐标为(x',y',1)和(x,y,1),单应矩阵H定义为:

则有:

矩阵展开后有3个等式,将第3个等式代入前两个等式中可得:

也就是说,一个点对对应两个等式。在此插入一个讨论:单应矩阵H有几个自由度?

或许有人会说,9个啊,H矩阵不是9个参数吗?从h11到h33总共9个。真的是这样吗?实际上并不是,因为这里使用的是齐次坐标系,也就是说可以进行任意尺度的缩放。比如我们把hij乘以任意一个非零常数k并不改变等式结果:

所以实际上单应矩阵H只有8个自由度。8自由度下H计算过程有两种方法。

第一种方法:直接设置h33=1,那么上述等式变为:

第二种方法:将H添加约束条件,将H矩阵模变为1,如下:

以第2种方法(用第1种也类似)为例继续推导,我们将如下等式(包含||H||=1约束):

乘以分母展开,得到:

整理,得到:

假如我们得到了两幅图片中对应的N个点对(特征点匹配对),那么可以得到如下线性方程组:

写成矩阵形式:

由于单应矩阵H包含了||H||=1约束,因此根据上图的线性方程组,8自由度的H我们至少需要4对对应的点才能计算出单应矩阵。这也回答了前面图像校正中提到的为何至少需要4个点对的根本原因。

但是,以上只是理论推导,在真实的应用场景中,我们计算的点对中都会包含噪声。比如点的位置偏差几个像素,甚至出现特征点对误匹配的现象,如果只使用4个点对来计算单应矩阵,那会出现很大的误差。因此,为了使得计算更精确,一般都会使用远大于4个点对来计算单应矩阵。另外上述方程组采用直接线性解法通常很难得到最优解,所以实际使用中一般会用其他优化方法,如奇异值分解、Levenberg-Marquarat(LM)算法(后续文章会介绍)等进行求解。

如何根据标定图得到单应矩阵?

经过前面一系列的介绍,我们应该大致明白如何根据打印的棋盘标定图和拍摄的照片来计算单应矩阵H。我们来总结一下大致过程。

1. 打印一张棋盘格标定图纸,将其贴在平面物体的表面。

2. 拍摄一组不同方向棋盘格的图片,可以通过移动相机来实现,也可以移动标定图片来实现。

3. 对于每张拍摄的棋盘图片,检测图片中所有棋盘格的特征点(角点,也就是下图中黑白棋盘交叉点,中间品红色的圆圈内就是一个角点)。我们定义打印的棋盘图纸位于世界坐标系Zw=0的平面上,世界坐标系的原点位于棋盘图纸的固定一角(比如下图中黄色点)。像素坐标系原点位于图片左上角。

4. 因为棋盘标定图纸中所有角点的空间坐标是已知的,这些角点对应在拍摄的标定图片中的角点的像素坐标也是已知的,如果我们得到这样的N>=4个匹配点对(越多计算结果越鲁棒),就可以根据LM等优化方法得到其单应矩阵H。当然计算单应矩阵一般不需要自己写函数实现,OpenCV中就有现成的函数可以调用,对应的C++函数是:

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )

从函数定义来看,只要输入匹配点对,指定具体计算方法即可输出结果。

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