Kinect的“三只眼”—投影机和两个摄像头

2024-01-03 08:20

本文主要是介绍Kinect的“三只眼”—投影机和两个摄像头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你可能已经注意到Kinect有三只不对称的“眼睛”,从左向右分别是红外投影机和一组光学部件—彩色摄像头和红外摄像头,如图2-10所示。


 

在图2-10所示中,从左向右,分别是OG12/0956/D306/JG05A红外投影机、VNA38209015CMOS彩色摄像头,以及Microsoft/X853750001/VCA379C7130CMOS红外摄像头。中间的摄像头提供了彩色图像;剩余的两个元件通过发射/接收红外线,来提供深度数据,如图2-11所示。尺寸上它们接近于网络摄像头,其镜头大,具备自动对焦功能。

Kinect获得深度数据的原理如下:红外投影机的普通激光源投射出一道“一类普通激光”(Class1 Lasor),这道激光经过磨砂玻璃和红外滤光片,覆盖Kinect的可视范围,红外摄像头接收反射光线,识别目标物体的“深度场”(Depth Field)。后面的章节会进一步介绍相关内容。

1. 红外投影机

红外投影机是位于Kinect最左侧的那只“眼睛”,它与最右侧的红外摄像头配合使用。拆解后的红外投影机如图2-12所示。


 

PS1080 SoC(系统级芯片)对红外光源进行控制,以便通过红外光编码影像放映场景。红外投影机的光源是一类普通激光光源,经过磨砂玻璃和红外滤光片,投射出近红外光,该光波长为830nm,可持续输出,符合IEC 60825-1标准中的一级安全要求。红外摄像头是一个标准CMOS影像传感器,负责接收放出的红外光,并将红外光编码影像传给PS1080。PS1080负责处理红外影像,然后逐帧生成准确的场景深度影像,如图2-13所示。


 

看到“激光”,你可能心存疑虑:Kinect发射的是红外线还是激光,会不会对人体有害?英文资料里有提到“Laser projector:near infraredlight,830nm,cons-tantoutput, class1 laser”。上述也提到过,事实上,Kinect的光源符合IEC 60825-1标准中的一级安全要求,大家大可放心。

扩展阅读 激光辐射的电磁波波长范围包括长波长的红外的(CO2激光)范围,到近红外(Nd激光:Yag,Nd:YVO4),可见光(Ne或者氩)和不可见的紫外光(受激准分子激光)。在光谱中波长自0.76至400微米的一段称为红外线,红外线是不可见光线。所有高于绝对零度(–273.15℃)的物质都可以产生红外线。有体温的生命体(如人类)发出的光谱属于“远红外线”;Kinect发射的光谱属于“近红外线”,波长更小。

关于激光辐射的规章制度已经建立,它是根据伤害人的程度来定义激光危险不同的等级,从激光一级(在各种情况下,一级激光基本安全)到激光四级(任何情况下,四级激光是危险的)。

2. 彩色摄像头和红外摄像头

Kinect是通过彩色摄像头和红外摄像头来观察这个世界的,拆解后的硬件如图2-14所示。


 

Kinect这两只不同的“眼睛”所看到的世界是如何同步和互相补充的呢?视力又是如何?

为了生成更准确的传感器信息,PS1080系统级芯片(SoC)会执行“PrimeSense注册过程”。什么是PrimeSense注册过程?

为了让深度影像和二维标准色彩影像相互对应,必须进行注册。注册就是将色彩影像和深度影像进行对应,产生像素相互对应的影像,即色彩影像中的每个像素分别与深度影像中的一个像素对应。这能让应用程序准确了解收到的色彩影像中每个像素的深度。所有传感器信息(深度影像、色彩影像和音频)通过一个USB 2.0接口传送给主机,且时序一丝不差。

通过Kinect SDK可以获得同步的深度图像和彩色图像数据流。

这篇关于Kinect的“三只眼”—投影机和两个摄像头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.