双摄像头测距离原理,测距摄像头的测距原理怎么设置,单目摄像头测距原理

  双摄像头测距离原理,测距摄像头的测距原理怎么设置,单目摄像头测距原理

  单摄像机视距的原理与实现

  1.距离测量原理

  空间的深度或距离以及其他数据。

  人的眼睛长在脑袋前面,两只眼睛的视野是重叠的。当双眼同时看一个物体时,产生的视觉称为双眼视觉。

  双目视觉的优势在于可以弥补单目视觉中的盲点缺陷,扩大视野,产生立体视觉。

  也就是说,如果只有一只眼睛,失去立体视觉后,人对距离的判断能力就会下降。

  这就是为什么盲人拿不到驾照。

  对于简单的单目视觉测距,必须知道一定的长度。

  f是相机的焦距,C是镜头的光学中心。物体发出的光穿过相机的光学中心,然后在图像传感器或像平面上成像。如果物体所在平面与摄像机平面的距离为D,物体的实际高度为H,传感器上的高度为H,H必须已知,我们就可以得到距离D。

  假设我们有一个宽度为w的目标或物体,然后我们把这个目标放在距离相机D的地方。我们用相机给物体拍照,测量物体的像素宽度p。这样,我们得到相机焦距的公式:

  f=(PD)/W

  例如,假设现在我们有一张A4纸(8.27英寸x 11.69in英寸),英寸代表英寸,1英寸=25.4毫米。纸的宽度W=11.69in英寸,相机和纸之间的距离D=32in英寸。此时拍摄的照片中A4纸的像素宽度为P=192px(我的相机实测的数值)。

  至此,我们可以算出焦距F=(192x30)/11.69。

  当我们将相机远离或靠近A4纸时,我们可以使用类似的三角形来获得相机与物体之间的距离。

  “此时距离:D”

  =(W x F )/P .

  (注:这里测量的距离是相机到物体的垂直距离,导致有夹角,所以测量结果不准确。)

  2.测距步长:

  用相机捕捉前方道路的影像;

  在道路区域中检测对象,并且对象的形状由矩形框框出。

  结合矩形框的信息,找到矩形框底边的两个图像平面坐标,分别记为(u1,v1)和(u2,v2);

  通过使用几何关系推导方法,从图像平面坐标(u1,v1)和(u2,v2)推导出道路平面坐标(x1,y1)和(X2,Y2)。(投影到地面上,z轴为0)

  d由优雅的海豚距离公式计算得出。

  三。解决困难:

  1.对图像畸变校正模型的理解;

  (校准参数、内部参考矩阵、失真矩阵、外部参考矩阵(平移和旋转向量矩阵))

  2.像素坐标和世界坐标公式的推导与验证;

  3.测距法,区分摄像头前、左、右被检测物体的思路;

  4.懂防失真;对畸变校正后的图像中检测框内的点进行抗畸变处理。

  4.相机镜头畸变校正——获取相机的内外参数和畸变参数矩阵。

  外部参数矩阵。世界坐标被旋转和平移,然后落到另一个真实世界点(相机坐标)。

  内部参数矩阵。告诉你上面的点,是如何以1为基础,继续通过相机的镜头,经过针孔成像和电子转换,成为像素点的。

  失真矩阵。告诉你为什么上面的像素没有落在理论位置上,出现了一些偏差和变形。

  动词(verb的缩写)实现代码

  #!/usr/欢乐外套/python3

  -编码:utf-8 -日期:18-10-29将numpy作为np导入

  导入numpy库导入cv2

  导入Opencv库KNOWN_DISTANCE=32

  实际上自己测量这个距离。已知宽度=11.69

  已知A4纸的宽度_高度=8.27

  IMAGE_PATHS=[" Picture1.jpg "," Picture2.jpg ",

  " Picture3.jpg"] #把用过的图片放在一个列表里。

  定义目标函数def find_marker(图像):

  Gray _ img=cv2.cvtcolor (image,cv2.color _ bgr2gray) #将彩色图像转换为灰度图像。

  gray _ img=cv2 . Gaussian blur(gray _ img,(5,5),0) #如意的眼睛被平滑去噪

  Edg _ img=cv2.canny (gray _ img,35,125) # canny算子阈值

  cv2.imshow(降噪效果图,edged_img) #显示降噪后的图片# 获取纸张的轮廓数据img,countours,hierarchy=cv2。查找轮廓(edged _ img。复制(),cv2 .RETR _列表,cv2 .CHAIN_APPROX_SIMPLE)

  # print(len(countours))

  c=max(countours,key=cv2.contourArea) #获取最大面积对应的点集

  rect=cv2。尖塔竖立(c)#最小外接矩形返回矩形定义距离函数定义到摄像机的距离(已知宽度、焦距、每宽):

  返回(已知宽度焦距)/perWidth计算摄像头的焦距(内参)def calculate _ focal distance(img _ path):

  first _ image=cv2。im read(img _ path)#这里根据准备的第一张图片,计算焦距

  # cv2.imshow(first image ,first_image)

  marker=find _ marker(first _ image)#获取矩形的中心点坐标,长度,宽度和旋转角度

  focalLength=(marker[1][0]已知距离)/已知宽度#获取摄像头的焦距

  打印(标记[1][0])

  打印(焦距(focalLength)=,focalLength) #打印焦距的值返回焦距

  计算摄像头到物体的距离定义计算距离(图像路径,焦距值):

  image=cv2。im读取(image _ path)# cv2。im显示(“原图",图片)

  marker=find_marker(image) #获取矩形的中心点坐标,长度,宽度和旋转角度,标记[1][0]代表宽度

  距离英寸=到摄像机的距离(已知宽度,焦距值,标记[1][0])

  box=cv2。框点(标记)# print( Box=,Box)

  box=np.int0(box)print(box=,box)

  cv2.drawContours(image,[box],-1,(0,255,0),2) #绘制物体轮廓

  cv2.putText(image," %.2fcm" % (distance_inches * 2.54),(image.shape[1] - 300,image.shape[0]

  20),

  cv2 .FONT_HERSHEY_SIMPLEX,2.0,(0,255,0),3)

  cv2.imshow(单目测距,图片)如果

name

=="

main

":

  img _ path=图片1。jpg 焦距=计算焦距(img _ path)

  对于图像路径中的图像路径:

  计算距离(图像路径,焦距)

  cv2。waitkey(0)cv2。destroyallwindows()

双摄像头测距离原理,测距摄像头的测距原理怎么设置,单目摄像头测距原理