本发明涉及电子目标识别,特别涉及用于构建3d目标模型并基于该模型跟踪3d目标的改进技术。
背景技术:
增强现实(ar)是物理、真实世界环境的直接或间接视图,其元素通过使用各种技术的计算机生成的感官输入(如声音、视频、图形等)来增强。与ar功能相关的一个问题是:难以定向相机,例如叠加图形的增强内容与相机视野内场景适当对准。现有技术里基于标记的ar技术,尝试克服该问题。在基于标记的ar里,应用程序被配置以识别存在于真实世界环境中的标记,这有助于定向和对准相机。标记可以是二维的,例如条形码或其他图形,或者可以是三维的,例如物理目标。
不管基于标记的ar应用程序是否利用二维标记、三维标记或两者,应用程序必须被编程以识别这些标记。通常,这是通过向应用程序提供一个标记模型来实现。二维标记模型的生成比三维标记更简单。例如,三维标记通常需要使用专用软件(例如,三维建模软件)或三维扫描仪来生成目标的三维模型。如果要使用大的标记库,生成用于基于标记的ar系统中的三维模型的过程是一个很耗时的过程,并且需要大量资源(例如,时间、成本、计算等)。
技术实现要素:
本发明公开描述了用于构建和使用一个用于跟踪三维目标的模型的系统、方法和计算机可读存储介质。在实施例中,可以使用多个二维图像来构建三维目标的模型。用于构建该模型的三维目标的图像可以由单目相机从多个位置拍摄。当图像被相机拍摄时,三维目标可以位于基座上,并且可以定义一个关于基座的坐标系。基座可以包括多个标记,并且可以至少部分地基于多个标记来定义该坐标系。基于拍摄的图像,该坐标系可以允许模型用于确定相机相对于三维目标的位置。在实施例中,模型可以包括与三维目标的一个或多个特征相关联的信息,例如,与从包括三维目标的图像中识别出的特征点相关联的信息。对特定图像,可以通过图像处理技术来识别三维目标的特征。
除了识别目标的特征或特征点之外,图像处理技术可以分析图像以识别出现在图像里的基座的任何标记。标记可以用于提供相机位置信息,其指示当图像被拍摄时的相机位置。相机位置信息可以与相应的特征相关联地存储。以这种方式,可以通过首先将在三维目标的图像里识别出的特征或特征点匹配到模型的特征或特征点,然后将特征点映射到在构建模型期间确定的相应的相机位置处,来确定相机的位置。这可以使得模型,基于当三维目标不在基座上时的三维目标的图像,来提供相机关于三维目标的位置信息。
在实施例中,可以通过使用单目相机配置的模型来跟踪三维目标。坐标系可以使模型能够在跟踪期间提供相机关于三维目标的位置信息。在跟踪操作期间,可以从相机接收图像或图像流。可以分析这些图像或图像流以识别出现在图像里的特征。然后可以将该特征与模型特征进行比较,以确定对应模型的三维目标是否出现在图像里。如果确定三维目标出现在图像里,则可以基于所述模型确定相机相对于目标的位置(例如,通过将从图像确定的特征与模型里的特征进行匹配,然后基于该模型将特征映射到相机位置)。在实施例中,相机相对于三维目标的位置可以允许ar应用引导用户如何将相机定位到目标相机位置,诸如适合执行ar操作的位置(例如,适当对准有关在图像里描绘的场景,叠加一个或多个图形在图像上)。
前面已经相当广泛地概述了本发明的特征和技术优点,以便可以更好地理解下面的详细描述。以下将描述形成权利要求主题的其他特征和优点。本领域技术人员应当理解,所公开的概念和具体实施例可以容易地用作修改或设计用于实现本申请相同目的的其它结构的基础。本领域技术人员还应该认识到,这样的等同结构不背离所附权利要求中所阐述的本申请的精神和范围。当结合附图考虑时,从下面的描述中将更好地理解被视为本文描述的实施例特征的新颖特征(关于其组织和操作方法两者),以及其他目的和优点。然而,应当清楚地理解,每个附图仅仅是为了说明和描述的目的而提供的,并不是既定作为本发明实施例的限定。
附图说明
为了更完整地理解,现结合附图进行以下描述,其中:
图1显示根据实施例的被配置为用于生成三维目标模型的基座方面的框图;
图2显示根据实施例的被配置为用于生成三维目标模型的基座的其它方面的框图;
图3显示根据实施例的已经为结合生成三维目标模型进行成像而准备的三维目标的框图;
图4显示根据实施例的关于基座而定义的坐标系的框图;
图5显示根据实施例的拍摄三维目标图像以构建三维目标模型的过程的框图;
图6显示根据实施例的拍摄三维目标图像以构建三维目标模型的过程的其它方面的框图;
图7显示被配置以利用基于标记的ar的应用方面的示意图;
图8显示根据实施例的生成三维目标的模型并使用该模型来跟踪三维目标的系统的框图;
图9显示描绘三维目标特征的各种视图的示意图;
图10a显示描绘多个三维目标的框图;
图10b显示使用根据实施例构建的模型来跟踪三维目标的示例性ar功能的其它方面的框图;
图10c显示使用根据实施例构建的模型来跟踪三维目标的示例性ar功能的其它方面的框图;
图10d显示使用根据实施例构建的模型来跟踪三维目标的示例性ar功能的其它方面的框图;
图10e显示使用根据实施例构建的模型来跟踪三维目标的示例性ar功能的其它方面的框图;
图11显示根据实施例的用于生成三维目标模型的方法的流程示意图;和
图12显示使用根据实施例构建的模型来定位三维目标方法的流程示意图。
具体实施方式
参考图1,图1显示一个根据实施例的被配置用于生成三维目标模型的基座方面的框图。图1的基座100包括顶面110、底面120、侧面130、140、150、160。根据实施例,在模型构建期间,可以在三维目标被放置在基座100顶表面110上时拍摄三维目标的多个图像,这将参考图3、5、6和8在以下详细描述。在实施例里,多个图像可以是使用单目相机所拍摄的二维图像。
在实施例里,多个标记可以存在于基座上。例如,参考图2,图2显示一个根据实施例的被配置用于生成三维目标模型的基座的其它方面的框图。如图2所示,基座100的侧面130、140、150、160可以包括标记。例如,侧面130包括标记132,侧面140包括标记142,侧面150包括标记152,侧面160包括标记162。标记132、142、152、162可以被配置为由一个应用进行检测,该应用被配置为根据放置在基座100顶面上的三维目标的图像而生成一个模型。标记132、142、152、162的检测可以使该应用能够确定有关三维目标相对于一个坐标系统的信息,这将在以下详细描述。
在实施例中,标记132、142、152、162可以包括二维标记。例如,标记132、142、152、162可以包括条形码、字母数字字符序列、点、颜色、颜色模式、或可以通过图像分析识别的其它标记。在实施例中,标记132、142、152、162中的每个标记可以唯一地对应于并识别基座100的特定一个侧面。应注意,在一些实施例中,一个或多个标记可以放置在基座100的顶面110上。当顶面110上的标记在三维目标的图像里可检测到时,表示正在从一个比基座100更高的角度在拍摄目标,与可检测图像没有出现在图像里时相比。例如,如果在三维目标的图像里检测到存在于基座顶面上的所有标记,则这可以是指图像是在相机向下看目标的方向上拍摄的(例如,实质上直接在基座上方)。作为另一个例子,当在三维目标的图像中检测到放置在基座100顶面110上的一个或多个标记以及标记132、142、152、162中的一个或多个时,这可以是指图像是在相机向下看目标的方向(例如,以一定角度从基座100上方)拍摄的,而不是直接向下看三维目标和基座100的顶面110。当一个或多个标记被放置在基座100的顶面上时,它们可以被布置成使得它们至少部分地不被目标所阻挡。
参考图3,图3显示一个根据实施例的已经为结合生成三维目标模型进行成像而准备的三维目标的框图。在图3中,图1的基座100上有一个三维目标200(在图3中显示为一个球形目标,例如球),被放置在基座100的顶面110上。如下面更详细描述的,在实施例中,可以使用在三维目标位于基座100的顶面110上时拍摄的图像来构建三维目标200的模型。应注意,可以拍摄三维目标的图像,使得基座100在图像里是可见的。这样使得在拍摄图像时就能构建三维目标的模型,而且提供相机位置信息,对应相机相对于三维目标的一个位置(例如,在提供ar功能的操作期间)。
为了提供位置信息,可以相对基座100设定一个坐标系。例如,参考图4,图4显示一个根据实施例的关于基座设定的坐标系的框图。如图4所示,关于图1的基座100设定一个坐标系400。在一个实施例中,坐标系400的原点(如坐标“0,0,0”)可以被配置在基座100的顶表面110的中心,如图4所示。在另外或替代实施例中,坐标系400的原点可以被配置在基座100的顶表面110的不同位置。如图4所示,包括标记132的表面130朝向坐标系400的y轴正方向,包括标记142的表面140朝向y轴负方向,包括标记152的表面150朝向坐标系400的x轴负方向,包括标记162的表面160朝向x轴正方向,顶表面110朝向坐标系400的z轴正方向,而底表面120朝向z轴负方向。
坐标系可以使得模型能够提供方向信息,用于将相机定向到一个目标方向(例如,其中图形叠加或其它ar功能与目标图像中描绘的环境对准的一个方向上)。例如,假设三维目标的前部朝向正y轴的方向。现在假定相机的目标方向指示应该从三维目标的左侧(例如,沿着负x轴的目标侧)拍摄环境或三维目标的图像。如果分析从相机所接收的三维目标的一个图像,并且确定相机是朝向三维目标的前部(例如,相机是在y轴方向,并以负y轴方向观看目标),那么该模型可以用于确定:为了适当地定位相机从左侧观看三维目标,相机需要沿着x轴和y轴负方向移动相机,同时保持相机朝向所述三维目标。应注意,在实施例中,可以通过ar应用实施特征匹配技术以识别三维目标,例如识别哪个模型对应所述三维目标,当相机移动时跟踪所述三维目标,这将在以下详细描述。
参考图5,图5显示一个根据实施例的拍摄三维目标图像以构建三维目标模型的过程的框图。在图5,显示了图1的基座100(例如,直接从基座100顶表面110的顶部向下看),和图3的三维目标200位于顶表面110上。为了构建三维目标200的模型,可以在三维目标200位于基座100上时拍摄三维目标200的多个图像。所拍摄的图像可以包括或描绘三维目标200和基座100(例如,以便拍摄或识别存在于基座100上的标记)。
在实施例中,可以在围绕三维目标200的不同点处拍摄多个图像。例如,在图5中,多个图像可以包括沿着第一路径510在第一组位置或点512处、沿着第二路径520在第二组位置或点522处、以及沿着第三路径530在第三组位置或点532处拍摄的图像。应注意,尽管在图5里将第一路径510、第二路径520、和第三路径530描绘为圆形,但拍摄三维目标图像的点或位置不必是圆形的。相反,实施例利用在三维目标周围的多个点处拍摄的图像,使得多个图像可以提供用于构建模型的足够信息(例如,多个图像拍摄三维目标的足够可识别的特征,使得三维目标能够由一个包括所述可识别特征信息描述的模型而定义)。
在实施例中,可以在基本上相同的角度上拍摄多个图像中的每一个。在实施例中,可以在多个角度上拍摄三维目标200的多个图像。例如,参考图6,图6显示一个根据实施例的用于拍摄三维目标图像以构建三维目标模型的过程的其它方面的框图。在图6中,显示了基座100,其中三维目标200位于基座100的顶表面110上。另外,也显示了图4的坐标系400。如图6所示,当相机被定向在沿着路径510的第一组位置或点512处时,相机可以以基本上垂直于三维目标200的高度的中点、且平行于基座100顶表面110的一个角度观看三维目标200的同时拍摄三维目标200的图像。当相机被定向在沿着路径520的第二组位置或点522处时,相机可以以一个稍微比三维目标200的高度的中点更高的角度观看三维目标200的同时拍摄三维目标200的图像,当相机被定向在沿着路径530的第三组位置或点532处时,相机可以以一个比与第二组位置或点522有关的角度更大的角度观看三维目标200的同时拍摄三维目标200的图像。
从不同角度拍摄三维目标的多个图像能够提高模型的能力。例如,如上简要描述,可以在跟踪三维目标200期间利用模型。在使用模型跟踪三维目标200期间,可以分析三维目标200的图像或图像流,以便从图像或图像流里识别三维目标200的特征。该模型可以用于识别对应于所识别特征的模型内的信息,然后基于模型(例如,基于坐标系400和/或基于模型内包括的其它信息)提供有关相机朝向的信息,如以下详细所述。因此,在构建模型期间从不同角度获取图像,可以使得能够更容易地识别三维目标200的特征(例如,因为存在能够识别三维目标特征的更多角度)。
在实施例中,多个图像可以包括当三维目标200放置在基座100上时该三维目标200的至少100个图像。在另外或替代实施例中,多个图像可以包括三维目标200放置在基座100上时该三维目标200的多于100个图像或少于100个图像。这多个图像里包括的图像特定数目可以是基于三维目标可识别特征或特征点的数目、三维目标可识别特征或特征点的强度、三维目标的尺寸、三维目标可识别图案的复杂性、其它因素或其组合,这将在以下详细描述。
参考图7,图7显示一个被配置以利用基于标记的ar的应用各方面的示意图。在图7中,显示了放置在台面上的一个移动通信装置610和一张纸620。纸620包括标记622。如图7所示,标记622可以由在移动装置610上执行的应用通过拍摄纸620的图像并识别标记622来识别。一旦识别出标记622,应用可以在移动装置610的显示器上呈现一个图形叠加612,其中图形叠加612以使得图形叠加612看起来是放置在纸620的顶部上这样的方式出现在屏幕上。类似地,实施例可以通过使用三维标记来推动ar应用和功能,如三维模型放置在基座(例如,图1的基座100)上时从由单目相机拍摄的三维模型的多个图像来构造三维目标的模型。
参考图8,图8显示一个根据实施例的用于生成三维目标的模型并使用该模型来跟踪三维目标的系统的框图,显示为系统800。如图8所示,系统800包括图1的基座100、模型生成装置810、和相机850。模型生成装置810可以被配置以根据由相机850拍摄的图像以及一个关于基座100设定的坐标系,来构建三维目标的模型。由模型生成装置810构建的模型可以被配置以使得应用能够使用相机(如通常存在于移动通信装置上的单目相机)来跟踪三维目标,如三维目标200。另外,由模型生成装置810构建的模型可以被配置以基于在使用单目相机拍摄的三维目标的图像中识别的特征或特征点,来提供相机相对于三维目标的位置信息。
如图8所示,模型生成装置800包括一个或多个处理器810、存储器820、网络接口814、和一个或多个输入/输出(i/o)装置816。在实施例中,网络接口814可以被配置以通过一个或多个网络将模型生成装置810通信连接到一个或多个外部装置,如电子设备830。例如,模型生成装置810可以被配置以根据实施例生成三维目标的模型,然后将模型分布到外部装置以促进外部装置上的ar操作。在实施例中,一个或多个i/o装置816可以包括鼠标、键盘、显示器装置、相机850、其它i/o装置或其组合。
存储器820存储指令822,当由一个或多个处理器812执行时,指令822使得一个或多个处理器执行实施例的生成三维目标模型的操作。另外,在实施例中,存储器820可以存储一个或多个模型的数据库824。包括在数据库824里的每个模型可以对应一个根据实施例构建的模型。例如,可以通过将不同的三维目标放置在基座100上,然后在放置在基座上的同时拍摄三维目标的多个图像,来构建每个不同模型,如以上图1-6所述。在实施例中,在三维目标放置在基座100上时拍摄的三维目标的图像,可以存储在一个图像数据库826里。这样可以使得图像能够稍后被处理(例如,用作生成模型的目的)。例如,用户可以在日间拍摄图像,然后可以在夜间处理图像以生成模型。
在处理图像期间,可以分析每个图像以确定相机位置信息和特征点。可以通过识别存在于每个图像里的基座100的一个或多个标记132、142、152、162来确定相机位置信息。在图像中识别的特征点可以与相机位置信息相对应地存储,使得当目标不在基座100上时,从三维目标的一个图像识别的一组特征点,能够与模型的一组特征点匹配,然后映射到与匹配特征点集合相对应的一个相机位置,从而使得能够基于三维目标的图像确定相对于目标的相机位置,而不需要放置三维目标在基座上。
例如,简要地参考图9,图9显示了描绘三维目标的各种视图的示意图。在图9中,三维目标是一只杯子,并且杯子已经被放置在一个包括标记在其各个表面的基座上。如图像902所示,杯子包括第一纹理,该第一纹理包括一系列线条的图形。在图像902的图像分析期间,该系列线条可以被转换成该系列线条的一个或多个特征或特征点(例如,特征或特征点可以包括定义线条之间关系的信息,以及第一纹理的其它特征)。图像904显示在同一基座上的相同杯子,但是由相机从不同位置观察或拍摄。如图像904所示,在图像902中可见的第一纹理在图像904中沿着杯子右侧部分可见,并且在图像904中沿着杯子左侧可见第二纹理。图9的图像906也显示在同一基座上的相同杯子,但是从一个不同于图像902、904的位置观看。在图像906中,图像902的第一纹理沿着杯子右侧仍然部分可见,第二纹理现在是完全可见,并且部分第三纹理沿着杯子左侧是可见的。图像902、904、906可以对应构建模型(模型包括便于跟踪杯子的信息)期间拍摄的图像。
参考图8,如上简要描述的,根据实施例构建的模型可以使电子设备能够在三维目标未放置在实施例的基座上时拍摄该三维目标的图像,然后基于模型确定相机相对于三维目标的位置。例如,在图8中显示了一个电子设备830。在实施例中,电子设备830可以是移动通信装置(例如,蜂窝电话、智能电话、个人数字助理(pda)等)、平板计算设备、膝上型计算设备、可穿戴电子设备(例如,智能手表、眼镜等)、或者包括或可通信连接单目相机的其它类型电子设备。如图8所示,电子设备830包括一个或多个处理器832、存储器840、网络接口834、以及一个或多个i/o装置836。在实施例中,网络接口814可以被配置以通过一个或多个网络将模型生成装置810通信连接到一个或多个外部装置,如电子设备830。例如,模型生成装置810可以被配置以根据实施例生成三维目标的模型,然后将模型分布到外部装置以通过网络推动在外部装置上的ar操作(未在图8里显示)。在实施例中,一个或多个i/o装置816可以包括鼠标、键盘、显示器装置、相机860、其它i/o装置或其组合。
如上所述,可以构建三维目标的模型。电子设备830可以包括一个应用,其可以作为指令842存储在存储器840内,当指令842被一个或多个处理器832执行时,使得一个或多个处理器832能够使用根据实施例由模型生成装置830构建的模型,执行跟踪三维目标的操作。另外,操作还可以包括:根据实施例由模型生成设备830构建的模型、以及基于在三维目标未放置在基座上时由相机860拍摄的一个或多个图像,来确定相机860相对于三维目标的位置。
例如,参考图9,假设电子设备830用于拍摄类似于图9所示杯子的杯子图像,但是电子设备拍摄的杯子未放置在基座上。可以分析由电子设备830拍摄的杯子图像来识别杯子特征,如以上所述的纹理。然后,被识别的特征可以被转换为特征点,并且通过比较从图像识别的特征点和在模型中设定的特征点,该模型可以用于确定相机相对于目标的位置。例如,如果由电子设备确定的特征点对应于构建模型期间从图像902识别的特征点,那么可以基于该模型来确定相机位置类似于图9的图像902所示相机位置。但是,如果由电子设备确定的特征点对应于构建模型期间从图像904识别的特征点(例如,存在对应第二纹理和第一纹理的特征点,但不存在第三纹理),那么可以基于模型确定相机位置类似于图9的图像904所示相机位置。
如上所示,系统800提供了基于使用单目相机拍摄的三维目标的多个图像来生成三维目标的模型。因此,实施例的系统800使得能够针对三维标记或对象构建模型,而不需要使用专用的三维建模软件或三维扫描器。另外,由系统800构建的模型能够跟踪三维目标,并被配置以当三维目标未被放置在基座上时提供相机位置信息,这对于许多ar应用尤其有用。
参考图10a,图10a显示多个三维目标的框图。如图10a所示,多个三维目标可以包括第一三维目标1020、第二三维目标1030、和第三三维目标1040。在实施例中,可以根据实施例构建每个三维目标1020、1030、1040的模型。这些模型可以用于推进ar功能。例如,图10a-10e显示用于利用根据实施例构建的模型来跟踪三维目标、并确定相机是否关于三维目标适当定位以执行一个或多个ar操作的实施例方面。在图10b-10e中,显示一个具有显示器1010的电子设备1000。在实施例中,电子设备1000可以是移动通信装置(例如,蜂窝电话、智能电话、个人数字助理(pda)等)、平板计算装置、膝上型计算装置、可穿戴电子设备(例如,智能手表、眼镜等)、或者包括或可通信连接单目相机的其它类型的电子设备。
如图10b所示,电子设备1000的相机可以拍摄第一三维目标1020的图像(在显示器1010上显示)。通过一个被配置以利用根据实施例构建模型的ar应用,该图像可以用于跟踪第一三维目标1020。例如,ar应用可以分析图像,并通过识别第一三维目标1020的特征1024和1026,确定第一三维目标1020出现在图像里。在一个实施例中,通过比较特征和对应每个三维目标1020、1030、1040的模型,ar应用可以识别特征1024对应第一三维目标1020。一旦在由相机拍摄的图像里识别的特征1024、1026与使用模型的第一三维目标1020相匹配,ar应用就可以确定相机是否定位在执行ar操作的目标位置上,如在图像顶部提供图形叠加。
在图10a-10e,关于第一三维目标执行ar操作的目标位置,可以对应于第一三维目标1020的方位。如图10b-10e所示,相机不在执行ar操作的目标位置上。当相机不在目标位置上时,应用可以使用模型来确定一个或多个方向以移动相机,以便将相机定位在目标位置上。例如,如图10b所示,应用可以提供一个输出1012,其指示一个或多个方向以移动相机,以便将相机定位在目标位置上(例如,向下移动相机,并向右或顺时针旋转相机)。在提供图10b所示的输出1012之后,相机可以提供另一个图像用于分析并跟踪第一三维目标1020,如在图10c的显示器1010中所示的图像。应用可以基于另一个图像确定第一三维目标1020是在相机的视野中,并可以使用模型来再次确定相机是否在目标位置上。如图10c所示,相机仍然不在目标位置/方位上,因此可以生成另一个输出1014,其中另一个输出1014被配置以指示以一个或多个方向移动相机,以便将相机定位在目标位置上(例如,向下移动相机,并向右或顺时针旋转相机)。在图10d,可以分析由相机提供的图像,并可以确定相机需要向下移动以将相机放置在目标位置上,如输出1016所示。电子设备1000的用户可以遵循由输出1016指示的方向,在相机位于目标位置上时,如图10e所示,电子设备1000可以提供一个显示相机被放置在目标位置上的输出1018。一旦处于目标位置,应用可以确定是否执行一个或多个ar操作,或是否提示用户执行一个或多个ar操作,例如显示一个图形叠加,其覆盖至少一部分第一三维目标1020。通过将相机定位在目标位置上,该图形叠加可以放置或覆盖在图像中,与图像所描绘场景适当对准。
在实施例中,由输出1012、1014、1016指示的方向和旋转可以使用模型的局部坐标系来确定。例如,当在图10a的图像中首先识别出特征1024和1026时,其可以与模型进行比较,并与模型内定义的特征匹配。一旦在模型内识别出特征,则可以基于在构建模型期间相机的位置,来估计相机相对于三维目标的位置。例如,如上所述,模型包括位置信息,以及将位置信息相关联或映射的特征信息。在实施例中,可以至少部分地基于模型生成输出1012、1014、1016、1018。例如,通过分析图像,应用可以识别一个或多个特征点,然后可以使用模型的坐标系来确定输出1012、1014、1016、1018。
如上所示,根据实施例构建的模型能够基于使用单目相机拍摄的图像跟踪三维目标。另外,根据实施例构建的模型能够基于在图像内识别的特征点,确定相机相对于三维目标的位置信息,这可以简化各种ar功能的实施。
此外,根据实施例构建的模型的尺寸,可以比那些利用三维扫描仪和/或三维建模软件构建的模型的尺寸更小。通常,三维模型包括非常密集的点云,其包括数千个点。这是因为在使用三维扫描仪和/或三维建模软件构建的三维模型中,三维目标被视为在其身体上由无数点构成(例如,三维模型利用目标表面的每个部分)。相比较而言,根据实施例构建的模型仅对目标身体上的某些点即特征点(例如,包括目标身体的区别特征或方面的信息)感兴趣。例如,参考图9,图像902、904、906中描绘的杯子包括放置在杯子上的各种图形或图像的贴纸,使得杯子表面具有不同的和/或可识别的特征。这样做是因为通常杯子或玻璃本身具有光滑的主体,使得难以使用图像分析技术来识别杯子的任何特定或不同的特征。图9所示杯子的模型,可以包括有关那些识别特征和/或特征点的信息(例如,目标的边缘特征,对应于贴在杯子上的贴纸里所描会的图形的特征或特征点等),但可以不包括与杯子的平滑和无纹理部分(其不提供有用信息)相关的信息。
通过仅包括有关三维目标的不同特征的信息,并且排除不方便识别三维目标的信息,例如有关目标主体的光滑和无纹理部分的信息,根据实施例构建的模型包含比使用三维扫描仪和/或三维建模软件生成的三维模型更少的点,从而导致模型尺寸更小。这允许根据实施例构建的模型被存储时,使用比所需存储量(例如,使用由三维扫描仪和/或三维建模软件构建的传统模型)更小的存储器,这可以使装置能够存储更大的三维目标模型库,同时使用更少的存储器容量。这还可以通过被配置以使用模型库的ar应用来识别更大数量的三维目标。另外,通过仅包括有关不同和/或可识别特征的模型中的信息,根据实施例构建的模型可以有助于在实时环境里更快速识别和跟踪三维目标。例如,将实时相机馈送的图像与根据实施例构建的模型中存储的模板图像或信息匹配时,匹配过程将更为快速,因为其比使用三维扫描仪和/或三维建模软件构建的三维模型具有更少的点。此外,应注意,跟踪和/或识别三维目标的精度不会受到损害,因为存储在模型中的信息包括三维目标的最不同的特征。
参考图11,图11显示根据实施例的用于生成三维目标模型的方法的流程图,显示为方法1100。在实施例中,方法1100可以由电子设备执行,如图8的模型生成装置810。例如,方法1100的操作可以通过一个应用程序进行。应用程序可以被存储作为指令(例如,图8的指令822),当指令被处理器(例如,图8的处理器812)执行时,使得处理器能够执行方法1100的操作,以根据实施例构建三维目标的模型。在实施例中,应用程序可以通过使用一种或多种编程语言(例如,c++、java、pearl、其它类型的编程语言或其组合)进行编程。
在步骤1110,方法1100包括:通过处理器接收多个图像。多个图像可以对应于三维目标(例如,三维目标200)放置在基座(例如,基座100)上时三维目标的图像,如以上图1-6所述。这多个图像可以使用相机(例如,图8的相机850)拍摄。在实施例中,用于拍摄多个图像的相机可以是单目相机。多个图像可以经由有线连接(例如,通用串行总线(usb)连接、另一类型的有线连接、或有线连接类型的组合)或无线连接(例如,经由无线通信网络,如无线保真(wi-fi)网络、蓝牙通信链路、另一类型的无线连接、或无线连接类型的组合)从相机接收。在实施例中,多个图像可以存储在数据库里,如图8的图像库826。
在步骤1120,方法1100还包括:通过处理器设定一个有关放置三维目标的基座的坐标系。在实施例中,至少部分地基于存在于基座上的一个或多个标记,如以上图2和4所示的标记132、142、152、162,可以定义坐标系(例如,图4的坐标系400)。例如,在定义有关放置三维目标的基座的坐标系时还包括:方法1100可以分配坐标系的原点。在实施例中,原点可以被设定为基座顶表面的中心。定义坐标系还可以包括:定向关于基座的坐标系。例如,在实施例中,至少部分地基于存在于基座上的多个标记,来确定关于基座的坐标系的朝向,如在坐标系里分配标记方向,或将基座的表面与坐标系中特定方向相关联(例如,表面130朝向y轴的正方向,如图4所述)。
在实施例中,基座的可识别部分可以是坐标系内被分配位置。例如,参考图4,假设坐标系400以基座100顶表面的中心为原点,并且使用1厘米(cm)单位测量x轴、y轴和z轴。如上所述,坐标系400,以下以“c”表示,用作模型构建的坐标系。在实施例中,每个标记角相对坐标系c的三维坐标可以通过测量基座和印刷标记的物理侧边长度来确定。具有在参考坐标系里的已知三维结构的标记,可以使得能够根据从三维目标(和基座)拍摄的图像的六个自由度(6dof)来确定相机位姿,如以下详细所述。
如上所述,在模型构建期间,可以在三维目标放置在基座100上时拍摄多个图像。在拍摄多个图像期间,三维目标可以固定在基座100上,使得其相对于基座100保持静态,从而相对于坐标系400保持静态。在多个图像中的每一个图像里,应该出现基座100的至少一个标记(例如,图2-4的至少一个标记132、142、152、162)。基座100的标记可以用于以子像素精度识别图片中的标记角的精确位置。
可以通过最小化标记角的再投影误差来估计相机位姿。例如,令x_i,p_i分别是坐标系400(以下以“c”表示)中的三维坐标,以及标记角图片里的子像素位置。proj(x_i)=(u,v)可以由下式给出:
公
x′=x/z公式3
y′=y/z公式4
u=fx*x′+cx公式5
v=fy*y′+cy公式6
通过在拍摄的三维目标的图像里包括基座100的标记,可以确定每个图像的相机位姿。从以上公式1-6,可以使用三角测量来识别不同图像上的相应点,使得能够确定在三维目标表面上的特征点的三维坐标,这可以便于识别多个图像中不同图像之间的关系(例如,识别一个从特定方向拍摄的特定图像,该特定方向是相对于多个图像中的一个或多个其它图像)。
如上所述,定义一个关于基座的局部坐标系,然后拍摄三维目标放置在基座上时三维目标的图像,可以使得能够使用图像分析技术从模型确定相机和三维目标之间的空间关系。作为另一个例子,当基座的特定标记出现在三维目标的图像里时,可以确定目标正被相机从坐标系里的特定方向观看。如上所述,与特定图像中识别的特征或特征点相对应地存储相机位置信息,使得能够在没有基座时确定坐标系里相机相对于三维目标的位置。
在步骤1130,方法1100包括:通过处理器构建用于跟踪三维目标的模型。在实施例中,可以基于在目标放置在基座上时拍摄的目标的多个图像以及基于坐标系来构建模型。用于跟踪三维目标的模型可以被配置以在跟踪三维目标期间提供表示相机(例如,图8的相机860)位置的信息。
在实施例中,模型可以存储在包括多个模型的模型库里(例如,图8的模型库824),多个模型中的每个模型对应一个不同的三维目标。在实施例中,可以使用方法1100来生成模型库里包括的每个模型。在另外或替代实施例里,模型库可以包括根据方法1100生成的一个或多个模型,以及根据其它技术生成的一个或多个模型,如一个或多个二维模型。配置包括多个不同模型(包括根据实施例生成的三维模型和二维模型)的模型库可以使得ar应用能够提供更强大的ar功能,如识别二维和三维标记,然后根据基于模型库检测到一个或多个标记的存在,执行ar操作。
在实施例中,在步骤1130构建模型,可以包括分析多个图像中的每个图像,以识别每个图像里的三维目标的特征。特征可以包括线条、形状、图案、颜色、纹理、边缘特征(例如,图像的两个区域之间的边界/边缘,如在目标和背景之间)、角特征(例如,执行边缘检测,然后分析所检测的边缘以发现方向的迅速变化,其可能表示转角)、斑点(blob)特征(例如,聚焦在三维目标的区域上的特征,而不是更多地关注单个点的角落)、其他类型的特征或其组合。对于检测每个特征类型,存在许多实施。在我们的案例中,我们主要使用角检测器,因为它快速、准确且适合实时环境。但是无论使用什么特征检测器,都可以使用相同想法来构建模型。
在实施例中,用于拍摄多个图像的基座可以被安置在一个具有特定颜色墙壁或一些其它特征的房间或室中,这简化了识别三维目标的特征(例如,使得图像分析算法能够区分基座上的三维目标和背景信息)。在实施例中,可以确定目标的可识别特征的强度。强的特征可以对应于容易识别的特征,或者是使用图像分析技术可以重复一致地识别的特征。例如,线条关于三维目标有一个强对比度,如图9的杯子上的纹理。弱的特征可以对应于不容易识别的特征,或者是使用图像分析技术不容易重复识别的特征。例如,一个相对于其周围环境具有低对比度的纹理,可能难以通过使用图像分析技术一致地识别(例如,照明波动可能导致有时可以检测到弱的特征,但不是每次都能检测到)。特征可以被转换为多个特征点,根据实施例构建的模型可以包括:在多个图像中每个图像中识别的多个特征点的信息。在实施例中,在特定图像里识别出的多个特征点可以与特定相机位置对应地存储。这使得模型能够在没有基座时基于三维目标图像中识别的特征点来确定相机的位置。
在实施例中,可以分析基座上的标记以确定多个图像中不同图像之间的关系。例如,在图像分析期间,可以识别出现在基座上的标记。如上所述,基座上的标记提供指示相机位置的信息。例如,参考图4,如果图像分析确定标记132和152出现在图像里,那么可以确定相机位于三维目标的左侧(例如,假设三维目标的前部朝向表面130)。作为另一个例子,如上所述,如果图像分析确定仅有标记132出现在图像里,那么可以确定相机位于三维目标的前面(例如,假设三维目标的前部朝向表面130)。如上所述,位置信息可以被存储为模型的一部分,并可以使模型能够将特征点转换成相机位置。
如下所述,在跟踪三维目标期间,可以拍摄并分析三维目标的一个或多个其他图像,以识别一个或多个其他图像里的特征点,并且这一个或多个其他图像里识别的特征点可以与模型进行比较,以确定模型的相应特征点。在识别了模型的相应特征点之后,该模型可以用于确定拍摄一个或多个其他图像的相机位置。与模型对应特征点相对应的相机位置可以指示用于拍摄一个或多个其他图像的相机位置。例如,通过将一个或多个其他图像中特定图像里识别出的特征点和模型中的特征点进行比较,可以确定特定图像是从一个特定相机位置拍摄的,从该特定相机位置拍摄的图像是用来构建模型的多个图像中的一个图像。
相较于现有技术的生成用于ar应用的模型,方法1100有几个优点。例如,方法1100仅使用二维图像(如使用单目相机拍摄的图像)来构建三维目标的模型。这消除了使用专用软件如三维建模软件来生成模型的需要,并使模型更容易构建。除了使用专用软件,其它三维建模技术需要图像包含深度信息,这需要从某些类型的专用工具获得,如三维扫描仪,或使用两个单目相机。前者通常是不可用的,而后者需要两个单独相机一起工作,从而增加了建模过程的复杂性。如上所述,本发明公开的实施例能够使用单个单目相机构建模型,如可以通常在移动电话或平板计算装置上找到。因此,实施例使得能够在不需要诸如三维扫描器或建模软件的专用工具的成本的情况下构建三维模型,并且不需要多个相机或其他设备的协调。
参考图12,图12显示使用根据实施例构建的模型用于跟踪三维目标的方法的流程图。在实施例中,方法1200可以由电子设备执行,如图8的电子设备830。例如,方法1200的操作可以通过应用来促进。应用可以被存储为指令(例如,图8的指令842),当指令被处理器(例如,图8的处理器832)执行时,通过使用根据实施例构建的模型,使处理器能够执行方法1200的操作以跟踪三维目标。在实施例中,应用可以通过使用一种或多种编程语言(例如,c++、java、pearl、其它类型的编程语言或其组合)进行编程。
在步骤1210,方法1200包括:存储目标的模型。在实施例中,可以根据如上所述的方法1100来构建模型,并可以被配置以使应用能够跟踪三维目标。在实施例中,如上所述,该应用可以被配置以使用一个包括多个模型的模型库(例如,图8的模型库844)。这样使应用能够识别和/或跟踪多个不同的三维目标,并相对或基于跟踪的三维目标执行ar功能。
在步骤1220,方法1200包括:从电子设备的相机接收目标的图像。在实施例中,图像可以作为单个图像被接收。在另外或替代实施例中,图像可以作为一部分图像流被接收。例如,相机可以以视频模式操作,并且图像可以作为与由相机拍摄的视频内容相对应的部分图像流而被接收。
在步骤1230,方法1200包括:基于模型确定相机相对于三维目标的位置。例如,通过使用由模型定义的位置信息,可以基于模型确定相机相对于三维目标的位置。在实施例中,如以上所述,通过将在相机拍摄的图像里识别的三维目标的特征点与在模型里定义的特征点信息相关联,可以确定相机位置,其中在模型里定义的特征点被映射到相机位置信息(其在构建模型期间导出)。
在步骤1240,方法1200可以包括:基于相机相对于三维目标的位置,执行一个或多个ar操作。例如,在实施例中,ar操作可以包括:提供图形叠加,其呈现在确定相机位置和/或朝向的图像描绘的场景里。为了确保该图形叠加在场景里正确对准,三维目标可以被用作三维标记。通过将相机放置在目标相机位置上可以实现正确对准。在实施例中,基于模型内定义的信息和/或与将被应用的特定图形叠加有关的信息,可以确定相机相对于目标的目标相机位置(例如,不同图形叠加可以有不同的关于三维目标的目标相机位置),如以上图10a-10e所述。除了上述功能和ar操作之外,根据实施例构建的模型可以应用于各种不同的行业和应用,包括但不限于医疗行业、视频游戏行业、家庭行业(例如,家装施工、设计、装修等)等。
在实施例中,方法1200还可以包括:确定目标图像与用于构建模型的目标的多个图像中的一个图像的相关性强度的质量度量,以及确定该质量度量是否满足一个跟踪阈值。可以至少部分地基于确定质量度量满足跟踪阈值,来提供图形叠加。例如,质量度量不满足阈值可以表示目标未被相机跟踪。在这种情况下,可以不执行ar操作。当一部分三维目标在图像里不可见时,使用质量度量可以有助于识别三维目标。例如,特定的一组特征点可以提供三维目标出现在图像里的一个强指示,同时另一组特征点可以提供三维目标出现在图像里的一个弱指示。当在图像里识别出该特定组的强的特征点时,即使在图像里没有识别出另一组弱的特征点时,也可以认为三维目标出现在图像里。
如上所述,方法1200可以使得当目标被安置在基座上时,根据由三维目标的多个图像构建的模型,确定相机相对于三维目标的位置。另外,方法1200使用当目标安置在基座上时由三维目标的多个图像构建的模型来跟踪三维目标。ar应用和功能越来越多地寻求在相机(通常是手持装置)不停移动的实时环境里操作。如上所述,通过使用根据实施例构建的模型来跟踪相机位置和朝向以及识别三维目标的实施例的方法可以比其它技术相对更快速。这是因为根据实施例构建的模型,是利用仅具有特征点(例如,识别出的不同或区别特征)的三维目标的相对稀疏的点模型而构建的,而其它三维模型(例如,使用三维扫描仪和/或建模软件构建的模型)包括大点云的密集模型,包括对应三维目标的非不同和非区别特征的点。这使得根据实施例的跟踪相机位置/朝向和识别三维目标的方法能更快地执行,因为与从相机接收的实时图像中识别的点进行比较的话,模型中有较少的点。
虽然已经详细描述了本发明及其优点,但应当理解,在不脱离由所附权利要求限定的本发明精神和范围的情况下,可以在此进行各种改变、替换和变更。此外,本申请的范围并不限于在说明书中所描述的过程、机器、制造、物质组成、装置、方法和步骤的特定实施例。本领域普通技术人员从本发明的公开内容中将容易地理解,目前存在或以后开发的能够基本上执行相同功能的过程、机器、制造、物质组成、装置、方法或步骤,或能达到与根据本发明利用在此所述相应实施例基本相同的结果。因此,所附权利要求旨在将这些过程、机器、制造、物质组成、装置、方法或步骤包括在其范围内。
此外,本申请的范围并不限于在说明书中所描述的过程、机器、制造、物质组成、装置、方法和步骤的特定实施例。