【matlab下的双目内窥镜标定与深度测距-双目成像原理】

2024-04-13 19:12

本文主要是介绍【matlab下的双目内窥镜标定与深度测距-双目成像原理】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【matlab下的双目内窥镜标定与深度测距-双目成像原理】

这里是目录

  • 介绍
  • 坐标系关系
  • 相互关系推导
  • 三角测量

介绍

双目成像是一种利用两个摄像头或摄像头组成的系统同时捕捉场景信息的技术。它模拟了人类双眼视觉系统,通过两个视角获取的图像来计算深度信息,从而实现三维感知和场景重建。

坐标系关系

在双目成像方法中共存在四个坐标系:

世界坐标系:是一个三维空间中的坐标系,用来描述物体在真实世界中的位置和姿态。在计算机视觉和机器人领域中,世界坐标系通常被定义为一个固定的参考系,例如地面上的坐标系或者某个物体表面的坐标系。

相机坐标系:是以相机为中心的坐标系,用来描述物体相对于相机的位置和姿态。相机坐标系是一个相对坐标系,其原点通常位于相机的光学中心,坐标轴与相机的视觉轴(光轴)对齐。相机坐标系提供了连接世界坐标系和图像坐标系之间的桥梁。

图像坐标系:描述真实物体在相机焦距处成像的坐标系。图像坐标系的原点通常位于图像的左上角,x轴向右延伸,y轴向下延伸。图像坐标系中的点表示物体在图像上的投影位置,是实际成像过程中的数字表示。

像素坐标系:是图像坐标系的数字化版本,用来描述物体在照片上数字图像的位置。像素坐标系中的点是由图像中的像素点组成,每个像素点都有唯一的坐标位置,通常以整数表示。像素坐标系的单位是像素,是数字图像处理和计算机视觉中常用的坐标系统。

双目成像的目的即是,将建立像素坐标系中某一点到世界坐标系中的关系,通过像素坐标系的一点,得到与其对应世界坐标系相对于相机的深度距离。,显然像素坐标系是二维,世界坐标系是三维,需要向更高维度进行映射。

相互关系推导

世界坐标系到相机坐标系的转换:
旋转矩阵
R:描述世界坐标系到相机坐标系的旋转关系。
平移向量
t:描述世界坐标系到相机坐标系的平移关系
在这里插入图片描述

相机坐标系到图像坐标系的转换:
内参矩阵
K:包括焦距、主点坐标和畸变参数,描述相机坐标系到图像坐标系的投影关系。
坐标归一化矩阵
N:将相机坐标系中的三维坐标转换为图像坐标系中的二维坐标。

在这里插入图片描述

其中,f x​ 和 f y​ 是相机的水平和垂直焦距,c x​ 和 c y​ 是主点的水平和垂直坐标,z 是相机坐标系中的深度。

图像坐标系到像素坐标系的转换:
分辨率矩阵 M:描述图像坐标系中的单位长度与像素坐标系中的单位长度之间的关系。
在这里插入图片描述
其中,m x​ 和 m y​ 是图像的水平和垂直分辨率

相机中感光器件的每个像素物理尺寸为dx*dy,则图像坐标系中的坐标(x,y)与像素坐标系中的坐标(u,v)之间的关系可以表示为:
在这里插入图片描述

这个关系可以用矩阵形式表示为:
在这里插入图片描述

则像素坐标系到世界坐标系的映射关系:

在这里插入图片描述
如果加上在世界坐标系中的旋转矩阵R和平移向量T有:

在这里插入图片描述
完成转换

三角测量

利用已知的基线长度(两个摄像头之间的距离)和视差角度,可以使用三角测量法计算物体的距离
在这里插入图片描述

视差(Disparity):视差表示在两个摄像头之间看到同一物体时,该物体在图像中的位置差异。视差d与物体距离Z之间有以下关系:
在这里插入图片描述
其中,B是基线长度(两个摄像头之间的距离),f是焦距。

通过视差d和基线长度B可以计算出物体的深度Z:
在这里插入图片描述

这篇关于【matlab下的双目内窥镜标定与深度测距-双目成像原理】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900979

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente