当前位置:网站首页>基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真
基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真
2022-07-23 09:46:00 【我爱C编程】
目录
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确定。我们看到,当基线越长时,双目最大能测到的距离就会变远;反之,小型双目器件则只能测量很近的距离。
2.部分程序
%计算物体的深度距离
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;
end3.部分仿真图预览


4.源码获取方式
点击下载链接:
基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真+程序操作视频
获取方式2:
博客资源项,搜索和博文同名资源。
获取方式3:
如果下载链接失效,加博主微信联系。
A_059
边栏推荐
- 【测试平台开发】23. 接口断言功能-保存接口断言和编辑回显
- 如何实现多个传感器与西门子PLC之间485无线通讯?
- [test platform development] 20. Complete the function of sending interface request on the edit page
- 如何加速矩阵乘法——优化GEMM (CPU单线程篇)
- Regular expression common syntax parsing
- Detailed tutorial of typora drawing bed configuration
- [pyqt5 installation and use]
- 转自玉溪信息公开:mRNA新冠疫苗、九洲马破伤风免疫球蛋白等产品有望年内上市。
- 身份证号正则验证
- What is per title encoding?
猜你喜欢

基本51单片机点阵汉字显示程序设计

微信官方出品!小程序自动化框架 minium 分享预告

C thread lock and single multithreading are simple to use

LZ77 file compression
![[test platform development] 20. Complete the function of sending interface request on the edit page](/img/ab/fed56b5bec990a25303c327733a8e6.png)
[test platform development] 20. Complete the function of sending interface request on the edit page

【面试高频】cookie、session、token?看完再也不担心被问了

CAN总线快速了解

转自玉溪信息公开:mRNA新冠疫苗、九洲马破伤风免疫球蛋白等产品有望年内上市。

【无标题】测试【无标题】测试

OpenHarmony南向学习笔记——Hi3861+HC-SR04超声波检测
随机推荐
【软件测试】如何梳理你测试的业务
【无标题】
Live classroom system 02 build project environment
21 - vertical traversal of binary tree
直播课堂系统02-搭建项目环境
读写锁ReadWriteLock还是不够快?再试试S…
爬虫中selenium实现自动给csdn博主文章点收藏
转自玉溪信息公开:mRNA新冠疫苗、九洲马破伤风免疫球蛋白等产品有望年内上市。
Getting started with Prometheus (III)
数字相加的精度问题
微信官方出品!小程序自动化框架 minium 分享预告
The pit trodden by real people tells you to avoid the 10 mistakes often made in automated testing
Educational Codeforces Round 132 (Rated for Div. 2) D. Rorororobot
Introduction and mechanism of Aptos
mysql 之general_log日志
C语言项目实战:24点游戏计算器(基于结构体、指针、函数、数组、循环等知识点)
AVX指令集加速矩阵乘法
supervisord安装使用
Oracle 报表常用sql
APtos 简介及机制