三点法求点三维坐标实验
2016-06-16 16:18
295 查看
1、实验目的
1)加深对标定原理的理解2)验证一种单目求三维点坐标的方法
2、实验原理
1) ⎡⎣⎢uv1⎤⎦⎥=⎡⎣⎢1/dx0001/dy0u0v01⎤⎦⎥⎡⎣⎢f000f0001⎤⎦⎥⎡⎣⎢Xc/ZcYc/Zc1⎤⎦⎥两个3×3矩阵是通过标定得到的内参数矩阵,可以认为它不随参照物的变化而变化,是一个固定值。能够利用图像中(u,v)的坐标求得(Xc/Zc,Yc/Zc)的值,设为(a,b)。这可以看作是三维空间坐标的透视投影,那么实际的坐标可设为
(a,b,1)∗Zc=(aZcbZcZc)
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,求出世界坐标:
5、实验误差分析
误差的来源主要有:1)获取图像坐标点的误差。
2)实际空间距离的误差,即式子中l1,l2,l3有可能测量出现的误差。
解决误差的方法:
识别的点要尽量稳定,l1,l2,l3相比误差来说要尽可能大一些,使得相对误差尽量减小。
6、实验结论
根据实验得到结果可知,世界坐标下的误差能够让人接受,而且在摄像头坐标系下也能够反推证明两个点之间的距离是28mm左右。如果要进行空间角度的测量的话,一方面可能对标定精度的要求要进一步提高,但还是不能保证得到结果的可靠性,因为角度对位置的变化比较敏感,一个小小的误差,可能使角度产生较大的偏移,这也是整个项目最大的问题所在。
总之,还是要看精度的要求,以及要考虑其他误差补偿的方法。
相关文章推荐
- Java: 省略System.out
- strtok
- 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”
- js(javascript)小谈变量声明(显隐声明,声明提前)
- Viewpager笔记
- 看三消游戏源代码的收获
- csdn博客中插入公式
- #pragma pack(n)详解
- ASP.NET Web API是如何根据请求选择Action的?[上篇] 【转】
- C#与C/C++的交互
- 键盘收回方法
- MySQL字符串函数substring:字符串截取
- css3过渡总结
- java时间转换,2016-06-16T15:02:32转换为2016-06-16 15:02:32
- Printf的格式控制和使用技巧
- 使用子查询可提升 COUNT DISTINCT 速度 50 倍
- 文件目录创建失败 解决方法
- android studio前言中不允许…
- web前端开发基本知识——css篇
- /etc/sysctl.conf