基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真

2023/9/30 16:58:06

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB程序


1.算法描述

       双目相机一般由左眼和右眼两个水平放置的相机组成。当然也可以做成上下两个目,但我们见到的主流双目都是做成左右的。在左右双目的相机中,我们可以把两个相机都看作针孔相机。它们是水平放置的,意味两个相机的光圈中心都位于x轴上。它们的距离称为双目相机的基线(Baseline,记作b),是双目的重要参数。双目相机一般由左眼和右眼两个水平放置的相机组成。当然也可以做成上下两个目,但我们见到的主流双目都是做成左右的。在左右双目的相机中,我们可以把两个相机都看作针孔相机。它们是水平放置的,意味两个相机的光圈中心都位于x轴上。它们的距离称为双目相机的基线(Baseline,记作b),是双目的重要参数。

      考虑一个空间点P,它在左眼和右眼各成一像,记作PL,PR。由于相机基线的存在,这两个成像位置是不同的。理想情况下,由于左右相机只有在x轴上有位移,因此 P的像也只在x轴(对应图像的u轴)上有差异。我们记它在左侧的坐标为uL,右侧坐标为uR。那么,它们的几何关系如图1右侧所示。根据三角形P−PL−PR和P−OL−OR 的相似关系,有:       

整理得:

       这里d为左右图的横坐标之差,称为视差(Disparity)。根据视差,我们可以估计一个像素离相机的距离。视差与距离成反比:视差越大,距离越近。同时,由于视差最小为一个像素,于是双目的深度存在一个理论上的最大值,由fb确定。我们看到,当基线越长时,双目最大能测到的距离就会变远;反之,小型双目器件则只能测量很近的距离。
基线:两个光心的连线称为基线;

极平面:物点(空间点M)与两个光心的连线构成的平面称为极平面;

极线:极平面与成像平面的交线

极点:极线的一端,基线与像平面的交点

像点:极线的一端,光心与物点连线与像平面的交点;

相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

%计算物体的深度距离
PL=imread('IMAGES\p1.jpg');
subplot(241),imshow(PL),title('左侧拍摄图像');
PL=rgb2gray(PL);
PL=255-PL;
PL1=im2bw(PL,0.8);
subplot(242),imshow(PL1),title('阈值分割图像');
se1=strel('rectangle',[5 5]);
PL2=imclose(PL1,se1);   %闭运算
se2=strel('rectangle',[5 5]);
PL3=imopen(PL2,se2);   %开运算
subplot(243),imshow(PL2),title('形态学处理');
imwrite(PL3,'PL3.bmp','bmp')
k=1;sum1=0;
for j=1:518        %计算目标一的像素突变点
    for i=1:388
        sum1=sum1+PL3(i,j);
        
    end
    k=k+1;
    P(k)=sum1/318;
    sum1=0;
end
x=1:518;
y=P(x);
subplot(244),plot(x,y),title('灰度变化图');
plot(x,y);
for i=2:518        %计算目标二的像素突变点
    if ((P(i-1)<0.01)&(P(i)>0.01)&(P(i)<0.16))
        Z(1)=i;
        continue
    end
    if ((P(i-1)<0.1)&(P(i)>0.16))
        Z(2)=i;
        continue
    end
end
%===============================
 %计算右边图像的目标位置
%===============================
PR=imread('IMAGES\p2.jpg');
subplot(245),imshow(PR);title('右侧拍摄图像');
PR=rgb2gray(PR);
PR=255-PR;
PR1=im2bw(PR,0.8);
subplot(246),imshow(PR1);title('阈值分割图像');
se1=strel('rectangle',[5 5]);
PR2=imclose(PR1,se1); 
se2=strel('rectangle',[5 5]);
PR3=imopen(PR2,se2); 
subplot(247),imshow(PR3),title('形态学处理');
k=1;sum2=0;
for j=1:518
    for i=1:388
        sum2=sum2+PR3(i,j);
        
    end
    k=k+1;
    Q(k)=sum2/318;
    sum2=0;
end
A59

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V


http://www.jnnr.cn/a/154029.html

相关文章

Pytorch中CrossEntropyLoss()详解

一、损失函数 nn.CrossEntropyLoss() 交叉熵损失函数 nn.CrossEntropyLoss() &#xff0c;结合了 nn.LogSoftmax() 和 nn.NLLLoss() 两个函数。 它在做分类&#xff08;具体几类&#xff09;训练的时候是非常有用的。 二. 什么是交叉熵 交叉熵主要是用来判定实际的输出与期望…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数&#xff1a; 型号&#xff1a;MBR40200PT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大平均正向整流输出电流&#xff08;IF&#xff09;&#xff1a;40A 峰值正向浪涌电流&#xff08;IFSM&#xff0…

基于ASP学生资助管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做ASP程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问题…

软件测试 -- 进阶 4 软件测试策略

巧而好度&#xff0c;必攻&#xff1b;勇而好问&#xff0c;必胜&#xff1b;智而好谋&#xff0c;必成。-- 《孔子家语》 翻译&#xff1a;灵巧而有擅长揣摩的人&#xff0c;必定坚定&#xff1b;勇敢而有擅长请教的人&#xff0c;必定取胜&#xff1b;富有智慧而有擅长谋…

视频怎么消除人声?一款视频去人声软件,轻松去除视频人声

视频消除人声是一个优质的视频文件必须经历的步骤。当前&#xff0c;分享视频的用户越来越多&#xff0c;只有原创且有亮点的视频才能更吸引人。但是很多时候自己录制的原创视频总是有各种声音&#xff0c;所以很难制作出一个好的视频&#xff0c;获得更多的关注。 那视频怎么消…

基于ssm+mysql+jsp学生成绩管理系统(含实训报告)

基于ssmmysqljsp学生成绩管理系统(实训报告&#xff09;一、系统介绍二、功能展示1.学生信息查询2.学生信息添加3.学生信息修改4.学生信息删除四、获取源码一、系统介绍 系统主要功能&#xff1a;系统实现了学生信息查询、添加、修改、删除。 环境配置&#xff1a; Jdk1.8 M…

Yocto buildhistory介绍

Yocto buildhistory介绍 在yocto中会频繁的编译修改镜像&#xff0c;当多人多次修改镜像的时候会导致镜像难以维护&#xff0c;我们希望能有一个类似git一样的工具能够显示每次编译的差异性修改&#xff0c;这样当我想要回退到某个日期的某个镜像时能够清晰的知道镜像内部的具…

服务器密码以及用户名怎么修改

服务器密码以及用户名怎么修改 我是艾西&#xff0c;今天给大家说下服务器密码如何修改 windows2003系统&#xff1a; 1、右键我的电脑&#xff0c;点击“管理”&#xff1a; 2、在“本地用户和组”中打开“用户”&#xff0c;在右侧找到 Administrator 账户进行修改。 200…

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本教程已经花费了 24 个文章的篇幅,介绍了使用 SAP ABAP SEGW 这个开发工具,开发基于 SAP ABAP 技术栈的 OData 服务的详细步骤。 正如本教程目录 中提到的那样,SAP OData 开发技术包含传统的 ABAP,RAP(Restful ABAP Programming) 和 CAP(Cloud Application Programming) …

[acwing周赛复盘] 第 60 场周赛20220716

[acwing周赛复盘] 第 60 场周赛20220716 一、本周周赛总结二、 4722. 数列元素1. 题目描述2. 思路分析3. 代码实现三、4723. 队列1. 题目描述2. 思路分析3. 代码实现四、4724. 靓号1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 第一次打acwing&#xff0c;…

【算法基础】(一)基础算法 --- 归并排序

✨个人主页&#xff1a;bit me ✨当前专栏&#xff1a;算法基础 &#x1f525;专栏简介&#xff1a;该专栏主要更新一些基础算法题&#xff0c;有参加蓝桥杯等算法题竞赛或者正在刷题的铁汁们可以关注一下&#x1f339; &#x1f339; &#x1f339; 归并排序&#x1f4a4;一.归…

【成为红帽工程师】第五天 NFS服务器

目录 一、NFS服务器简介 二、NFS的使用 三、客户端使用autofs自动挂载 四、相关实验 一、NFS服务器简介 NFS&#xff08;网络文件系统&#xff09;&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机&#xff08;不同的计算机、不同的操作系统&…

Ubuntu20.04安装graph-tool

目录step1&#xff1a;查看系统发行版本step2: 在 /etc/apt/sources.list文件中添加一行step3: 下载密钥step4: 更新apt-getstep5: 下载graph-toolstep6&#xff1a;移动graph-tool包到anaconda下step7: 测试是否安装成功链接: 官方安装教程注&#xff1a;如果下列过程中出现权…

Linux系统配置及服务管理-06-存储管理

基本分区 磁盘简介 磁盘/硬盘/disk是一个东西&#xff0c;不同于内存的是容量比较大。 类型 从工作原理区分 机械 机械硬盘即是传统普通硬盘&#xff0c;主要由&#xff1a;盘片&#xff0c;磁头&#xff0c;盘片转轴及控制电机&#xff0c;磁头控制器&#xff0c;数据转换…

什么是Tomcat?如何使用Tomcat?如何部署一个静态页面?

目录 1、Tomcat是什么&#xff1f; 2、下载安装 3、目录结构 4、启动服务器 5、部署静态页面&#xff08;简单举例&#xff09; 1、Tomcat是什么&#xff1f; Tomcat是一个HTTP服务器&#xff0c;Tomcat就是基于Java实现的一个开源免费的HTTP服务器 2、下载安装 下载网…

Keras深度学习实战(38)——图像字幕生成

Keras深度学习实战&#xff08;38&#xff09;——图像字幕生成0. 前言1. 模型与数据集分析1.1 数据集分析1.2 模型分析2. 实现图像字幕生成模型2.1 数据集加载与预处理2.2 模型构建与训练3. 使用束搜索生成字幕3.1 束搜索原理3.2 利用束搜索改进预测结果小结系列链接0. 前言 …

【DeepLearning 8】Self-Attention自注意力神经网络

&#x1f34a;本文主要介绍了Self-Attention产生的背景以及解析了具体的网络模型 一、Introduction 很多时候&#xff0c;我们需要输入的数据非常的复杂&#xff0c;难以用统一、固定长度的向量来表示。比如NLP中长短不一的句子。此外&#xff0c;我们需要输出的数据有时候也会…

[附源码]Python计算机毕业设计高校第二课堂管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

十个值得珍藏的正则表达式

正则表达式常学常忘&#xff0c;记规则不如记例子&#xff0c;记多不如记精&#xff0c;记例子就记最经典的。下面是本人珍藏的十个有用的正则表达式&#xff0c;不吝分享&#xff0c;以飨读者。 正则表达式要点 小括号&#xff1a;代表分组 中括号&#xff1a;代表集合 大括号…

linux驱动之调试技巧--- 应用程序远程gdb+vscode调试应用程序, 串口kgdboc调试.ko驱动程序

环境: Ubuntu: Ubuntu 22.04.1 开发板: imx6ull linux内核版本: Linux4.9.88 虚拟机: vmware15 交叉编译工具gcc版本: 4.9.4 (Linaro GCC 4.9-2017.01) arm-linux-gdb版本: gdb (Linaro_GDB-2017.01) 7.10.1.20160210 先决条件 开发板 虚拟机 PC 可互通网络 交叉编译环境已经搭…
最新文章