单目测距算法
相似三角形
用相似三角形计算物体或者目标到相机的距离,将使用相似三角形来计算相机到一个已知的物体或者目标的距离。
假设有一个宽度为 W 的目标或者物体。然后将这个目标放在距离的相机为 D 的位置。用相机对物体进行拍照并且测量物体的像素宽度 P。
这样就得出了相机焦距的公式:
F = (P x D) / W
举个例子,假设在离相机距离 D = 24 英寸的地方放一张标准的 8.5 x 11 英寸的 A4 纸(横着放;W = 11)并且拍下一张照片。测量出照片中 A4 纸的像素宽度为 P = 249 像素。因此的焦距 F 是:
F = (248px x 24in) / 11in = 543.45。
当继续将的相机移动靠近或者离远物体或者目标时,可以用相似三角形来计算出物体离相机的距离:
D’ = (W x F) / P。
例如,假设将相机移到距离目标 3 英尺(或者说 36 英寸)的地方并且拍下上述的 A4 纸。通过自动的图形处理可以获得图片中 A4 纸的像素距离为 170 像素。将这个代入公式得:
D’ = (11in x 543.45) / 170 = 35 英寸或者约 36 英寸,合 3 英尺。
从以上可以看到,要想得到距离,就要知道摄像头的焦距和目标物体的尺寸大小,这两个已知条件根据公式:
D’ = (W x F) / P
得出目标到摄像机的距离D,其中P是指像素距离,W是A4纸的宽度,F是摄像机焦距。
相机标定
相机内参加上相机外参一共有至少8个参数,而我们要想消除相机的畸变,就要靠相机标定来求解这8个未知参数。
说完相机模型,又要说一下相机标定了,相机标定是为了求解上面这8个参数的,那求解出这8个参数可以干什么呢?可以进行软件消除畸变,也就是在得知上面8个参数后,利用上面罗列的数学计算式,将每个偏移的像素点归位。
标定需要用到一个叫标定板的东西,有很多种类,但常用的大概就是棋盘图了, 棋盘要求精度需要很高,格子是正方形,买一张标定板很贵的,可以用word画一张,只要做一个5列7行的表格,拉大到全页,再设置每个格子的宽高来将它设为正方形再涂色就可以了。这张图里有符号,但打印出来就没有了,建议大家自己画一张就OK了。
单目与双目
在研究基于视觉的测距系统时,主要是研究单目视觉、双目和多目视觉系统。双目和多目系统中摄像机之间的协同性问题不好控制,单目视觉系统可以克服上述摄像机间的协同性问题。从生产成本上来看,单目视觉比双目和多目系统更加节省成本。单目视觉测距具有结构简单,运算速度快,成本低等优点。
测距实现
首先根据摄像机标定原理,获得摄像机的内参矩阵;
然后,采集含有目标的单帧图像,并识别出图像中目标所在区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将得到的坐标作为观测点;
最后,基于图像像素点获得观测点在世界坐标系下的三维信息,根据观测点在体坐标系下的三维信息计算观测点的距离。
包括以下步骤:
步骤一、对单目摄像机进行标定,获取摄像机的内参矩阵[fx,0,u0;0,fy,v0;0,0,1];
步骤二、通过已标定的单目摄像机拍摄含有目标的单帧图像,并对获得的图像进行处理,提取目标区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将组合得到的坐标作为观测点P;
步骤三、根据摄像机标定原理,由观测点的像素坐标Pp(u,v)可以获得观测点在体坐标系下的三维坐标值Pb(xb,yb,zb),进而可以计算出观测点的距离,具体方法如下所示:
1)由步骤一可以获得摄像机的内参矩阵,由步骤二可以获得观测点的像素点,则其中λ表示观测点处光线与摄像机光轴夹角,y表示观测点在图像坐标系下的纵坐标,y0表示摄像机光心在图像坐标系的纵坐标,f表示摄像机焦距。
进一步化简为到像素坐标系,其关系如下:
其中v表示观测点在像素坐标系下的纵坐标,v0表示摄像机光心在像素坐标系的纵坐标,dy表示在y方向上每个像素的物理尺寸,fy表示y轴上的归一化焦距;
2)在三角几何关系中,O1P2距离表示如下:
O1O2为摄像机距离测距平面的高度,P1在摄像机光轴的投影点为P2,O1P2表示深度信息即表示观测点在摄像机坐标系中点Pc(xc,yc,zc)中zc的值。
3)将像素坐标转换到摄像机坐标下,像素坐标系与摄像机坐标系转换关系。
将观测点的像素坐标和上一步中获得的观测点在摄像机坐标系下的深度信息zc结合,即可求得观测点在摄像机坐标系中的坐标Pc(xc,yc,zc);
计算摄像机坐标系到体坐标系的转换公式,其中Rcb为摄像机坐标系到体坐标系的旋转矩阵,Tcb为摄像机坐标系到体坐标系的平移矩阵。
4)计算观测点的距离D。
附图说明
基于单目视觉的目标测距方法的测距模型
具体实施方式
上图中,xOy是图像坐标系,Zc表示相机坐标系的Z轴及光轴,XbO2Yb表示体坐标系下Z=0平面(即测距平面),O1表示相机镜头,a,b两条虚线表示视觉场范围,θ表示相机俯仰角,H表示相机到测距平面的高度,P1点为观测点,观测点P1点在图像平面成像点为P,在光轴上的投影点为P2,在X轴上的投影点为P3,P3点在图像平面成像点为P0。
技术总结
基于单目视觉的目标测距方法
首先根据摄像机标定原理,获得摄像机的内参矩阵;
然后,采集含有目标的单帧图像,并识别出图像中目标所在区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将组合得到的坐标作为观测点;
最后,基于图像像素点获得观测点在体坐标系下的三维信息,根据观测点在体坐标系下的三维信息计算观测点的距离。