目录

1 “8-点法”求基本矩阵F(Fundamental Matrix)

2 “7-点法”求F

2.1 参考1:计算机视觉中的数学方法

2.2 参考2:SFU 浙江大学 计算机视觉课程

2.3.1 误差评估的方法

2.3.2 相机矩阵求解的几点建议

2.3.3 退化情况

3 “6-点法”求F


1 “8-点法”求基本矩阵F(Fundamental Matrix)

参考:计算机视觉中的数学方法,吴福朝 4.3.1 基本矩阵估计

奇异值分解(Singular Value Decomposition, SVD)

相关方程(类似求解基础矩阵Essential Matrix):高翔 slam十四讲视频;数学_SVD分解及SLAM中的应用

参考代码实现

(ORB-SLAM3 TwoViewReconstruction.cc)

cv::Mat TwoViewReconstruction::ComputeF21(const vector<cv::Point2f> &vP1,const vector<cv::Point2f> &vP2)
{const int N = vP1.size();cv::Mat A(N,9,CV_32F);for(int i=0; i<N; i++){const float u1 = vP1[i].x;const float v1 = vP1[i].y;const float u2 = vP2[i].x;const float v2 = vP2[i].y;A.at<float>(i,0) = u2*u1;A.at<float>(i,1) = u2*v1;A.at<float>(i,2) = u2;A.at<float>(i,3) = v2*u1;A.at<float>(i,4) = v2*v1;A.at<float>(i,5) = v2;A.at<float>(i,6) = u1;A.at<float>(i,7) = v1;A.at<float>(i,8) = 1;}cv::Mat u,w,vt;cv::SVDecomp(A,w,u,vt,cv::SVD::MODIFY_A | cv::SVD::FULL_UV);cv::Mat Fpre = vt.row(8).reshape(0, 3);cv::SVDecomp(Fpre,w,u,vt,cv::SVD::MODIFY_A | cv::SVD::FULL_UV);w.at<float>(2)=0;return  u*cv::Mat::diag(w)*vt;
}void TwoViewReconstruction::FindFundamental(vector<bool> &vbMatchesInliers, float &score, cv::Mat &F21)
{// Number of putative matchesconst int N = vbMatchesInliers.size();// Normalize coordinatesvector<cv::Point2f> vPn1, vPn2;cv::Mat T1, T2;Normalize(mvKeys1,vPn1, T1);Normalize(mvKeys2,vPn2, T2);cv::Mat T2t = T2.t();// Best Results variablesscore = 0.0;vbMatchesInliers = vector<bool>(N,false);// Iteration variablesvector<cv::Point2f> vPn1i(8);vector<cv::Point2f> vPn2i(8);cv::Mat F21i;vector<bool> vbCurrentInliers(N,false);float currentScore;// Perform all RANSAC iterations and save the solution with highest scorefor(int it=0; it<mMaxIterations; it++){// Select a minimum setfor(int j=0; j<8; j++){int idx = mvSets[it][j];vPn1i[j] = vPn1[mvMatches12[idx].first];vPn2i[j] = vPn2[mvMatches12[idx].second];}cv::Mat Fn = ComputeF21(vPn1i,vPn2i);F21i = T2t*Fn*T1;currentScore = CheckFundamental(F21i, vbCurrentInliers, mSigma);if(currentScore>score){F21 = F21i.clone();vbMatchesInliers = vbCurrentInliers;score = currentScore;}}
}

2 “7-点法”求F

2.1 参考1:计算机视觉中的数学方法

  • 吴福朝 4.3.2 基本矩阵估计

2.2 参考2:SFU 浙江大学 计算机视觉课程

  • 谭平教授 从相机标定到SLAM,极简三维视觉六小时课程视频(附PPT) | 机器之心
  • 当得到1个实数解、2个虚数解时,直接舍弃虚数解,实数解就是F的唯一解;
  • 当得到3个实数解时,称之为critical condition,这意味着,F的7个点和两个相机中心点,这9个点,通过三维空间中某个特定曲面。在这种特定情况下,7个对应点不能唯一确定一个F。

2.3.1 误差评估的方法

有3种方式

代数误差 algebraic error

  • 最原始的方式,一般在初始化时使用。

几何误差 geometric error

  • 退而求其次的方式

重投影误差 re-projection error

  • golden rule 目前最好的方式

2.3.2 相机矩阵求解的几点建议

2.3.3 退化情况

Planar scene: 纯平面的场景

3 “6-点法”求F

三维重建笔记_多视几何_求基本矩阵F_六/七/八点法_误差评估相关推荐

  1. 【数据结构_浙江大学MOOC】第六七八讲 图

    列出连通集 题目 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输 ...

  2. java 百千万亿转换_一二三四五六七八九十百千万亿

    有些人虽然不会时常想起,但却不会遗忘,因为你已经进入我的心灵深处,越来越深,深入了我的潜意识. 此刻如潮水般侵袭我脑海的全是属于你:一个人的记忆. 不知道东哥是脑抽了,还是脑抽了,又搞那套换位子的老把 ...

  3. 《计算机视觉之三维重建》笔记3-单视几何

    北邮鲁鹏老师的课程<计算机视觉之三维重建(深入浅出sfm和SLAM核心算法)> 笔记 3,单视几何 3.1 2D 直线 平面上直线用 l = ( a , b , c ) T l=(a,b, ...

  4. 求数的绝对值一定是正数_人教版初中数学七年级上册绝对值公开课优质课课件教案视频...

    绝对值(习题课) 导学案(教师版) [教学目标] 1.能利用绝对值的性质求值. 2.通过复习绝对值,让学生对绝对值的理解更加深透. 3.通过复习,让学生掌握利用绝对值的代数和几何意义,并学会灵活运用来 ...

  5. 微信小程序_(校园视)开发视频的展示页_上

    微信小程序_(校园视) 开发用户注册登陆 传送门 微信小程序_(校园视) 开发上传视频业务 传送门 微信小程序_(校园视) 开发视频的展示页-上 传送门 微信小程序_(校园视) 开发视频的展示页-下 ...

  6. python计算1的平方减2的平方加3的平方减4的平方怎么算_已知X的平方加4x减一等于零 求2x的四次方加八X的三次方减四X的平方减八X加一的值...

    已知X的平方加4x减一等于零 求2x的四次方加八X的三次方减四X的平方减八X加一的值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...

  7. 六年级上计算机课程计划书,六年级学习计划书_小学六年级学习计划范文

    想要更高效地学习,大家可以提前制定好一份学习计划.下面是小编整理的六年级学习计划书,欢迎大家参考! 1.我认为,我目前最大的毛病就是上课不认真听讲.总是在课堂上摆着一个认真听讲的架子,但脑子却早已想别 ...

  8. 图形学笔记(九)几何 ——几何表示方法(CSG、距离函数、水平集 、点云、网格(obj格式))、贝塞尔曲线(面)

    图形学笔记(八)着色2 -- 纹理映射.重心坐标.双线性插值.Mipmap.三线性插值.各向异性过滤.纹理的应用(环境贴图.法线贴图等) 图形学笔记(十)几何2 -- 曲面细分(Loop细分.Catm ...

  9. 设计计算机配置方案技术参数,广西科学技术信息技术七年级上册_《设计计算机配置方案》教案1...

    广西科学技术信息技术七年级上册_<设计计算机配置方案>教案1 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <信息技 ...

  10. 视觉SLAM笔记(35) 三角化求特征点的空间位置

    视觉SLAM笔记(35) 三角化求特征点的空间位置 1. 特征点的空间位置 2. 三角测量函数 3. 求特征点的空间位置 1. 特征点的空间位置 在 视觉SLAM笔记(31) 特征提取和匹配 已求出特 ...

最新文章

  1. LeetCode简单题之重新分配字符使所有字符串都相等
  2. 数据管理DMS企业版接入蚂蚁金融云售卖
  3. linux图机界面机制
  4. 内存总是不够?HBaseGeoMesa配置优化了解一下
  5. 【渝粤教育】国家开放大学2018年秋季 2409T中国古代文学(B)(1) 参考试题
  6. Docker 背后的内核知识——cgroups 资源限制
  7. 柱状图如何添加数字标签_分类堆叠柱状图顺序排列及其添加合适条块标签
  8. 最详细最好的Multisim模拟电路仿真教程(附视频教程)
  9. STM32F103驱动无刷直流电机应用思路
  10. MybatisPlusException: This is impossible to happen
  11. Windows上软件的未来:什么是MSIX文件?
  12. 使用 prometheus 监控 MySQL
  13. 1688-seller_info - 获得店铺详情
  14. vue-cli · Failed to download repo vuejs-templates/webpack-simple: tunneling socket could not be esta
  15. nvm安装与使用详解(Window11)
  16. Rancher Labs携手东网发布“容器+虚拟化”双引擎超融合平台HOR
  17. google搜索引擎用法
  18. 抖音SEO优化源码,企业号搜索排名系统,技术理论分析搭建。
  19. Linux下用户空间访问I/O端口的相关函数
  20. 图像处理: 设计 自定义透明度 水印

热门文章

  1. Hadoop运行时缺少hadoop dll winutils exe
  2. [洛谷P4183][USACO18JAN]Cow at Large P
  3. Qt--自定义Delegate
  4. layer —— 一个简单的jQuery弹出层插件
  5. 创建和分享你的Visual Studio color
  6. 查看和修改MySQL数据库表存储引擎
  7. 对文件、字符串和byte数组进行MD5加密
  8. JavaScript之爆肝汇总【万字长文❤值得收藏】
  9. 03. 绝对不要以多态(polymorphically)方式处理数组
  10. php ajax跨域cookies,解决ajax跨域请求数据cookie丢失问题