`
jcs130
  • 浏览: 131360 次
  • 性别: Icon_minigender_1
  • 来自: Ottawa
社区版块
存档分类
最新评论

结合OPENNI2,Aruco与OPENCV进行视觉定位,思路以及问题

 
阅读更多

好久没写博客了,最近在做一个教授给的任务,任务要求就是使用华硕的Xtion pro 这个设备(和微软的Kinect差不多)来识别一个一个的小机器人的位置和角度。

做之前什么都不知道,上网查了好多资料,但是中文的资料较少,所以写点东西出来一是给自己记录,而是方便以后研究这个东西的童鞋。

首先介绍一下思路:

Aruco是一个做显示增强技术的库,但是我只要它的识别坐标和角度的功能

OPENNI2 相当于是个驱动库,提供调用设备各种功能的接口,在这个项目中我要用到深度数据流和彩色数据流,其他的功能像是人体检测什么的我就不需要了。

OpenCV是个很好用的图像处理库,用它来处理和显示设备获取的图像,比如进行图像格式转换,去噪之类的操作

因为现在VS2013免费了,就用VS2013了,配置OpenCV的帖子地址如下:

http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html

然后是OpenNI2 和 OpenGL结合的一个小例子

http://www.cnblogs.com/yemeishu/archive/2013/01/11/2856859.html

最后是配置Aruco,下面链接是这个库的下载链接,最新的是1.2.5版

http://sourceforge.net/projects/aruco/files/1.2.5/

在装好环境后,测试一下Aruco

 

下面来说一下距离数据的作用,下图是原图经过提取轮廓后的图片,图片中间是个水壶,上面有个标签,可以看到乱七八糟的东西很多,不方便进行图像识别


 

 写了个简单的过滤方法,因为距离数据和图像数据是对应的,所以可以设定一个距离的阈值来删掉不需要的部分,我的做法很蠢,一个像素一个像素的比较,所以速度很慢,希望大家给我点更好的建议,来几块这个速度。下面这张图就是通过距离过滤后的图像,我把标签放在小纸盒子上面。识别的还是很准的

 


 

但是我现在的问题是摄像头的距离不能太高,不然识别不出来,华硕Xtion的视频最大分辨率是1280*1024,教授要求的工作空间很大,所以要把摄像头悬挂在离地大约2.5米的地方,这样分辨率就不够用了。 就地取材买了个木棍子几个束线带就给固定了:



 

 

下图就是现在的高度下的照片




 

画面左上角是一个透明胶带,用来示意机器人或者标签的大小,而且也可以发现画面的噪点较多,下面就是要解决识别的问题。

另外一个问题就是虽然Xtion的深度数据的分辨率可以达到640*480,但是速度太慢,而且当彩色数据流达到1280*960分辨率后苏的也变得很慢。

 

另外一个问题是摄像头挂高后,摄像头到工作区域中心的距离河道边界的距离变化很大,简单通过一个阈值来二值化深度数据显然不可能,需要用一个函数来进行二值化。

 

下面是我现在的想法:

1.在工作空间4个角落放置四个大的标签,可以直接不用图像处理就能识别出来,来获得工作区间边界到摄像头的距离并且得到工作空间与摄像头图片之间的夹角。

2.利用而知化后的距离数据分割彩色图像的灰度图像,两个图像像素相乘?有没有更好的方法?卷积?这样得到的结果就是符合距离条件的地方有图像,不符合的地方为白色。

3.如果能直接识别出来最好(还没试,但是之前距离超过1.5米就识别不出来了),识别不出来有两个想法,如果拍摄静态图片可以得到更高的分辨率的话,那就是用距离数据来实时更新坐标信息(因为速度快),再通过静态高分辨率的照片得到机器人编号的角度信息,但是我现在还没能找到Xtion拍摄静态高分辨率图片的方法。第二个想法就是将分割后的图像线性放大提高分辨率后再处理一下图像后进行识别。

 

请教各位有没有更好点的解决方案,欢迎大家留言和我讨论,多谢~~

  • 大小: 129.8 KB
  • 大小: 1.2 MB
  • 大小: 652.3 KB
  • 大小: 1.3 MB
  • 大小: 1.4 MB
  • 大小: 1.5 MB
分享到:
评论

相关推荐

    OpenNI2+OpenCV2+NITE2开发环境

    在探讨如何构建基于OpenNI2、OpenCV2以及NITE2的开发环境之前,我们首先来了解一下这些技术的基本概念及其在计算机视觉领域的应用价值。 **OpenNI(Open Natural Interaction)** 是一个开源框架,它允许开发者创建...

    OpenNI获取的图像结合OpenCV显示

    本文来结合下opencv的highgui功能显示kinect采集得来的颜色图和深度图。本来在opencv中自带了VideoCapture类的,使用该类可以直接驱动kinect设备,具体的可以参考下面的文章:...

    OpenNI、OpenCV安装与开发环境配置

    OpenNI、OpenCV 安装与开发环境配置 OpenNI 安装与配置: 在开发环境中,OpenNI 是一个非常重要的组件,它可以帮助开发者捕捉到 Kinect 传感器的数据,并将其转换为可以用于开发应用程序的格式。为了安装 OpenNI,...

    OpenNI读取深度图像与彩色图像并显示,OpenCV调用openpose模型对OpenNI彩色图像进行姿态估计

    在计算机视觉领域,OpenNI(Open Natural Interaction)是一个开源框架,用于与传感器设备交互,如Kinect,以获取和处理深度图像和彩色图像。OpenNI提供了API,使得开发者能够轻松地读取和显示这些图像数据。另一...

    opengl opencv openni读取显示kinnect相机

    OpenGL、OpenCV与OpenNI是计算机视觉领域常用的三个库,它们各自有着独特的功能,并且可以协同工作以实现复杂的图像处理和计算机视觉任务。在本文中,我们将深入探讨这些库的特性,以及如何在Visual Studio 2010环境...

    OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示

    OpenNI2是一个开源的中间件,旨在简化与各种3D传感器(如Asus XtionProLive)的交互,而OpenCV则是一个强大的计算机视觉库,用于处理图像数据。 首先,让我们了解OpenNI2的基本概念。OpenNI2提供了一个编程接口...

    OpenNI2 for Window

    OpenNI2是一个开源的开发平台,专为与自然交互接口(Natural User Interface,NUI)相关的应用程序设计。它主要用于处理来自各种传感器的数据,如微软的Kinect,PrimeSense的Carmine系列,以及许多其他支持的3D深度...

    openni2_camera

    OpenNI2是一个用于与RGB-D(彩色+深度)传感器交互的中间件,它支持诸如Xtion、Astra和Primesense等设备。这些相机因其能够同时提供彩色图像和深度信息而被广泛应用于机器人视觉、3D建模和避障等领域。 `openni2_...

    openni+nite2

    《OpenNI + Nite2:构建3D感知与交互的基础》 OpenNI(Open Natural Interaction)和Nite2(Natural Interaction Tracking and Recognition Engine)是两个关键的开源框架,专为实现自然人机交互和3D感知而设计。...

    openni2_install

    openni2_install,astra_driver device

    ubuntu openni2

    在Ubuntu系统中,OpenNI2是一个用于与3D传感器(如Primesense的Kinect)交互的开源开发框架。它提供了编程接口,使得开发者能够轻松地创建应用来处理来自这些设备的数据,例如深度图像和彩色图像。OpenNI2支持多种...

    openni2的官方开发手册

    《OpenNI2官方开发手册》是为开发者提供的一份详尽指南,主要涵盖了OpenNI2框架中的各个类和函数的使用方法。OpenNI2是一个开源的接口库,它为开发人员提供了一种标准的方式来访问各种传感器,特别是针对自然交互和...

    OPENNI2 Kinect.dll

    标签"OPENNI2 Kinect.dll"再次强调了这个文件与OPENNI2框架和Kinect硬件的关联。使用此DLL,开发者可以直接在他们的应用程序中调用预编译的函数和方法,无需关心底层的驱动程序和通信协议。 压缩包中的"DLL"文件很...

    kinect-HandTracking-OpenCV

    OpenNI(开源自然交互)是一个开源软件开发工具包,它使得硬件如Kinect能够提供深度图像和其他传感器数据,而OpenCV(开源计算机视觉库)则用于处理这些图像数据,进行分析和识别。 首先,我们来看看OpenNI。OpenNI...

    OpenNI2 帮助手册

    OpenNI2 帮助手册中文翻译,更好的掌握Openni,体感互动不可或缺

    kinect+OpenNI2人脸跟踪

    OpenNI2是一个开源的接口库,它为开发人员提供了一个标准化的方式来与多种3D传感器(如Kinect)进行交互,获取包括颜色图像、深度图像等数据。 在这一项目中,开发者运用了Adaboost算法来检测人脸。Adaboost是一种...

    OpenNI2-master

    OpenNI2 是一个开源的开发接口,用于与各种传感器(如Kinect,PrimeSense等)交互,以便在各种平台上进行自然交互和计算机视觉应用。它提供了简单易用的API,让开发者可以方便地访问和处理来自3D深度相机的数据,如...

    Kinect + openni+opencv 获取深度图

    本程序借助opencv与openni类库 实时提取kinect sensor探测到的数据,其中原始rgb彩色图像数据(24bit )接口已经标注明确.... 深度图与原始rgb彩色图像也已经标定完成,所以有兴趣做图像信息融合的朋友可以一试

    deep-and-image.rar_.oni_OpenNI、OpenCV_Openni_oni

    本例是利用OpenNI和OpenCV完成.oni格式视频的采集,介绍了利用Kinect相机采集视频的方法。

    kinfu+Kinect v2+opencv开源实现编译说明

    - 在附加依赖项中,移除所有关于`openni2.dll`的条目,避免与OpenNI2相关的错误。 - 添加`PCL_Kinect2SDK.lib`库文件作为附加依赖项。 **3. 构建** - 按照以上步骤完成后,即可构建项目。 #### 五、常见问题及...

Global site tag (gtag.js) - Google Analytics