精华内容
下载资源
问答
  • 本质矩阵

    千次阅读 2017-02-14 17:16:13
    本质矩阵

    本质矩阵


    构成

    本质矩阵可以理解为特殊的基础矩阵,它由两部分构成,即平移向量t与旋转矩阵R

    E=[t]×R(1)

    自由度

    本质矩阵有5个自由度,分别是平移包含的3个自由度与旋转包含的3个自由度,再去掉尺度不确定性的1个自由度(本质矩阵为齐次量)

    性质

    推论:若一个3×3矩阵为本质矩阵,则其三个奇异值中两个相同,第三个为0

    证明:定义反对称矩阵WZ

    W=010100001andZ=010100000(2)

    3×3反对称矩阵可分解为S=kUZUT形式,其中U为正交矩阵,则有
    Z=diag(1,1,0)W(3)

    [t]×=Udiag(1,1,0)WUT(4)

    其中Z取决于符号(up to sign)而[t]×取决于尺度(up to scale)则本质矩阵E可分解为
    E=Udiag(1,1,0)(WUTR)(5)

    VT=WUTR得证,这里要注意的是齐次性可以忽略尺度因子

    求解(待补充)

    分解

    若要从本质矩阵中分解出相机的位姿,则需要对其分解,要注意的两点是
    1. 平移向量存在尺度不确定性
    2. 假设第一个相机的坐标系与世界坐标系重合,即P1=[I|0]

    推论:假设本质矩阵E可经SVD分解为Udiag(1,1,0)VT,若不考虑符号,则有两组解

    [t]×=UZUTR=UWVTorUWTVT(6)

    证明:[t]×E左零空间相同,记[t]×=UZUT,R=UXVT,则有
    ZX=diag(1,1,0)(7)

    解得X=WX=WT,得证

    [t]×的Frobenius范式为2,意味着[t]×包含了尺度,则t=1,即最简单的规范化基线长度。
    [t]×t=0,则t=U(0,0,1)T=u3,但由于E的符号无法确定,则会有2个t值,从而导致有四个可能的P2矩阵

    P2=[UWVT|u3]or[UWVT|u3]or[UWTVT|u3]or[UWTVT|u3](8)

    以下是ORB_SLAM2中的本质矩阵分解函数

    void DecomposeE(const cv::Mat& E, cv::Mat& R1, cv::Mat& R2, cv::Mat& t)
    {
        cv::Mat U,S,Vt;
        cv::SVD::compute(E, S, U, Vt);
    
        U.col(2).copyTo(t);
        t /= cv::norm(t);
    
        cv::Mat W(3, 3, CV_32F, cv::Scalar(0));
        W.at<float>(0, 1) = -1;
        W.at<float>(1, 0) = 1;
        W.at<float>(2, 2) = 1;
    
        R1 = U * W * Vt;
        if(cv::determinant(R1) < 0)
            R1 = -R1;
    
        R2 = U * W.t() * Vt;
        if(cv::determinant(R2) < 0)
            R2 = -R2;
    }
    展开全文
  • 基础矩阵与本质矩阵反应的是对极几何中一幅图像上的点在另一幅图像上的对应点的的位置关系,本质矩阵则是基本矩阵的一种特殊情况,是在归一化图像坐标下的基本矩阵,可以理解为本质矩阵对应的坐标位于相机坐标系,...

    基础矩阵与本质矩阵

    基础矩阵与本质矩阵反应的是对极几何中一幅图像上的点在另一幅图像上的对应点的的位置关系,本质矩阵则是基本矩阵的一种特殊情况,是在归一化图像坐标下的基本矩阵,可以理解为本质矩阵对应的坐标位于相机坐标系,基础矩阵对应的坐标位于图像平面坐标系,具体见:
    https://blog.csdn.net/kokerf/article/details/72191054

    单应矩阵

    单应矩阵反应的也是两幅图像上点的对应关系,详见:
    https://blog.csdn.net/myarrow/article/details/53316397

    单应矩阵与基础矩阵/本质矩阵的区别

    单应矩阵反应的是世界坐标系下平面上的点之间的对应关系,就是现实平面上的点到相机平面上的点的射影变换矩阵,具有8个自由度,就是说单应矩阵就是射影变换。相反,本质矩阵或基础矩阵则没有这个限制。见下图:
    这里写图片描述
    而基础矩阵或本质矩阵反应的则是图像平面点x对应的真实点X在另一幅图像的投影点x’在对极线上的关系。

    - 单应矩阵与本质矩阵/基础矩阵都能分解得到R和T,有什么区别?


    本质矩阵:
    基础矩阵: 这里写图片描述
    单应矩阵: 这里写图片描述n,d)表示世界坐标系中一个平面的坐标。

    对上述3个矩阵进行运动分解,即可得到双目摄像头之间的相互位置关系。但需要注意的是,分解出来的平移向量T只代表平移的方向,不能代表实际平移量的大小。

    • 单应矩阵的求解需要世界坐标系中平面上的点进行求解,为什么Opencv中函数直接找特征点进行H矩阵求解?

    C++函数的接口:

    Mat findHomography( const Mat& srcPoints, const Mat& dstPoints,  
    Mat& status, int method=0,  
    double ransacReprojThreshold=3 );  
    Mat findHomography( const Mat& srcPoints, const Mat& dstPoints,  
    vector<uchar>& status, int method=0,  
    double ransacReprojThreshold=3 );  
    Mat findHomography( const Mat& srcPoints, const Mat& dstPoints,  
    int method=0, double ransacReprojThreshold=3 );  

    1、srcPoints,dstPoints为CV_32FC2或者vector类型
    2、method:0表示使用所有点的常规方法;CV_RANSAC 基于RANSAC鲁棒性的方法;CV_LMEDS 最小中值鲁棒性方法
    3、ransacReprojThreshod 仅在RANSAC方法中使用,一个点对被认为是内层围值(非异常值)所允许的最大投影误差。
    4、status,可选的输出掩码,用在CV_RANSAC或者CV_LMEDS方法中。注意输入掩码将被忽略。
    这个函数找到并且返回源图像平面和目的图像平面之间的透视变换矩阵H:使得下面的返回投影误差(back-projection)最小:
    如果参数method设置为默认值0,该函数使用一个简单的最小二乘方案来计算初始的单应性估计。

    然而,如果不是所有的点对(srcPoints,dstPoints)都适应这个严格的透视变换。(也就是说,有一些异常值),这个初始估计值将很差。在这种情况下,我们可以使用两个鲁棒性算法中的一个。RANSCA和LMEDS这两个方法都尝试不同的随机的相对应点对的子集,每四对点集一组,使用这个子集和一个简单的最小二乘算法来估计单应性矩阵,然后计算得到单应性矩阵的质量quality/goodness。(对于RANSAC方法是内层围点的数量,对于LMeDs是中间的重投影误差)。然后最好的子集用来产生单应性矩阵的初始化估计和inliers/outliers的掩码。

    本质矩阵分解失效情况

    利用图像之间的匹配特征点进行本质矩阵的计算,当图像Resize后,要进行以下两点的改变:
    1、相机的内参乘相应的缩放系数;
    2、在resize后的图中检测到的特征点的坐标乘相应的缩放系数,还原到原始图像中的坐标(会有比较大的误差)。

    理论上可以直接使用估计基础矩阵(Fundamental matrix)的方法来估计本质矩阵,如:8点算法,7点算法,及与之结合的最小中值法,RANSAC(随机抽样一致)法等。但是实际中使用这些方法估计出的本质矩阵的结果并不太令人满意,尤其当匹配点对趋于共面时和平移量较小时,这些方法获得的结果完全就不能用。如果用于标定的匹配点对,是在一个平面上的话,这些方法将完全失效,(比如,检测到的特征点本来就比较少,有可能就处于同一个平面上,再比如,本来在大图上计算是没有问题的,但是对图像进行Resize后,再进行特征点的检测,就会出现匹配点平移量很小的情况,也导致失效。)因为平面是一种退化结构或者叫临界曲线(Critical surfaces)。而且在opencv3之前的opencv版本只提供了求取基础矩阵F的API,虽然cv::stereoCalibrate(…)可以得到双目标定结果以及本质矩阵E,但该方法是使用平面标定版辅助的plane2plane(单应性矩阵)估计出各相机的外参数,然后由外参数直接计算出图像相互之间的旋转矩阵R和平移量t,此时获取的刚体运动参数自由度为6。(https://blog.csdn.net/j10527/article/details/51295099)

    展开全文
  • 本文按照以下顺序讨论:从本质矩阵恢复运动与尺度问题的来源进一步讨论尺度1.从本质矩阵恢复运动与尺度问题的来源设 和 是两帧之间的匹配像素点的归一化平面坐标, 是本质矩阵(Essential Matrix)。则有[1] 将(1)...

    a9757cbba4e63be28fd6f8c470326697.png

    本文按照以下顺序讨论:

    1. 从本质矩阵恢复运动与尺度问题的来源
    2. 进一步讨论尺度

    1.从本质矩阵恢复运动与尺度问题的来源

    是两帧之间的匹配像素点的归一化平面坐标,
    是本质矩阵(Essential Matrix)。则有
    [1]

    将(1)展开得

    将矩阵相乘的形式拆开得到

    可以发现,对方程左边进行任意缩放都不会影响方程的解,这就是尺度问题的来由[2]所以

    虽然有9个未知数,但是有一个变量可以看做是缩放因子,因此实际只有8个未知量(5个自由度),所以可以用八点法(五点不好算)构建方程组(4)来求解。

    求解完线性方程组(4)后,我们需要从

    中恢复相机的运动
    。这个过程可以用奇异值分解(SVD)完成。设
    的SVD为

    对于任意一个

    ,可以得到两个可能的
    与之对应
    [3]

    其中,

    是U的最后一列,如果尺度不定时将模长归一化为1,即
    。而

    f098003e85fd959557320bcc31a7c7a9.png
    图1 从本质矩阵恢复得到的四组解

    这样一共会产生四组解(如图1所示),需要经过两步筛选得到正确解:

    1.筛选旋转矩阵,剔除反射矩阵。

    这一步可以计算分解得到的旋转矩阵的行列式实现,因为旋转矩阵的行列式为1,而反射矩阵的行列式为-1。

    在ORB-SLAM实现如下:

        R1 = u*W*vt;
        if(cv::determinant(R1)<0)
            R1=-R1;
    
        R2 = u*W.t()*vt;
        if(cv::determinant(R2)<0)
            R2=-R2;
    

    在VINS-Mono中实现如下:

            /* VINS-Mono实现 */
            //本质矩阵svd分解得到4组Rt解,这里的R是R_21
            decomposeE(E, R1, R2, t1, t2);
            // 旋转矩阵的行列式为1,反射矩阵行列式为-1
            // 将E改成-E后,SVD分解得到的结果中,U=-U,其余两项不变
            if (determinant(R1) + 1.0 < 1e-09)
            {
                E = -E;
                decomposeE(E, R1, R2, t1, t2);
            }
    

    2.筛选出路标点在两个相机中都具有正深度的解。

    在VINS-Mono中实现如下:

            //通过三角化得到的正深度比例选择Rt解
            double ratio1 = max(testTriangulation(ll, rr, R1, t1), testTriangulation(ll, rr, R1, t2));
            double ratio2 = max(testTriangulation(ll, rr, R2, t1), testTriangulation(ll, rr, R2, t2));
            cv::Mat_<double> ans_R_cv = ratio1 > ratio2 ? R1 : R2;
    

    2.进一步讨论尺度

    从(3)可知,尺度问题来源于单目SLAM中路标点的深度具有不确定性(所以才反投影到归一化平面上),也就是说尺度缩放实际作用的是两个相机之间的平移缩放

    a773252e2b4d6e0086b713775cbe48fd.png
    图2 深度不确定引起相机之间的平移缩放
    从图中也可以看出,由于尺度scale的关系,不同的t,决定了以后计算点P的深度也是不同的,所以恢复的物体深度也是跟尺度scale有关的,这就是论文中常说的结构恢复structure reconstruction,只是恢复了物体的结构框架,而不是实际意义的物体尺寸。并且要十分注意,每两对图像计算E并恢复R,T时,他们的尺度都不是一样的,本来是同一点,在不同尺寸下,深度不一样了,这时候地图map它最头痛了,所以这个尺度需要统一。

    那怎么统一尺度呢?

    思路1:缩放不同的尺度进行统一。

    思路2:因为尺度不一致是计算本质矩阵

    引起的,另一种常用的思路就是避开本质矩阵的计算。

    思路1容易理解,但思路2具体怎么实现呢?这就涉及到PnP(Perspective-n-Point)方法。Pnp是求解3D-2D点对运动的方法。它描述了当知道n个3D空间点及其投影位置时,如何估计相机的位姿[1]。而求解PnP最常用的方法就是直接线性变换(DLT)。

    考虑投影方程

    可以用最后一行将尺度因子

    消去,这也是后续尺度与初始尺度统一的原因
    。得到两个约束:

    为了简化表示,定义:

    则有:

    假设有N个特征点,则可以列出如下线性方程:

    一共12维,因此最少可以通过6对匹配点求解(9)。当匹配点大于6时,可以使用SVD等方法对超定方程求最小二乘解。

    但由于匹配误差等原因,两帧之间的位姿变换总会出现误差,当这些误差积累之后,便产生了尺度漂移

    在ORB-SLAM中,作者就是使用了PnP方法求解后续帧的位姿变换。

    参考

    1. ^ab《视觉SLAM十四讲 从理论到实践》
    2. ^orbslam2的基础理论(一) https://blog.csdn.net/qq_18661939/article/details/51829573
    3. ^《Multiple View Geometry in Computer Vision.2nd Edition》
    展开全文
  • 1.归一化图像坐标 ...2.本质矩阵 essential matrix 2.1 本质矩阵的推导 2.2特点 3.相机内参 4.基本矩阵 fundamental matrix 4.2基本矩阵推导 4.1特点 5.完整模型:空间点到像素坐标 6.单应矩阵 homograph


    来源:http://www.cnblogs.com/youzx/p/6385513.html#wiz_toc_9

    • 参考barfoot 书 p195-

    1.归一化图像坐标

    • 这里相机坐标系为,图像和坐标为O,这里假设焦距为1;图像坐标中心早光轴上。

    • 空间中点P在摄像机坐标系下的三维坐标:

    • 利用三角近似关系,P点的图像坐标(齐次坐标); 
      同时假设已知图像坐标,反推会发现只能得到空间坐标的两个约束关系,或者说Z可以是任意值都满足约束关系,即深度无法得到;

    2.本质矩阵 essential matrix

    2.1 本质矩阵的推导

    • 相机在不同时刻两帧图像同时观察到空间点P,如图:

    • P在两帧上的图像坐标满足几何约束:

    • 其中称为本质矩阵,其参数由运动的pose决定,与相机内参无关;本质矩阵在位姿估计和相机标定上很有用;

    • 约束关系的证明:

    2.2特点

    • 描述空间中一点在不同帧之间的几何约束关系
    • 注意这里的图像坐标是空间点在相机平面投影点的齐次坐标(摄像机坐标系下表示)
    • 本质矩阵和相机外参有关系,和内参无关

    3.相机内参

    • 这里采用假设焦距为1,图像中心在光轴上,图像像素坐标的原点图像左上角,像素坐标值单位都是像素(整数小格);

    • 像素坐标和归一化图像坐标(可以理解为空间点在平面投影几何坐标的齐次形式)的关系可以描述为:

    • K为相机内参矩阵,是焦距f的像素坐标,是图像中心与图像和光轴交点的偏置(理想情况应该两点重合);考虑到实际像素感光元是正方形的,参数应该对应近似相等;

    4.基本矩阵 fundamental matrix

    4.2基本矩阵推导

    • 将图像归一化坐标替换为像素点坐标,得到基本矩阵约束(极线约束 epipolar constraint)

    • 这里的基本矩阵约束称为极线约束,如下图,如果两帧之间的一个点坐标,外参矩阵已知,则空间点在另外一帧的坐标被约束在一条极线上,可以用来缩小图像匹配点的搜索范围
    • 基本矩阵也可以用来极端内参矩阵

    4.1特点

    • 基本矩阵描述的是不同帧之间同一空间点像素坐标的几何约束关系,由本质矩阵约束中的归一化图像点替换为像素坐标点得到;
    • 基本矩阵和相机内参,外参都有关系
    • 基本矩阵描述的约束又称为极线约束

    5.完整模型:空间点到像素坐标

    • 空间点在相机坐标系的坐标到像素坐标的转换关系: 
      P为齐次坐标到而为坐标的映射矩阵,这个模模型清晰的表示出深度信息的丢失,即无法从像素坐标估计出深度信息。

    6.单应矩阵 homography matrix

    • 空间点三维坐标到像素坐标(齐次形式)的转换:

    • 如果已知观察的点在某个平面上,利用平面方程的先验信息可以估计出深度

    • 已知相机中心到平面距离和法向量,可以得平面的法线方程

    • 将空间坐标替换为像素坐标:

    • 替换掉,得到由像素齐次坐标到空间坐标的转换

    • 空间点在前后两帧坐标系下的三维坐标的约束关系

    • 带入第一个公式,得到两帧之间同一空间点的像素点坐标的约束关系

    • 将上述公式简写为:

    • 矩阵称为单应矩阵,其中用来度量图像的齐次坐标,可以去掉;所以单应矩阵是pose和平面参数的矩阵;




    展开全文
  • 文章详细介绍了本质矩阵和基础矩阵的推导过程
  • 基础矩阵和本质矩阵描述的对极约束,是点与线的关系 单应矩阵描述的是点与点的关系 基础矩阵,本质矩阵的推导: 等等, 两个相机,分别为 是三维空间中的点,以相机1的坐标系为世界坐标系,由相似三角形可得 ...
  • 本质矩阵和基础矩阵

    2017-07-27 17:56:23
    本质矩阵和基础矩阵都是3X3的矩阵。 本质矩阵是一个齐次矩阵,秩为2,自由度为5 本质矩阵的推导过程: 本质矩阵使用摄像机坐标系,通过相机的R&T即可描述,为了使用图像坐标,需要考虑相机内参,由此引入...
  • 基本矩阵、本质矩阵和单应矩阵

    万次阅读 多人点赞 2017-05-15 20:18:03
    基本矩阵、本质矩阵和单应矩阵
  • 本质矩阵与基础矩阵

    2018-05-04 11:39:38
    本质矩阵与基础矩阵 本质矩阵:空间中同一点在两个不同相机坐标系下投影的关系矩阵 基础矩阵:空间中同一点在两个不同平面图像坐标系下投影的关系矩阵 https://www.zhihu.com/question/27581884 ...
  • 基本矩阵与本质矩阵

    2019-10-04 22:41:11
    基本矩阵与本质矩阵 基本矩阵与本质矩阵的数学推导: 假设空间中一点\(P = [X, Y, Z]^T\)。 P在相机A相平面坐标为\(P_A = [x_A, y_A, 1]^T\); P在相机B相平面坐标为\(P_B = [x_B, y_B, 1]^T\); 相机A与相机B的内参...
  • 单应矩阵,基本矩阵,本质矩阵   1.归一化图像坐标2.本质矩阵 essential matrix2.1 本质矩阵的推导2.2特点3.相机内参4.基本矩阵 fundamental matrix4.2基本矩阵推导4.1特点5.完整模型:空间点到像素坐标6.单应...
  • essential matrix 本质矩阵essential matrix 本质矩阵essential matrix 本质矩阵
  • 本质矩阵分解

    千次阅读 2019-03-04 20:03:00
    本质矩阵是归一化图像坐标下的基本矩阵的特殊形式 E=t^R 性质 一个 3X3 矩阵是本质矩阵的充要条件是它的奇异值中有两个相等而第三个是 0 证明:正交矩阵$W=\begin{bmatrix}1&-1&0\\1&0&0\\0...
  • 单应矩阵、基本矩阵和本质矩阵 1 概述 2 矩阵计算 单应矩阵 1)结构 2)求解 3)求解中的问题 4)恢复运动 基本矩阵和本质矩阵 1)结构和求解 2)恢复运动 3 参考资料 这一篇主要是介绍和总结在视觉slam...
  • 基础矩阵和本质矩阵详述概念zhe功能步骤相关链接补充 接上一篇文章中有关対极几何约束的知识,这里主要针对本质矩阵或基础矩阵的一些相关知识进行总结。 概念zhe 在対极几何中 p2tK−Tt^RK−1p−1=0p_{2}^tK^{-T}\...
  • 本质矩阵恢复相机矩阵

    千次阅读 多人点赞 2017-06-08 11:22:08
    本质矩阵  本质矩阵(essential matrix )是基本矩阵在归一化图像坐标下的一种特殊形式。  考虑相机矩阵P=K[R|t]P=K[R|t]P=K[R|\mathbf t],点x=PXx=PX\mathbf x=P\mathbf X是图像平面上的一个点,若已知相机...
  • 本质矩阵和基础矩阵都是3X3的矩阵。 本质矩阵是一个齐次矩阵,秩为2,自由度为5 本质矩阵的推导过程: 本质矩阵使用摄像机坐标系,通过相机的R&T即可描述,为了使用图像坐标,需要考虑相机内参,由此引入了...
  • 单应矩阵 基本矩阵 本质矩阵的区别与联系
  • 本质矩阵描述了相机内参已知的情况下同一个点不同视角下的关系,5自由度。即已知同一个点在两帧图像下的坐标,两个坐标、相机内参、本质矩阵满足对极约束条件(1-1)。 基础矩阵描述了同一个点在不同视角下的关系,...
  • EEE为本质矩阵,FFF为基本矩阵。 先用八点法求EEE, 后用SVD分解求ttt和RRR。 注:纯旋转无法用EEE求解ttt和RRR。 特征点共面或者发生纯旋转时,八点法会退化(基础矩阵自由度下降?): 此为平面的点法式方程。 ...
  • 本质矩阵(Essential Matrix) E=t×R=[0−t3t2t30−t1−t2t10]∗R(3) E=t×R= \left[ \begin{matrix} 0 & -t_3 & t_2 \\ t_3 & 0 & -t_1 \\ -t_2 & t_1 & 0 \end{matrix} \right] \
  • 通过基础矩阵和本质矩阵恢复摄像机矩阵

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,712
精华内容 1,084
关键字:

本质矩阵