一种对目标物定位和追踪的装置及图像识别的方法与流程

文档序号:11865358阅读:247来源:国知局
一种对目标物定位和追踪的装置及图像识别的方法与流程

本发明涉及图像识别技术领域,具体涉及一种对目标物定位和追踪的装置及图像识别的方法。



背景技术:

目前常用的图像检测算法有模式识别、匹配追踪和阈值限定等。其中模式识别算法和匹配追踪算法最重要的是分类算法,一般有K-NN分类法、贝叶斯分类法、PCA分类法等,其缺点是运算量巨大,一幅32*32图像,未优化时运算维度也为1024,运算量更达到百万,时间复杂度为n的4次方,其中n为图像边长,而不管是经过PCA降维优化或是使用kd-tree优化,都带来了精度下降的损失;其次,对于运动中不断变化的物体,单一的模式识别也已经满足不了识别精度要求,使用匹配追踪更是要加大运算量,对于在目前的手机硬件上很难实现实时性要求。



技术实现要素:

本发明的目的就是为了解决上述技术问题,而提供一种对目标物定位和追踪的装置及图像识别的方法。

本发明一种对目标物定位和追踪的装置包括贴纸装置和带有摄像头的图像识别终端和计算机,所述贴纸装置包括内圆贴纸和外圆贴纸,所述图像识别终端是智能手机,所述外圆贴纸的内侧与内圆贴纸的外侧相接,所述贴纸装置贴在目标物表面,所述图像识别终端拍摄并识别带有贴纸装置的目标物,所述计算机与图像识别终端通信相连。

所述内圆贴纸的半径是5mm,所述外圆贴纸的半径是10mm。

所述计算机通过数据线或者无线网络与图像识别终端通信相连。

所述内圆贴纸的颜色是红色,所述外圆贴纸的颜色是绿色,

一种对目标物定位和追踪的装置及图像识别的方法包括以下步骤:

①.将贴纸装置贴在目标物的表面;

②.通过图像识别终端拍摄多帧目标物的图像;

③.图像识别终端拍摄的图像数据传输给计算机;

④.计算机依次对图像数据进行处理;

⑤.计算机得到识别结果,并将识别结果传输给图像识别终端。

所述步骤④中,计算机(4)对图像数据进行处理包括以下步骤:

一.计算机4调用C++算法将原始图像转成opencv的C++图像结构:Mat结构;

二.归化图像大小,缩小Mat结构;

三.分量灰度限定;红色圆在RGB空间GB通道灰度限定;

四.将缩小后的Mat结构转成RGB空间;

五.分离RGB变量;

六.将缩小后的Mat结构转成LAB空间;

七.分离LAB分量;

八.取内圆,对红色圆在LAB空间的A通道做限定,在RGB空间的R通道做限定。

九.膨胀:对红色内圆做膨胀处理;

十.取外圆,对绿色圆在LAB空间的A通道做限定,并且在RGB空间的GB通道做限定;

十一.闭操作:使用形态学闭运算算法,将绿色圆环对应的二值图像做中心填充,得到实心圆。

十二.结合之前限定条件进行选择,选出红色内圆区域;

十三. 归化大小:图像恢复原来大小,将灰度图gray放大到当前的四倍;

十四. 闭操作:进一步对识别结果gray图像做闭操作,消除二值图像中内部“空隙”,得到实心红圆二值图像;

十五. 寻找轮廓:使用边缘近似的算法,对数组二值图像进行拓扑分析,从二值图像gray中找到0和1的交界,得到轮廓数组;

十六. 再次筛选:当轮廓数为1时判定识别到贴纸;

十七.返回识别结果;

十八. 估算运动距离。

本发明具有以下优点:本发明选用了结构优良的贴纸结构,并采用了阈值限定+轮廓检测的检测算法,该算法时间复杂度仅为n的平方,其中n为图像边长,速度约是同类模式识别算法的100倍;而且算法实现过程中,充分考虑了光照变化、角度变化、背景变化和距离变化等诸多环境因素,使得算法在绝大多数场景下都是准确的,识别率达到了99.5%,识别精度达到了+-1CM。据此,该算法保证了在手机(或ARM板等)上运行的实时性以及准确性。该发明可以广泛应用于基于图像识别的目标追踪,应用领域包括自动化生产,3D打印,增强现实游戏等,具有很好的实用及推广价值。

附图说明

图1是本发明结构原理方框示意图。

图2是本发明的图像识别方法流程示意图。

图3是本发明计算机对图像数据进行处理的流程示意图。

图中:1、内圆贴纸;2、外圆贴纸;3、图像识别终端;4、计算机。

具体实施方式

下面结合附图对本发明做进一步说明。

如图1、2、3所示,本发明一种对目标物定位和追踪的装置包括贴纸装置和带有摄像头的图像识别终端3和计算机4,所述贴纸装置包括内圆贴纸1和外圆贴纸2,所述图像识别终端3是智能手机,所述外圆贴纸2的内侧与内圆贴纸1的外侧相接,所述贴纸装置贴在目标物表面,所述图像识别终端3拍摄并识别带有贴纸装置的目标物,所述计算机4与图像识别终端3通信相连。

所述内圆贴纸1的半径是5mm,所述外圆贴纸2的半径是10mm。

所述计算机4通过数据线或者无线网络与图像识别终端3通信相连。

所述内圆贴纸1的颜色是红色,所述外圆贴纸2的颜色是绿色,

一种对目标物定位和追踪的装置及图像识别的方法包括以下步骤:

①.将贴纸装置贴在目标物的表面;

②.通过图像识别终端3拍摄多帧目标物的图像;

③.图像识别终端3拍摄的图像数据传输给计算机4;

④.计算机4依次对图像数据进行处理;

⑤.计算机4得到识别结果,并将识别结果传输给图像识别终端3。

所述步骤④中,计算机(4)对图像数据进行处理包括以下步骤:

一.计算机4调用C++算法将原始图像转成opencv的C++图像结构:Mat结构;

二.归化图像大小,缩小Mat结构;

三.分量灰度限定;红色圆在RGB空间GB通道灰度限定;

四.将缩小后的Mat结构转成RGB空间;

五.分离RGB变量;

六.将缩小后的Mat结构转成LAB空间;

七.分离LAB分量;

八.取内圆,对红色圆在LAB空间的A通道做限定,在RGB空间的R通道做限定。

九.膨胀:对红色内圆做膨胀处理;

十.取外圆,对绿色圆在LAB空间的A通道做限定,并且在RGB空间的GB通道做限定;

十一.闭操作:使用形态学闭运算算法,将绿色圆环对应的二值图像做中心填充,得到实心圆。

十二.结合之前限定条件进行选择,选出红色内圆区域;

十三. 归化大小:图像恢复原来大小,将灰度图gray放大到当前的四倍;

十四. 闭操作:进一步对识别结果gray图像做闭操作,消除二值图像中内部“空隙”,得到实心红圆二值图像;

十五. 寻找轮廓:使用边缘近似的算法,对数组二值图像进行拓扑分析,从二值图像gray中找到0和1的交界,得到轮廓数组;

十六. 再次筛选:当轮廓数为1时判定识别到贴纸;

十七.返回识别结果;

十八. 估算运动距离。

工作方式及原理:

1、调用C++算法:首先在手机上通过摄像头获取到每一帧的拍摄图像,实时将图像数据地址传到C++端,进而转成opencv(一个基于开源的跨平台计算机视觉库)的C++图像结构:Mat结构。

2、归化大小:先缩小图像,是保证运行速度,这里缩小4倍,经过测试,使用了不同的手机,其处理帧率可以达到10帧到20帧。之后被缩小后的Mat结构分别被转化为了RGB空间和LAB空间,下面分开描述。

3、转成RGB空间:将缩小后的Mat结构转化为RGB空间,即每个像素点颜色都是用不同强度的R(红色),G(绿色)和B(蓝色)三个矢量相加表示。

4、分离RGB分量,得到分离后的vector<Mat>数组,vbgr[0]即R分量,vbgr[1]G分量,vbgr[2]B分量。

5、分量灰度限定,限定一:红色圆在RGB空间GB通道灰度限定,相差不超过30:

实现:

1)求GB通道差值:vbgr[1]-vbgr[2];

2)求绝对值: redMat=abs(vbgr[1]-vbgr[2]);

3)将redMat中不超过30的像素点变成白色,将redMat中超过30的像素点变成黑色。

6、转成LAB空间:将缩小后的Mat结构转化为LAB空间,即每个像素点取坐标LAB,其中L表示亮度;A的正数代表红色,负数代表绿色;B的正数代表黄色,负数代表蓝色。

7、分离LAB分量,得到分离后的vector<Mat>数组,vlab[0]是L通道,vlab[1]是A通道,vlab[2]是B通道。

8、取内圆

限定二:红色圆在LAB空间的A通道值大于150,小于230,并且在RGB空间的R通道值大于130;

实现:

1)A通道值大于150:(vlab[1]>150);

2)A通道值小于230:(vlab[1]<230);

3)R通道值大于130:(vbgr[0]>130);

4)结合上面:redMat1=(vlab[1]>150)&(vlab[1]<230)&(vbgr[0]>130);此时redMat1中即是实现了限定二。

5)将redMat1中满足限定二的像素点变成白色,将redMat1中不满足限定二的像素点变成黑色。

9、膨胀:内圆在运动过程中,会变扁成为椭圆,并且椭圆边缘会变模糊,这样这个椭圆就是“中间红边缘淡红”,我们做灰度限定时,为了准确性,红色灰度范围不能取太大,所以做灰度限定后,得到的内圆会比较小,做膨胀操作是为了还原内圆大小,得到的输出图像内圆区域会比输入图像偏大;而当内圆静止时,不是椭圆了,这步操作后得到的白色圆会比实际偏大的,但算法后面由于“限定五”的存在,使得结果又变回正确的。

10、取外圆

限定三:绿色圆在a通道值大于50小于115,并且在RGB空间的;GB通道值相差大于70小于230,实现:

1)A通道值大于50:(vlab[1]>50);

2)A通道值小于115:(vlab[1]<115);

3)GB通道值相差大于70:((vbgr[1]-vbgr[0])>70)

4)GB通道值相差小于230:((vbgr[1]-vbgr[0])<230)

5)结合以上:

redMat2=(vlab[1]>50)&(vlab[1]<115)&((vbgr[1]-vbgr[0])>70)&((vbgr[1]-vbgr[0])<230);此时redMat2即是实现了限定三。

6)将redMat2中满足限定三的像素点变成白色,将redMat2中不满足限定三的像

素点变成黑色。redMAT2中白色像素点呈现出的图案应该是白色的圆环。

11、闭操作:使用形态学闭运算算法,使得redMat2中白色圆环变成白色的实心圆。

12、结合选择:因为贴纸是外绿圆包内红圆,并且redMat2中的白色圆对应的是贴纸的外绿圆,redMat1中的白色圆对应的是贴纸的红圆,所以有:限定四:只有当redMat1和redMat2相交的地方才是真正的红色圆区域:redMat1&redMat2;限定五:红圆R通道肯定比GB通道值大:(vbgr[0]>vbgr[1])&(vbgr[0]>vbgr[2]);结合限定一、限定四、限定五,即可得到初步的灰度图结果gray:gray=redMat1&redMat2&redMat&(vbgr[0]>vbgr[1])&(vbgr[0]>vbgr[2])

13、归化大小:图像恢复原来大小,将灰度图gray放大到当前的四倍:此时gray就是红心圆的二值图像,图像中红心圆为白色,其他像素为黑色。

14、闭操作:进一步对识别结果gray图像做闭操作,消除二值图像中内部“空隙”,得到实心红圆二值图像;

15、寻找轮廓:使用边缘近似的算法,对数组二值图像进行拓扑分析,从二值图像gray中找到0和1的交界,得到类型为vector<vector<Point>>的点数组,一组点为一个找到的一个轮廓。对得到的一组轮廓进行遍历,找出贴纸中红心圆对应的轮廓,其中轮廓长度太小的不要,绝大数情况不是红心圆,当轮廓长度对应的点数大于5的时候我们认定这是红心圆对应的轮廓(基于实验结果)。把轮廓筛选结果存到minEllipse数组,此时minEllipse数组中存在的轮廓基本是红心圆轮廓。minEllipse.size()即为轮廓数量。

16、再次筛选:限定六:得到的轮廓大于2个或者为0个,认为没有对贴纸进行有效识别,赋值变量Tap=0:限定七:得到的轮廓为1个,认为对贴纸进行了有效识别,赋值变量Tap=1。此时,识别结果包括:中心x坐标值,中心y坐标值,椭圆长轴或短轴值A,椭圆长轴或短轴值B。

17、返回识别结果:主要就是C++和智能手机系统的交互:将Tap值,中心x坐标值,中心y坐标值,椭圆长轴或短轴值A,椭圆长轴或短轴值B传输到智能手机操作系统中。

18、估算运动距离

通过前17步可以得到每一帧图片中贴纸中心x坐标值,中心y坐标值,椭圆长轴或短轴值A和椭圆长轴或短轴值B这四个信息。虽然椭圆长轴或短轴值A和椭圆长轴或短轴值B会随着贴纸与摄像头的距离不同而发生变化,但是由于贴纸中红圆的直径是恒定的(10mm),因此我们总可以由红圆绝对直径(10mm)与长轴或者短轴对应的像素点数的比值来估算单个像素点对应的绝对尺寸。下面估算任意相邻两个时间点t1和t2之间贴纸中心运动的绝对距离。对于时间t1点,得到红圆中心x坐标值xt1,中心y坐标值yt1,椭圆长轴或短轴值At1和椭圆长轴或短轴值Bt1。对于时间t2点,得到红圆中心x坐标值xt2,中心y坐标值yt2,椭圆长轴或短轴值At2和椭圆长轴或短轴值Bt2。在t2-t1时间段内,单个像素点对应绝对尺寸为d=10/[At1+At2+Bt1+Bt2)/4](mm)。因此贴纸从t1时间点到t2时间点,x方向移动了(xt2-xt1)*d(mm),y方向移动了(yt2-yt1)*d(mm)。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1