1、实验目的

1)加深对标定原理的理解
2)验证一种单目求三维点坐标的方法

2、实验原理

1)

⎡⎣⎢uv1⎤⎦⎥=⎡⎣⎢1/dx0001/dy0u0v01⎤⎦⎥⎡⎣⎢f000f0001⎤⎦⎥⎡⎣⎢Xc/ZcYc/Zc1⎤⎦⎥

\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}1/dx&0&u0\\0&1/dy&v0\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\begin{bmatrix}Xc/Zc\\Yc/Zc\\1\end{bmatrix}

两个3×3矩阵是通过标定得到的内参数矩阵,可以认为它不随参照物的变化而变化,是一个固定值。能够利用图像中(u,v)的坐标求得(Xc/Zc,Yc/Zc)的值,设为(a,b)。这可以看作是三维空间坐标的透视投影,那么实际的坐标可设为
(a,b,1)∗Zc=(aZcbZcZc)(a,b,1)*Zc=\begin{pmatrix}aZc&bZc&Zc\end{pmatrix}
2)假如我们已经知道物体表面的任意三个点的实际距离l1,l2,l3。那么可以列出如下式子:

其中z1,z2,z3对应1)中的Zc,a1,b1…b3对应1)中的a和b。
三个未知数三个线性无关方程,理论上有解。

3、实验步骤

1)先在标定工具箱中利用里面的normalize函数通过已知的棋盘格坐标点求出(a,b),如图:

上面是图像坐标


接着是归一化后坐标
2)在Matlab中利用solve函数可求的方程组的解:

4、实验结果

1)求得的方程组的解为:



最后选取z1 = 2456.3,z2 = 2469.9,z3 = 2475.4
代入坐标式子得三个点的坐标为:

然后通过

⎡⎣⎢XwYwZw⎤⎦⎥=R⋅⎡⎣⎢XcYcZc⎤⎦⎥+Tc

\begin{bmatrix}Xw\\Yw\\Zw\end{bmatrix}=R\cdot\begin{bmatrix}Xc\\Yc\\Zc\end{bmatrix} + Tc,求出世界坐标:

5、实验误差分析

误差的来源主要有:
1)获取图像坐标点的误差。
2)实际空间距离的误差,即式子中l1,l2,l3有可能测量出现的误差。
解决误差的方法:
识别的点要尽量稳定,l1,l2,l3相比误差来说要尽可能大一些,使得相对误差尽量减小。

6、实验结论

根据实验得到结果可知,世界坐标下的误差能够让人接受,而且在摄像头坐标系下也能够反推证明两个点之间的距离是28mm左右。
如果要进行空间角度的测量的话,一方面可能对标定精度的要求要进一步提高,但还是不能保证得到结果的可靠性,因为角度对位置的变化比较敏感,一个小小的误差,可能使角度产生较大的偏移,这也是整个项目最大的问题所在。
总之,还是要看精度的要求,以及要考虑其他误差补偿的方法。

三点法求点三维坐标实验相关推荐

  1. 三点法求三维坐标精度误差评估实验

    1. 实验目的 1) 对实验做一个系统性的误差评价. 2) 验证本实验的精度能否达到测量空间角的要求. 2.  实验原理 参考论文[1]进行误差评估实验,但是由于论文中的评定指标并不都适合本次实验,所 ...

  2. 二维坐标和三维坐标相互转换

    原理参考世界坐标系.相机坐标系.图像坐标系.像素坐标系之间的转换 我的需求是将二维点转换成三维点,旋转三维点,再转换为二维点,此处的旋转跟相机成像的旋转矩阵又没有关系. 假定像素坐标为(u,v),处理 ...

  3. java求外接圆圆心_由三点三维坐标计算圆半径和圆心位置

    [实例简介] 通过输入任意三点空间坐标自动判断三点是否在一条直线上,若不在则求三点外接圆的圆心位置和半径,计算精度可调节.解决了"知三点求圆心半径"程序对于某些点无法计算的缺陷. ...

  4. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  5. 三点求圆心坐标(三角形外心)

    //过三点求圆心坐标 Point waixin(Point a,Point b,Point c) { double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1*a ...

  6. C#三点法计算圆心坐标和圆半径

    引用"System.Drawing" Using指令: using System.Drawing; 代码块: /// <summary> /// 三点法计算圆心坐标和圆 ...

  7. 已知无人机姿态信息,以及图像上的像点坐标,怎么求像点对应的三维坐标

    如果已知无人机姿态信息(也就是无人机的位置和朝向)以及图像上的像点坐标,那么可以使用立体视觉的方法来求出像点对应的三维坐标. 具体来说,首先要将无人机的姿态信息转化为摄像头的欧拉角(或欧拉角加平移向量 ...

  8. Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标

    01 参考 本文下述使用参考的的工程均来自于下面的两个github yolo v5参考的代码:https://github.com/ultralytics/yolov5 本文参考的代码(仅获得深度): ...

  9. 2021-05-11雨流计数法的matlab代码实现,三点法四点法修正版

    "我是置顶":本文仅供参考,禁止大作业抄袭!!! 这个代码还可以完善,还可以实现比如记录半循环之类的功能,加油! 2020年10月份左右因为课程原因接触了一下雨流计数法,该方法用于 ...

最新文章

  1. R语言names函数获取或者设置数据对象名称实战
  2. 与基础事务管理器通讯失败
  3. Delphi 中的字符串函数(5) - SysUtils 中的 Ansi 字符串函数
  4. 浪漫的html表白源代码_Love:程序猿的方式【情人节amp;520—我爱你】动画加音效 → 那些年最浪漫的表白(帮你得到你的她)...
  5. python-pdf添加水印
  6. 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
  7. 【算法竞赛学习】金融风控之贷款违约预测-数据分析
  8. 解决火车票网上订票难的方案
  9. itunes未能连接到iphone_iTunes下载_苹果iTunes官方下载「32位|64位」
  10. mongodb自动关闭:页面文件太小,无法完成操作
  11. mysql删除原则_MySQL入门-11:数据的增、删、改
  12. SLAM Cartographer(13)基于Ceres库的扫描匹配器
  13. 数据科学 IPython 笔记本 7.3 Pandas 数据操作
  14. android p 牛轧糖_Android牛轧糖快速设置图块
  15. .NET 类、网站dll反编译工具
  16. Python常用的19个工具包汇总
  17. Java中Object转化为int类型
  18. C/C++复习:向量的数量积
  19. 不小心误删@‘local’操作恢复
  20. c语言输出行末不得有多余空格,2019年春季学期第四周作业

热门文章

  1. 【Unity3D进阶4-14】Unity3D 连接MySQL数据库
  2. 行人重识别(21)——行人重识别算法性能指标
  3. 如何取消excel密码_办公软件操作技巧020:如何给excel工作表设置密码
  4. 和大人和纪晓岚的经典台词
  5. Maven项目依赖外部jar进行打包的两种方式
  6. 洛谷 P1710 地铁涨价 (dfs+bfs)
  7. 苹果遭遇史上最严厉的泄密:自家的iOS源代码居然泄漏了
  8. Groovy on Grails(Java笨狗)系列---前言(二)
  9. Amazon CloudFront CDN + s3 源站跨域配置
  10. 《考试脑科学》阅读笔记