单目定位和双目定位的选择我觉得主要还是成本和时间的考虑。之前也尝试过双目定位感觉要更精准些,但双目测距需要对两幅图像进行图像变换和极线匹配稍微耗时了一些。这几天尝试了一下单摄像头进行测距定位主要有两个思路:
1.定位测量插值得到每个像素的实际坐标
该方法总觉得有很大的问题:一个是摄像头安装后就必须固定不动,稍微的旋转都会导致之间测量的像素点对应的坐标偏移另一个是人工测量的工程量之大,对于像素的摄像头准确的测量就应该是130万个点,而就算我们按米来分割地面10*20m2的地面也要测量200个点,就算可以通过算法自动识别做200个标志就算测量画线也是令人头疼的。考虑到针孔成像模型的等比例放大我们通过直接打印布满等距阵列圆点的纸来进荇测量。
根据相似三角形的等比例关系有:
如此一来,可以在较高距离测量等距阵列点(如标定板)经过插值,再进行等比例放大即可得到每个像素点对应的实际地面的坐标
处理的示意图如下:
这样操作可以省去人工在地面测量绘画标志。测量好纸上嘚点距后再进行H/h的放大就可以得到像素对应实际地面的坐标但实际操作过程中遇到的问题是图像上边缘的梯形失真过于严重,导致打印紙上的标志点不容易识别因此还需要准备不同距离的等距阵列圆点图。
2.根据相似三角比例计算出对应像素点的实际坐标
这個方法对摄像机标定的要求比较高同时要求镜头本身造成的畸变就比较小,但总体来说这种方法的可移植性和实用性都较强其主要的思路还是小孔成像的模型。
模型一:假设测量的点都在Y轴上此时无X轴分量
该图主要有三个坐标系,分别是图像坐标系UO1V以O2為原点的摄像机坐标系,世界坐标系XO3Y(相关的内容我就不复述了,不懂的百度和知乎上都有搜搜相机标定的知识)
我们可以看到,世界坐标中的点通过光轴成像在图像坐标的点是成比例的其比例媒介就是相机镜头中心在图像上的像素点O1与其在世界坐标中的实际点M,通过推导可以求解O3P的长度(注意,由于相机安装一般都有误差所以镜头中心点不一定是图像的中点,所以ucentervcenter不一定为0)
已知量:摄像机高度H
图像坐标中心对应的世界坐标点与摄像头在y轴上的距离O3M
镜头中心点的图像坐标(ucenter,vcenter)
測量像素点的图像坐标P1(u0)
实际像素的长度xpix
实际像素的宽度ypix。
摄像头焦距f
(镜头中心点图像坐标焦距,像素长宽都可以由标定直接求解出来通过halcon的标定助手可以很容易的得到,opencv设置相机参数也有相应的程序)
β=α?γ
这样就可以得到垂直方向的坐标 Y=O3P
模型二:假设测量的点有X轴、Y轴分量
针对以下模型图我們将进行说明:
已知量:摄像机高度H
图像坐标中心对应的世界坐标点与摄像头在y轴上的距离O3M
测量像素点的圖像坐标P1(u0)、Q1(u,v)
实际像素的长度xpix
实际像素的宽度ypix
摄像头焦距f
(y轴方向计算和仩一个模型相同x轴计算是y轴坐标通过比例计算得到)
β=α?γ
这样就可以得到垂直方向的坐标 Y=O3P
?????????????√
这样就可以得到垂直方向的坐标 X=PQ
模型三:假设测量的点有X轴、Y轴分量,且物体有高度h
针对以下模型图峩们将进行说明:
由于物体有高度因此还需要进行一个投影变换,其实也还是相似变换
设真实的坐标(X′,Y′)模型二求出的坐標(X,Y)
模型评价
实际操作过程中,发现该模型在畸变较小的图像中误差较小且在矫正畸变后的图像中测量的图像坐标可以嘚到更准确的值。另一方面在实际操作过程中,发现由于镜头有稍微歪曲或者内置感光区域安装歪了可能导致我们找不到真正的X,Y轴,所以在测量验证的时候会有稍许误差但即便如此,在10米的定位下误差也不到5%,效果还是可以接受的如果有人知道如何找到真正的X,Y轴,请博客留言告知一下先谢谢了。