专利名称:用于通过检测预定图案进行3d测量的方法和设备的制作方法
技术领域:
本发明涉及一种从利用投影预定图案所拍摄到的图像检测该预定图案从而进行三维测量的图像信息处理设备及其控制方法。
背景技术:
测量物体的三维形状的设备被广泛应用于各种领域,例如,在工业领域,用于检查工厂的部件,或者在医学领域,用于测量生物体的形状。特别地,在存在对象物体可能因与测量设备的接触而变形或破损的风险的情况下,非接触式测量方法是有效的。在这类非接触式三维形状测量中,广泛使用这样一种方案,在该方案中,使用利用摄像设备获得的图像进行三角测量方法。例如,P.M.Griff in, L.S.Narashimhan, and S.R.Yee: “GENERATIONOF UNIQUELY ENCODED LIGHT PATTERNS FOR RANGE DATA ACQUISITION”,PatternRecognition, Vol.25,pp.609-616 (以下称为文献I)说明了下面的例子:通过利用投影仪将具有颜色特征的点序列图案投影至被摄体、并且利用照相机对反射光进行摄像,来进行三维形状测量。下面具体说明文献I所述的三维测量的过程。首先,利用投影仪将三色RGB点序列作为投影图案图像投影至被摄体,其中,通过符合数学法则的二维代码串来确定颜色序列。利用照相机拍摄被投影了投影图案图像的被摄体的图像,并且挑选在拍摄图像中所观察到的点序列,作为摄像点序列。基于预定代码串,将所挑选的摄像点序列中的相邻色的序列解码成摄像代码串。使用投影图案图像的代码串的数学法则,确定所获得的摄像代码串中包含的各部分的部分代码串和投影图案图像的代码串的二维位置之间的对应关系。获取摄像代码串中的所有可能部分代码串,如上所述确定部分代码串和二维位置之间的对应关系,并且基于三角测量方法的原理获得各个点的三维位置。使用上述过程进行被摄体的三维形状测量。然而,在上述传统例子中,存在下面的问题:根据被摄体的形状,对于不能从摄像代码串获取足够大小的部分代码串的拍摄图像的区域,可能不能确定该对应关系,因而不能进行三维形状测量。此外,还存在下面的问题:在从摄像点序列错误地挑选了原本不相邻的点的序列的情况下、或者在由于噪声或其他原因而将摄像点序列中的颜色判别为错误颜色的情况下,将代码串与错误的二维位置相关联,并且输出是三维测量的不正确结果。通过增大对应关系确定中所使用的部分代码串的长度,这确实可能检测到这类错误对应关系,但是,另一方面,出现的问题是,根据被摄体的形状,从摄像代码串不能挑选部分代码串的区域可能增加更多。
发明内容
考虑到上述问题做出本发明,并且根据本发明的实施例,提出一种减少对应关系的错误确定、并且甚至对于更多形状的被摄体进行三维测量的更稳健的三维测量方法。根据本发明的一个方面,提供一种图像信息处理设备,用于使用通过将投影图案投影至被摄体上所获得的拍摄图像来进行所述被摄体的三维测量,其中,所述投影图案是通过向二维地配置了多种类型的代码的投影代码串中的各代码分配针对各代码类型而不同的符号而获得的,所述图像信息处理设备包括:获得部件,用于通过从所述拍摄图像提取符号来获得摄像图案;转换部件,用于将所述获得部件所获得的摄像图案中的各符号转换成相应代码以获得摄像代码串;生成部件,用于通过根据采样特征从所述摄像代码串获得预定数量的代码、并且配置所获得的代码,来生成信息代码串,其中,在所述采样特征中,定义了所述预定数量的代码的采样位置和所述代码的顺序;以及测量部件,用于通过基于所述信息代码串和所述采样特征而确定所述信息代码串和所述投影代码串之间的对应关系,来进行所述被摄体的三维测量。另外,根据本发明的另一方面,提供一种用于控制图像信息处理设备的方法,其中,所述图像信息处理设备用于使用通过将投影图案投影至被摄体上所获得的拍摄图像来进行所述被摄体的三维测量,所述投影图案是通过向二维地配置了多种类型的代码的投影代码串中的各代码分配针对各代码类型而不同的预定符号而获得的,所述方法包括以下步骤:获得步骤,用于通过从所述拍摄图像提取符号来获得摄像图案;转换步骤,用于将在所述获得步骤中所获得的摄像图案中的各符号转换成相应代码以获得摄像代码串;生成步骤,用于通过根据采样特征从所述摄像代码串获得预定数量的代码、并且配置所获得的代码,来生成信息代码串,其中,在所述采样特征中,定义了所述预定数量的代码的采样位置和所述代码的顺序;以及测量步骤,用于通过基于所述信息代码串和所述采样特征而确定所述信息代码串和所述投影代码串之间的对应关系,来进行所述被摄体的三维测量。通过以下参考附图对典型实施例的说明,本发明的其他特征将显而易见。
图1是示出三维测量设备的总体结构的图。图2是示出投影图案图像的例子的图。图3是示出生成投影图案图像所使用的投影代码串的例子的图。图4是示出三维测量设备的处理的流程的流程图。图5A和5B是不出拍摄图像的例子和从拍摄图像所提取的摄像点序列的例子的图。图6是示出摄像代码串的例子的图。图7是摄像代码串的一部分的放大图。图8是示出用于获得信息代码串和冗余代码的方法(步骤S408)的流程图。图9是示出本发明实施例的所有采样特征的图。图10是示出本实施例的所有采样特征中的信息代码串的图。图11是示出代码错误检测/校正的方法的流程图。图12A 12D是示出用于进行代码错误检测/校正的采样代码串的三个例子的图。图13A 13C是示出根据采样代码串的三个例子所计算出的散列(hash)值的图。图14是示出用于确定投影图案图像和摄像代码串之间的对应关系的方法的流程图。
图15是示出本实施例所使用的投影代码串表的例子的图。图16是示出根据实施例的三维测量的图。图17是示出另一投影图案的例子的图。
具体实施例方式下面参考
本发明的优选实施例的例子。图1示出根据本发明实施例的图像信息处理设备的总体结构。投影仪101用作为图案投影单元,其中,其将如图2所示的、由红色、绿色或蓝色的点的序列所构成的投影图案图像投影至要测量的被摄体102。图案生成单元103生成投影图案图像(包含二维符号序列的投影图案的图像),其中,投影图案图像包含通过向二维配置多种类型的代码的投影代码串中的各代码分配颜色或亮度针对每一类型的代码而不同的点所获得的二维点序列。这样,投影仪101和图案生成单元103用作为图案投影设备。在本实施例中,图案生成单元103生成通过红色、绿色和蓝色点序列以符号表示由图3所示的代码1、2和3所构成的投影代码串的图像,作为要通过上述投影仪101投影的投影图案图像。应该注意,尽管使用红色、绿色或蓝色与各代码值相对应的点序列作为符号化图像,但是本发明不局限于此。照相机104用作为在将投影图案图像投影至被摄体102的状态下拍摄该被摄体的图像的摄像单元。这里,调整照相机104的位置和姿势,从而使得照相机104的图像坐标系统的X轴与通过投影仪101和照相机104的两个主点的位置所定义的直线相互平行。图案提取单元105进行用于从利用照相机104所获得的拍摄图像提取被摄体102上暴露于投影图案图像的部分的摄像点序列的处理。信息获得单元106将由图案提取单元105所提取的摄像点序列中的每一个点转换成与各颜色相对应的代码,以获得摄像代码串。代码采样单元107选择预定多种类型的采样特征(稍后参考图9和10说明)中的一个,从信息获得单元所获得的摄像代码串采样预定数量的代码,并且获得信息代码串和冗余代码。代码错误检测/校正单元108对通过代码采样单元107所获得的信息代码串和冗余代码集中进行代码校验,并且在信息代码串和冗余代码中进行代码错误的检测,如果可能,对代码错误进行校正,并且输出校验后的信息代码串。对应关系计算单元109基于代码错误检测/校正单元108所获得的校验后的信息代码串、图案生成单元103所生成的投影代码串和代码采样单元107在采样时所使用的采样特征,确定投影图案图像和摄像代码串之间的对应关系。三维形状获得单元110使用已确定对应关系的摄像点序列,基于三角测量的原理,计算照相机104和被投影了投影图案图像的被摄体102之间的深度,即形状。图4示出根据本实施例的图像信息处理设备的控制的流程图。下面,按照该流程图的步骤的顺序,说明根据本实施例的图像信息处理设备的操作。步骤S401:图案生成单元103生成投影图案图像。如图2所示,这里所生成的投影图案图像由根据代码而具有红色、绿色和蓝色三种颜色中的任一颜色、并且在垂直方向和水平方向上规则配置的点的序列所构成。该红色、绿色和蓝色点序列用作为表示投影代码串的符号序列,并且使用图3所示的投影代码串来确定配置这些点的序列。根据本实施例,在投影图案图像中,向投影代码串中的1、2和3分别分配红色、绿色和蓝色。图3所示的投影代码串由分别在u方向和V方向上延伸的行和列上的、并且使用下述规则所编码的二维阵列码所构成。首先,选择U方向和V方向各自的一个de Bruijn序列,即水平方向和垂直方向总共两个方向的两个de Bruijn序列。de Brui jn序列在可用单位代码的类型的数量是k的情况下是序列长度为kl的序列,并且具有子序列长度为I的每一连续子序列在整个代码串中仅存在一次的性质。例如,将投影图案图像中可使用的符号的数量设置成k,以u方向和V方向的顺序,将围绕采样特征(稍后说明)的矩形的大小设置成mX (n+1)(在水平方向上具有m个符号、并且在垂直方向上具有n+1个符号的大小)。在这种情况下,在u方向上选择序列长度km的de Bruijn序列,并且在V方向上选择序列长度1^的如Bruijn序列。在本实施例中,使用三个颜色作为符号,因此,k=3。此外,通过具有3 X 3大小的矩形围绕所有采样特征(稍后说明),因此m=3且n=2。本实施例在·u方向上所使用的、k=3且m=3(序列长度33=27)的de Bruijn序列是下面所示的数字序列:33132131123122121113323222333 (I)类似地,下面示出本实施例在V方向上所使用的、k=3且n=3(序列长度32=9)的deBruijn 序列:3311322123 (2)应该注意,本实施例所使用的de Bruijn序列(I)和(2)不允许循环,因此,分别具有比原始序列长度长m+k-1和η+k-l的长度。(稍后将说明图案中存在重复的情况)。接着说明用于使用上述两个de Bruijn序列生成投影代码串的方法。首先,在u方向上的第一行,原样使用u方向上的deBruijn作为投影代码串。在u方向上的第二行及随后的行,使用将V方向上的de Bruijn序列的值与关注行的前一行的代码串的值相加的结果作为代码串。这里以k-ary表示加法的结果,因而由I k表示该结果,并且忽略进位。例如,将以(2)所示的序列中的第一个数值“3”相加至图3中的第一行的代码串(最下面行的代码串)中的每一个值。在这种情况下,进行运算1+3=1、2+3=2和3+3=3,从而使得第一行的代码串和第二行的代码串相互相等。此外,对于第四行的代码串,将(2)的序列中的第三个值“I”相加至第三行的代码串。因而,1+1=2、2+1=3并且3+1=1,因此,通过向图3中的第三行的代码串中的每一个值相加1,获得如第四行的代码串。如上所述,通过将V方向上的de Bruijn序列的所有行逐一相加来获得代码串,可以生成如图3所示的u方向和V方向上的二维投影代码串。通过使用上述方法所生成的投影代码串具有下面的性质:在以位于投影代码串内的任意位置处、且具有大小mX (n+1)的矩形所围绕的部分代码串中,通过按照固定顺序对预定行和预定列进行采样所获得的长度m+n的信息代码串在投影代码串中仅存在一次。对稍后所述的步骤S408的采样特征的确定和步骤S410的代码错误检测/校正,使用该性质。通过生成下面的投影图案图像使得可以进行以下步骤的处理:在该投影图案图像中,使用如上所述的三个颜色的点图像对具有上述性质的投影代码串进行符号化和嵌入。步骤S402:投影仪101将在步骤S401所生成的投影图案图像投影至被摄体102上。步骤S403:照相机104拍摄被投影了投影图案图像的被摄体102的图像,并且生成图5A所示的拍摄图像501。步骤S404:图案提取单元105从在步骤S403所生成的拍摄图像501内提取摄像点序列502,其中,摄像点序列502是如图5B所示的与被投影至被摄体102上的投影图案图像相对应的摄像图案。在该处理中,提取具有对于红色、绿色和蓝色各颜色具有高于或等于预定水平的亮度的区域作为符号,从而提取摄像点序列502。应该注意,保持所提取的所有颜色信息。此外,将具有单一颜色的单个连续区域当作为单位摄像点,并且保持x_y照相机坐标系统上各摄像点的二维位置(例如,摄像点的重心)。步骤S405:信息获得单元106基于在步骤S404所提取的摄像点序列502,获得摄像代码串。这里,可以对在步骤S401被分配了作为符号的各颜色的点的代码进行逆向解码。也就是说,通过向红色分配1、向绿色分配2、并且向蓝色分配3,获得摄像代码串。作为构成摄像代码串的单位摄像代码(用于各摄像点的摄像代码),保持解码代码和x_y坐标上的相应摄像点的二维位置。图6示出解码摄像代码串601。接着对各摄像代码和存在于该摄像代码的上下左右的邻接摄像代码之间的邻接关系进行解码。图7示出摄像代码串的一部分的放大图。作为例子,说明图7中关注摄像代码701的邻接关系的解码。由于调整照相机104的位置和姿势,从而使得照相机104的图像坐标系统的X轴与通过投影仪101和照相机104的两个主点的位置所定义的直线相互平行,所以在与X轴平行的方向上拍摄所有摄像点序列。因此,可以容易地对X方向上的摄像代码串之间的邻接关系进行解码。首先,搜索在X方向上存在于关注摄像代码701的左右的最近的相邻代码作为邻接代码。接着,搜索与y方向上的上下的摄像代码的邻接关系。此时,由于y方向与y轴不平行,并且存在邻接代码可能处于在X方向上偏移的状态的可能性,所以在X方向上定义搜索范围702,并且在该范围内搜索邻接代码。根据上述过程来恢复各摄像代码和该摄像代码的上下左右的摄像代码之间的邻接关系,并且以摄像代码为单位,保持恢复的结果。步骤S406:代码采样单元107扫描通过信息获得单元106所获得的摄像代码串,并且为了获得信息代码串(稍后说明),设置用作为开始代码采样的第一个点的原点。步骤S407:判断步骤S406的结果是否是完成了扫描。如果完成了扫描,则结束该处理。如果没有,则处理进入步骤S408。以不重复设置同一原点的方式进行扫描,并且假定如果进行扫描直到将所有摄像代码串设置为原点为止则完成扫描。步骤S408:代码采样单元107选择预定多个类型的采样特征中的一个。然后,代码采样单元107根据所选择的采样特征,从与由信息获得单元106所获得的摄像代码串的、在步骤S406所设置的原点相对应的位置开始进行代码采样。然后,获得信息代码串和冗余代码。图8示出用于说明步骤S408的用于获得信息代码串和冗余代码的方法的流程图。下面按照图8的流程图中的步骤的顺序,详细说明步骤S408的操作。步骤S801:代码采样单元107将表示代码采样所使用的采样特征的采样特征编号P初始化成I。采样特征定义要提取的预定数量的点的位置和信息代码串中的这些点的顺序。各采样特征从预定大小的部分点序列选择预定数量的点。例如,对于本实施例的采样特征,在摄像代码串中的包含3X3部分点序列的矩形内,准备按照固定顺序对任意行和任意列进行采样的情况下的所有组合形状,并且向所准备的形状预先分配编号P。图9中的附图标记901 909表示本实施例的所有采样特征。圆形标记表示各个代码,并且虚线表示摄像代码串中包含3X3部分点序列的矩形。代码中的数字表示采样顺序(信息代码串中的顺序),并且在向关注代码分配采样顺序编号I的情况下,按照编号顺序进行采样。
此外,使用与上述部分点序列中除预定数量的点以外的点(除上述m+n个代码以外的点)相对应的代码,作为用于检测信息代码串中的错误的冗余代码。例如,在本实施例中,采样顺序编号I 5表示对于对应关系确定所使用的、并且具有长度m+n=5的信息代码串,并且其他顺序编号,即除信息代码串以外的顺序编号6 9表示对于代码错误检测/校正所使用的冗余代码。对于每一采样特征,从摄像代码串的代码的不同组合采样信息代码串,如图10中的1001 1009所示。例如,作为多个采样特征,假定定义在水平方向上具有m个点、并且在垂直方向上具有n+1个点的部分代码串(在图10的情况下,m=3并且n=2)、从水平方向上所选择的单个行和从垂直方向上所选择的单个列中所包含的m+n个代码的位置、以及这些代码的顺序。步骤S802:代码采样单元107将表示要采样的代码串的顺序编号的采样顺序编号N初始化成I。在步骤S803,代码采样单元107检查采样特征编号P是否超过了最大编号P_。在本实施例中,如图9所示,Pmax=9。如果在步骤S803判断为P超过了 Pmax,则由于这意味着不可能获得所有采样特征的信息代码串,所以认为步骤S406的处理失败,并且结束该处理。如果P没有超过Pmax,则继续该处理。步骤S804:代码采样单元107对与当前采样特征编号P的采样顺序编号N相对应的代码进行采样,并且获得一个信息代码串。如果该单元成功获得信息代码串,则处理进入步骤S806。如果在摄像代码串中没有邻接代码,并且该单元在采样顺序编号N的位置处获取信息代码串失败,则处理进入步骤S805。步骤S805:向采样特征编号P相加1,并且处理返回到步骤S803。步骤S806:代码采样单元107检查采样顺序编号N是否达到了信息代码串的长度
5。如果没有达到该长度,则处理进入步骤S807。如果达到了该长度,则处理进入步骤S808。步骤S807:向采样顺序编号N相加I,并且处理返回到步骤S804。步骤S808:代码采样单元107对与当前采样特征编号P的采样顺序编号N相对应的代码进行采样,并且获得一个冗余代码。如果该单元成功获得冗余代码,则处理进入步骤S809。如果在摄像代码串中的采样顺序编号N的位置处未能获得代码,并且该单元获取冗余代码失败,则认为代码采样成功,并且结束该处理。步骤S809:代码采样单元107检查采样顺序编号N是否达到了组合信息代码串和冗余代码的最大长度9。如果没有达到该最大长度,则处理进入步骤S810。如果达到了最大长度,则认为处理成功,并且结束该处理。步骤S810:向采样顺序编号N相加1,并且处理返回到步骤S808。通过进行根据上述过程的处理,在步骤S408,进行从通过信息获得单元106所获得的摄像代码串的采样,并且获得信息代码串和冗余代码(下面,将其通称为“采样代码串”)。当完成了步骤S408的代码采样的处理时,处理进入步骤S409。步骤S409:代码错误检测/校正单元108判断步骤S408的代码采样处理是否成功。如果处理结果是不成功的,则处理返回到步骤S406。如果处理结果是成功的,则处理进入步骤S410。步骤S410:代码错误检测/校正单元108使用采样代码串进行代码校验,并且检测采样代码串中的任何代码错误。此外,如果代码错误是可校正的,则代码错误检测/校正单元校正代码。图11示出用于说明步骤S410的代码错误检测/校正的方法的流程图。下面按照图11的流程图中的步骤的顺序说明步骤S410的操作。步骤SllOl:代码错误检测/校正单元108计算表示来自采样代码串的代码校验的结果的散列值。图12A 12C示出采样代码串的例子。图12A 12C中的所有例子具有相同信息代码串1201,并且仅在冗余代码的数量上有所不同。垂直方向和水平方向上的信息代码串和冗余代码之间的邻接关系都符合摄像代码串的邻接关系,并且将投影代码串的u坐标轴当作为行方向,并且将V坐标轴当作为列方向。为了计算散列值,在这些信息代码串和冗余代码的行方向上顺次计算右列和左列之间的差。在本实施例中,列的数量为n+l=3,因此,计算出各行上的两个差值作为散列值。应该注意,以k-ary表示差计算的所有结果。在本实施例中,k=3,因此,散列值是O、I和2中的任一个。此外,在不存在采样代码串的位置处,不进行散列值计算,并且在该位置处设置空白。图13A 13C示出图12A 12C中的信息代码串和冗余代码的散列值。在代码错误检测/校正处理中,将所有列中的一组计算值是完全的一行散列值,当作为一个代码校验结果。步骤S1102:代码错误检测/校正单元108判断是否存在在步骤SllOl所计算出的多于一行的散列值。如果仅存在一行散列值,则其仅是根据具有该散列值的信息代码串所生成的行,并且不能进行代码错误检测,因而认为步骤S410的处理成功,并且结束该处理。如果存在多于一行的散列值,则处理进入步骤S1103。在图13A所示的例子中,仅存在一行散列值,因此认为该步骤成功,并且结束该步骤。在图13B和13C所示的例子中,分别存在两行和三行的散列值,即,在这两个例子中,存在多于一行的散列值,因此,处理进入步骤 S1103。步骤S1103:代码错误检测/校正单元108判断列方向上的所有散列值是否相同。如果列方向上的值都相同,则与在投影代码串的生成期间的各列中的相同值的相加的结果不矛盾,并且这意味着在计算出的散列值的范围中没有检测到代码错误。因此,认为该计算成功,并且结束该处理。另一方面,如果在列方向上甚至存在一个不同值,则与上述计算结果发生矛盾。因此,判断为存在代码错误,并且处理进入步骤S1104。在图13B和13C所示的两个例子中,右侧的列方向上的值不同。因此,在这两种情况下,判断为存在代码错误,并且处理进入步骤SI 104。步骤SI 104:代码错误检测/校正单元108判断是否存在在步骤SllOl所计算出的所有三个行的散列值。如果行的数量小于3,则不能进行代码错误校正,因此认为步骤S410不成功,并且结束该步骤。如果存在所有三个行,则处理进入步骤S1105。在图13B所示的例子中,最下面行中的一组散列值不是完全的,因此认为步骤S410不成功,并且结束该步骤。在图13C所示的例子中,三个行中的所有组的离散值都是完全的,因此处理进入步骤S1105。步骤S1105:代码错误检测/校正单元108判断针对对象采样代码串是否可以进行代码错误校正。首先,在三个行的散列值中,检测包含与列方向上的其他散列值不同的散列值的行。如果所有行都包含不同散列值,则不能进行代码错误校正,因此认为步骤S410不成功,并且结束该步骤。如果在三个行中的散列值中,仅一个行中的散列值不同,则判断为在该行中存在可校正代码错误,并且处理进入步骤S1106。在图13C所示的例子中,仅最上面行1301中的右侧列中的值不同,因此判断为在该行中存在可校正代码错误,并且处理进入步骤S1106。步骤S1106:代码错误检测/校正单元108使用其他行中的散列值,对在步骤S1105被判断为包含可校正代码错误的采样代码串的行进行代码错误校正。代码错误检测/校正单元108在最初被判断为包含代码错误的行中,检查离散值与其他行中的散列值不同的列。如果仅左侧列中的散列值不同,则假定在采样代码串的相关行左侧的代码值中存在错误,并且校正该代码值。可以通过利用采样代码串的相关行中的中央列中的代码值和除相关行以外的行中的左侧列中的散列值之间的差的值,替换错误值来进行错误校正。在本实施例中,还使用没有借位的k-ary,即使用答案仅为1、2和3的三进制数系来进行该差计算。如果仅右侧列中的散列值不同,则假定在采样代码串的相关行的右侧的代码值中存在错误,并且以相同方式进行校正。在三进制数系中,可以通过利用采样代码串的相关行中的中央列中的代码值和除相关行以外的行中的右侧列中的散列值的和的值,替换错误值来进行错误校正。如果左侧列和右侧列两者中的散列值都不同,则假定在采样代码串的相关行中的中央列中的代码值中存在错误,并且以相同方式进行校正。在三进制数系中,可以通过利用采样代码串的相关行中的右侧列中的代码值和除相关行以外的行中的右侧列中的散列值之间的差的值,替换错误值来进行错误校正。在图13C所示的例子中,仅行1301中的右侧列中的散列值不同,因此假定在采样代码串的相关行中的右侧列中的代码值“3”中存在错误来进行校正。在错误校正计算中,以校正值“2”替换错误值“3”,其中,该校正值“2”是图12C中的采样代码串的相关行中的中央列中的代码值“2”和除行1301以外的行中的右侧列中的散列值“0”的和。可以看出,通过这样进行代码错误校正,利用校正值1202,将图12C所示的校正之前的信息代码串“ 12321 ”校正成“ 12221 ”,如图12D所示。在上述计算之后,认为步骤S410成功,并且结束该步骤。通过执行上述步骤SllOl S1106,检测采样代码串中的代码错误。此外,如果代码错误是可校正的,则进行代码校正。应该注意,下面将对于在步骤S410的处理成功的信息代码串称为“校验信息代码串”。处理进入图4的步骤S411。步骤S411:代码错误检测/校正单元108判断步骤S410的代码错误校正/检测的处理结果。如果该处理成功,则处理进入步骤S412。如果该处理不成功,则处理返回至步骤S406,并且处理对象变换成下一代码采样位置。步骤S412:对应关系计算单元109确定投影图案图像和构成摄像代码串的校验信息代码串之间的对应关系。图14示出用于说明步骤S412的用于确定投影图案图像和摄像代码串之间的对应关系的方法的流程图。下面,按照图14的流程图中的步骤的顺序,详细说明步骤S412的处理。步骤S1401:对应关系计算单元109选择具有与在步骤S408的信息代码串的采样中所使用的采样特征编号P相同的编号的投影代码串表。图15示出本实施例所使用的投影代码串表的例子。投影代码串表是存储在使用采样特征编号P在各种二维位置(u,v)处对投影代码串进行采样的情况下的信息代码串的值的表,并且准备与要使用的采样特征的数量(该例子中为9)相同数量的表。通过使用这类投影代码串表,可以在无需进行复杂计算的情况下,容易地进行用于确定投影代码串和校验信息代码串之间的对应关系的计算。步骤S1402:对应关系计算单元109在u方向和V方向上二维扫描在步骤S1401所选择的投影代码串表,以搜索与校验信息代码串一致的表值。如果存在一致的表值,则记录该表值的位置(U,v)。步骤S1403:对应关系计算单元109判断在步骤S1402的搜索中是否存在与校验信息代码串一致的表值。如果存在这类表值,则处理进入步骤S1404。如果不存在这类表值,则由于不能确定对应关系,所以判断为对应关系确定不成功,并且结束步骤S412。步骤S1404:对应关系计算单元109输出包含与步骤S1402的搜索中与校验信息代码串一致的表值的位置(u,v)的校正信息代码串,作为对应关系确定摄像代码串,并且判断为对应关系确定成功,并且结束步骤S412。通过进行根据上述 过程的处理,对应关系计算单元109确定投影图案图像和构成摄像代码串的校验信息代码串之间的对应关系。然后,处理进入步骤S413。步骤S413:对应关系计算单元109判断步骤S412的用于确定对应关系的计算的处理结果。如果该处理成功,则处理进入步骤S414。如果该处理不成功,则处理返回到步骤S406。步骤S414:三维形状获得单元110使用在步骤S412所获得的对应关系确定摄像代码串,测量被摄体102的三维形状。图16示出下面的情况下的示意图:使用照相机坐标系统1602,测量与摄像点序列中的对应关系确定摄像代码串相对应的测量点1603的位置,其中,在照相机坐标系统1602中,将照相机的主点1601的位置设置成原点0(0,0)。在利用投影仪101投影的投影图案图像中,配置具有相同的u坐标值的点序列中的点,以使得在V方向上排列在单个直线1604上。此时,测量点1603是处于直线1604在空间形成的切割平面1605和被摄体102的相交线上的点。这里假定使用照相机坐标系统,通过下面的公式
(3)预先校准通过投影测量线图案所形成的切割平面1605:ax+by+cz+d=0 (3)此外,测量点1603处于使用利用图1的照相机104所拍摄的拍摄图像1606上的投影点1607的位置P((Px,Py, _f)、通过下面的公式(4)所表示的直线1608上。应该注意,在拍摄图像1606中,为了简化,省略排除投影点1607的摄像点序列。此外,当假定图1中的照相机104为针孔照相机时,图16中的拍摄图像1606具有等于摄像装置上的投影图像的实际大小。此外,假定拍摄图像1606与照相机坐标的xy平面平行,并且将图像的中心设置在在z轴方向上与原点位置相距焦距的位置处。
P ^ — -*****.............t
/
Py ———(4)
/z=t其中,t是为任意实数的参数。由于以公式(3)所表不的切割平面1605和以公式(4)所表不的直线1608的相交点是测量点1603,所以通过下面的公式(5)表示照相机坐标系统中的测量点1603的位置C (Cx, Cy, Cz):
权利要求
1.种图像信息处理设备,用于使用通过将投影图案投影至被摄体上所获得的拍摄图像来进行所述被摄体的三维测量,其中,所述投影图案是通过向二维地配置了多种类型的代码的投影代码串中的各代码分配针对各代码类型而不同的符号而获得的,所述图像信息处理设备包括: 获得部件,用于通过从所述拍摄图像提取符号来获得摄像图案; 转换部件,用于将所述获得部件所获得的摄像图案中的各符号转换成相应代码以获得摄像代码串; 生成部件,用于通过根据采样特征从所述摄像代码串获得预定数量的代码、并且配置所获得的代码,来生成信息代码串,其中,在所述采样特征中,定义了所述预定数量的代码的采样位置和所述代码的顺序;以及 测量部件,用于通过基于所述信息代码串和所述采样特征而确定所述信息代码串和所述投影代码串之间的对应关系,来进行所述被摄体的三维测量。
2.据权利要求1所述的图像信息处理设备,其中,如果使用所述采样特征从所述摄像代码串不能获得所述预定数量的代码,则所述生成部件选择其它采样特征来生成所述信息代码串。
3.据权利要求1所述的图像信息处理设备,其中,所述采样特征和所述投影代码串被配置为使得从一个采样特征所获得的所有信息代码串在所述投影图案中仅存在一次。
4.据权利要求1所述的图像信息处理设备,其中,所述采样特征用于从预定大小的部分代码串生成所述信息代码串,所述图像信息处理设备还包括: 检测部件,用于使用所述部分代码串中除所述信息代码串以外的冗余代码来检测所述信息代码串中的错误。
5.据权利要求1所述的图像信息处理设备,其中,所述采样特征定义了用于从在水平方向上具有m个点并且在垂直方向上具有n+1个点的部分代码串中提取m+n个代码的垂直方向上的列和水平方向上的行的位置,并且定义了所提取的代码的顺序。
6.据权利要求5所述的图像信息处理设备,其中,还包括: 检测部件,用于使用所述部分代码串中除用于生成所述信息代码串的所述m+n个代码以外的代码作为冗余代码,校正或检测所述信息代码串中的错误。
7.据权利要求3所述的图像信息处理设备,其中,基于在水平方向和垂直方向上各一个的、由三个数以上的代码所构成的de Bruijn序列,生成所述投影代码串。
8.据权利要求7所述的图像信息处理设备,其中,所述部分代码串的水平和垂直大小等于用于所述投影代码串的水平和垂直de Bruijn序列的子序列长度。
9.据权利要求3所述的图像信息处理设备,其中,基于在水平方向和垂直方向上各一个的、由两个数的代码所构成的M序列,生成所述投影代码串。
10.据权利要求9所述的图像信息处理设备,其中,所述部分代码串的水平和垂直大小等于用于所述投影代码串的水平和垂直M序列的子序列长度。
11.种用于控制图 像信息处理设备的方法,其中,所述图像信息处理设备用于使用通过将投影图案投影至被摄体上所获得的拍摄图像来进行所述被摄体的三维测量,所述投影图案是通过向二维地配置了多种类型的代码的投影代码串中的各代码分配针对各代码类型而不同的预定符号而获得的,所述方法包括以下步骤:获得步骤,用于通过从所述拍摄图像提取符号来获得摄像图案; 转换步骤,用于 将在所述获得步骤中所获得的摄像图案中的各符号转换成相应代码以获得摄像代码串; 生成步骤,用于通过根据采样特征从所述摄像代码串获得预定数量的代码、并且配置所获得的代码,来生成信息代码串,其中,在所述采样特征中,定义了所述预定数量的代码的采样位置和所述代码的顺序;以及 测量步骤,用于通过基于所述信息代码串和所述采样特征而确定所述信息代码串和所述投影代码串之间的对应关系,来进行所述被摄体的三维测量。
12.据权利要求11所述的方法,其中,在所述生成步骤中,如果使用所述采样特征从所述摄像代码串不能获得所述预定数量的代码,则选择其它采样特征来生成所述信息代码串O
13.种用于存储使计算机执行根据权利要求11所述的方法的步骤的计算机程序的计算机可读存储介质。
全文摘要
一种图像信息处理设备,其使用通过将包含二维符号序列的投影图案投影至被摄体上、并且拍摄被摄体的图像所获得的拍摄图像,来进行被摄体的三维测量,其中,投影图案是通过向二维配置多种类型的代码的投影代码串中的各代码分配预定符号而获得的。图像信息处理设备通过从拍摄图像提取符号序列来获得摄像图案,并且将摄像图案中的符号点转换成相应代码,从而获得摄像代码串。图像信息处理设备根据从多个类型的采样特征所选择的一个采样特征而获得预定数量的代码,通过配置所获得的代码而生成信息代码串,并且确定信息代码串和投影代码串的一部分之间的对应关系,从而进行三维测量。
文档编号G06T7/00GK103098091SQ201180043428
公开日2013年5月8日 申请日期2011年8月31日 优先权日2010年9月8日
发明者园田哲理 申请人:佳能株式会社