一种基于三维映射表的三维点云快速重建方法

文档序号:10553657阅读:348来源:国知局
一种基于三维映射表的三维点云快速重建方法
【专利摘要】本发明公开了一种基于三维映射表的三维点云快速重建方法,获取相机的参数矩阵,根据参数矩阵生成三维映射表,通过查询三维映射表得到图像坐标在不同像素值时的世界坐标,从而形成图像的三维点云。本发明的方法可以有效降低三维点云恢复的计算量,仅通过查询三维映射表,即可实现三维点云的恢复,具有高实时性、低计算量的优点。
【专利说明】
一种基于三维映射表的三维点云快速重建方法
技术领域
[0001] 本发明属于相机的三维场景重建领域,具体涉及一种基于三维映射表的三维点云 快速重建方法。
【背景技术】
[0002] 目前,RGB-D相机逐渐广泛应用到各个领域,如三维重建,图像理解和视频监控领 域,RGB-D相机可以获得距离物体的距离,该距离可以以图像的形式被用户获得(这种图像 被称为深度图像)。正因为RGB-D相机的特性,在相机标定后,可以利用标定参数直接恢复深 度图像的三维信息。传统的对三维信息进行恢复的方法,直接使用相机的标定参数,对深度 图像进行三维恢复,这种方法的局限性在于,计算量较大,且无法实时地进行三维场景重 建。

【发明内容】

[0003] 针对上述现有技术中存在的问题或缺陷,本发明的目的在于,提供一种基于三维 映射表的三维点云快速重建方法,该方法能够对三维点云进行实时的恢复。
[0004] 为了实现上述目的,本发明采用如下技术方案:
[0005] -种基于三维映射表的三维点云快速重建方法,包括以下步骤:
[0006] 步骤一,进行相机标定,得到相机的参数矩阵P;
[0007] 步骤二,根据参数矩阵P生成三维映射表,三维映射表的(x,y,d)位置上存储的是 图像坐标(x,y)在像素值为d时对应的世界坐标(X xyd,Yxyd,Zxyd);
[0008] 步骤三,利用相机获取深度视频流,遍历深度视频流中的每帧图像上的图像坐标 (X,y)的不同像素值d,图像坐标(x,y)在像素值为d时在三维映射表中对应的位置为(x,y, d),查询三维映射表得到位置(x,y,d)对应的世界坐标(Xxyd,Yxyd,Zxyd),每帧图像上的所有 图像坐标(x,y)在不同像素值d时的世界坐标(X xyd,Yxyd,Zxyd)形成该帧图像的三维点云。
[0009] 具体地,所述步骤二中根据参数矩阵P生成三维映射表,包括以下步骤:
[0010] 步骤2.1:定义三维映射表的结构,三维映射表包括坐标轴X、坐标轴y和坐标轴d, 其中,坐标轴x是图像坐标(x,y)的横坐标,坐标轴y是图像坐标(x,y)的纵坐标,坐标轴d是 图像坐标(x,y)的像素值;
[0011] 步骤2.2:针对图像坐标系上所有的图像坐标(x,y),分别计算每个图像坐标(x,y) 在不同像素值d时对应的世界坐标系上的世界坐标〇_八_,2_),利用求得的世界坐标 (X xyd,Yxyd,Zxyd)填充三维映射表。
[0012] 具体地,所述步骤2.2的实现方法包括:
[0013] 步骤2.2.1:求图像坐标(x,y)对应的射线与世界坐标系中的X-Y平面的夹角0xy:
[0015]其中,H表示相机在世界坐标系中的架设高度,XxJPYxy分别表示图像坐标(x,y)对 应的世界坐标的横坐标和纵坐标;
[0016]步骤2.2.2:遍历图像坐标(1,7)处的像素值(1,(1£[0,255),计算图像坐标(1,7)在 像素值为d时对应的世界坐标(Xxyd,Yxyd,Zxyd):
[0017] Zxyd = H-kdsin9xy ______ 尤》,"1 「Al - A,-尸a'T「-尸14 -
[0018] , w' 」LAiU P22 -Pn)'j lP34y - P24 + (P33}' ~ P23 )ZwJ _
[0019]其中,叫(1彡i<3,l<j<4)表示参数矩阵P中的元素;k为像素值与实际距离的比 值;
[0020] 步骤2 ? 2 ? 3:选取下一个图像坐标(X,y),重复步骤2 ? 2 ? 1和步骤2 ? 2 ? 2,直至遍历完 整幅图片中的所有图像坐标,得到三维映射表。
[0021] 与现有技术相比,本发明具有以下技术效果:本发明的方法可以有效降低三维点 云恢复的计算量,仅通过查询三维映射表,即可实现三维点云的恢复,具有高实时性、低计 算量的优点。
[0022] 下面结合附图和【具体实施方式】对本发明的方案做进一步详细地解释和说明。
【附图说明】
[0023]图1是选定的N(N彡6)组点;
[0024]图2是世界坐标系模型;
[0025]图3是N组图像坐标系上的点与对应的空间坐标点;
[0026]图4是RGB-D相机米集到的一段深度视频流中的多帧图像(注:深度视频流是从 RGB-D采集的深度图序列);
[0027]图5是对图4中的深度视频流恢复出的每帧图像的点云;
[0028]图6是三维映射表的空间结构图。
【具体实施方式】
[0029]本发明的基于三维映射表的三维点云快速恢复方法,通过相机标定、生成三维映 射表和使用三维映射表,将深度图片快速恢复至3D空间中,本发明方法包括以下步骤:
[0030]步骤一,进行相机标定,得到相机的参数矩阵P,参数矩阵P为3*4的矩阵,矩阵中每 个元素均表示一个相机参数。
[0031 ]步骤1. 1:在现实场景中,建立图像坐标系和世界坐标系,将相机固定在世界坐标 系中的某个位置上;
[0032]步骤1.2:在图像坐标系和世界坐标系上选定N组--对应的标定点。通过标定支 架或者其他标定方法,如线标定、灭点标定和体标定,获得N组(N> 6)图像坐标系上的点和 与之对应的世界坐标系上的点,如图1和图2所示,其中,(x,y)是图像坐标系上的点,即图像 坐标,(X,Y,Z)是与(x,y)对应的世界坐标系上的点,即世界坐标,如: 图像坐标世界坐标 g分 ^ \ rV' It
[0033] CV2> (HQ (%.J%) (VM
[0034]步骤1.3,根据选择的标定点计算相机参数矩阵P,计算公式如下: Pn Pn Pn Pu r n P = Pn Pn Pn Pi4 / , x
[0035] (1) Pm Pn P34. = (V!V) 'V!u
[0036] 其中 'X, i; Zj 1 「 n T,尤 r2 乙 1
[0037] K= \ :. H A 1. A >'t 1 .x9 1
[0038] U.二二;. .? i'
[0039] 其中,参数矩阵P中的每一个元素均表示一个相机的参数。
[0040] 步骤二,根据参数矩阵P生成三维映射表。包括以下步骤:
[0041 ]步骤2.1:定义三维映射表的结构,如图6所示。
[0042]其中,H、W分别对应三维映射表空间中图像的行数和列数,D是相机的最远检测距 离。x是图像的横坐标,坐标轴x为三维映射表第一维;y为图像的纵坐标,坐标轴y为三维映 射表第二维;d是(x,y)处的像素值,坐标轴d为三维映射表第三维。三维映射表(x,y,d)位置 存储的是图像坐标(x,y)像素值为d时对应的世界坐标(X xyd,Yxyd,Zxyd)。
[0043] 步骤2.2:针对图像坐标系上所有的图像坐标(x,y),分别计算每个图像坐标(x,y) 在不同像素值d时对应的世界坐标系上的世界坐标(Xxyd,Y Xyd,ZXyd ),利用求得的世界坐标 (Xxyd,Yxyd,Zxyd )填充三维映射表;包括以下步骤:
[0044] 步骤2.2.1:求图像坐标(x,y)对应的射线与世界坐标系中的X-Y平面的夹角0xy。
[0045] 给定图像坐标(x,y),其对应的射线不随当前图像坐标(x,y)的像素值d的变化而 变化,即该射线与X-Y平面的夹角0 xy不随像素值d的变化而变化。
[0046] 设图像坐标(x,y)对应的世界坐标系中的Zxy = 0,那么,根据相机的参数矩阵P,可 得图像坐标(x,y)对应的世界坐标(Xxy,Yxy,0),即: - Al - :?3.ll P\2 ~ ~ Pu (^3^""~ Pn v yxr [Pn -p^y p?2 -p^y\ [Pi4y - Pu+(p^y - Pn )z,,
[0047] ' =A广 ftrT Pu-Pnx P34-X-Pu Pu-Pny Pn -Pay] [p^y~-PiA\ (2)
[0048]相机的世界坐标为(0,0,H),根据勾股定理可得:
(3) (4)
[0052]步骤2.2.2:遍历图像坐标(1,7)处的像素值(1,(1£[0,255),计算图像坐标(1,7)在 像素值为d时对应的世界坐标(Xxyd,Yxyd,Zxyd)。即:
[0053] Zxyd = H-kdsin9xy r n [Xv,,/ \pn- Pnx Pn -PnAl\ Pmx ~Pu+(Pax ~ Pn )Z,
[0054] = ...... 、7 ^ [^2! ~Pn}' Pn -Pny\ [P?y- Pia + (Pay ~ Pn)Zrni ( 5)
[0055] 其中,k为像素值与实际距离的比值;
[0056] 将求出的图像坐标(x,y)在不同像素值d时的(Xxyd,Yxyd,Zxyd)保存到三维映射表的 (x,y,d)位置。
[0057] 步骤2.2.3:选取下一个图像坐标(x,y),重复步骤2.2.1和步骤2.2.2,直至遍历完 整幅图片中的所有图像坐标,得到三维映射表,将三维映射表保存至磁盘。
[0058]步骤三,加载在步骤二中储存的三维映射表,利用相机获取深度视频流,深度视频 流是从RGB-D相机米集的深度图序列,遍历深度视频流中每帧图像上图像坐标(x,y)的像素 值d,图像坐标(x,y)在像素值为d时在三维映射表中对应的位置为(x,y,d),查询三维映射 表得到位置(X,y,d)对应的世界坐标(Xxyd,Yxyd,Zxyd ),遍历完成后,每帧图像上的所有图像 坐标(X,y)在不同像素值d时的世界坐标(Xxyd,Yxyd,Z xyd)形成该帧图像的三维点云。
[0059]本发明的方法可以有效降低三维点云恢复的计算量,参见步骤三,仅通过查询三 维映射表,即可实现三维点云的恢复,具有高实时性、低计算量的优点。
[0060] 实施例
[00611在实施例处理过程中,采样频率为25帧/秒,帧图像的大小为320X240,图4是从 RGB-D相机采集的深度视频流的一段,采用本发明的方法对深度图进行点云恢复。
[0062]步骤一,建立世界坐标系,如图2,选定相机正下方的地面为世界坐标系的原点,X-Y平面平行于地面;使用标定支架,获取6组图像坐标系上的点与其对应的世界坐标系上的 点,如图3;计算相机的参数矩阵P。
[0063]步骤二,根据参数矩阵P生成三维映射表。生成结构为Sheet [240] [320] [200] [3] 的三维映射表,其流程伪代码如下:
[0065]将生成的 Sheet[240][320][200][3]保存至磁盘。
[0066] 步骤三,加载磁盘上的三维映射表,从RGB-D相机获取深度视频流,利用三维映射 表,直接将深度视频流中的每帧图像上的图像坐标(x,y,d)映射到世界坐标(X,Y,Z),其伪 代码流程如下:
[0068]使用OpenGL绘制出每幅图像的点云,如图5,在三维坐标系内,灰色的点是恢复的 三维点云。
【主权项】
1. 一种基于=维映射表的=维点云快速重建方法,其特征在于,包括W下步骤: 步骤一,进行相机标定,得到相机的参数矩阵P; 步骤二,根据参数矩阵P生成=维映射表,=维映射表的(x,y,d)位置上存储的是图像 坐标(X,y ;)在像素值为d时对应的世界坐标(Xxyd,Yxyd,Zxyd ); 步骤=,利用相机获取深度视频流,遍历深度视频流中的每帖图像上的图像坐标(X,y) 的不同像素值d,图像坐标(x,y)在像素值为加寸在=维映射表中对应的位置为(x,y,d),查 询S维映射表得到位置(x,y,d)对应的世界坐标村巧<1,¥如,2巧4),每帖图像上的所有图像坐 标(X,y)在不同像素值加寸的世界坐标(Xxyd,Yxyd,Zxyd)形成该帖图像的S维点云。2. 如权利要求1所述的基于=维映射表的=维点云快速重建方法,其特征在于,所述步 骤二中根据参数矩阵P生成=维映射表,包括W下步骤: 步骤2.1:定义=维映射表的结构,=维映射表包括坐标轴X、坐标轴y和坐标轴d,其中, 坐标轴X是图像坐标(x,y)的横坐标,坐标轴y是图像坐标(x,y)的纵坐标,坐标轴d是图像坐 标(x,y)的像素值; 步骤2.2:针对图像坐标系上所有的图像坐标(x,y),分别计算每个图像坐标(x,y)在不 同像素值d时对应的世界坐标系上的世界坐标(Xxyd,Yxyd,Zxyd ),利用求得的世界坐标(Xxyd, Yxyd, Zxyd)填充S维映射表。3. 如权利要求2所述的基于=维映射表的=维点云快速重建方法,其特征在于,所述步 骤2.2的实现方法包括: 步骤2.2.1:求图像坐标(X _ V )对脉的射錶白世巧业标累由的X-Y平面的夹角目xy :其中,H表示相机在世界坐标系中的架设高度,Xxy和Yxy分别表示图像坐标(x,y)对应的 世界坐标的横坐标和纵坐标; 步骤2.2.2:遍历图像坐标(x,y)处的像素值CUdG [0,255),计算图像坐标(x,y)在像素 值为加寸对应的世界坐标(Xxyd,Yxyd,Zxyd): Zxyd = H-kd S i n 目 Xy其中,Pij (1《i《3,1《j《4)表示参数矩阵P中的元素;k为像素值与实际距离的比值; 步骤2.2.3:选取下一个图像坐标(X,y),重复步骤2.2.1和步骤2.2.2,直至遍历完整幅 图片中的所有图像坐标,得到=维映射表。
【文档编号】G06T17/00GK105913488SQ201610235008
【公开日】2016年8月31日
【申请日】2016年4月15日
【发明人】宋焕生, 孙士杰, 张朝阳, 刘瑞芝, 王璇, 陈艳, 李怀宇, 崔华, 张文涛, 张向清, 李莹, 严腾, 郑宝峰, 张斌
【申请人】长安大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1