CN108416268B - 一种基于双机器人视觉沟通的动作识别方法 - Google Patents
一种基于双机器人视觉沟通的动作识别方法 Download PDFInfo
- Publication number
- CN108416268B CN108416268B CN201810107145.XA CN201810107145A CN108416268B CN 108416268 B CN108416268 B CN 108416268B CN 201810107145 A CN201810107145 A CN 201810107145A CN 108416268 B CN108416268 B CN 108416268B
- Authority
- CN
- China
- Prior art keywords
- image
- function
- robot
- morphological
- nao
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
- B25J9/1697—Vision controlled systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/254—Analysis of motion involving subtraction of images
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Social Psychology (AREA)
- Psychiatry (AREA)
- Health & Medical Sciences (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种基于双机器人视觉沟通的动作识别方法,包括:第一NAO机器人通过自身携带的摄像头抓取第二NAO机器人的形态动作图像;通过与所述第一NAO机器人相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取;基于提取的特征,通过LIBSVM模式的SVM算法、轮廓比对算法和/或相邻帧间图像差分算法实现形态动作图像识别,并通过第一NAO机器人进行语音反馈。本发明将OpenCV视觉库函数与NAO机器人平台相结合,实现NAO机器人之间形态动作的识别。
Description
技术领域
本发明涉及智能机器人技术领域,特别涉及一种基于双机器人视觉沟通的动作识别方法。
背景技术
自1960年以来,一系列类人机器人被研制出来,当今世界将更多的时间、金钱、人力与物力投入到这一领域中。随着各机构在仿人机器人技术上的研究,不断提高机器人性能的同时,成本问题也日益突出。因此,小型仿人机器人走上了历史舞台,成为各国关注点。相较于大机器人,小型仿人机器人能更容易融入人们生活,在娱乐、服务等诸多方面有着广泛的应用,低成本和简易完善机器人系统,成为其独有的优势。
当今在小型仿人机器人的领域中,Aldebaran Robotics公司研制的NAO享誉全球的。这款机器人拥有目标识别,定位,目标追踪,语音表达等功能,可操控性较强。而NAO的视觉方面,采用两个摄像头,通过视觉软件,可看到nao视野的图片和视频。Nao库包含诸多算法,来识别不同的物体、追踪物体。可以利用NAO的可自行开发模块,连接至OpenCV数据库,在NAO上执行模块将模块传送至与机器人连接的电脑上,这样,就可以使用OpenCV的显示功能,来开发和测试自行设计的算法,并可获得图片反馈,从而通过脑电波、视觉及肢体等对机器人控制实现人机交互与机器人交流。
发明内容
本发明目的在于克服现有技术的不足,提出一种基于双机器人视觉沟通的动作识别方法,通过将OpenCV视觉库函数与NAO机器人平台相结合,实现NAO机器人之间形态动作的识别。
本发明解决其技术问题所采用的技术方案是:
一种基于双机器人视觉沟通的动作识别方法,包括:
第一NAO机器人通过自身携带的摄像头抓取第二NAO机器人的形态动作图像;
通过与所述第一NAO机器人平台相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取;
基于提取的特征,在OpenCV视觉库中通过LIBSVM模式的SVM算法、轮廓比对算法和/或相邻帧间图像差分算法实现形态动作图像识别;
所述第一NAO机器人根据识别的形态动作图像进行形态动作语音反馈。
优选的,所述通过与所述第一NAO机器人平台相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取,包括:
通过cvLoadImage或imread函数将形态动作图像加载至内存;
通过cvCvtColor函数对所述形态动作图像进行灰度化或HSV处理;使用bitwise_not进行反色处理;
通过cvThreshold函数对所述形态动作图像进行二值化处理;
通过函数getStructuringElement制作操作内核;然后再通过erode函数与dilate函数进行腐蚀与膨胀处理;
通过Canny函数检测图像边缘;
通过findContours提取目标轮廓,得到一个连通区域的轮廓点的集合;再通过drawContours函数画出轮廓并将其直观的展现出来。
优选的,通过LIBSVM模式的SVM算法实现形态动作图像识别,包括:
设计一个svm训练机并配置训练机参数,训练机参数配置完成时设置svm训练机路径;
定义样本测试与分类方法,分别训练正负样本,用经过处理的一维矩阵图片比对样本矩阵,通过数据比拟相似度,来确定读取图像更接近哪一个样本,进而判断动作类型。
优选的,通过轮廓比对算法实现形态动作图像识别,包括:
通过cvApproxPoly函数对轮廓进行多边形逼近处理;
通过cvFindDominantPoints函数实现轮廓上的关键点的查找提取;
通过cvContourPerimeter或cvArcLength函数获取轮廓的周长;通过cvContourArea函数获取轮廓的面积;
基于轮廓的Hu矩匹配法,通过cvMatchShapes函数实现2个轮廓的匹配,进而判断动作类型。
优选的,通过相邻帧间图像差分算法实现形态动作图像识别,包括:
检测运动过程中的两个相邻帧图像变化的区域;
对两帧图像进行差分,并查找出第二NAO机器人起始运动信息;
将检测到的两个相邻帧图像变化的区域进行图像分割,从而判断出静态背景和第二NAO机器人运动的区域,最终确定其运动方向和运动信息。
优选的,所述OpenCV视觉库运行在Linux、Windows、Android或Mac OS操作系统上。
与现有技术相比,本发明具有如下有益效果:
(1)一种基于双机器人视觉沟通的动作识别方法,通过将OpenCV视觉库函数与NAO机器人平台相结合,实现NAO机器人之间形态动作的识别,并通过语音反馈实现类人沟通;
(2)本发明基于图像的瞬间抓取及图像的特征提取,针对不同的形态动作可采用不同的方法进行形态动作识别,以保证识别的准确性。
附图说明
图1是本发明的方法流程图;
图2是本发明的腐蚀与膨胀代码图;
图3是本发明的svm训练机参数配置代码图;
图4是本发明的路径设置代码图;
图5是本发明的编程平台界面图;
图6是本发明的Opencv环境配置图;
图7是本发明的pycharm环境配置图;
图8是本发明的handup样本库图;
图9是本发明的handdown样本库图;
图10是本发明的修改模式框架代码图;
图11是本发明的手势识别判定依据代码图;
图12是本发明的手势识别语言反馈代码图;
图13是本发明的坐姿样本转化代码图;
图14是本发明的坐姿语言反馈代码图;
图15是本发明的举手动作训练和转换样本代码图;
图16是本发明的举手动作代语音反馈代码图;
图17是本发明的举手动作库更改和路径的更改代码图;
图18是本发明的指向动作训练正负样本代码图;
图19是本发明的指向动作获取代码图;
图20是本发明的行走与行走方向识别代码图。
具体实施方式
参见图1所示,本发明一种基于双机器人视觉沟通的动作识别方法,包括:
步骤101,第一NAO机器人通过自身携带的摄像头抓取第二NAO机器人的形态动作图像;
步骤102,通过与所述第一NAO机器人平台相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取;
步骤103,基于提取的特征,在OpenCV视觉库中通过LIBSVM模式的SVM算法、轮廓比对算法和/或相邻帧间图像差分算法实现形态动作图像识别;
步骤104,所述第一NAO机器人根据识别的形态动作图像进行形态动作语音反馈。
Nao机器人应用程序是建立在大量先进的复杂技术之上,如语音识别、物体识别、地图构建等并利用有限的资源、在有限的环境中运行的一种应用程序。用户可在Windows、Mac或Linux系统下开发代码,并通过C++、Python、Urbi、.Net等多种语言进行调用以实现nao机器人之间与人与机器人之间的互动,通过NAOqi,不同模块(如运动、音频、视频等)之间可协调沟通,还可实现齐次规划,并与ALMemory模块共享信息。基于双机器人视觉交流,实现机器人间的视觉互动则需要Opencv来完成实现.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。其主要应用体现在人机互动,物体识别,图像分割,人脸识别,动作识别,运动跟踪,运动分析,机器视觉结构分析等诸多方面。双机器人视觉交流则是通过视觉获取目标机器人的形态动作,甚至部分体态特征来做出相应的反馈与回应。
本实施例中,视觉交流其实就是基于摄像头抓取瞬间的其它机器人形态动作图像,然后实现读取显示与输出的,并做后续的处理。
进一步的,需要对抓取的形态动作图像进行形态处理与特征提取,包括:
(1)通过cvLoadImage或imread函数将形态动作图像加载至内存。
OpenCV在应用cvLoadImage函数将图像文件加载至内存后,可以调用cvShowImage函数来显示图片(cvNamedWindow函数可以改变显示图像的大小)。当不再需要加载到内存中的图像文件时,调用cvRealeaseImage函数以释放分配给该图像的内存(以矩阵的形式)。读取图片时,可以选择不同的读入效果和方式(主要是通过函数来实现与完成的),例如:函数CV_LOAD_IMAGE_GRAYSCALE将图像读取为灰度图,CV_LOAD_IMAGE_COLOR函数读取为彩图。一般采用读入灰色值较多,因为灰色图像会占用比彩色图像更少的的内存空间。
在读取图片时,imread函数读取图片可以获得与cvLoadImage同样的显示效果。cvLoadImage与imread的区别是:imread返回的是一个Mat数据对象而cvLoadImage返回的是指针,返回数据对象的特点是在生存周期结束时无用手动释放。
(2)通过cvCvtColor函数对所述形态动作图像进行灰度化或HSV处理;使用bitwise_not进行反色处理。
图像的灰度化是将彩色图像转换成为灰色图。众所周知,R(red)、G(green)、B(blue)是色彩的三原色,而opencv图像像素也遵循三原色模型,当RGB三值相等时,彩色表为灰色,R=G=B的值叫灰度值,灰度范围为0-255。
OpenCV中采用函数cvCvtColor,将第二个参数设置为COLOR_BGR2GRAY来完成彩色图像的灰度化;将第二个参数设置为COLOR_BGR2HSV来完成彩色图像到HSV空间的转换。
反色实现原理:求得图片的像素值S,再去运行像素的减法255-S来求得反色,并存入路径;灰度图像一般只会有一个通道即gay2[a,b]=(255-gay[a,b]);而彩色图片则拥有三种通道,即255-gay[a,b][0],255-gay[a,b][1],255-gay[a,b][2],反色处理函数为bitwise_not。
(3)通过cvThreshold函数对所述形态动作图像进行二值化处理;
在图像特征获取(如后续会用到的轮廓边缘检测)时,必须先对图像进行二值化处理。图像的二值化即是将彩色图片转换为灰白效果的图片,要想达到这种效果可以将图像像素点设置为255(0亦可)。图像的二值化使图像中数据量大为减少,使得目标轮廓更为明显的呈现出来。
OpenCV中对图像进行二值化处理会调用二值化关键函数cvThreshold()。
(4)通过函数getStructuringElement制作操作内核;然后再通过erode函数与dilate函数进行腐蚀与膨胀处理。
二值图像的腐蚀和膨胀讲就是拿一个一般为3*3的二值图与另目标二值图像进行像素点的比较,根据比对得到结果对图像进行更深层次的处理。膨胀算法:用一个一般为3X3或者稍大一些的小二值图与另外一张二值图像的像素点做“与”运算,如果结果都0,则最后的结构图像的像素为0,else为1。在膨胀化后二值图像通常会向外扩大一圈。膨胀操作会使物体的边界向外扩张,这种膨胀操作会使物体图像内部的一些小洞被补满。如果此时再对其进行腐蚀操作的话,外部边界会变回原来的样子,但是那些图像中的内部空洞会永远消失。腐蚀算法:同样使用了3X3或者稍大的(11*11)的二值图像的像素点与目标二值图像的每一个像素做“与”运算,当运算结果为1时,结构图像的该像素为1,else为0结果。如果结果为零,二值图像则会大幅减少与缩减。腐蚀操作通常被用来去掉物体的边缘点,图像中通常会将细小物体像素点被认为是边缘点,因此会整个被删去。此时再运行膨胀算法时,留下来的大物体会变回原来的大小,而那些被认作被删除的边缘点则会消失。
开运算就是上述先腐蚀再膨胀的过程,可以消除图像上细小的噪声,并平滑物体的边界
同理,闭运算是先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。
本实施例中,由于噪声的干扰和影响极为严重,图像在阈值化后所得到边界不平滑的现象,通常物体区域会存在部分噪声孔,或者背景区域上散落的一些小的噪声物体。多次的开和闭运算可以有效地改善噪声的干扰,如果需要,会进行多次腐蚀之后再加上相同次数的膨胀。
参见图2所示,本实施例中可以先使用函数getStructuringElement来制作操作内核,然后再进行erode函数腐蚀与dilate膨胀。
(5)通过Canny函数检测图像边缘。
(6)通过findContours提取目标轮廓,得到一个连通区域的轮廓点的集合;再通过drawContours函数画出轮廓并将其直观的展现出来。
本实施例中,首先依据颜色与纹理等特征提取出目标的前景图,然后再对前景图进行深度提取查找出特征目标。OpenCV里提取目标轮廓需要调用的函数是findContours,函数会输入一个结果二值化处理过的图像,结果处理得出一个连通区域的轮廓点的集合:vector<vector<Point>>。最终再通过drawContours函数画出轮廓并将其直观的展现出来。
进一步的,使用opencv视觉图像辨别算法实现形态动作图像识别。
在完成视频图像的获取与图像形态处理与特征抓取后,主要考虑的问题是如何通过特征辨别(比对等算法)来对图片信息有效的归类,统筹与识别,并完成相应的交流与互动。
本实施例用到的方法包括SVM算法、轮廓比对以及帧差法。
1、SVM算法
SVM向量机其实一种分类算法,它可以将两种不同的类划分开来,还可以用于模式识别与回归分析。SVM分类机可以将特征空间进行分割并可以实现间隔最大化,将问题转化为一个凸二次规划问题的求解。
本实施例中基于svm算法采用了LIBSVM模式,包括:
按照LIBSVM软件包所要求的格式准备数据集;对数据进行简单的缩放操作;考虑选用RBF核函数;采用交叉验证选择最佳参数C与g;采用最佳参数C与g对整个训练集进行训练获取支持向量机模型;利用获取的模型进行测试与预测。
后面识别机器人动作实验中,将要求的举手动作图片放入指定文件夹,形成了了一个举手的图片库,以方便之后svm训练来识别图像。
svm训练机原理包括:
参见图3所示,首先设计一个svm训练机并配置训练机参数,并设定svm训练器路径;
开始训练正负样本,应用相应的opencv图像处理的矩阵思想,将图像样本文件(样本库)训练成为一组一维数组,分类并加以不同数字定义(0和1),同时机器人读入图像亦采用类似方法变换与处理。参见图4所示,注意定义好测试、加载和训练路径;
定义样本测试与分类方法,分别训练正负样本,用经过处理的图片一维矩阵求比对样本矩阵,通过数据比拟相似度,来确定读取图像更为接近哪一个样本,进而判断动作类型。
2、轮廓比对法
本实施例中用到的轮廓的特性包括:
2.1轮廓的多边形逼近
轮廓的多边形逼近指的是:函数定义一个多边形来重新描绘图像中轮廓,从而大量削减了图像轮廓中的顶点数目。其实我们可以将多边形轮廓看作一种模糊化的轮廓,只是不再那么精细与特征明显,可以使用方法cvApproxPoly。
2.2轮廓的关键点
轮廓的关键点是:关键点即指轮廓中突出顶点,一般会将它定义到一个轮廓关键点集合中,并使用cvFindDominantPoints函数来实现轮廓上的关键点的查找提取。
2.3轮廓的周长和面积
轮廓的周长可以用cvContourPerimeter或者cvArcLength函数来获取。轮廓的面积可以用cvContourArea函数来获取。
本实施例中,使用轮廓Hu矩匹配法得到了相应的匹配效果。轮廓的Hu矩对包括缩放、旋转和镜像映射在内的变化具有不变性。cvMatchShapes函数可以很方便的实现对2个轮廓间的匹配。
3、帧差法
相对于静态图像的差分法,帧差法更适合于动态视频的侦测。
相邻帧间图像差分算法:在视频中检测目标在运动过程中两个不同帧的瞬时(相邻或者间隔不大的帧)图像变化的区域;对着两帧图像进行差分;对灰度差分处理过的图像进行二值化处理,查找其起始运动信息;再将第一步处理得到区域进行图像分割,从而判断出来那里是静态背景,哪里是机器人运动的区域最终确定其运动方向和运动信息。这种算法主要依据两帧图像中特征目标的像素点差值来判断是否移动,而其他像素点灰度值的差值则可以断定其如果移动后,移动方向是哪里。当像素点的灰度差极小时,说明没有运动。
本实施例中为了使效果更为明显,设定了一个红色阈值,借鉴了HSV空间方法与思想,因为彩色比对有时候会比灰度效果更加明显,同样是利用了帧差法原理来判断机器人移动方向。
如下将通过具体实验对本发明一种基于双机器人视觉沟通的动作识别方法进行说明。
为了实现双机器人的视觉沟通,研究opencv基于nao机器人平台带来的效果。实验以spyder为编程平台,Choregraphe为所识别的机器人动作搭建模拟环境,提供svm库里的对比资源,并通过连接nao的无线ip与端口实现对第一机器人对第二机器人的识别与交流。
(1)环境编程与代码编程
本实验基于spyder进行编程,编程平台(含路径)参见图5所示。
该过程主要分为三步:环境配置、python32位skd配置与模块安装、代码编程。
环境配置:主要是为搭建开发环境。在操作系统中设置和指定一些环境参数,sypder也不例外,同样要进行大量的环境配置来实现path路径查询。当运行一段完整的代码时,很少能够得到完整的路径,path此时可以告知除了当下目录运行的程序,还可以去哪些目录寻找,寻找相应的文件。本次实验环境配置参见图6和图7所示。
python32位skd配置与模块安装:为代码运行安装相应的库import来维持代码的运行。前面有提到,opencv是一种跨平台计算机视觉库,它本身就带有很多由c和c++构成的库,每个库里有相应的算法来供python等接口语言调用来实现相应的功能。实现相应的代码则必须需要相应的库,而实验中无论是图像的识别处理,以及最终连接机器人摄像头与接口等都需要相应的库和模块支持。
(2)机器人svm训练机的搭建与正负样本库的建立
由于实验的五个动作中有三个动作即:举手、指向与下蹲运用了svm训练机分类的算法,所以svm的训练机搭建与正负样本库的搭建成为实验前必要的准备,具体参见图3所示。
训练机采用了LIBSVM模式;对于线性核函数,没有专门需要设置的参数;核函数参数有三个参数,-d用来设置多项式核函数的最高此项次数,默认值是3。-g用来设置核函数中的gamma参数设置,默认值是1/k(k是类别数),实验中是分别对一个动作的辨识,所以参数置1。-r用来设置核函数中的coef0,默认值是0。
本次实验主要通过Choregraphe模拟获取所要识别的机器人动作,加以保存并存入svm训练库中,作为识比对的样本。注意要尽可能多的模拟与抓取机器人的不同姿势的多角度和多姿态图片,样本库越丰富(图片不限,但是越多越好),进行矩阵比对时,越精确。
在此次实验中,建立了三组不同的样本库来实现三种不同的动作,分别是handup(33张样本图)和handdown(8张样本图)正负样本库、point at(5张)与stand(3张)样本库、sitdown(13张)与standup(3张)正负样本库。注意:机器人的样本图片的像素尽量要和机器人摄像头获取的图像像素大小一致(800*600效果较好)。其中handup与handdown样本库参见图8和9所示。
同时,Choregraphe还可以直接连接nao机器人的端口,通过指令盒操控机器人第二机器人完成需要的动作供第一机器人识别。
(3)代码环境修改实现操控机器人
在spyder完成代码编程与svm库建立后,则要将编程代码里的摄像头,语音输出等转换为nao机器人的模式。这里需要注意的是,因为每台电脑和每个机器人定义的视频大小不一样,所以识别时要可以在机器人视觉恰当的位置截取部分图像来保持与库里的图像像素大小接近,或者可以根据个人喜好并重新调整库里样本的大小,并加以训练。像素的大小比例接近可以极大的提高识别的准确性。随后在代码编程里接入nao机器人的ip地址与端口,输入交流语音,在cmd命令行端口或者python直接运行代码,就实现机器人的识别与交流。具体修改模式框架参见图10所示。
(4)实验展示
Nao机器人的双视觉沟通主要由四步构成:帧图像的瞬间抓取;图像的特征提取;opencv根据特征实现目标辨别;向目标机器人反馈。
此次试验的五个动作中:目标机器人的手势识别采用二值反色后求解轮廓面积的思想方法;目标机器人行走方向则应用了帧差法算法与思想;举手,指向与下蹲三个动作分别采用了svm的线性分类的算法思想。
以下则是对五种动作的的识别与交流:
(4.1)第一nao机器人对第二nao机器人的手势识别,并反馈“handup”。
对经过腐蚀与膨胀的图像进行减运算,再通过二值与反色处理求得阴影面积,对比三种手势的不同的阴影面积范围来实现对石头剪刀布的识别。识别机器人手势识别的关键代码参见图11(判定依据代码)和图12(语言反馈代码)所示。
(4.2)第一nao机器人对第二nao机器人sit dwon动作的识别并反馈“sit down”。
首先搭建svm训练机,配置好相关参数,然后搭建svm训练机的正负样本(即handup与handdownd)的库,对正负样本加以训练并进行最终识别。Nao机器人识别坐姿的关键代码(正样本)参加图13(样本转化代码)和图14(语言反馈代码)所示。
(4.3)第一nao机器人对第二nao机器人的举手动作识别
同样应用到svm分类算法的思想,具体步骤与举手相似,或者可以直接调用以装备好的库与路径,重新训练与识别即可,Nao机器人识别举手的视觉沟通代码参见图15(训练和转换样本代码)、图16(语音反馈代码)和图17(库更改和路径的更改代码)所示。
(4.4)第一nao机器人对第二nao机器人的point to的动作识别与交流。
采用svm线性分类算法思想,参见图17更改库与库的路径即可完成识别。Nao机器人对point识别与交流的代码参见图18(训练正负样本代码)和图19(动作获取代码)所示。
(4.5)第一nao机器人对第二nao机器人走与走动方向识别与交流。
实验首先对机器人视频获取的图像进行了腐蚀与膨胀的降低噪音处理,再通过轮廓获取来确定轮廓质心(特征获取),最终通过帧差法的像素点相减来获得的色彩面积差值,实现对目标移动方向的确认。机器人对目标行走与行走方向识别代码参见图20所示。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (2)
1.一种基于双机器人视觉沟通的动作识别方法,其特征在于,包括:
第一NAO机器人通过自身携带的摄像头抓取第二NAO机器人的形态动作图像;
通过与所述第一NAO机器人平台相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取;
基于提取的特征,在OpenCV视觉库中通过LIBSVM模式的SVM算法、轮廓比对算法和/或相邻帧间图像差分算法实现形态动作图像识别;
所述第一NAO机器人根据识别的形态动作图像进行形态动作语音反馈;
所述通过与所述第一NAO机器人平台相连接的OpenCV视觉库函数对所述形态动作图像进行处理和特征提取,包括:
通过cvLoadImage或imread函数将形态动作图像加载至内存;
通过cvCvtColor函数对所述形态动作图像进行灰度化或HSV处理;使用bitwise_not进行反色处理;
通过cvThreshold函数对所述形态动作图像进行二值化处理;
通过函数getStructuringElement制作操作内核;然后再通过erode函数与dilate函数进行腐蚀与膨胀处理;
通过Canny函数检测图像边缘;
通过findContours提取目标轮廓,得到一个连通区域的轮廓点的集合;再通过drawContours函数画出轮廓并将其直观的展现出来;
通过LIBSVM模式的SVM算法实现形态动作图像识别,包括:
设计一个svm训练机并配置训练机参数,训练机参数配置完成时设置svm训练机路径;
定义样本测试与分类方法,分别训练正负样本,用经过处理的一维矩阵图片比对样本矩阵,通过数据比拟相似度,来确定读取图像更接近哪一个样本,进而判断动作类型;
通过轮廓比对算法实现形态动作图像识别,包括:
通过cvApproxPoly函数对轮廓进行多边形逼近处理;
通过cvFindDominantPoints函数实现轮廓上的关键点的查找提取;
通过cvContourPerimeter或cvArcLength函数获取轮廓的周长;通过cvContourArea函数获取轮廓的面积;
基于轮廓的Hu矩匹配法,通过cvMatchShapes函数实现2个轮廓的匹配,进而判断动作类型;
通过相邻帧间图像差分算法实现形态动作图像识别,包括:
检测运动过程中的两个相邻帧图像变化的区域;
对两帧图像进行差分,并查找出第二NAO机器人起始运动信息;
将检测到的两个相邻帧图像变化的区域进行图像分割,从而判断出静态背景和第二NAO机器人运动的区域,最终确定其运动方向和运动信息。
2.根据权利要求1所述的基于双机器人视觉沟通的动作识别方法,其特征在于,所述OpenCV视觉库运行在Linux、Windows、Android或Mac OS操作系统上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810107145.XA CN108416268B (zh) | 2018-02-02 | 2018-02-02 | 一种基于双机器人视觉沟通的动作识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810107145.XA CN108416268B (zh) | 2018-02-02 | 2018-02-02 | 一种基于双机器人视觉沟通的动作识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108416268A CN108416268A (zh) | 2018-08-17 |
CN108416268B true CN108416268B (zh) | 2021-06-01 |
Family
ID=63127532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810107145.XA Active CN108416268B (zh) | 2018-02-02 | 2018-02-02 | 一种基于双机器人视觉沟通的动作识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108416268B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109523568A (zh) * | 2018-10-12 | 2019-03-26 | 广东绿康源美环境科技有限公司 | 一种基于Canny算法的大体标本摄像系统 |
CN109949338A (zh) * | 2019-02-20 | 2019-06-28 | 博雅工道(北京)机器人科技有限公司 | 一种基于cpg模型仿生水下机器鱼的目标跟踪识别方法 |
CN109961012A (zh) * | 2019-02-20 | 2019-07-02 | 博雅工道(北京)机器人科技有限公司 | 一种水下目标跟踪识别方法 |
CN110147764A (zh) * | 2019-05-17 | 2019-08-20 | 天津科技大学 | 一种基于机器学习的静态手势识别方法 |
CN110866939B (zh) * | 2019-10-17 | 2022-03-22 | 南京师范大学 | 基于相机位姿估计和深度学习的机器人运动状态识别方法 |
CN111060314B (zh) * | 2019-11-23 | 2021-10-26 | 五邑大学 | 一种动车组滚动轴承故障诊断方法及试验模拟装置 |
CN111515957A (zh) * | 2020-05-13 | 2020-08-11 | 暨南大学 | 用于坐姿检测和语言聊天的桌面机器人系统及桌面机器人 |
CN112230606A (zh) * | 2020-10-29 | 2021-01-15 | 上海工程技术大学 | 一种基于matlab应用程序接口控制nao机器人运动的方法 |
CN112598940A (zh) * | 2020-11-06 | 2021-04-02 | 嘉兴市木星机器人科技有限公司 | 一种人工智能应用学习开发平台 |
CN112428308B (zh) * | 2020-11-11 | 2022-04-22 | 河北工业大学 | 一种机器人触觉动作识别系统及识别方法 |
CN113723230A (zh) * | 2021-08-17 | 2021-11-30 | 山东科技大学 | 业务流程抽取领域过程性视频的过程模型抽取方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202753154U (zh) * | 2012-07-18 | 2013-02-27 | 深圳市中科睿成智能科技有限公司 | 一种用于交互的机器人装置 |
CN103995747B (zh) * | 2014-05-12 | 2017-05-31 | 上海大学 | 基于移动机器人平台的分布式行人检测系统和方法 |
US9954992B2 (en) * | 2014-11-27 | 2018-04-24 | Purdue Research Foundation | Mobile device enabled robotic system |
CN106650601A (zh) * | 2016-10-18 | 2017-05-10 | 武汉慧能机器人科技有限公司 | 人机交互方法及智能机器人 |
CN107273944A (zh) * | 2017-05-16 | 2017-10-20 | 北京元视觉科技有限公司 | 自主社交的智能设备、自主交互方法及存储介质 |
-
2018
- 2018-02-02 CN CN201810107145.XA patent/CN108416268B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108416268A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108416268B (zh) | 一种基于双机器人视觉沟通的动作识别方法 | |
KR102492369B1 (ko) | 텍스트 제거를 위한 이진화 및 정규화 기반 인페인팅 | |
CN108280397B (zh) | 基于深度卷积神经网络的人体图像头发检测方法 | |
CN104601964B (zh) | 非重叠视域跨摄像机室内行人目标跟踪方法及系统 | |
JP5726125B2 (ja) | 奥行き画像内の物体を検出する方法およびシステム | |
CN111275082A (zh) | 一种基于改进端到端神经网络的室内物体目标检测方法 | |
CN109684959B (zh) | 基于肤色检测和深度学习的视频手势的识别方法及装置 | |
CN108274476B (zh) | 一种人形机器人抓取球体的方法 | |
CN111401293B (zh) | 一种基于Head轻量化Mask Scoring R-CNN的手势识别方法 | |
Kheirkhah et al. | A hybrid face detection approach in color images with complex background | |
CN110516527B (zh) | 一种基于实例分割的视觉slam回环检测改进方法 | |
CN110688512A (zh) | 基于ptgan区域差距与深度神经网络的行人图像搜索算法 | |
Hasan et al. | Real time fingers and palm locating using dynamic circle templates | |
CN109165592A (zh) | 一种基于pico算法的实时可旋转的人脸检测方法 | |
Zhang et al. | An optical flow based moving objects detection algorithm for the UAV | |
CN114723601B (zh) | 一种虚拟场景下的模型结构化建模及快速渲染方法 | |
Duan et al. | An approach to dynamic hand gesture modeling and real-time extraction | |
Cheng et al. | Haar-like multi-granularity texture features for pedestrian detection | |
CN113269236B (zh) | 基于多模型集成的装配体变化检测方法、设备和介质 | |
Dadgostar et al. | Gesture-based human–machine interfaces: a novel approach for robust hand and face tracking | |
CN108416786A (zh) | 一种基于人形机器人识别物体形状和色彩的方法 | |
Che et al. | Traffic light recognition for real scenes based on image processing and deep learning | |
Yasir et al. | 3D Instance Segmentation Using Deep Learning on RGB-D Indoor Data. | |
RU2440609C1 (ru) | Способ сегментации растровых изображений на основе выращивания и слияния областей | |
Tian et al. | An Industrial Production Line Dynamic Target Tracking System Based on HAAR and CAMSHIFT |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |