本申请要求通过引用并入本文中的2014年9月26日提交的美国专利申请号14/498,801的提交日的权益,所述美国专利申请要求通过引用并入本文中的2014年9月5日提交的美国临时专利申请号62/046,788的提交日的权益。
技术领域
本公开一般地涉及相机标定(camera calibration)。更具体地,本公开描述在图像被捕获时执行的临时(ad hoc)标定过程。
背景技术:
计算设备越来越多地包括一个或多个相机或其它类型的图像捕获设备,以使得用户能够捕获图像。例如,许多智能手机和平板计算设备包括可操作以在各种场景中捕获图像的相机。许多相机系统可在制造期间被标定。然而,由于相机系统公差,诸如位移、噪声和其它图像质量因素,在有规律的使用期间捕获图像时的运行中(on-the-fly)或临时的标定可以帮助维持弹性消费产品用于日常使用。
附图说明
图1是具有用以在计算设备处标定图像的标定应用的计算设备的框图;
图2是图示在计算设备处执行的标定的过程流程图;
图3是图示在相机设备的标定之前存在于捕获的图像中的特征的图;
图4是图示在相机设备的标定之后存在于捕获的图像中的特征的图;
图5是图示可在标定期间发生的对准校正的照片;
图6是描绘被配置成标定图像捕获设备的计算机可读介质的示例的框图。
具体实施方式
本文中公开的主题涉及用于使用工厂标定数据作为每当在计算设备上使用深度相机系统时运行的主动(active)图像校正过程的一部分的技术。板载标定提供许多益处。例如,可根据基于实际场景的工厂设置来改善标定,使得差异导致可用图像。在某些方面,可使用从图像提取的特征来校正图像对准,使得它们被纠正。在某些方面,可提供场景深度估计以出于差异使参数选择自动化。在具有少量噪声和好的照明的场景中,临时标定可增加对相机旋转中的小改变和可能改变的给定相机的固有属性的纠正。
图1是具有用以在计算设备处标定图像的标定应用的计算设备的框图。计算设备100可包括处理器102、包括非瞬时计算机可读介质的存储设备104,以及存储器设备106。计算设备100可包括被配置成操作显示设备110以在图形用户界面(GUI)处再现图像的显示驱动108、被配置成操作多相机系统115的一个或多个相机设备114的相机驱动112。
计算设备100包括被配置成标定由相机设备114中的一个或多个捕获的图像的标定应用116的模块。如图1中所图示的那样,该模块包括特征模块118和单应性模块120。在某些实施例中,标定应用116包括纠正模块122、离群值模块124和重建模块126。模块118、120、122、124和126可以是至少部分地包括硬件逻辑的逻辑。在某些示例中,模块118、120、122、124和126可以是被配置成由诸如处理器102之类的处理设备执行的存储在存储介质上的指令。在又一示例中,模块118、120、122、124和126可以是硬件、软件和固件的组合。模块118、120、122、124和126可被配置成独立地、并行地、分布式地或作为较宽泛过程的一部分操作。模块120、122、124可以被认为是分离的模块或父模块的子模块。还可包括附加模块。在任何情况下,模块118、120、122、124和126被配置成执行操作。
特征模块118被配置成检测图像的集合上的特征。图像的集合可以是从不同的相机设备114捕获的至少两个图像。在实施例中,图像的集合可以是从至少三个不同的相机设备114捕获的至少三个图像。特征模块118可使用特征检测算法来检测特征。例如,特征模块118可实现角点检测方法,诸如根据加速分段测试的特征(FAST)方法。特征模块118还被配置成描述图像的集合上的特征。特征是每个图像的信息项。可使用诸如快速视网膜关键点(FREAK)方法之类的特征描述符方法来实现每个特征的描述。一旦特征已经被检测和描述,为所有捕获的图像或图像集共有的特征就被匹配。在实施例中,使用蛮力匹配器和简单约束来执行匹配。
单应性模块120被配置成基于用于捕获图像的集合中的图像的每个相机的相机位置来确定与所匹配的特征相关的移位(shift)。在投影几何中,单应性可以是由从其导出投影空间的向量空间的同构引起的投影空间的同构。单应性模块120可确定相机位置与所确定的移位之间的第一单应性。单应性模块120还可基于三维(3D)特征回到相机设备114的再投影来确定第二单应性。
在某些实施例中,标定应用116包括纠正器模块122。纠正器模块122被配置成使用工厂标定数据。例如,纠正器模块122可用由制造商提供的原始单应性来纠正图像的集合。原始单应性可被存储在存储设备104上。可在特征模块118的特征检测之前执行纠正,以便增强标定的结果。
在某些实施例中,标定应用118进一步包括离群值模块124。离群值模块124被配置成基于超过预定阈值的特征匹配角度来丢弃离群值。离群值模块124还可基于超过预定阈值的特征匹配大小来丢弃离群值。在用于捕获图像集的至少三个相机设备114的情况下,离群值模块124被配置成丢弃不在来自相机设备114中的至少三个的图像中发生的特征匹配。离群值模块124可被进一步配置成确定移位的规模(scale),其指示图像集之间的特征坐标的差除以与捕获的每个图像相关联的位移(displacement)。可能重要的是注意上面和/或下面讨论的模块可被实现为单个应用,两个或更多个模块可被组合以执行任何给定的操作。
在某些实施例中,标定应用116包括重建模块126。重建模块126可被配置成重建在3D中检测到的特征,其中第二单应性是来自制造商标定的原始特征坐标与基于3D重建到一个或多个相机的再投影的特征坐标之间的单应性。在某些情况下,3D重建估计场景深度。
上面讨论的标定在本文中可称为临时或运行中的标定。这参考在计算设备100处捕获图像时的标定的实现,而不仅仅依赖于由制造商执行的标定。
在实施例中,计算设备100包括被配置成经由网络132将计算设备100连接到远程计算设备130的网络接口控制器128组件。在某些场景中,网络接口控制器128是被配置成通信地耦合到系统总线134的扩展卡。在其它场景中,网络接口控制器128可与诸如计算设备100之类的计算设备的母板一起被集成。在实施例中,标定应用116可被执行和/或存储在诸如远程计算设备130中的一个之类的远程计算设备上。例如,捕获的图像可以被发送到远程计算设备130,诸如具有类似于标定应用116的标定应用的服务器。可经由网络132将标定从远程计算设备130中的一个或多个提供给计算设备100。
如本文中提到的那样,计算设备100可以是移动计算设备,其中诸如处理设备、存储设备和显示设备之类的组件被布置在单个外壳内。例如,计算设备100可以是平板计算机、智能手机、手持视频游戏系统、蜂窝电话、一体化平板计算设备或具有一体化功能的任何其它计算设备,其中计算设备的外壳容纳显示器以及诸如存储组件和处理组件之类的组件。
处理器102可以是被适配成执行存储的指令的主处理器。处理器102可以是单核处理器、多核处理器、计算集群或任何数量的其它配置。处理器102可被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它微处理器或中央处理单元(CPU)。
存储器设备106可包括随机存取存储器(RAM)(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、零电容RAM、硅-氧化物-氮化物-氧化物-硅 SONOS、嵌入式DRAM、扩展数据输出RAM、双数据速率(DDR)RAM、电阻式随机存取存储器(RRAM)、参数随机存取存储器(PRAM)等)、只读存储器(ROM)(例如,掩模型ROM、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等)、闪存或任何其它合适的存储器系统。主处理器102可通过系统总线134(例如,外围组件互连(PCI)、工业标准架构(ISA)、PCI-Express、HyperTransport®、NuBus等)连接到包括存储器106和存储设备104的组件。
相机驱动112被配置成指导一个或多个相机设备114捕获视觉信息,或者换言之,将用于标定相机设备114的图像集中的图像。通过提供标定后制造,标定可利用真实世界图像来增强标定。在某些示例中,标定增强了先前在制造期间执行的标定数据。然而,也可执行标定而不参考制造商标定数据。相机设备114可以是被配置成捕获实时视频或静止图像的多个摄影机。在某些实施例中,标定可用于单个相机设备114,其中针对在不同位置处捕获的图像执行标定。在某些方面,计算设备100包括被配置成确定计算设备100与一个或多个物理表面之间的距离的或者作为附加组件或作为相机设备114的集成组件的深度感测相机。
图1的框图不意图指示计算设备100要包括图1中示出的所有组件。进一步地,取决于具体实现的细节,计算设备100可包括图1中未示出的任何数量的附加组件。
图2是图示在计算设备处执行的标定的过程流程图。在202处,用原始单应性“H”纠正图像的集合。如上面讨论的那样,原始单应性可以是由在制造期间执行的标定提供的数据。原始单应性数据可被存储在计算设备上,所述计算设备诸如图1的计算设备100。在204处,执行特征检测,并且在206处,执行特征描述。如上面讨论的那样,可使用FAST执行在204处的特征检测,并且可使用FREAK来执行特征描述。在208处,匹配在图像集中的多于一个图像中出现的特征。在210处,将离群值标识为满足或超过阈值的特征。如上面关于图1讨论的那样,阈值可基于大小、角度等。虽然未被图示在图2中,但还可基于给定的特征是否出现在至少三个相机中来标识离群值。如果匹配的特征超过阈值,则它们被标识为离群值并且在212处被丢弃。在210处不超过阈值的匹配的特征将用于在214处确定应当用于标定相机设备的移位。移位可基于相机位置或离彼此的相对位移。在216处生成在相机设备的当前位置与在214处确定的移位之间的单应性。在某些情况下,基于诸如随机抽样一致性(RANSAC)之类的迭代方法来生成单应性。在218处可在3D中重建特征并且找到在当前位置与基于3D特征回到相机设备的再投影的最佳位置之间的另一个单应性。
在某些实施例中,在参考相机与其它相机之间匹配特征。关于每个相应的特征集,确定移位的规模。移位的规模可以是在相机与参考相机之间的特征的坐标的差除以两个相机的距离。特征可能必须至少在3个相机上匹配才可用。换言之,可能要求它们的移位的规模在所有相机114上匹配。在该情况下,可确定平均规模,可在非参考相机上将理想坐标标记为参考相机上的特征的坐标加上从参考相机到其它相机的方向。从而,平均规模——这些理想坐标与当前坐标之间的差——或者换言之,误差(error)可被绘制在图上,诸如下面在图3中所图示的图上。
使用RANSAC丢弃离群值并且针对每个相机在当前坐标与针对所有特征的理想坐标之间找到第一单应性,使得RANSAC将在每个相机上单独地运行。可能重要的是注意误差的公共分量被移除使得当参考相机失准时则其本身将被固定。
新找到的单应性应用在所有相机上的检测到的特征上。这可导致估计的经纠正的相机矩阵。在3D中重建特征,并且可丢弃由3D重建误差引起的误差。3D重建特征被再投影回到相机上,并且确定在其当前坐标与从再投影获得的坐标之间的单应性。这可再次用RANSAC来完成,因为它改进了相机矩阵并且与所有相机同时一起工作。单应性校正矩阵H2被确定为在原始特征坐标与基于3D重建回到相机的再投影的特征坐标之间的单应性。下面关于图4讨论的绿点中心图图示当应用H2时对应(correspondence)如何改变。
临时的、运行中的标定的输出可包括估计场景深度的3D重建特征以及单应性校正矩阵H2。可基于下面讨论的等式来导出H2单应性校正矩阵。例如,经纠正的相机矩阵可以是等式1中指示的KP:
KP=H×K×R 等式1
然而,当标定随时间改变时,我们不再具有K和R,而是具有轻微修改的KO和PO。因此,为了再次得到KP,可能需要生成新的单应性矩阵HO以便获得如等式2中所指示的新的KP’:
KP’=HO×KO×RO 等式2
然而,HO可能不是已知的。当用原始H纠正来自图像集的图像时,生成针对如由等式3所指示的未知矩阵KPO的图像:
KPO=H×KO×RO等式3
基于特征对准,KPO与KP’之间的差是可观察的,这可导致如等式4中所指示的H2:
KP~H2×H×KO×RO等式4
这可以是近似。并且最后由等式5指示KP:
KP=H×K×R~H2×H×KO×RO 等式5
在等式5中,KO和RO是未知矩阵。然而,确定H2不一定需要这些,并且因为将假设原始K保持恒定。
图3是图示在相机设备的标定之前存在于捕获的图像中的特征的图。在图3中,使用相机捕获了图像。在302处表示理想。如果标定了多相机系统114,则理想点302是向量将在的地方。离群值被表示为点304,并且指示相应的误差。
图4是图示在相机设备的标定之后存在于捕获的图像中的特征的图。类似于图3,图示了理想点302,但是与图3对比,离群值404更加靠近理想点302。参考图3和图4,标定可导致改进的对应。
图5是图示可在标定期间发生的对准校正的照片。在502中,相机不适当地对准,而在504中,相机适当地对准。
图6是描绘被配置成标定图像捕获设备的计算机可读介质的示例的框图。计算机可读介质600可由处理器600通过计算机总线604访问。在某些示例中,计算机可读介质600可以是非瞬时计算机可读介质。在某些示例中,计算机可读介质可以是存储介质,但是不包括载波、信号等。此外,计算机可读介质600可包括指导处理器602执行当前方法的步骤的计算机可执行指令。
本文中讨论的各种软件组件可被存储在如图6中所指示的有形非瞬时计算机可读介质600上。例如,标定应用606可被配置成检测图像的集合上的特征、描述图像的集合上的特征、确定图像集的特征之间的匹配、基于相关联的相机位置确定关于所匹配的特征的移位、确定相机位置与所确定的移位之间的第一单应性以及基于三维特征回到相机的再投影来确定第二单应性。
示例可包括主题,诸如根据本文中描述的实施例和示例的方法、用于执行方法的动作的部件、包括在被机器执行时使机器执行方法的或者装置的动作的指令的至少一个机器可读介质或者用于投影虚拟图像的系统。
示例1包括一种用于图像标定的系统。系统包括处理设备和要由处理设备实现的模块。模块包括特征模块和单应性模块。
特征模块要检测图像的集合上的特征,并且描述图像的集合上的特征。特征模块还可被配置成确定图像集的特征之间的匹配。
单应性模块被配置成基于相机位置来确定关于所匹配的特征的移位。单应性模块被进一步配置成确定相机位置与所确定的移位之间的第一单应性。单应性模块被进一步配置成基于三维特征回到相机的再投影来确定第二单应性。
示例2包括一种用于图像标定的方法。方法包括检测图像的集合上的特征、描述图像的集合上的特征、确定图像集的特征之间的匹配以及基于与所匹配的特征相关联的相机位置来确定关于所匹配的特征的移位。
示例2的方法还可包括确定相机位置与所确定的移位之间的第一单应性。方法可进一步包括基于三维特征回到相机的再投影来确定第二单应性。
在某些情况下,示例2的方法可由用于标定的适当部件执行。在某些情况下,部件包括被配置成执行示例2的方法的计算机可读介质。
示例3包括用于图像标定的装置。装置可包括用于检测图像的集合上的特征、描述图像的集合上的特征、确定图像集的特征之间的匹配以及基于与所匹配的特征相关联的相机位置来确定关于所匹配的特征的移位的部件。
示例3的装置还可包括用于确定相机位置与所确定的移位之间的第一单应性的部件。该部件还可被配置用于基于三维特征回到相机的再投影来确定第二单应性。
示例4包括一种具有代码的计算机可读介质,所述代码在被处理设备执行时使处理设备检测图像的集合上的特征。代码还可使处理设备描述图像的集合上的特征、确定图像集的特征之间的匹配以及基于与所匹配的特征相关联的相机位置来确定关于所匹配的特征的移位。代码可进一步使处理设备确定相机位置与所确定的移位之间的第一单应性,以及基于三维特征回到相机的再投影来确定第二单应性。
示例5包括一种具有逻辑的用于图像标定的装置。逻辑可至少部分地包括硬件逻辑。逻辑可被配置成执行方法,所述方法包括检测图像的集合上的特征、描述图像的集合上的特征、确定图像集的特征之间的匹配以及基于与所匹配的特征相关联的相机位置来确定关于所匹配的特征的移位。
示例5的装置还可包括用于确定相机位置与所确定的移位之间的第一单应性的逻辑。逻辑还可被配置用于基于三维特征回到相机的再投影来确定第二单应性。
实施例是实现或示例。说明书中对“实施例”、“一个实施例”、“某些实施例”、“各种实施例”或“其它实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本技术的至少某些实施例但不一定所有实施例中。“实施例”、“一个实施例”或“某些实施例”的各种出现不一定都指代相同实施例。
并非本文中描述和图示的所有组件、特征、结构、特性等都需要被包括在一个或多个特定实施例中。例如,如果说明书陈述“可”、“可能”、“能够”或“可以”包括组件、特征、结构或特性,则不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则那并不意味着只有元件中的一个。如果说明书或权利要求书提到“一个附加”元件,则那不排除有多于一个附加元件。
要注意虽然已经参考特定实现描述了某些实施例,但根据某些实施例,其它实现是可能的。另外,不需要以图示和描述的特定方式来布置在图中图示和/或在本文中描述的电路元件或其它特征的布置和/或顺序。根据某些实施例,许多其它布置是可能的。
在图中示出的每个系统中,在某些情况下元件可能每个具有相同的参考号码或不同的参考号码以暗示表示的元件可能不同和/或类似。然而,元件可足够灵活以具有不同的实现以及与本文中示出或描述的系统中的某些或全部一起工作。图中示出的各种元件可相同或不同。哪一个被称为第一元件和哪个被称作第二元件是任意的。
要理解可在一个或多个实施例中的任何地方使用前述示例中的细节。例如,也可关于本文中描述的方法或计算机可读介质中的任一个来实现上面描述的计算设备的所有可选特征。此外,虽然可能已经在本文中使用流程图和/或状态图来描述实施例,但是技术不限于本文中的那些图或相应的描述。例如,流程不需要移动通过每个图示的框或状态或者以与本文中图示和描述的顺序完全相同的顺序移动。
本技术不限于本文中列出的特定细节。实际上,受益于本公开的本领域技术人员将领会到:可在本技术的范围内做出从前述描述和图的许多其它变化。相应地,正是包括对其的任何修改的以下权利要求书限定了本技术的范围。