php商城网站开发报告,正版电子商务网,给工厂做代加工,万网云服务器怎么上传网站吗由于最近在整理单目测距的内容#xff0c;顺手也总结下鱼眼相机的测距流程和误差分析#xff0c;如果有错误#xff0c;还请不吝赐教。
参考链接: 鱼眼镜头的成像原理到畸变矫正#xff08;完整版#xff09; 相机模型总结#xff08;针孔、鱼眼、全景#xff09; 三维…由于最近在整理单目测距的内容顺手也总结下鱼眼相机的测距流程和误差分析如果有错误还请不吝赐教。
参考链接: 鱼眼镜头的成像原理到畸变矫正完整版 相机模型总结针孔、鱼眼、全景 三维空间中判断射线与平面是否相交 相机外参标定误差对目标测距的影响分析待整理 像素坐标转到世界坐标时相机坐标系中的Zc值求解 一文简要介绍鱼眼镜头/相机投影成像过程 一文详解分析鱼眼相机投影成像模型和畸变模型 相机模型-鱼眼模型fisheye camera model SLAM 中常用的相机模型畸变模型总结
最后两位大哥写的特别好,原理部分写的很详细也很全我就不打算复制粘贴了我从归一化坐标开始写感谢大佬们的无私奉献 文章目录 1 投影过程2 反投影过程3 推导射线与地面交点3.1 归一化相机坐标系下的射线3.2 射线在世界坐标系下的表示 4 求解射线与地面交点4.1 计算距离: 1 投影过程 2 反投影过程 我这里是像素坐标系转世界坐标系对应着反投影过程到第五步已经得到单位球面坐标系里的位置。
这里分两种方法:
根据 像素坐标转到世界坐标时相机坐标系中的Zc值求解 这位作者写的先计算出Zc的值再根据像素坐标算出世界坐标系的位置作者也给出了python的代码目前我觉得思路没啥问题。推导从相机光心出发通过像素点(u, v)的射线与地面的交点解出交点这个交点就是像素坐标系转到世界坐标系的位置。 很重要的几个知识点:
鱼眼相机成像模型近似为单位球面投影模型。根据投影函数的不同将鱼眼相机的设计模型大致分为等距投影模型、等立体角投影模型、正交投影模型和体视投影模型四种。相机的成像模型实际上表征的是成像的像高与入射角之间的映射关系。不管是针孔相机模型还是鱼眼相机模型其成像过程都涉及到四个坐标系世界坐标系、相机坐标系、图像物理坐标系、图像像素坐标系以及这四个坐标系间的转换。具体的成像原理请看参考文献大佬们写的非常好。鱼眼相机和针孔相机成像的不同之处: 在鱼眼模型中会将相机下的空间点, 先转换为归一化相机球面上再从球面投影到平面上。针孔相机将空间点直接投影到平面上。不管是鱼眼相机模型还是针孔相机模型(我目前接触过的两种相机其他相机没仔细研究过), 假设在图像平面中有一个接地点的像素坐标P(u, v), 将该点转换为归一化相机坐标系下的点Pc由于Pc是归一化坐标它实际上代表了从相机光心出发通过像素点P(u, v)的射线方向。这条射线与地平面 (Z0) 的交点就是接地点的3D位置。[写到这里是不是很清楚了看到了啥射线方程啊兄弟们所以要做的事情就是推导出这个交点求解出交点有了这个交点要测距的话就算出距离]
3 推导射线与地面交点
3.1 归一化相机坐标系下的射线
设归一化坐标系下的射线方向向量为d,t 表示射线上的一点距离相机光心的标量表示沿射线的距离那么在归一化相机坐标系下相机作为原点所以射线的方程可以表示为 Pc(t) t * d
3.2 射线在世界坐标系下的表示
将射线从相机坐标系转换到世界坐标系R是相机旋转矩阵, T 是相机的平移向量 Pw(t) R * Pc(t) T
4 求解射线与地面交点
射线与地面的交点在世界坐标系下的 Z 值为 0因此 Pw(t)(z) 0 就是z为0 ( R * Pc(t) T)(z) 0 就是把上面那个公式带了进来 ( R * t * d T)(z) 0 那个Pc(t) 带了进来 t * (R * d)z Tz 0 这些都是可以立即推的
即射线方向向量在世界坐标系下的表示dw R * d 解出t t − T z ( d w ) z t-\frac{T_z}{(d_w)_z} t−(dw)zTz − z c d w , z -\frac{z_c}{d_{w,z}} −dw,zzc
现在有了射线方向dw和沿着射线的距离t可以找到交点Pw: P w R ⋅ ( − T z ( d w ) z ⋅ d ) T {P_w}R \cdot (-\frac{T_z}{(d_w)_z} \cdot d) T PwR⋅(−(dw)zTz⋅d)T P w R ⋅ ( − z c d w , z ⋅ d ) T {P_w}R \cdot (-\frac{z_c}{d_{w,z}} \cdot d) T PwR⋅(−dw,zzc⋅d)T
4.1 计算距离:
最后计算交点Pw与相机在 XY 平面上的投影距离。相机的位置是(xc, yc, zc), d i s t ( P w , x − T x ) 2 ( P w , y − T y ) 2 dist \sqrt{(P_{w,x} - T_x)^2 (P_{w,y} - T_y)^2} dist(Pw,x−Tx)2(Pw,y−Ty)2
这个计算假设地面是平坦的并且与 XY 平面对齐。在实际情况中地面可能不完全平坦或者与 XY 平面不是完全对齐的需要额外的校正。以上便是基于针孔相机模型的测距推导完整过程基于这个过程可以用来研究相机外参参数对测距结果的具体影响。
总结
别人也做了实验验证误差部分我没做实验我也不贴别人的结论了。很长时间内我都不明白为啥我算出来的3D位置总是有问题我拿到的3D位置跟激光雷达给出来的误差那么多我一直觉得我的射线方程部分没写错就今天我才知道我错哪里了。Pw的方程那边一定要写对我就是解 t 的时候代码里少了负号死活找不到原因死活觉得我的理论没问题啊。真的是哪哪都对就是结果不对。非常确定自己的理论没问题就去看看自己写的代码一行一行看没准有惊喜。