最近在做三维重建的工作,三角测量原理是实现三维重建的基石,具体的算法推导可以参考之前的三角测量计算点的三维坐标一文。在之前的文章中,已知一对匹配点,可以计算出场景的三维坐标。

[u, v] 和 [u’, v’] 为相机的归一化坐标, P为待求的世界坐标。经过SVD分解,总能求得最优解。那这个解是否一定满足重建的精度,换句话说,如何对求得结果进行精度判断。

图片来自视觉SLAM14讲

由于相机标定,图像特征点匹配的位置等,都会存在一定的误差,实际上O1p1 与O2p2不相交,结果P就在他们之间,理论上最优解应该在这两条线的中垂线的中间。所以可以根据P点到两条射线的距离之和满足一定的阈值就可以进行过滤。

第一种做法:

  1. 计算三角化,求出P点的三维坐标。

  2. 计算两条线的方程

  3. 计算点到直线的距离

关键是如何推导这两条直线的方程呢?

由对极几何知道,O1设置为原点[0, 0, 0] , O1到O2的转换关系为[R, t] ,他们可以通过双目立体标定计算得到。

我们都以左相机的坐标系为基准,O2坐标为:

因为在右相机中,O2本来就是原点所以Pro2=0,代入上式,O2在左相机的坐标为:

两个相机光心的坐标有了,开始计算p1和p2点在左相机坐标系的坐标。p1很简单,坐标值不变,p2的值经过转换为:

空间直角坐标系中平面方程为Ax+By+Cz+D=0;可以分别代入O1 - p2,O2-pl2 求得L1 和 L2。最后计算P点到L1和L2的距离之和。

第二种方法:

前面已经计算出来4个点在左相机的坐标,其实可以根据另外的直线表示方法,计算出三维点P。

具体推导:直线方程即可以用两点式表达,也可以用空间中点和向量表示

lambda1, lambda2可以任意取值,则点p 肯定都在它们各自的线上。v1, v2为向量。

构建的目标函数为:

写成矩阵的表达形式:

即:

则在L1上的点为P1, L2上的点为P2

距离计算更简单了,计算向量P1P2向量的模即可

然后根据阈值就可以判断是否满足精度要求。

公式有点多,难免有打错,请勿怪~~~

参考:http://mesh.brown.edu/desktop3dscan/ch1-intro.html

halcon测量两条线距离_三角测量算法:过滤可能的错误点相关推荐

  1. 05-机器学习_(协同过滤推荐算法与应用)---没用

    机器学习算法day03_协同过滤推荐算法及应用 课程大纲 协同过滤推荐算法原理 协同过滤推荐算法概述 协同过滤推荐算法思想 协同过滤推荐算法分析 协同过滤推荐算法要点 协同过滤推荐算法实现 协同过滤推 ...

  2. 距离矢量路由算法_简单聊聊路由协议

    帅天今天难得一次写两篇文章,希望兄弟们给点力,点个赞.码字不易啊. 这篇文章简单的聊聊路由协议,注意这里是简单,路由协议太复杂,了解一下即可. 我们在大学里面学习计算机网络与数据结构的时候,知道求最短 ...

  3. python 聚类_聚类算法中的四种距离及其python实现

    欧氏距离 欧式距离也就是欧几里得距离,是最常见也是最简单的一种距离,再n维空间下的公式为: 在python中,可以运用scipy.spatial.distance中的pdist方法来实现,但需要调整其 ...

  4. python测量镜头到目标距离_摄像头单目测距原理及实现

    摄像头单目测距原理及实现 一.测距原理 空间的深度或距离等数据的摄像头. 人的眼睛长在头部的前方,两只眼的视野范围重叠,两眼同时看某一物体时,产生的视觉称为双眼视觉. 双眼视觉的优点是可以弥补单眼视野 ...

  5. 距离矢量路由算法_计算机网络自学笔记:选路算法

    网络层必须确定从发送方到接收方分组所经过的路径.选路就是在网络中的路由器里的给某个数据报确定好路径(即路由). 一台主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的默认网 ...

  6. 调节e18-d80nk的测量距离_方管前置镜光学测量仪器测量范围5视度测量精度高

    方管前置镜光学测量仪器测量范围5视度测量精度高 本公司现有员工50多人,工程师3人,工程师5人,技师2人,激光器研发设计能力,具有较强的加工.生产能力. 公司产品行销,已形成一定的销售网络. 公司主要 ...

  7. 调节e18-d80nk的测量距离_堪称建筑工程指南针,测量放线最常用,这2种测量仪器一定要会...

    水准仪.经纬仪.全站仪的操作使用,高程测量原理与角度测量原理,测量计算基本常识以及GPS定位原理及应用等,都是工程人的必备知识.今天100唯尔教育小编就结合100唯尔教育VR仿真课程来介绍水准仪和全站 ...

  8. python 异常点检测 cook距离_异常检测算法汇总

    本文来自:https://github.com/Albertsr 第一部分:无监督异常检测 1. 算法 1.1 孤立森林(Isolation Forest) 算法论文: Isolation Fores ...

  9. python opencv卡尺测量边缘距离

    opencv 卡尺法 测量边缘距离 参考来源 :https://github.com/crackwitz/metrology-demo 前言 一.测量方法 二.测量步骤 1.获取直线的像素 2.高斯滤 ...

最新文章

  1. UIPickerView和UIDataPicker
  2. python drop函数_用python帮财务小姐姐自动生成财务报表
  3. Windows2003无法看到网络连接,修复COM+组件
  4. 聊聊Tomcat的架构设计
  5. 服务端配置实现AJAX跨域请求
  6. file_put_contents()写入数组
  7. 移动Web体验月报(6月):MIP 核心代码升级,增加基于 Vue 开发能力
  8. 数据结构 —— 树状数组
  9. Spring Boot 2.2 增加了一个新功能,启动飞起~
  10. 苹果正式推送iPadOS 13.1、iOS 13.1,修复大量Bug,速升!
  11. jpg格式怎么免费压缩大小
  12. PMP考试答题技巧-模拟题库
  13. Excel游戏—制作数字炸弹小游戏
  14. 前端数据可视化插件(四)关系图
  15. 数据分析面试都会问到哪些问题
  16. ps图标长投影如何做?
  17. R语言统计与绘图:生存曲线的两两比较
  18. jekins 指定分支_jenkins的pipeline拉取指定分支的代码
  19. Linux系统信号定义
  20. 【愚公系列】2023年04月 攻防世界-MOBILE(Android2.0)

热门文章

  1. 【回顾】如何搭建一套个性化推荐系统?
  2. 没有完美,一切只是角度
  3. conda安装tensorflow-gpu=2.2.0
  4. 操作系统中的互斥锁与条件变量
  5. php中 s=,PHP错误表中的所有值=’s’
  6. 吴恩达深度学习之五《序列模型》学习笔记
  7. 吴恩达深度学习之二《改善深层神经网络:超参数调试、正则化以及优化》学习笔记
  8. 利用screen和nohup让Linux服务器后台运行程序
  9. Linux 中如何启用和禁用网卡?
  10. java基础-01基本概念