三点法求点三维坐标实验
1、实验目的
1)加深对标定原理的理解
2)验证一种单目求三维点坐标的方法
2、实验原理
1)
\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
代入坐标式子得三个点的坐标为:
然后通过
\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) 对实验做一个系统性的误差评价. 2) 验证本实验的精度能否达到测量空间角的要求. 2. 实验原理 参考论文[1]进行误差评估实验,但是由于论文中的评定指标并不都适合本次实验,所 ...
- 二维坐标和三维坐标相互转换
原理参考世界坐标系.相机坐标系.图像坐标系.像素坐标系之间的转换 我的需求是将二维点转换成三维点,旋转三维点,再转换为二维点,此处的旋转跟相机成像的旋转矩阵又没有关系. 假定像素坐标为(u,v),处理 ...
- java求外接圆圆心_由三点三维坐标计算圆半径和圆心位置
[实例简介] 通过输入任意三点空间坐标自动判断三点是否在一条直线上,若不在则求三点外接圆的圆心位置和半径,计算精度可调节.解决了"知三点求圆心半径"程序对于某些点无法计算的缺陷. ...
- python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法
计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...
- 三点求圆心坐标(三角形外心)
//过三点求圆心坐标 Point waixin(Point a,Point b,Point c) { double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1*a ...
- C#三点法计算圆心坐标和圆半径
引用"System.Drawing" Using指令: using System.Drawing; 代码块: /// <summary> /// 三点法计算圆心坐标和圆 ...
- 已知无人机姿态信息,以及图像上的像点坐标,怎么求像点对应的三维坐标
如果已知无人机姿态信息(也就是无人机的位置和朝向)以及图像上的像点坐标,那么可以使用立体视觉的方法来求出像点对应的三维坐标. 具体来说,首先要将无人机的姿态信息转化为摄像头的欧拉角(或欧拉角加平移向量 ...
- Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标
01 参考 本文下述使用参考的的工程均来自于下面的两个github yolo v5参考的代码:https://github.com/ultralytics/yolov5 本文参考的代码(仅获得深度): ...
- 2021-05-11雨流计数法的matlab代码实现,三点法四点法修正版
"我是置顶":本文仅供参考,禁止大作业抄袭!!! 这个代码还可以完善,还可以实现比如记录半循环之类的功能,加油! 2020年10月份左右因为课程原因接触了一下雨流计数法,该方法用于 ...
最新文章
- R语言names函数获取或者设置数据对象名称实战
- 与基础事务管理器通讯失败
- Delphi 中的字符串函数(5) - SysUtils 中的 Ansi 字符串函数
- 浪漫的html表白源代码_Love:程序猿的方式【情人节amp;520—我爱你】动画加音效 → 那些年最浪漫的表白(帮你得到你的她)...
- python-pdf添加水印
- 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
- 【算法竞赛学习】金融风控之贷款违约预测-数据分析
- 解决火车票网上订票难的方案
- itunes未能连接到iphone_iTunes下载_苹果iTunes官方下载「32位|64位」
- mongodb自动关闭:页面文件太小,无法完成操作
- mysql删除原则_MySQL入门-11:数据的增、删、改
- SLAM Cartographer(13)基于Ceres库的扫描匹配器
- 数据科学 IPython 笔记本 7.3 Pandas 数据操作
- android p 牛轧糖_Android牛轧糖快速设置图块
- .NET 类、网站dll反编译工具
- Python常用的19个工具包汇总
- Java中Object转化为int类型
- C/C++复习:向量的数量积
- 不小心误删@‘local’操作恢复
- c语言输出行末不得有多余空格,2019年春季学期第四周作业