本发明涉及一种图像识别方法,尤其是一种可压缩的3d识别方法。
背景技术:
随着ar技术的普及,3d方面的应用与技术逐渐融入到了人们的生活,比如:3d物体识别技术、3d交互技术、3d场景识别等。然而该类技术的应用,往往需要存储大量的3d物体的信息,传统的3d模型的文件一般会保存3d顶点、法向量、三角面片或是多边形面片等信息,对于基于特征点的3d物体识别而言其中的大部分信息都是多于的,同时也需要较大的计算量,很难做到实时,从而限制了很多实用场景。
技术实现要素:
本发明要解决的技术问题是现有的3d物体识别技术需要存储大量的3d物体的信息,同时也需要较大的计算量,很难做到实时,从而限制了很多实用场景。
为了解决上述技术问题,本发明提供了一种可压缩的3d识别方法,包括如下步骤:
步骤1,利用相机对3d物体进行扫描,从而获得3d数据,具体为:
步骤1.1,提取扫描的每一帧二维图像中3d物体的二维特征点,并将二维图像分为m*n个网格,且每个网格内只保存一个特征点;
步骤1.2,匹配连续两帧二维图像的特征点,并根据相机的对极几何模型求出该两帧二维图像表示位置关系的旋转矩阵r和平移矩阵t,再利用三角化算法重构出各个特征点的深度信息,从而得到各帧二维图像的3d特征点;
步骤1.3,将首次两两匹配上的帧设为关键帧,再将其余帧与关键帧进行匹配,若匹配上,则表明两帧图像有共视的部分,并进一步获得两帧图像中共视的特征点数量,若特征点数量小于t,则表明两帧图不能互相表示,将该帧图像同样存为关键帧;
步骤1.4,将各个关键帧以及各个关键帧对应的3d特征点进行云存储,供线上识别使用;
步骤2,实时3d识别,具体为:
步骤2.1,实时提取待识别图像的二维特征点,将待识别图像划分的m*n个网格中,且在每个网格内只保存一个二维特征点,再将待识别图像与云存储的关键帧进行对应网格匹配,选出共视特征点最多的关键帧,若共视特征点数量大于t,则表明待识别图像为3d物体的一部分;
步骤2.2,根据步骤2.1匹配选出的关键帧与待识别图像的对应位置关系计算出旋转矩阵r和平移矩阵t,从而将云存储的3d特征点映射到待识别图像上,得到待识别图像与3d物体的对应关系,以此判断待识别图像相对于3d物体的姿态,从而得到识别结果。
作为本发明的进一步限定方案,步骤1.1中,每个网格的大小为4*4,即m=w/4,n=h/4,w和h分别为二维图像的长和宽。
作为本发明的进一步限定方案,步骤1.2中,对极几何模型公式为:
pl=r(pr-t)
(rtpr)t·t×pl=0
其中,pl为前一帧二维图像中的特征点,pr为后一帧二维图像中的特征点,rt为旋转矩阵r的转置。
本发明的有益效果在于:采用特征点的方法识别3d物体,而不需要重构物体的3d结构,因此只要存储可用于识别的3d特征点(点云)以及关键帧即可,这样极大减省了存储的数据量。此外3d点云中没必要存稠密的点云,因为某个小区域内只要有稳定的特征点就能匹配,这样再次减少了数据,也就减少了运算。
附图说明
图1为本发明的方法流程图。
具体实施方式
如图1所示,本发明提供的可压缩的3d识别方法包括如下步骤:
步骤1,利用相机对3d物体进行扫描,从而获得3d数据,具体为:
步骤1.1,提取扫描的每一帧二维图像中3d物体的二维特征点,并将二维图像分为m*n个网格,每个网格内只保存一个特征点,从而有效降低保存特征点的数量,实现数据量的有效压缩;
步骤1.2,匹配连续两帧二维图像的特征点,并根据相机的对极几何模型求出该两帧二维图像表示位置关系的旋转矩阵r和平移矩阵t,r为3*3矩阵,t为3*1矩阵,再利用计算机视觉中的三角化算法重构出各个特征点的深度信息,从而得到各帧二维图像的3d特征点;
步骤1.3,将首次两两匹配上的帧设为关键帧,将其余帧与关键帧进行匹配,若匹配上,则表明两帧图像有共视的部分,并进一步获得两帧图像中共视的特征点数量,若特征点数量小于t,其中t=100,则表明两帧图不能互相表示,将该帧图像同样存为关键帧,通过关键帧的匹配避免保存重复度高的帧,能够极大地减少存储帧图像的数量,实现存储数据量的压缩,步骤中的匹配采用现有技术中的特征点匹配技术,如比较两个点的像素值进行匹配或在特征点周围取个像素块,将像素块的信息提取出来,然后进行比较,若在设定范围内就表示已经匹配上了;
步骤1.4,将各个关键帧以及各个关键帧对应的3d特征点进行云存储,供线上识别使用;
步骤2,实时3d识别,具体为:
步骤2.1,实时提取待识别图像的二维特征点,将待识别图像划分的m*n个网格中,且在每个网格内只保存一个二维特征点,再将待识别图像与云存储的关键帧进行对应网格匹配,选出共视特征点最多的关键帧,若共视特征点数量大于t,其中t=100,则表明待识别图像为3d物体的一部分;
步骤2.2,根据步骤2.1匹配选出的关键帧与待识别图像的对应位置关系计算出旋转矩阵r和平移矩阵t,从而将云存储的3d特征点映射到待识别图像上,得到待识别图像与3d物体的对应关系,以此判断待识别图像相对于3d物体的姿态,从而得到识别结果。
其中,步骤1.1中,每个网格的大小为4*4像素,即m=w/4,n=h/4,w和h分别为二维图像的长和宽;步骤1.2中,对极几何模型公式为:
pl=r(pr-t)
(rtpr)t·t×pl=0
其中,pl为前一帧二维图像中的特征点,pr为后一帧二维图像中的特征点,rt为旋转矩阵r的转置。
本发明采用特征点的方法识别3d物体,而不需要重构物体的3d结构,故只要存储可用于识别的3d特征点(点云)以及关键帧即可,这样极大减省了存储的数据量。此外3d点云中,没必要存稠密的点云,因为某个小区域内只要有稳定的特征点就能匹配,这样再次减少了数据,也就减少了运算。本发明利用线下完成3d点云的生成以及关键帧的选取,利用线上实时识别3d物体。