使用RealSense在室外拍摄深度图像位深度时,为什么效果总是很差

ros与深度相机入门教程-在ROS使用RealSense R200相机
介绍如何在ros安装和使用RealSense R200相机
支持类型:
Intel(R) RealSense(TM) R200
Intel(R) RealSense(TM) F200
Intel(R) RealSense(TM) SR300
Intel(R) RealSense(TM) ZR300
sudo apt-get install ros-indigo-realsense-camera
$ cd ~/catkin_ws/src
$ git clone /intel-ros/realsense.git
$ catkin_make
$ rospack profile
新终端,执行roscore
新终端,执行realsense
$ roslaunch realsense_camera r200_nodelet_default.launch
新终端,执行
增加对应的话题既可查看
纠错,疑问,交流:
获取最新文章:
扫一扫右上角的二维码加入“创客智造”公众号推荐这篇日记的豆列
&&&&&&&&&&&&Intel RealSense学习之图像及图像深度数据获取
Intel RealSense学习之图像及图像深度数据获取:
大家都知道我们可以从realsense 摄像头中获取到RGB数据,红外数据,以及图像的深度数据。至于图像的深度数据我的理解是realsense摄像投抓到的图像的相关距离信息,具体点 可以理解成摄像头距离每个像素点的距离。这个深度数据在某些场景下非常的有意义。本文从之前两篇文章的基础上介绍如何在QT + OpenCV的环境下获取到RGB图像并且拿到深度信息。
主要分以下三个部分
-* RealSense 摄像头操作类的封装*
-* OpenCV Mat与QImage 之间的转换*
-* Realsense 深度数据的获取*
RealSense 摄像头操作类的封装
我们使用一个c++类来封装对librealsense的操作:
#ifndef RSDEVICE_H
#define RSDEVICE_H
class rsdevice
rs::device *
QString devN
QString devS
QString devFwV
QString devCamT
QString devIspFwV
bool streamE
QString getDevName(){
return devN
QString getDevSerial(){
return devS
QString getDevFwVersion(){
return devFwV
QString getCamType(){
return devCamT
QString getIspFwVersion(){
return devIspFwV
rsdevice();
~rsdevice();
void initRsDevice();
void enableStream();
uchar * getFrameData();
bool isSteamEnable();
float getDistance(int x,int y);
#endif // RSDEVICE_H
上面一堆获取realsense camera 属性的函数,暂时可以忽略,最主要的是initRsDevice(),enableStream(),getFrameData(),getDistance(),四个函数。
初始化realsense 摄像头
void rsdevice::initRsDevice()
devCount = ctx.get_device_count();
dev = ctx.get_device(0);
.....................
.....................
开启摄像头数据流,在这里我们只开启两路数据,一路RGB彩色数据,一路深度摄像头数据:
void rsdevice::enableStream(){
streamEnable =
dev-&enable_stream(rs::stream::color, 640, 480, rs::format::rgb8, 60);
dev-&enable_stream(rs::stream::depth,640,480, rs::format::z16, 60);
dev-&start();
获取到RGB彩色数据:
uchar * rsdevice::getFrameData(){
dev-&wait_for_frames();
return (uchar *) dev-&get_frame_data(rs::stream::color);
.................
获取位置的深度距离数据,传入(x,y)点的坐标信息,获取到该点的距离。
float rsdevice::getDistance(int x, int y){
uint16_t *depthImage = (uint16_t *) dev-&get_frame_data(rs::stream::depth);
float scale = dev-&get_depth_scale();
rs::intrinsics depthIntrin = dev-&get_stream_intrinsics(rs::stream::depth);
uint16_t depthValue = depthImage[y * depthIntrin.width + x];
float depthInMeters = depthValue *
return depthInM
OpenCV Mat与QImage 之间的转换
我们设想的是之后从librealsense中拿到的数据需要通过OpenCV处理一遍,而从上面可得知从摄像头里取得的是uchar* 类型的指针,我们需要先转换成Open CV 中使用的Mat, 而后在QT中显示,需要再转换成QImage。
uchar* && Mat
uchar* pRgb = dev-&getFrameData();
Mat rgb(480, 640, CV_8UC3, pRgb);
Mat && QImage
由于Mat 默认是BGR,需要先转成RGB
cvtColor(rgb, rgb_show, CV_BGR2RGB);
QImage img = QImage((const unsigned char *)(image.data), image.cols, image.rows,
image.cols*image.channels(), QImage::Format_RGB888);
每次QT绘制消息过来的时候,从realsense中取一帧,做相应的转换,转成QImage对象,再刷出去。
Realsense 深度数据的获取
从前面,我们已经拿到了RGB数据,并且显示出去了,现在我们需要去尝试拿到图像上的某一个点的深度信息。
QT中重写mousePressEvent函数,并且将坐标信息映射到图像当中:
void MainWindow::mousePressEvent(QMouseEvent *e){
QPoint p = e-&globalPos();
p = picLabel-&mapFromGlobal(p);
int depth = dev-&getDistance(p.x(),p.y());
if(disInfoLabel != NULL){
QString strL
strLocation.sprintf(&The distance is %d&,depth);
disInfoLabel-&setText(strLocation);
disInfoLabel-&move(e-&x(),e-&y());
disInfoLabel-&setFixedWidth(400);
disInfoLabel-&show();
从realsense摄像头中计算出该像素点的距离信息:
float rsdevice::getDistance(int x, int y){
uint16_t *depthImage = (uint16_t *) dev-&get_frame_data(rs::stream::depth);
float scale = dev-&get_depth_scale();
rs::intrinsics depthIntrin = dev-&get_stream_intrinsics(rs::stream::depth);
uint16_t depthValue = depthImage[y * depthIntrin.width + x];
float depthInMeters = depthValue *
return depthInM
Demo 跑起来效果如下,不过貌似R200的深度信息是以米为最小单位,这个精度上会有点问题啊,还需要再确认下。无人机轻松变智能,Intel推出RealSense实感套件
13:22作者:
日,英特尔信息技术峰会(IDF16)在深圳举行。作为PC芯片行业的霸主,Intel一直致力于将帝国的边界扩展至更多的领域,而IDF正是其分享未来技术、探索和展示下一个创新机会(商机)的地方。
正如开场Intel中国区总裁杨旭所言,这是一个激动人心的创新时代。技术在不断地演变,计算的范围在不断地扩展,变得无处不在,嵌入进我们的衣服、汽车和家电。“万物智能互联”将是新一轮技术发展的方向,而RealSense(感知)计算则是万物智能化过程的首要前提。
怎么理解呢?我们人类是通过五官感知世界,而机器暂时还做不到五感,暂时只能通过视觉和听觉感知这个世界,比如房间的大小、障碍物、人的表情、手势等。而Intel推出的RealSense实感技术正是通过多组摄像头捕捉2D图像,经过计算变成实时的3D图形,从而让机器人“看见”真实的三维世界。
人为什么有2只眼睛?因为我们必须通过眼睛的左右距离,与观察对象产生的视差(Parallax),在我们大脑里还原出一个立体的物件,即产生深度和距离等信息。机器也是如此,如果只用一个摄像头,其捕捉到的也只能是2D图像,计算机能获取的是长度、形状、色彩等信息。但如果采用双目摄像头,便能透过视差将2副2D图像处理(还原)为3D图像。
IDF现场Yuneec台风H现场RealSense展示
屏幕右侧为左右2个红外线摄像头捕捉是图像,左侧上方为合成后的图像(也就是机器能识别的图像,红色为近距离、蓝色为远距离),左侧下方为RGB标准摄像头拍摄的图像。
Intel在IDF上特别强调,RealSense技术不仅能让传统的电脑识别人脸、表情、手势等指令,更能应用于“地面”和“天空”领域。所谓“地面”即指各种各样的机器人。比如应用了RealSens技术的扫地机器人可以轻松构建房间的三维模型,不会重复清扫、更不会遗漏房间的死角。而“天空”即指当前备受关注的领域,RealSense技术也能让无人机轻松实现智能化——除了能识别避障物以外,更能实现智能路径规划,也就是真正意义的智能避障功能。
此前,5iMX曾今剖析过RealSense技术于无人机上的应用,但当时的信息并不全面,而这次我们通过近距离接触获取了更全面的信息。目前Intel RealSense实感产品共有四种型号,SR300、R200、LR200和ZR300。其中,SR300主要用于近距离使用,R200和LR200用于远距离使用,而ZR300除了远距离使用外,精度更高,还可以感知物体运动。
无人机主要采用R200和LR200产品,Yuneec台风H也是采用的R200(实际发货时为选配套件)。它具有2个红外线摄像头、1个红外线发射器和1个RGB标准摄像头,并集成一颗指甲大小的图像处理器。在自然光充足的情况下(白天),R200可以识别10米左右的障碍物,并分辨出他们的形状和位置。而在夜晚,借助主动红外线发射器,R200也能感知5米左右的障碍物。
5iMX在与Intel感知计算事业部总经理鲍克勤博士(上图)交流过程中获悉:R200确实为非可见光(红外线)视觉,主要依赖2个红外线摄像头捕捉的数据构建三维图像,RGB摄像头为辅助摄像头;主动红外线发射器受功率限制照射距离只有5米,虽然可以增大功率获得更好的效果,但耗电量也会成倍增加;RealSense模组可以应用于任何无人机,包括封闭和开放的飞控系统。Intel的初衷就是以较为廉价的方案提供给无人机厂商更多的创新可能。
Intel还强调,RealSense技术不仅可将一切“看到”的视觉数字化,更加神奇的是,它自带低功耗图像处理引擎,不需要借组外部计算机(比如飞控)参与运算,而是直接输出已经数字化的三维信息。此外,它还很便宜。Intel同时提供RealSense SDK,跨平台的API驱动,支持Linux、Android、OSX和Windows,让无人机厂商可以快速开发出更具创新意义的产品。
带有RealSense模块的Yuneec Typhoon H赏析
超声波+RealSense模组(选配)
收放起落架+可360度旋转拍摄
快速拆装桨设计
折叠机臂设计,快速便携。
机身尾部下方超声波+视觉定位(室内定位)
其实早在2016年的CES展会上,Intel CEO柯再奇(Brian Krzanich)便演示了基于RealSense技术的昊翔(Yuneec同时也是Intel投资的中国无人机公司)台风H无人机的壁障跟随技术,可谓技惊四座。(点击下面视频观看)
然而,由于是在室内演示,无GPS环境,Intel不得已采取了Optitrack技术(通过安置在头盔和无人机上的红外线小球,Optitrack能追踪物体的行动轨迹,从而实现类似室外GPS环境下的“跟随我”)来让无人机实现对目标的跟随。这原本是一套“室内定位解决方案”,与避障功能无关,却引来质疑,说Intel作弊。此次,Intel原本打算在室外来场无人机智能避障演示,结果天公又不作美,深圳连续雷雨不断,加上会场所在地为市中心,故不得不取消。这个遗憾看来只能留给5iMX来弥补了。
Yuneec台风H无人机海外测试
上一篇:下一篇:
责任编辑:
如果能够把接收机、通道扩展、灯组、BEC和防水等功能集于一个设备盒上,而且这个设备盒的体积还能做到GorPro那么大,你觉得这种设备盒存在…
这款车壳最早是在北 京模型展上看到的,当时也是被这款车壳外观所深深吸引了,特别是它采用软壳的材质却做出了硬壳的效果。但是在到手之后…
自从室内小无刷穿越去年流行起来至今,各大厂、小厂都看到了这块肥肉,80mm~100mm轴距之间的机架、飞塔、电机、整机层出不穷;加之今年年中…
今天翻看手机上的相册,忽然发现从制作第一架滑翔机开始已经有十年时间了!感觉应该发一个帖子纪念一下十年来陪我走过来的一架架飞机。
视频 /v_show/id_XMjk2NzA1NTM0MA==.html?sharefrom=iphone
话说楼主本来对充电没什么兴趣更没有啥研究,直至最近几个月因为要装12S的Goblin 570所以入了个二手200W的Dynamite Passport充电器。到手发
450振动变大
250级别左右直机求推荐
我的“像真机as350小松鼠直升机诞生记”
青海省海北藏族自治州草原爽飞美
真爱无价,回忆陪我走过十年的那些滑翔机
【站内推荐】 /2
(活动奖品更新完毕)
玩穿越机和航拍,有一样设备必不可少,那就是图传系统,相信大家都对此不陌生。现在有一款花费不到300元,就能立即拥有一套能够进行分屏显示的5.8G头戴式图传监视系统,同时还自带录像和拍摄功能。下面就请对这个设备感兴趣的朋友和我们一起来深入了解。}

我要回帖

更多关于 图像的深度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信