具体实施方式
以下对本发明的实施方式作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
图1是根据本发明一个实施例的结构光深度相机原理图。深度相机包括结构光投影模组10以及采集模组20,结构光投影模组10用于向空间中投射结构光光束,当结构光光束照射到平面60上时,将在区域30上产生结构光图案50,采集模组20用于采集其采集区域40内物体上的结构光图像,一般投影区域30不小于采集区域40,由此来保证采集模组对应的采集区域中的物体都能被结构光图案所覆盖。
当结构光图案照射到物体表面时,物体表面的3维形状会使得结构光图案相对于预设的图案发生变形,变形的幅度与物体的深度之间有对应关系。因此在进行深度计算时,首先将被物体反射的结构光图案与预设图案(参考结构光图像/图案)进行匹配计算,这里的匹配计算指的是在当前结构光图像(或参考结构光图像)上以某像素为中心选取一定大小的子区域,比如7x7、11x11像素大小的子区域,然后在参考结构光图像(或当前结构光图像)上搜索与子区域最为相似的子区域,两个子区域在两幅图像上像素坐标之间的差值即为偏离值;其次利用偏离值与深度值之间的对应关系,基于偏离值就可以计算出深度值,多个像素的深度值就构成了深度图像。这里的偏离值一般指的是沿基线方向上的偏离值,基线指结构光投影模组10与采集模组20之间的中心连线,在本发明中以基线方向为x方向为例进行说明,因此一般要求结构光图像沿基线方向上有非常高的不相关性,防止出现误匹配现象。
在一些实施例中,结构光深度相机也可以包括两个或更多个采集模组20,以两个为例,结构光投影模组10向两个采集模组20(左、右)的视场区域投射结构光图案,左、右采集模组20同时获取左、右结构光图像,基于双目视觉算法通过对左、右结构光图像的计算也可以获取深度图像;也可以分别对左、右结构光图像与各自对应的参考结构光图像进行计算以获取两幅深度图像,这样做的好处在于,在一个实施例中可以将左、右采集模组设置成具有不同参数,比如分辨率、焦距等,由此可以同时采集具有比如不同分辨率、视场角等的结构光图像,进一步地,可以同时获取不同分辨率、视场角等的深度图像;在一个实施例中,还可以将获取的多个深度图像融合成一幅具备更多信息的深度图像。
实现深度计算功能可以是配置在深度相机内的深度计算处理器来执行,该处理器可以专用处理器如SOC、FPGA等,也可以是通用处理器。在一些实施例中,也可以利用外部计算设备,如计算机、移动终端、服务器等设备,外部计算设备接收来自采集模组20的结构光图像后实施深度计算,得到的深度图像可直接用于该设备的其他应用。
在一个实施例中,结构光投影模组用于投影红外斑点图案,采集模组为对应的红外相机,处理器为专用的SOC芯片。当深度相机作为嵌入式装置集成到其他计算终端时,如电脑、平板、手机、电视等,上面所述的处理器所实现的功能可以由终端内的处理器或应用来完成,比如将深度计算功能以软件模块形式存储在存储器中,被终端内的处理器调用从而实现深度计算。
结构光图案可以是条纹图案、二维图案、散斑图案(斑点图案)等,本发明将以用于发射斑点图案的结构光投影模组及其深度相机为例进行说明,其他种类的投影模组及其深度相机也可利用本发明的思想。
图2是根据本发明一个实施例的结构光投影模组的示意图。结构光投影模组10包括由多个子光源202组成的光源阵列201(比如垂直脸面激光发射器阵列芯片,即VCSEL阵列芯片)、透镜203以及衍射光学元件DOE204。为了以示便利,在图中仅在一维x方向上画出了3个子光源,在实际的实施例中,光源数量可以达到几十甚至上万个,光源也可以以二维排列,排列形式可以为规则,也可以不规则。
光源阵列201发射出的光束可以形成与光源排列对应的图案化光束,该图案化光束经透镜203汇聚后入射到DOE204上,由DOE204向空间中投射斑点图案化光束,该斑点图案化光束入射到平面205上将会形成斑点图案。这里的汇聚指的是透镜203将一定发散角的入射光束经汇聚后以更小发散角的出射光束进行出射,图中仅用单个线条来表示单个光束的传播,为简便起见,没有示意出光束的宽度以及汇聚等效果。透镜203可以是单透镜,也可以多个透镜组成的透镜组合或透镜阵列,在一些实施例中用于准直光源201所发射的光束。
由于各个子光源之间可以看成是非相关光源,相互之间干涉效应可以忽略,因此该投影模组201发射的斑点图案满足线性条件,即投影模组10所形成的斑点图案可以看成是由光源201中各个子光源发射的光束经DOE204后独立形成的子斑点图案叠加而成。
为简便起见,图2所示实施例中仅分析DOE204对入射光束形成沿x方向上的3个衍射级(以-1级,0级以及1级为例,也可以为其他衍射级数)的情形,实际上可以形成沿x及y方向上的更多个衍射级数。DOE204接收来自透镜203的光束后对光束进行衍射,并形成在衍射角度θ范围内的3个衍射级,所有衍射级形成的图案为该子光源的子斑点图案。在本实施例中,通过对DOE衍射角度θ以及光源阵列尺寸的综合设计(包括DOE衍射角度、相邻衍射级之间的夹角、光源阵列大小、透镜焦距以及各个子光源相对于DOE的入射角等),使得多个子光源的子斑点图案相互交叉,并且使得不同子斑点图案中相同级数的斑点聚焦在一起从而形成斑点块,图中由1级衍射斑点组成斑点块206、0级衍射斑点组成斑点块207、-1级衍射斑点组成斑点块208,多个斑点块平铺排列共同组成结构光斑点图案。根据图2所示,可以理解的是,每个斑点块中斑点和排列与光源201中子光源202的排列相对应,比如排列图案相同或者成中心对称关系等,另外斑点块的排列方式与子斑点图案中斑点的排列方式相同。
为了使得结构光斑点图案中斑点分布的密度相对均匀且满足不相关性,一方面通过对子光源202的排列进行设计使得斑点块206内部的斑点排列满足不相关性,另一方面通过对DOE204进行设计以使得各个斑点块206以平铺排列的方式以保证所有的斑点块能覆盖整个投影区域。
图4是根据本发明一个实施例的光源排列、子斑点图案以及结构光斑点图案示意图。图4(a)、(b)和(c)分别对应于图2所示实施例中投影模组10中光源201、单个光束经DOE204形成的子斑点图案以及结构光斑点图案。图4(a)中,光源包括衬底401以及布置在衬底401上的子光源402所形成的光源阵列,在本实施例中,子光源402阵列中子光源的排列为不规则排列,而子斑点图案中斑点分布为规则分布,由此可以使得最终形成的结构光图案中各个斑点块405的排列也如子斑点图案中各个斑点的排布相同的规则排列。在本实施例中,各个子光源402所组成的排列图案的轮廓(图中用虚线表示,实际产品中可以不包含该轮廓线)为不规则轮廓,因此各个斑点块405的轮廓也为不规则轮廓,当斑点块405以相互邻接的平铺方式形成结构光斑点图案404时,邻接的斑点块405边缘为不规则(图4中示意的是起伏的非直线状),且相邻的斑点块之间相互耦合(需要注意的是,实际的结构光斑点图案由于透镜的畸变会产生变形,并非如图中的理想情形)。斑点块405的轮廓沿x和/或y方向均为非直线,可以理解的是,因相邻斑点块的边缘为非直线,其必然不与基线相重合,即与基线方向x不一致。相对于将子光源402排列的图案设置成方形的情形,轮廓为非直线时的块与块之间相互耦合的排列方式可以进一步提升相邻块邻接处斑点的不相关度以及密度均匀性。在图4(c)中,由多个斑点块405通过相互邻接的平铺排列方式形成结构光斑点图案404,为了方便示意出斑点块405之间的连接,因此画出虚线来表示轮廓,导致连接的地方较为密集,实际的图案中没有虚线,连接的地方密度也会相对均匀。
从图4(c)中可以看出,通过非直线轮廓之间相互耦合的排列形式可以提高相邻块连接处斑点分布的随机性,然而不利因素则是在结构光斑点图案的边缘处也会出现非直线起伏的轮廓,由于采集模组的视野往往是方形(这里依然以理想情形下进行分析,忽略图像畸变),因此该结构光斑点图案的有效区域406要小于所有斑点块405组成的整体结构光斑点图案404。
图3是根据本发明另一个实施例的结构光投影模组的示意图。由多个子光源302组成的光源阵列301发射出光束后经过透镜303汇聚入射到DOE304后向平面305上发射结构光斑点图案。与图2所示实施例不同的是,本实施例中DOE304的衍射角度θ相对较小,使得每个子光源发射的光束经DOE304衍射后形成的子斑点图案相互之间没有交叉,即直接形成一个斑点块,如图3中所示,子光源3021、3022、3023经DOE304衍射形成的由不同衍射级数的斑点组成的子斑点图案分别为308、307以及306。与图2所示实施例不同的是,多个子斑点图案之间没有交叉且共同组成结构光斑点图案。从图3中可以看出,多个子斑点图案的排列方式与子光源302的排列方式相对应。
图5是根据本发明另一个实施例的光源排列、子斑点图案以及结构光斑点图案示意图。图5(a)、(b)和(c)分别对应于图3所示实施例中投影模组10中光源301、单个光束经DOE304形成的子斑点图案以及结构光斑点图案。图5(a)中光源由衬底501以及子光源502组成,子光源502规则排列,以使得子斑点图案通过相应的规则排列以平铺排列方式覆盖投影区域形成结构光斑点图案,如图5(c)所示;图5(b)为单个子光源发射的光束经由DOE304衍射后由多个衍射级数的斑点组成的子斑点图案503;图5(c)所示的是结构光斑点图案504,该图案由多个子斑点图案505(即子斑点图案503)共同组成,子斑点图案505的排列方式与子光源502的排列方式相对应。在本实施例中,为了使得结构光斑点图案满足不相关性特性,子斑点图案(斑点块)503中斑点的排列为不规则排列,这一需求可以通过对DOE304进行设计,使得相邻衍射级数光束夹角不均匀分布来实现。在本实施例中,子斑点图案503的轮廓沿x和/或y方向为非直线,并且相邻的子斑点图案之间相互耦合组成结构光斑点图案。
需要说明的是,图4、图5中的各个图案均为示意性描述,图案的比例并非严格按照实际的产品设计。这里所说的平铺排列方式即是将多个子图案以非重叠的形式进行排列,并形成最终的图案以基本覆盖视场区域,平铺排列方式除了将子图案相互邻接之外,还包括以一定的间隙来排列,具体见以下实施例。
图6是根据本发明一个实施例的结构光斑点图案示意图。在一些实施例中,为了进一步扩大投影模组的投影区域,由多个斑点块602(或子斑点图案)通过平铺排列方式组成结构光斑点图案601时,相邻块之间在相互耦合时不再邻接,而是错开一定的间隙603。然而并非间隙越大越好,可以理解的是,当间隙加大时,在进行匹配计算时,子区域内的空白区域也会越大,由此会使得深度值精度降低或无法计算出深度值,如图9中子区域903以及子区域906所示,区域中仅有少数斑点。因此间隙的大小一般需要结合深度计算算法中子区域604的大小来进行设置。
当斑点块602的边缘形状为非直线时,由于子区域604大小一般为方形,即其边缘形状为直线,在对间隙周边的像素进行子区域选取以及匹配计算时,子区域604中均能包含相邻斑点块中的斑点,由此可以提升间隙周边子区域的不相关度。而对于斑点块602的边缘形状为直线时,间隙周边会存在大量子区域中仅包含单个块中的斑点以及空白间隙,此时的子区域中斑点排列的不相关度较低。
除了可以提高子区域的不相关度之外,不规则的边缘形状还可以提升投影区域的面积。图9所示的是根据本发明一个实施例的子区域与块间间隙关系示意图。当子区域的大小一定时(子区域大小决定了深度计算算法的精度与效率,因此一般选取一个折中的数值),对于斑点块为方形的情形,如图9(a)所示,相邻斑点块901以及902为方形,其轮廓与子区域的一条边平行,为了使得子区域中存在斑点,理论上子区域的边长h不小于相邻斑点块之间的间隙g1(实际上要远小于子区域的边长,比如设置成边长的一半),即h≥g1;然而对于边缘轮廓为非直线的斑点块时,如图9(b)所示,相邻斑点块之间的间隙g2则不一定要求小于子区域边长h。对比图9(a)与图9(b),可明显看出g2>g1,即对于轮廓为非直线的斑点块面言,在子区域大小一定的情况下,其相邻斑点之间的间隙相对较大,因此可以获取较大的视场。相反地,在间隙相同的情形下,非直线轮廓的斑点块组成的结构光斑点图案在进行匹配计算时,可以采用更小的匹配子区域,由此可以加快匹配计算的速度,从而提高深度图像的输出帧率。
为进一步提升图案的不相关度,还可以将相邻的斑点块相互错位排列,如图7所示。在图7中,相邻的斑点块702与705沿y方向错位排列,由此可以提升沿基线x方向块与块之间的不相关度。在图7所示实施例中,相邻块之间有间隙703,可以理解的是,在无间隙的实施例中也可以采用错位排列方案。
图4以及图5所示的实施例中,图4将子光源排列图案设置成边缘非直线形式,图5将子斑点图案设置成边缘非直线形式,以使得组成结构光斑点图案的多个块中相邻块之间相互耦合,从而提升结构光斑点图案的不相关度。除了图中所示的斑点图案形式之外,还可以有其他多种样式,比如边缘为波浪形式等。可以理解的是,边缘为非直线时,相邻块邻接的边必然与基线方向不一致,且相邻块的邻接边可以相互耦合。除此之外,边缘为直线时,相邻块邻接的边也可以与基线方向不一致,且相邻块的邻接边相互耦合。比如图8是根据本发明又一个实施例的结构光图案示意图。结构光图案801由多个斑点块802(或子斑点图案)组成,斑点块为棱形形状,相邻的块之间相互耦合,在有效区域803中的任一间隙周边任意选取一个子区域,子区域中均包含至少两个块中的斑点,因此该结构光斑点图案的不相关度较高。
在一些应用中,往往需要获取高分辨率的深度图像,此时投影出更高密度的斑点图案将有利于高分辨率深度图像的获取。
图10是根据本发明一个实施例的投影高密度图案的结构光投影模组的示意图。投影模组10包括由多个子光源1002组成的光源阵列1001、透镜1003以及DOE1004,与图2所示实施例不同的时,由DOE1004出射的光束入射到平面1005上所形成的结构光斑点图案相对于图2中的结构光斑点图案具有更高的密度。图2中由相同衍射级数斑点组成的斑点块通过平铺排列(邻接或者以适当的间隙排列)的方式组成结构光斑点图案,而在本实施例中,斑点之间通过相互重叠来提高斑点的密度分布。图10中示意性地给出了由六个不同衍射级(以-2,-1,0,1,2,3级为例)的斑点块1006通过重叠所形成的结构光斑点图案。
实际上,并非任意形式的重叠均能产生可以用来进行深度计算的结构光斑点图案,这是由于要想计算出深度图像,结构光斑点图案的密度分布也会影响到其不相关度,进一步影响到深度图像的计算,密度分布相对均匀的结构光斑点图案最为理想。因此,在通过重叠提高图案密度的同时,也需要尽可能保证密度分布的均匀性。
为了使得图案密度相对均匀,本发明提出了一种重叠方案。为了便于显示出重叠方案,在图中将平面1005上的多个不同衍射级数的斑点块1006在z方向上错开分布,可以理解的是,实际上所有的斑点块均形成在平面1005上。在如图10所示的实施例中,衍射级数为2,0,-2的三个斑点块通过相互邻接形成第一次结构光斑点图案,衍射级数为3,1,-1的三个斑点块通过相互邻接形成第二次结构光斑点图案,第一次结构光斑点图案与第二次结构光斑点图案之间以一定的距离错开并相互重叠,两个次结构光斑点图案的重叠区域为1007,该区域也为投影仪10的有效投影区域,未重叠的边缘区域密度相对于重叠区域的密度要低。由于每个次斑点结构光斑点图案是通过多个斑点块相互邻接组成,因此其密度分布较为均匀,当多个均匀的次斑点结构光图案以交错叠加的方式重叠后,重叠区域的斑点图案密度分布也较为均匀。因此,这种重叠方案将有利于生成密度分布较为均匀的结构光斑点图案。
图12是根据本发明一个实施例的重叠图案示意图。在图11中仅示意性地给出了一维上的重叠方案,为了进一步示意性说明,图12给出了二维上的重叠方案。图12(a)所示的是由9个不同衍射级(对应于图中的横、纵坐标)的斑点块组成的第一次结构光斑点图案1201,图12(b)所示的是由9个斑点块组成的第二次结构光斑点图案1202,图12(c)是由第一、第二次结构光斑点图案通过交错排列而形成的结构光斑点图案。第二次结构光斑点图案相对于第一次结构光斑点图案沿第一方向(x)以及与第一方向垂直的第二方向(y)上分别错开距离Sx与Sy。可以理解的是,两个次结构光斑点图案也可以仅沿x或y方向错开一定的距离来实现相互重叠。当两个次结构光斑点图案沿单个方向(例如x方向或y方向)进行重叠时,相应方向上的密度会增加。重叠的区域1203中的密度相对于边缘未重叠区域的密度得以增加,如放大图1204与1205中图案密度分布示意图所示,重叠区域1203为有效投影区域。
在图12所示实施例中,次结构光斑点图案中各个斑点块是通过相互邻接来组成的,图13则给出了另一种重叠方案的实施例,在本实施例中,次结构光斑点图案中斑点块之间设置一定的间隙,从而来提高投影面积。图13(a)所示的是由9个不同衍射级(对应于图中的横、纵坐标)的斑点块组成的第一次结构光斑点图案1301,图13(b)所示的是由9个斑点块组成的第二次结构光斑点图案1302,图13(c)是由第一、第二次结构光斑点图案通过交错排列而形成的结构光斑点图案。从图中可以看出,第一、第二次结构光斑点图案均是由多个斑点块以一定的间隙排列而成。
图12与图13所示实施例中,示意性地给出了由两个次结构光斑点图案通过重叠产生高密度且分布均匀的结构光斑点图案,根据这一发明思想,可以想到的是,由两个或两个以上的次结构光斑点图案通过重叠来产生更高密度的结构光斑点图案也是可行的。图14所示是根据本发明一个实施例的由3个次结构光斑点图案通过重叠产生结构光斑点图案示意图。这里以图14(a)所示的是由9个不同衍射级(对应于图中的横、纵坐标)的斑点块组成的第一次结构光斑点图案1401,图14(b)所示的是由9个斑点块组成的第二次结构光斑点图案1402,图14(c)所示的是由9个斑点块组成的第三次结构光斑点图案1403,图14(d)是由第一、第二以及第三次结构光斑点图案通过交错排列而形成的结构光斑点图案。三个次结构光斑点重叠的共同区域1404密度最高。
图12~14仅示例性说明,实际上错位的距离相对于整个视场角面议非常小,即边缘密度较小的非重叠区域或重叠程度较小(如图14所示有两个次结构光斑点图案重叠的区域)的区域要远小于有效投影区域1203、1303以及1404。
图11所示的是根据本发明又一实施例的投影高密度图案的结构光投影模组的示意图。本实施例是相对于图3所示实施例而言,组成结构光斑点图案的多个子结构光斑点图案1106以一定的重叠方式进行重叠以形成高密度的结构光斑点图案。在本实施例中,以沿x方向上依次排列的5个子光源1102为例进行说明,5个子光源1102经由透镜1103以及DOE1104分别生成子结构光斑点图案a、b、c、d和e。其中子斑点图案a、c、e以平铺排列(即相互邻接排列或间隙排列)的方式组成第一次结构光斑点图案,子斑点图案b和d以平铺排列的方式组成第二次结构光斑点图案,第一次结构光斑点图案与第二次结构光斑点图案以定的错位重叠以形成最终的结构光斑点图案,重叠区域1107的密度相对于任一次结构光斑点图案得以提升,重叠区域1107即为投影模组10的有效投影区域。由多个次结构光斑点图案相互重叠以产生密度高的结构光斑点图案也可以如图12~14的重叠形式,只不过图12~14中的斑点块在本实施例中为子斑点图案。
多个次结构光斑点图案的大小既可以相同(如图10所示实施例所示)也可以不相同(如图11所示实施例所示),在实际应用中,可以根据需求进行配置。例如对于图11所示实施例,可以先配置一个第一次结构光斑点图案,该图案设计成与有效投影区域对应(例如图11中由子斑点图案b以及d组成的有效投影区域1107),另外再配置一个区域稍大且能覆盖住第一次结构光斑点图案的第二次结构光斑点图案(例如图11中由子斑点图案a、c以及e组成的区域),由于组成每个次结构光斑点图案的子斑点图案是由单个光源经DOE衍射组成的,因此在进行配置时,区域较小的第一次结构光斑点图案所需要的光源数量应少于第二次结构光斑点图案对应的光源数量,相对于多个次结构光斑点图案区域大小相同的情形,本实施例可以减少光源数量,从而降低功耗。
可以理解的是,图10~图14所示的实施例中,光源排列图案(斑点块)以及子斑点图案的轮廓形状也可以设置成如图4~图8所示实施例中的非直线形式。
对于图2与图10所示的实施例,结构光斑点图案由斑点块组成,每个斑点块由多个子光源的相同衍射级组成,由此可以理解的是,当多个子光源被配置成可以独立或分组控制时,结构光斑点图案的投影区域大小不会变化,然而其图案的密度会发生变化,开启的子光源数量越多,密度越大。因此在一些实施例中,可以将光源阵列中的多个光源分成多个子阵列,子阵列在空间排布上可以相互交叉排列,也可以平铺排列,在进行投影时,通过控制子阵列的开关可以产生不同密度的结构光斑点图案投影,由此可以适应不同需要的应用。
对于图3与图11所示的实施例,结构光斑点图案由子斑点图案组成,其中子斑点图案是由阵列光源中的单个子光源所形成的,因此将光源阵列进行中的子光源进行独立或分组控制将会直接影响到投影区域的大小或密度,以下将结合具体实施例进行说明。
比如对于基于图3所示原理且如图5所示的结构光斑点图案形成实施例中,若将光源阵列中的多个子光源502分组控制,比如将中间区域507中的子光源为一组形成第一子光源阵列,周边的子光源为一组形成第二子光源阵列,由此则可以产生投影图案区域大小不同的两种投影效果。当仅第一子光源阵列打开时,形成如图5(c)中的区域508所对应的第一结构光斑点图案;而当第一子光源阵列以及第二子光源阵列同时打开时,则可以形成如图5(c)中的结构光斑点图案504。如此设置可以更好地节约功耗,比如对于一些视场较小的应用,仅需要打开少数子光源即可以满足需求。在一些实施例中,也可以设置更多组子光源阵列,甚至每个子光源均可以独立控制。
再比如,对于图11所示的实施例,将光源阵列中的子光源进行独立或分组控制不仅可以改变投影图案区域大小,甚至可以改变图案密度。假设图中子光源1102自下而上分别标记为A、B、C、D、E(图中未示出),其分别产生的子结构光斑点图案为a、b、c、d、e。若将子光源A、C、E分为一组形成第一子光源阵列,子光源B、D为一组形成第二子光源阵列,当仅有第一子光源阵列打开时,将产生由子结构光斑点图案a、c、e共同组成的面积为S1、分布密度为D1的第一结构光斑点图案;当仅有第二子光源阵列打开时,将产生由子结构光斑点图案b、d组成的面积为S2、分布密度为D2的第二结构光斑点图案;而当第一子光源阵列与第二子光源阵列同时打开时,将产生由子结构光斑点图案a、b、c、d、e共同组成的面积为S3(指有效投影面积)、分布密度为D3的第三结构光斑点图案。从图中可以看出:
S1>S2=S3,
D1=D2<D3,
基于本思想,在一些实施例中,光源阵列也可以有其他形式的分组或独立控制方式,在此不予以举例说明。因此,在本实施例中,可以通过对光源阵列中子光源的独立或分组控制以投影出多种面积、多种密度的结构光斑点图案。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。