🌞欢迎来到机器学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
🌟本文由卿云阁原创!
🌠本阶段属于练气阶段,希望各位仙友顺利完成突破
📆首发时间:🌹2021年6月22日🌹
✉️希望可以和大家一起完成进阶之路!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
6月22日 星期三 天气晴
目录
🍈 一、与RealSense的初识
最近,想写篇论文,苦于没有方向,我找到了老师,发现这个方向可以出论文,为此我开始了我艰难的学习之路。虽然Intel官网上RealSense相机看起来都很大的样子,但其实真正拿到手里会发现其实是非常小巧的。
🍉二. D435i硬件结构及各个组件原理详解
其集成了两个红外传感器(IR Stereo Camera)、一个红外激光发射器(IR Projector)和一个彩色相机(Color Camera)。
立体深度相机系统主要包括两部分:视觉处理器D4和深度模块。主机处理器连接 USB 2.0 / USB 3.1 Gen 1。
深度模块采用立体视觉的左右成像器、可选的红外激光发射器和 RGB 色彩传感器。
工作原理
其原理是基于三角测量法,左右红外相机进行测量深度,中间红外点阵投射器相当于补光灯,不打开也能测深度,只是效果不好;最右边的rgb相机用于采集彩色图片,最终可以将彩色视频流与深度流进行对齐。
基于左右图像的视差来求得距离。只是相比于普通彩色rgb相机,红外ir相机是用来接收目标返回的红外光线的,得到的是左右两幅红外灰度图像。若把屋里灯光关掉,黑暗的环境,红外ir相机一样可以生成深度图像,只是质量略有下降。
、
🍊三、测试与使用
RGB Module可以显示RGB影像,Stereo Module可以开启深度图显示
如果可以正常显示上图中的画面,那么就说明RealSense的基本配置就成功了,可以向电脑传输数据了
🍋四、Python接口的安装与使用
Python的接口安装其实非常简单,
pip
一行命令即可。pip install pyrealsense2
下面内容取自PyRealSense2包的介绍页面
import pyrealsense2 as rs pipe = rs.pipeline() profile = pipe.start() try: for i in range(0, 100): frames = pipe.wait_for_frames() for f in frames: print(f.profile) finally: pipe.stop()
就说明安装是成功的了。
🍍五、显示彩色图和深度图
import pyrealsense2 as rs import numpy as np import cv2 if __name__ == "__main__": # Configure depth and color streams pipeline = rs.pipeline() config = rs.config() config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30) # Start streaming pipeline.start(config) try: while True: # Wait for a coherent pair of frames: depth and color frames = pipeline.wait_for_frames() depth_frame = frames.get_depth_frame() color_frame = frames.get_color_frame() if not depth_frame or not color_frame: continue # Convert images to numpy arrays depth_image = np.asanyarray(depth_frame.get_data()) color_image = np.asanyarray(color_frame.get_data()) # Apply colormap on depth image (image must be converted to 8-bit per pixel first) depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET) # Stack both images horizontally images = np.hstack((color_image, depth_colormap)) # Show images cv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE) cv2.imshow('RealSense', images) key = cv2.waitKey(1) # Press esc or 'q' to close the image window if key & 0xFF == ord('q') or key == 27: cv2.destroyAllWindows() break finally: # Stop streaming pipeline.stop()
🥦坐标系和视野
自身的坐标如下所示
在图中红色的线为x轴,蓝色的方向是z轴,绿色的方向是y轴。
(0.379.0.0167,0.602)
相机中有四个坐标系,分别为world,camera,image,pixel
- world为世界坐标系,可以任意指定xw轴和yw轴,为上图P点所在坐标系。一般情况下我们将世界坐标系的原点设置成物体的几何中心。类似于绝对坐标系,y轴一般取竖直方向,z轴和我们的深度有关,x轴垂直于y轴和z轴。
- camera为相机坐标系,原点位于小孔Oc,z轴与光轴重合,xw轴和yw轴平行投影面,为上图坐标系XcYcZc。
- image为图像坐标系,原点位于光轴和投影面的交点,xw轴和yw轴平行投影面,为上图坐标系XYZ。
- pixel为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点,uv轴和投影面两边重合,该坐标系与图像坐标系处在同一平面,但原点不同。