多大的服务器可以做视频网站,无限时间看片视频,东莞常平二手房价格,完整开发网站需要什么视觉SLAM14精讲
三维空间刚体运动1.0三维空间刚体运动1.1三维空间刚体运动1.2李群与李代数2.1相机与图像3.1相机与图像3.2 视觉SLAM14精讲——相机与图像3.3 视觉SLAM14精讲相机投影流程双目相机模型 相机投影流程
至此#xff0c;有关相机三维刚体变换的所有因素已经汇集。…视觉SLAM14精讲
三维空间刚体运动1.0三维空间刚体运动1.1三维空间刚体运动1.2李群与李代数2.1相机与图像3.1相机与图像3.2 视觉SLAM14精讲——相机与图像3.3 视觉SLAM14精讲相机投影流程双目相机模型 相机投影流程
至此有关相机三维刚体变换的所有因素已经汇集。书中对完整的投影过程做了总结。其中主要是将相机投影到世界坐标系。这里我们更进一步以相机投影到另一个相机为目标完整推理一遍其中的数学过程加深对空间的理解。 完整的投影流程如下 p 2 d l ⇌ K l K l − 1 1 Z l P d i s t o r t e d l ⇌ d i s t o r t u n d i s t o r t 1 Z l P 3 d l ⇌ 1 Z l × Z l P 3 d l ⇌ T − 1 ⋅ T ⋅ P 3 d r . . . p^l_{2d} \xrightleftharpoons[K_l]{K_l^{-1}} \frac{1}{Z^l} P^l_{distorted} \xrightleftharpoons[distort]{undistort} \frac{1}{Z^l} P^l_{3d} \xrightleftharpoons[\frac{1}{Z^l}]{\times Z^l} P^l_{3d} \xrightleftharpoons[ T^{-1} \cdot ]{T \cdot } P^r_{3d} \quad ... p2dlKl−1 KlZl1Pdistortedlundistort distortZl1P3dl×Zl Zl1P3dlT⋅ T−1⋅P3dr...
上式中左右相机记为上标 l l l和 r r r。 Z Z Z是该点图像坐标对应的深度值。 K K K是内参。 T T T是变换 等价于左乘旋转矩阵加平移矩阵 R ⋅ ( ⋅ ) t R \cdot (\cdot) t R⋅(⋅)t。 p p p是2D像素点 P P P是3D点云。
要点:
这个式子右侧被省略了。以左乘 T T T为对称轴右侧和左侧是对称的操作因此这个式子只需要记忆一半。左右的深度值是带下标的因为左右看到物体的距离不是等价的。左右的内参也分别带下标。 即便左右目是型号一致的两个相机内参和畸变参数也会不同。如果上式描述了随时间变化位姿的相机则左右两侧 K K K和 D D D等价。如果你考虑过这个模型 你会发现他其实可以是双目相机深度的左右转换。 T T T即外参。
当讨论外参的时候指的就是 T T T或成对的 R , t R, t R,t。一些工程项目中可能只需要其中一两个参数但是项目人员仍然将其称为外参。你只需要知道他的本质是外参中的一部分。此外一定有两个标定的目标出现在讨论话题内 无论是两个传感器还是世界坐标系相对一个传感器外参一定形容的是两个对象之间的空间变换关系。经常有人跟我要外参而不说明外参所指的另一个对象是什么让人一头雾水。
双目相机模型
双目相机通过块匹配进行视差估计然后通过下式计算深度: d e p t h f o c u s ∗ b a s e l i n e d i s p a r i t y depth \frac{focus * baseline}{disparity} depthdisparityfocus∗baseline 式中 d i s p r a i t y dispraity dispraity是视觉计算获得的视差与彩色图像的分辨率一一对应。OpenCV中有块匹配的具体算法实现常用的传统算法SGBM。通过构建sgbm对象进行视差的计算。 cv::StereoSGBM sgbm; sgbm.preFilterCap 63; int SADWindowSize11; int cn 1; sgbm.SADWindowSize SADWindowSize 0 ? SADWindowSize : 3; sgbm.P1 4*cn*sgbm.SADWindowSize*sgbm.SADWindowSize; sgbm.P2 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize; sgbm.minDisparity 0; sgbm.numberOfDisparities 32; sgbm.uniquenessRatio 10; sgbm.speckleWindowSize 100; sgbm.speckleRange 32; sgbm.disp12MaxDiff 1; sgbm(left , right , left_disp_); sgbm(right, left , right_disp_); 该算法对cpu计算量的压力很大因此建议降采样计算。然而这种方案不能应对纹理缺乏的场景有厂商例如intel会采用红外结构光发射器。通过红外摄像头对缺乏纹理区域的斑点进行匹配然后生成深度。然后在通过文章开头讲的外参变换过程将两个红外摄像头产生的深度数据投影到彩色摄像头上。配合彩色摄像头的颜色此时深度就能够进行立体建模。