发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种图像深度的计算方法、图像处理装置及三维测量系统,用以克服现有技术中的上述缺陷。
本申请实施例提供了一种图像深度的计算方法,其包括:
根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;
根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应测量距离的上限,所述第二标定参考面对应所述测量距离的下限。
可选地,在本申请的任一实施例中,还包括:将所述第一视差、第二视差投影到基线方向,得到第一投影视差以及第二投影视差;
对应地,根据所述第一视差、第二视差,计算所述目标像素在所述结构化图像上的深度,包括:根据第一投影视差以及第二投影视差,计算所述目标像素在所述结构化图像上的深度。
可选地,在本申请的任一实施例中,还包括:建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型;
根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差,包括:根据所述目标像素分别在结构化图像、第一标定图像以及第二标定图像的位置以及所述第一拟合模型和第二拟合模型,确定所述第一视差以及第二视差。
可选地,在本申请的任一实施例中,还包括:确定第一标定图像和第二标定图像上每根条纹的中心像素以建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型。
可选地,在本申请的任一实施例中,还包括:确定给所述第一标定图像和第二标定图像上每根条纹的中心像素分配的掩码标记以建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型。
可选地,在本申请的任一实施例中,还包括:以所述第一标定图像和第二标定图像上每根条纹的中心像素为参考进行邻域的像素搜索以建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型。
可选地,在本申请的任一实施例中,对在邻域内搜索到的像素统计分析以判断是否需要建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型。
可选地,在本申请的任一实施例中,还包括:根据第一拟合模型和第二拟合模型确定拟合像素,根据所述拟合像素与对应实际的像素确定拟合误差。
可选地,在本申请的任一实施例中,还包括:提取所述第一标定图像以及第二标定图像中的波峰值,以确定所述第一标定图像和第二标定图像上每根条纹的中心像素。
本申请实施例提供了一种图像处理装置,其包括,
视差单元,用于根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;
深度计算单元,用于根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应测量距离的上限,所述第二标定参考面对应所述测量距离的下限。
本申请实施例提供了一种三维测量系统,其包括:投影装置、摄像装置、以及本申请任一实施例中所述的图像处理装置,所述投影装置用于通过结构光将编码图像投影到目标物体上,所述摄像装置用于捕获所述编码图像投影到目标物体上形成的结构化图像。
本申请实施例中,根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应测量距离的上限,所述第二标定参考面对应所述测量距离的下限,使得深度与测量系统的内外参无关,避免了额外的误差的引入以及标定参考平面数量与测量精度的正向关系。
具体实施方式
实施本发明实施例的任一技术方案必不一定需要同时达到以上的所有优点。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
本申请实施例中,根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应测量距离的上限,所述第二标定参考面对应所述测量距离的下限。图像深度的计算方法使得深度与测量系统的内外参无关,避免了额外的误差的引入以及标定参考平面数量与测量精度的正向关系。
图1为本申请实施例一中三维测量系统的使用示意图;如图1所示,其包括:投影装置、摄像装置以及图像处理装置(图中未示出),所述投影装置用于通过结构光将编码图像投影到目标物体上,所述摄像装置用于捕获所述编码图像投影到目标物体上形成的结构化图像。所述图像深度计算装置用于根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应三维测量系统的测量距离的上限,所述第二标定参考面对应所述三维测量系统的测量距离的下限。
图2为本申请实施例二中图像深度的计算方法流程示意图;如图2所示,其包括:
S201、将结构光投影到目标物体表面形成结构化图像,以及根据测量距离的上限和下限,通过将结构光分别投影到第一标定参考面以及第二标定参考面上形成第一标定图像以及第二标定图像;
本实施例中,将结构光分别投影到所述第一标定参考面以及第二标定参考面上从而形成第一标定图像以及第二标定图像,类似地,将结构光投影到目标物体表面形成结构化图像。
另外,在本实施例中,步骤S201还可以包括:通过确定第一标定图像和第二标定图像上每根条纹的中心像素,建立第一标定图像和第二标定图像上不同条纹的第一拟合模型和第二拟合模型,具体地,此处以形成第一拟合模型为例进行说明,再根据第一拟合模型形成第一标定图像。形成第一拟合模型的步骤详细包括下述步骤S211-S291:
S211、确定第一标定图像上每根条纹的中心像素;
本实施例中,以结构光为编码条纹为例进行说明,因此,在步骤S211中提取所述第一标定图像的波峰值,根据所述波峰值确定上每根条纹的中心像素,所述中心像素具体为在第一标定图像上所述条纹中几何中心的若干像素。
S221、给所述第一标定图像上第i根条纹的中心像素分配掩码标记;
本实施例中,考虑到在不同距离上结构光中的编码条纹的粗细可能出现变化,因此,提取每根条纹的中心像素,进一步为了区别中心像素以及非中心像素,给每根条纹的中心像素分配一个掩码标记,比如1,第一标定图像上除中心像素外的其他所有像素,给分配为0的掩码标记。所谓掩码标记即中心像素的标志位,所谓中心像素即一根条纹的中心线上中间的像素。
S231、以所述第一标定图像上第i根条纹的中心像素为参考进行邻域的像素搜索;
本实施例中,为了将编码条纹位置逐条存储,因此,进行邻域的像素搜索。如前所述,比如如果条纹总共有N条且互相不相交,每一根条纹均要进行搜索,搜索方式为从上到下,先找到最上方标记为1的点,作为某根条纹的起始点,再向下进行8邻域搜索。在搜索时,以最上方某一掩码标记为1的中心像素为出发点,向下进行基于8邻域的连续搜索,并将搜索到的掩码标记同为1的像素加入到一集合中。此处,8邻域具体是指该中心像素周围的8个像素,向下搜索则实际只以8邻域中下方3个像素为准,再进一步从中确定出那些像素的掩码标记为1。如果下向下搜索的过程中,搜索到掩码标记为1的其像素,则以此像素为参考点,继续向下搜索,确定出掩码标记为1的其他像素,依次类推,直到最后一次搜索的时候,8邻域内下方不存在掩码标记为1的像素。
需要说明的是,本实施例中,邻域的个数不局限为8,也可以根据应用场景,灵活设置。
S241、对在邻域内搜索到的像素统计分析;
本实施例中,由于掩码标记为1的像素可以反映编码条纹所在位置,因此,而在拟合模型建立时,是以编码条纹为单位的,即每一条编码条纹对应一个第一拟合模型。因此,步骤S241中,在对邻域内搜索的中心像素进行统计分析时,统计位于同一跟条纹中心线上且位于邻域内的所有像素,则在步骤S251中判断这些像素的数量是否超过设定的数量阈值,如果超过,则表明该编码条纹为合法条纹,即不存在因图像质量等原因造成的条纹中断或非条纹产生,因此,需要建立对应的条纹的第一拟合模型,否则,则执行步骤S273B:对搜索到的掩码标记为1的像素进行标记的清零操作,使得这些像素的掩码标记变为0。
而对于那些不需要建立第一拟合模型的条纹来说,可以直接舍弃。
S251、判断是否需要建立第一标定图像中第i根条纹的第一拟合模型,若是,则执行步骤S261,否则,执行步骤S273B。
S261、建立第一标定图像上第i条条纹的第一拟合模型;
本实施例中,第一拟合模型中主要反映编码条纹的位置跟其上像素位置的数学关系,即通过这些像素的坐标即可以知悉对应条纹的位置。如果按照上述从上到下搜索的方式的话,拟合主要是以图像左上角为坐标系原点,纵向下为横坐标方向,横向右为纵坐标方向,然后把条纹当做坐标系上的一条直线或曲线,对其进行拟合,从而确定出条纹在第一标定图像和第二标定图像上的位置。
进一步地,在一具体应用场景中,可以从该条文的中心像素为基础出发进行邻域搜索而得到的掩码标记为1的所有像素中,任意选若干个像素,并基于这些筛选出的像素的坐标进行拟合,从而得到对应条纹的位置和其上像素坐标的关系。
S271、根据第一拟合模型确定拟合像素,根据所述拟合像素与对应实际的像素确定拟合误差。
本实施例中,为了验证第一拟合模型的真确性,但得到第一拟合模型后,以知悉条纹的坐标,而反推某一个像素的坐标,确定该像素是否位于该条纹上,如果反推出的像素的坐标跟该像素的实际坐标之间的误差大于设定的拟合误差阈值,则表明该第一拟合模型的准确性较差,需要重新进行拟合。重新拟合时,重新从上述集合中任意选若干个像素,并基于重新筛选出的像素的坐标进行拟合,从而重新得到对应条纹的坐标和其上像素坐标的关系,直到得到的拟合误差小于设定的拟合误差阈值。
S281、判断所述拟合误差是否小于设定的拟合误差阈值;若满足,则执行步骤S291A,否则,执行步骤S291B;
S291A、保存所述第一拟合模型;
本实施例中,保存的第一拟合模型主要用于参与后续根据视差计算深度的处理。
S291B、将像素的掩码标记清零,并跳到步骤S231。
本实施例中,当所述拟合误差大于设定的拟合误差阈值时,对上述集合中的像素的掩码标记从1修改为0,以跳转到S231重新以第i跟条纹的中心像素为参考进行邻域像素掩码标记为1的搜索,以进一步重新建立第一拟合模型。
本实施例中,第二拟合模型的建立类似上述S211-291B,详细不再赘述。
S202、根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;
参见图3所示,为本申请实施例三中视差原理示意图,是以结构化图像上某一个根条纹(假如条纹1)上目标像素P0对应的视差为例,如图3所示,该目标像素P0在第二标定图像上对应像素记为P1,在第一标定图像上对应像素为P2。实际上,对于在结构化图像的条纹1上的目标像素P0,对应到第一标定图像和第二标定图像上,只能确定出其位于条纹1上,但至于在条纹1上的具体位置,需要进一步分析。
参见图3所示,在测量距离由近及远的过程中,目标像素P0的移动轨迹实际上沿着图3中斜线方向,由此可见,目标像素P0分别相对于像素P1、P2的视差如图中d1和d0所示。
需要说明的是,在其他实施例中,上述建立拟合模型的步骤也可以包括在步骤S202中。
S203、根据所述第一视差、第二视差,计算所述结构光在所述结构化图像上的深度。
本实施例中,步骤S203具体可以包括:
S213、将所述第一视差、第二视差投影到基线方向,得到第一投影视差以及第二投影视差;
进一步地,再参考上述图3,考虑到P1、P2的具体位置不能确定,沿着斜线方向的视差d0、d1不能直接参与深度运算,因此,将上述沿着斜线方向的视差d0、d1投影到基线方向得到投影视差dy0以及dy1。
具体地,如前所述,由于建立了每根条纹的拟合模型,因此,只要知悉目标像素P0在第一标定图像和第二标定图像上位于那一根条纹,则直接可以基于该条纹的第一拟合模型和第二拟合模型,确定出目标像素P0在第一标定图像和第二标定图像上对应的像素P1和P2的纵坐标值,而对于横坐标,由于目标像素P0、像素P1和P2是相互匹配的点,因此在行方向上,即表征位于第几行像素上,这三个像素是一致的。假如目标像素P0的坐标为(x,y0),则像素P1和P2在第一标定图像和第二标定图上的坐标投影到基线方向后分别得到的投影坐标为(x,y1)、(x,y2),对应的视差分别为dy0=y0-y1,dy1=y2-y0,而其中y1和y2实际上对应第一拟合模型和第二拟合模型,由此可见,第一拟合模型和第二拟合模型是表征像素在横向坐标和列向坐标的关系,由此,当x得知,拟合模型知道时,即可得到像素在各自标定图像上的纵坐标。
实际上,参见上述图4,由于存在d1/d0=dy1/dy0,因此,故可以用dy1,dy0代替d1,d0,详细原因可参见下述深度Z的计算公式的解释。
S223、根据第一投影视差以及第二投影视差,计算所述结构光在所述结构化图像上的深度。
如图4所示,为本申请实施例四中深度计算原理示意图,起始距离和结束距离分别表示测量距离的下限和上限,对应的标定图实际上分别为第二标定图像以及第一标定图像,空间点A、C、F为投影仪投射出的同一点在不同距离平面处的投影点,点C在结构化图像上的成像点可对应上述目标像素P0,而点A在第一标定图像上的成像点则对应上述像素P1,点F在第二标定平面上的成像点对应上述像素P2,目标像素P分别与像素P1、像素P2的视差分别为视差d0、视差d1,而在像素坐标系上通过投影到基线B方向(像素坐标系上实际表现为垂直于条纹的方向),得到对应的投影视差dy0,dy1。而实际上根据相似三角形的关系,存在如下公式:
由上述公式可见,目标像素P0的深度Z与测量系统的内外参无关,只与视差d0,d1有关,从而不需要标定测量系统内外参数,因此,在本实施例中也就存在上述将斜线方向的视差投影到基线b方向形成投影视差以计算深度。
参照上述图5,深度Z的计算公式推导如下,根据相似三角形原理得知对于结构化图像上的点C存在如下公式(2)关系:
同理,对于测量距离的下限,第一标定图像上的点Z1存在如下公式(3)关系:
与此同时,存在如下公式(4)关系:
根据上述公式(2)(3)可得公式(5):
再参见上述公式(4)(5)可知:
(Z2-Z1)d1*Z=Z1*(dO+d1)(Z2-Z) (6)
对上述公式(6)进行解析即可得到上述公式(1)。
本申请实施例提供了一种图像处理装置,其包括:
视差单元,用于根据结构光分别投影到目标物体表面、第一标定参考面、第二标定参考面上形成的结构化图像、第一标定图像以及第二标定图像,确定所述结构光在所述结构化图像上的目标像素分别相对于所述结构光在所述第一标定图像以及所述第二标定图像上的所述目标像素的第一视差以及第二视差;
深度计算单元,用于根据所述第一视差和第二视差,计算所述目标像素在所述结构化图像上的深度,其中,所述第一标定参考面对应测量距离的上限,所述第二标定参考面对应所述测量距离的下限。
此处,需要说明的是,上述图像处理装置可以在图像处理芯片上实现,也可以在其他芯片上实现。
至此,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。