单目摄像头物体深度计算基础原理

三维空间物体表面点位与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数,而相机参数的求解就是相机标定

相机的参数矩阵包括内参外参
外参:决定现实坐标到摄像机坐标。摄像机的旋转平移属于外参,用于描述相机在静态场景下相机的运动,或者在相机固定时,运动物体的刚性运动。因此,在图像拼接或者三维重建中,就需要使用外参来求几幅图像之间的相对运动,从而将其转换到同一个坐标系下面。
内参:决定摄像机坐标到图像坐标。
畸变矩阵:镜头的映射无法做到直线射影变换,存在的误差需要畸变参数来描述。为易于理解,以下公式假设完美状态下,不存在该项。

  • 内参数矩阵 ( K ):
    K = ( f x s c x 0 f y c y 0 0 1 ) K = \begin{pmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} K= fx00sfy0cxcy1
    其中:

    • f x , f y f_x, f_y fx,fy:相机在 x x x y y y 方向的焦距(单位:像素)。
    • c x , c y c_x, c_y cx,cy:相机的主点(光轴与图像平面交点在图像中的位置)。
    • s s s:坐标轴倾斜参数,理想情况为0。
  • 外参数矩阵 ( [R | T] ):
    [ R ∣ T ] = ( r 11 r 12 r 13 t x r 21 r 22 r 23 t y r 31 r 32 r 33 t z ) [R | T] = \begin{pmatrix} r_{11} & r_{12} & r_{13} & t_x \\ r_{21} & r_{22} & r_{23} & t_y \\ r_{31} & r_{32} & r_{33} & t_z \end{pmatrix} [RT]= r11r21r31r12r22r32r13r23r33txtytz
    其中:

    • R R R 为旋转矩阵,描述相机坐标系相对于世界坐标系的旋转。
    • T = ( t x , t y , t z ) T = (t_x, t_y, t_z) T=(tx,ty,tz) 为平移向量,描述相机坐标系原点相对于世界坐标系原点的平移。

公式推导:

为了通过相机模型测距,我们可以通过 图像坐标与世界坐标的转换 来推导出目标物体的深度(Z轴):

  1. 假设目标物体的世界坐标为 P w o r l d = ( X , Y , Z ) T P_{world} = (X, Y, Z)^T Pworld=(X,Y,Z)T,并且它在图像平面上的投影点为 p i m a g e = ( u , v ) p_{image} = (u, v) pimage=(u,v)

  2. 相机的成像过程可以表示为:
    λ ( u v 1 ) = K [ R ∣ T ] ( X Y Z 1 ) \lambda \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = K [R | T] \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} λ uv1 =K[RT] XYZ1
    其中, λ \lambda λ是比例因子(与深度 Z相关)。
    方程中,每个图像点 ( u , v ) (u, v) (u,v)对应一条三维射线,需额外信息确定具体深度。

  3. 通过矩阵乘法,得到:
    ( u v 1 ) = 1 Z ( f x s c x 0 f y c y 0 0 1 ) ( R 11 R 12 R 13 t x R 21 R 22 R 23 t y R 31 R 32 R 33 t z ) ( X Y Z 1 ) \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \frac{1}{Z} \begin{pmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} R_{11} & R_{12} & R_{13} & t_x \\ R_{21} & R_{22} & R_{23} & t_y \\ R_{31} & R_{32} & R_{33} & t_z \end{pmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} uv1 =Z1 fx00sfy0cxcy1 R11R21R31R12R22R32R13R23R33txtytz XYZ1

  4. 通过图像坐标 ( u , v ) (u, v) (u,v)和世界坐标的关系,我们可以推导出物体的 深度 ( Z )
    Z = f x ⋅ ( X ⋅ r 13 + Y ⋅ r 23 + Z ⋅ r 33 + t z ) X ⋅ r 11 + Y ⋅ r 21 + Z ⋅ r 31 + t x Z = \frac{f_x \cdot \left( X \cdot r_{13} + Y \cdot r_{23} + Z \cdot r_{33} + t_z \right)}{X \cdot r_{11} + Y \cdot r_{21} + Z \cdot r_{31} + t_x} Z=Xr11+Yr21+Zr31+txfx(Xr13+Yr23+Zr33+tz)
    在这里插入图片描述

参数定义:

  • Z Z Z:目标物体的实际距离(即深度或相机到物体的距离)。
  • f x , f y f_x, f_y fx,fy:相机的焦距(在像素单位下)。
  • c x , c y c_x, c_y cx,cy:图像平面的主点位置(通常是图像的中心)。
  • ( u , v ) (u, v) (u,v):物体在图像中的像素坐标。
  • ( X , Y , Z ) (X, Y, Z) (X,Y,Z):目标物体在世界坐标系中的三维坐标。
  • R R R:相机的旋转矩阵,描述相机坐标系相对于世界坐标系的旋转。
  • T = ( t x , t y , t z ) T = (t_x, t_y, t_z) T=(tx,ty,tz):相机的平移向量,描述相机坐标系与世界坐标系之间的平移。

求解方式:

  1. 已知平面约束(如地面)
    假设目标点位于 ( Z = 0 ) 平面,代入投影方程后,方程简化为:
    { u = f x ( r 11 X + r 12 Y + t x ) + c x ( r 31 X + r 32 Y + t z ) r 31 X + r 32 Y + t z v = f y ( r 21 X + r 22 Y + t y ) + c y ( r 31 X + r 32 Y + t z ) r 31 X + r 32 Y + t z \begin{cases} u = \frac{f_x (r_{11}X + r_{12}Y + t_x) + c_x (r_{31}X + r_{32}Y + t_z)}{r_{31}X + r_{32}Y + t_z} \\ v = \frac{f_y (r_{21}X + r_{22}Y + t_y) + c_y (r_{31}X + r_{32}Y + t_z)}{r_{31}X + r_{32}Y + t_z} \end{cases} {u=r31X+r32Y+tzfx(r11X+r12Y+tx)+cx(r31X+r32Y+tz)v=r31X+r32Y+tzfy(r21X+r22Y+ty)+cy(r31X+r32Y+tz)
    解法:通过线性代数解方程组,直接求出 X, Y。
    应用场景:自动驾驶(地面目标定位)、AR(平面跟踪)。

  2. 多视角观测(立体视觉)
    原理:两个及以上相机(已知相对位姿)观测同一目标,通过三角化计算唯一三维坐标。
    公式:联立多视角投影方程,求解超定方程组。
    示例:双目摄像头或运动中的单目相机(SLAM)。

  3. 深度传感器辅助(RGB-D相机)
    通过激光雷达或结构光测得每个像素的深度值 ( Z ) , 通过深度获取每个像素的深度值,代入投影方程反推 ( X ) 和 ( Y ):
    X = ( u − c x ) ⋅ Z f x , Y = ( v − c y ) ⋅ Z f y X = \frac{(u - c_x) \cdot Z}{f_x}, \quad Y = \frac{(v - c_y) \cdot Z}{f_y} X=fx(ucx)Z,Y=fy(vcy)Z

  4. 几何约束(已知物体尺寸或距离)
    已知两点的实际距离 ( L ),结合投影方程与距离公式:
    ( X 1 − X 2 ) 2 + ( Y 1 − Y 2 ) 2 + ( Z 1 − Z 2 ) 2 = L \sqrt{(X_1 - X_2)^2 + (Y_1 - Y_2)^2 + (Z_1 - Z_2)^2} = L (X1X2)2+(Y1Y2)2+(Z1Z2)2 =L

解释:

这个公式利用了相机的 内外参数矩阵,它描述了如何将物体的世界坐标投影到相机图像平面。在这个公式中,物体的深度 Z Z Z由物体在图像平面中的位置(像素坐标 u , v u, v u,v)以及相机的参数(焦距、内外参数矩阵)决定。通过将物体的图像坐标与相机的内外参数矩阵结合,我们可以推算出物体的实际距离。

总结:

必要条件:单目需场景约束(平面假设、已知尺寸等);多目或深度传感器可直接求解。

公式核心:利用相机参数将图像点映射到三维射线,通过约束确定唯一交点。

实际建议:根据场景选择合适方法(如自动驾驶用多传感器融合,AR用平面跟踪)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25521.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ系列(一)架构解析

RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件,其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明: 一、核心组件与功能 Broker(消息代理服务器) RabbitMQ 服务端核…

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

一、前言 在搭建SpringCloud项目环境架构的时候,需要选择SpringBoot和SpringCloud进行兼容的版本号,因此对于选择SpringBoot版本与SpringCloud版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启动不起来,怪…

[Web 信息收集] Web 信息收集 — 手动收集域名信息

关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:信息收集 —— 域名联系人信息 当我们知道目标的域名之后,我们要做的第一件事就是获取域名的注册信息,包括该域名的 DNS 服务器信息和注册人的联系…

基于Rook的Ceph云原生存储部署与实践指南(上)

#作者:任少近 文章目录 1 Ceph环境准备2 rook部署ceph群集2.1 Rook 帮助地址2.2 安装ceph2.3 获取csi镜像2.4 Master参加到osd2.5 设置默认存储 3 Rook部署云原生RBD块存储3.1 部署storageclass资源3.2 部署WordPress使用RBD3.3 WordPress访问 4 Rook部署云原生RGW…

使用Crawlee可破题js渲染采集数据

使用 Crawlee 实现自动化爬虫流程 1. Crawlee 简介 Crawlee 是一个强大的爬虫框架,用于快速构建和维护可靠的爬虫。它支持多种爬虫类型,包括基于 Cheerio 和 Playwright 的爬虫,能够高效处理静态和动态网页。 2. 项目目标 通过自动化脚本实…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好,如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码,点击S…

threejs 安装教程

嗨,我是小路。今天主要和大家分享的主题是“threejs 安装教程”。 在当今的数字化时代,用户对视觉体验的要求越来越高。传统的2D网页已经无法满足所有需求,而三维(3D)图形技术则为前端开发者提供了新的方向。…

2025 软件供应链安全情报预警平台建设与实践

何为数字安全供应链情报? 所谓的数字供应链开源安全情报主要针对目标是开源数字应用资产。包括开源组件,中间件和操作系统。开源安全情报类型可以分为三大类: 1 第一类是传统的安全漏洞风险情报,开源漏洞情报数据获取主要有2种渠…

Linux:ELF文件-静动态库原理

✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ ELF文件 什么是编译?编译就是将程序源代码编译成能让CPU直接执行的机器代码 如果我们要编译一个 .c文件,使用gcc -c将.c文件编译为二进制文件.o ,如果一个项目有多个.…

批量给 Word 添加或设置页眉页脚/页码

在 Word 文档中我们可以设置各种各样的页眉页脚信息,比如设置页码信息、在页眉页脚中插入公司的 logo 信息、联系方式信息等等。当我们有大量的文档需要设置或者修改页眉页脚的时候,今天介绍的方法就可以帮我们快速的完成。 使用场景 批量给 Word 文档设…

GIST框架:深度学习助力组织病理学与转录组学的空间整合分析|顶刊精析·25-02-24

小罗碎碎念 随着空间分子成像技术发展,单细胞空间转录组(SCST)数据为研究组织微环境提供了丰富信息,但数据质量问题和现有分析方法的局限性阻碍了深入研究。GIST框架借助预训练的组织学图像基础模型提取详细形态特征,…

DeepSeek入门学习

参考文档:DeepSeek(人工智能企业)_百度百科 DeepSeek-R1 凭借创新的强化学习技术实现重大突破。在极少量标注数据的基础上,通过深度优化的后训练阶段,显著提升了模型的推理能力。在数学运算、代码生成、自然语言推理等…

RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务缺失的原因与解决方案

EasyNVS云管理平台具备强大的汇聚与管理功能,支持EasyGBS、EasyNVR等平台的接入,能够将接入的视频资源进行统一输出,提供远程可视化运维等管理功能,特别适合解决设备现场没有固定公网IP但仍需在公网直播的需求。 在某次用户现场部…

【计算机网络协议02】详解传输层协议TCP/UDP

传输层 传输层是OSI模型的第四层,主要负责端到端的数据传输,确保数据可靠、有> 序地从源设备传送到目标设备。其主要功能包括: 端到端通信:在源和目标设备之间建立连接,确保数据准确传输。数据分段与重组&#xff1…

图片爬取案例

修改前的代码 但是总显示“失败” 原因是 修改之后的代码 import requests import os from urllib.parse import unquote# 原始URL url https://cn.bing.com/images/search?viewdetailV2&ccidTnImuvQ0&id5AE65CE4BE05EE7A79A73EEFA37578E87AE19421&thidOIP.TnI…

【HarmonyOS Next】地图使用详解(一)

背景 这系列文章主要讲解鸿蒙地图的使用,当前可以免费使用,并提供了丰富的SDK给开发者去自定义控件开发。目前可以实现个性化显示地图、位置搜索和路径规划等功能,轻松完成地图构建工作。需要注意的是,现在测试只能使用实体手机去…

物联网驱动的智慧能源管理解决方案

一、行业背景与痛点分析 1.教育领域碳中和目标 教育部《绿色学校创建行动方案》对校园节能减排的硬性指标 2.传统校园能源管理痛点 (1)电力/水暖设备能耗数据缺失 (2)配电室人工巡检效率低 (3)空调照…

Hive安装配置

Hive安装配置 使用的三台主机名称分别为bigdata1,bigdata2,bigdata3。所使用的安装包名称按自己的修改,安装包可去各大官网上下载 一,解压 tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/修改名称 mv …

通义灵码插件安装入门教学 - IDEA(安装篇)

在开发过程中,使用合适的工具和插件可以极大地提高我们的工作效率。今天,我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件,这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者,本文都将为你提供…

【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue

文章目录 四、阻塞队列1、基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法 2、ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法实现2.2.3 offer方法实现2.2.4 offer(time,unit)方法2.2.5 p…