单目测距算法

news/2024/12/2 10:33:57/

单目测距算法

相似三角形

用相似三角形计算物体或者目标到相机的距离,将使用相似三角形来计算相机到一个已知的物体或者目标的距离。

假设有一个宽度为 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。

技术总结

基于单目视觉的目标测距方法

首先根据摄像机标定原理,获得摄像机的内参矩阵;

然后,采集含有目标的单帧图像,并识别出图像中目标所在区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将组合得到的坐标作为观测点;

最后,基于图像像素点获得观测点在体坐标系下的三维信息,根据观测点在体坐标系下的三维信息计算观测点的距离。


http://www.ppmy.cn/news/614452.html

相关文章

LeetCode-198. 打家劫舍

题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存…

php 解决方案,php优化解决方案

php优化本帖最后由 xuzuning 于 2013-09-30 13:05:14 编辑//define server info begin$servername "192.168.1.182";$serverusername "whh";$serverpassword "whh";$database"whh";$usertable"user";$userfield"use…

FCN与U-Net语义分割算法

FCN与U-Net语义分割算法 图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。语义分割即是对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或车等&…

oracleHelper 操作帮助类

1 using System;2 using System.Configuration;3 using System.Data;4 using System.Collections;5 using Oracle.DataAccess.Client;6 7 namespace Cont.DAL.Leave8 {9 /// <summary>10 ///Oracle数据库操作帮助类11 /// </summary>12 public cla…

php smarty关闭缓存,php+Smarty的缓存操作

一、使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如$smarty->display(/index.tpl/,$my_cache_id);此特性可用于对不同的…

智能座舱技术预测

智能座舱技术预测 智能座舱概念 多屏联动、智能表面、自动驾驶、新材料、情感引擎正在迅速普及到中高端豪华电动车型中&#xff0c;智能座舱的下一个十年&#xff0c;更多数字化技术将会完美融入到智能座舱中&#xff0c;智能座舱也势会以更全新的形式呈现出来&#xff01; …

编程常用缩写

在编程中我们经常会为了减小标识符的长度而采用缩写&#xff0c;这通常是通过去掉一些元音字母完成的&#xff0c;但更多的时候我们使用一些常用、通用的缩写 英文缩写英文全称中文全称addrAddress地址admAdministrator管理员appApplication应用程序argArgument参数asmAssembl…

【PHP+JS】uploadify3.2 和 Ueditor 修改上传文件 大小!!

一、写在最开始&#xff1a; 前提条件&#xff1a;服务器php.ini 已经修改了变量【 upload_max_filesize 】&#xff0c;可以设定为8M&#xff0c;一般8M足够用了。&#xff08;重启&#xff09; 1、uploadify3.2 修改文件大小&#xff1a; 2、Ueditor修改上传文件大小&#xf…