这几天忙着做单目相机相关的工作,主要涉及到2个标定,内参,外参,以及3个坐标转换,像素坐标系(u,v),相机坐标系(x,y,z)以及世界坐标系(xw,yw,zw)之间的转换关系
写个笔记记录一下自己的工作
先上一张图
上面笔记主要表达一个2d坐标和3d坐标互转的过程,可以用来做单目测距
首先谈一下内参K,这个比较简单 一个[3,3]的矩阵,用opencv的solvPNP()函数就可以求出来,需要一个棋盘格找角点的方法就可以求了,如果你用的广角相机,里面还会涉及一个畸变参数d,畸变主要包含径向畸变和切向畸变,是一个[1,5]的矩阵;利用内参矩阵可以完成Puv到Pc的转变。
下一步利用Pc和Pw坐标关系,可以求得相机外参:旋转矩阵R 和平移量t 属于线性,仿射,刚体变换
首先放置棋盘格水平于地面,建立世界坐标系xyz,选取棋盘格4个角点世界坐标坐标;在图像坐标系中选取对应四个角点的像素坐标,利用solvePNP可以求解出此时,相机相对于地面的外参R,T。
假设水平地面上站有一人,他的像素坐标为(u,v),利用此前求得的外参R,T ,可以通过坐标转换,求出该人在相机坐标中的xyz,由于相机坐标系,Z垂直于镜头,x垂直向下,y水平向左,此时可以根据人相对于相机的位置,选取x y 或者z为距离。