并不是做关于SLAM方向的,但由于某些任务涉及到,故作此笔记~
相机内参矩阵:
不同的的深度摄像头具有不同的特征参数,在计算机视觉里,将这组参数设置为相机的内参矩阵C:
$$\begin{bmatrix} f_x& 0 &c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}$$
fx,fy指相机在x轴和y轴上的焦距,cx,cy是相机的光圈中心,这组参数是摄像头生产制作之后就固定的。
世界坐标系: 用户定义的三维师姐坐标系,以某个点为远点,为描述目标物在真实师姐里的位置而被引入
相机坐标系: 以相机为原点建立的坐标系,为了从相机的角度描述物体的位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。
学习自: 三维坐标变换——旋转矩阵与旋转向量
旋转矩阵:
使用矩阵来表示一个旋转关系有两个缺点: 1)通过旋转矩阵不能直观地看出旋转的方向和角度 2)另一方面:旋转变换有3个自由度,旋转矩阵中的元素不是相互独立的。
旋转向量:
设旋转向量的单位向量为r,模为θ。三维点(或者说三维向量)p在旋转向量 r 的作用下变换至 p′,则:
$$p’=\cos\theta\cdot p+(1-\cos\theta)(p\cdot r)r+\sin\theta\cdot r \times$$ p
学习自:计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换
从世界坐标系到相机坐标系:
相机坐标系与图像坐标系:
图像坐标系与像素坐标系:
像素坐标系和图像坐标系都在成像平面,只是各自的原点和度量单位不大一样,图像坐标系的原点为相机光轴与成像平面的交点。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel
像素坐标系与世界坐标系:
convert2Dto3D
通过上面的公式,将像素坐标系的点映射到世界坐标系上,由于二维坐标映射到三维坐标会多了一个深度信息,因此二维点映射到三维坐标系,得到的是一条射线。虽然通过下面的代码得到的确实是一个三维的坐标点,但是其实是不确定的,与光点连线上(射线)所有的点都满足条件
convert3Dto2D
将3D平面的box转成2D平面的box,通过cv.projectPoint(三维平面下的8个点,旋转矩阵, 平移向量, 相机内参, 0)可以得到3D平面下的8个点映射到2维平面下8个点的坐标
代码
1 |
|