专利名称:基于二维彩色光编码的实时三维视觉系统的制作方法
技术领域:
本发明涉及一种实时三维视觉系统。
背景技术:
在一个编码结构光系统中,用于照明场景的光模板是经过特别设计的,模板图像上每个象素都有它特定的代码,所以,实现时需要从代码到相应象素坐标的直接映射。这些代码通常是一些简单的数字,可以由灰度、颜色或者特定几何形状来表示这些图象映射代码。一般地,如果要编码点的数量越多,代码字就要越多,而把这些代码映射到相应的图形上也就越困难。Batlle等广泛研究了过去十年里发展起来的图象映射技术,并把编码分为时间多分辨率法、邻域编码法和直接法等三种。时间多分辨率法通过映射图象时间序列产生代码字,所以每一个图象结构都很简单。邻域编码法用独特的图案代替代码字,但增加了图形的复杂程度。直接法则为每个象素定义一个代码字。
基于时间复用技术的时间多分辨率法,是时序编码的最普遍的策略之一。这种图象能实现高精度的测量,这主要是由于两个原因首先,因为那些复合图案映射成的代码基很小(通常只是二进制数),因此是一种很容易在彼此编码字中区分的简单编码方式。其次,通过一个从粗到细的过程,当图象被连续映射的时候,象素的位置也正在被逐步精确地输入。这个技术的优点是易于实行,完成高空间分辨率和精确的三维测量。但是,其主要的弊端是当有运动物体需要多图案映射的时候,这个技术就不适用。基于映射光栅图象输入灰度代码技术能获得很好的精度,但是不能达到最大的分辨率。为了获得大的分辨率,一个基于灰度编码和相移的技术被加以使用,它的主要缺点是要用大量的映射图案(大于24幅)。如果最大的空间分辨率不是应用的主要目标,要把映射图象的数量减到最小限度,那么编码的光映射技术就比较合适。这种方法即获得了较高的精确度,同时以指数形式减少了需映射的图象数量。
直接编码技术创造一种图形以便把每一个象素都能通过它上面的信息来标记。这样某个点的代码字就被包含在一个独特的灰度图案里。最近Griffin和Salvi等人在这项技术上做的工作给我们带来了很有用的参考依据。为了达到唯一性,既用了大范围的颜色值又采用周期性。虽然到达很高的三维信息分辨率在理论上能实现,但是由于噪声的存在,使得代码字之间的距离几乎为零。再者,图象的颜色不只是取决于影象的颜色还取决于物体表面本身的颜色,因此至少需要拍摄一张以上的参考图象用于三维重建,所以,这些技术并不适合于动态场景的重建和分析。
空间邻近编码法是结构光系统中的另外一种主要的方法。这种方法在一个图案中集中所有的编码模式,用图象点标记过代码字可以从它周围邻近的点上进行分析得到。然而其译码阶段变得比较困难,因为有时候空间邻近区域可能丢失而产生三维计算错误。一般地,那些聚集在邻域中的可视化特征是那些灰度和颜色的区域结构。空间邻近技术可以分成三类非正态的编码法,De Bruijn序列和M阵。这些技术与时间复用技术相比的优点是这些策略允许测量运动物体的表面。然而,因为这个方法必须被压缩到同一幅图象中,空间分辨率比较低。此外,要假定被测物体的局部表面光滑性从而保证正确的灰度译码。
现有的结构光系统常用单行条纹码,这种方法的好处是大大简化了匹配的问题,但是缺点是在每个图象的连续镜头中只能获得一条数据点的条纹。为了加速数据采集过程,可以采用多行条纹来代替。Osawa等人用四个灰度图案的空间—时间扫描法,当用相机拍照的时候,各式各样的灰度代码以时间序列形式映射到物体。这种方法的优点是加速了获得三维图象的过程同时也简化了匹配问题。但是,它还是需要几次连续拍摄多幅图象来产生时间序列代码。为了减少输入图象的数量,产生彩色条纹图案,同时用照相机在各个视点进行拍摄。有人使用了未被矫正过的结构光源射出各种彩色条纹形式,并结合彩色结构光和立体视觉,只使用一部照相机抓获映射条纹图案的图片,然后在图象中进行边缘匹配。
与结构光系统相比,这个使用线性条纹LCD或DLP投影机的系统具有一个优点,就是在一个场景中测量相同数量的物体的点需要较少的图象。但是,它仍需要数幅图片(通常是8到12幅)才能复原一个三维场景的图象。所以,它的速度和应用受到了一定制约,通常,只能用来重建静态物体。对于动态场景,只能获取一张图片以观察运动物体的三维信息。在这种情况下,用一张图片获得三维图象就十分令人期待了。
发明内容为了克服现有的三维视觉系统的重建效率低、系统速度受限、动态图象实时性差的不足,本发明公开一种采用特殊栅格图案实现三维图象重建。这是一种效率高、系统速度快、实时性好的基于二维彩色光编码的实时三维视觉系统。
本发明解决问题所采用的技术方案是一种基于二维彩色光编码的实时三维视觉系统,包括一数字放映机,用以把光模板投射到物体上;一摄像机,用以获取图象;一微处理器,用以形成彩色调制光和进行三维重建,所述的微处理器包括有一颜色集合模块,用以形成颜色集合P={c1,c2,c3,...ci,...},i≥3,其中ci表示一种特定波长的光波或者颜色;一编码模块,用以从所述的颜色集合中选出元素,并进行特定的编码组合成编码字,所述的编码字的领域具有唯一性;一编码字输出模块,用以将所述的编码字一一对应到光投影器件以输出光束;一三维坐标计算模块,用以将获取的图像对应到光模板并计算得到三维空间坐标,所述的编码模块中,用以根据颜色集合P,构造一个最长的水平代码序列
Sh=[c1,c2,c3,...,cm] (1)其中,m是序列的长度,对于任何邻近的颜色对,它满足式(2)ci≠ci+1,1≤i<m (2);并且任意三个相邻颜色的组合Th3i=[cici+1ci+2]在序列中是唯一存在的,参见式(3)Th3i≠Th3j, i≠j,1≤i,j≤m-2 (3)水平序列长度的最大值Sh是Length(Sh)=p(p-1)(p-1)+2;再构造一个最长的垂直序列Sv=[c1,c2,c3,...,cn](4)其中n是序列的长度,对于其中的任意颜色对,它不仅仅满足式(2),还满足唯一性条件[cici+1]≠[cjcj+1],i≠j,1≤i,j≤m-1(5)由P个颜色产生的垂直序列,其长度的最大值Sv是Length(Sv)=p(p-1)+1;根据P个颜色产生的最长水平序列和P-1个颜色产生的最长垂直序列通过卷积运算构建彩色映射矩阵S,参见(6)S=ShSv(6);该矩阵S满足条件1W={wijwij≠wkl,(i,j)≠(k,l),2≤i,k≤(m-1),2≤j,l≤(n-1)---(7)]]>
条件2M={xijxij≠xi-1,j,xij≠xi+1,j,xij≠xi,j+1,xij≠xi,j-1,1≤i≤m,1≤j≤n}---(8)]]>其中,xij是彩色映射矩阵S中的第i行和j列的彩色网格点,字wij是一个五元组序列{xij,xi,j-1,xi-1,j,xi,j+1,xi+1,j}。
进一步,所述的彩色映射矩阵为栅格图案,每两个相邻彩色栅格点颜色之间存在设定的最小距离。
再进一步,所述的卷积运算的规则为矩阵的第一行由Sh定义,第二行是由以p为模加Sv的第一个元素到Sh的每个元素中去创造出来的,其中模数操作只在集合{1,2.....p}中不包括0元素,第三行是由以p为模加Sv的第二个元素到Sh的每个元素中去创造出来的,依次类推。
本发明的工作原理是根据应用对象设计一个颜色集,颜色集中包含特定种互不相同的颜色,然后用上述方法分别构造一个水平代码序列和垂直代码,再生成一个彩色映射矩阵S;结构光视觉系统通过投影仪把这个彩色映射矩阵S所对应的光图案投射到场景中,一个摄像机检测到物体表面颜色的分布;图像中颜色的分布经过解码后可以译出每个象素点所对应的投影坐标,再利用系统定标参数(即摄像机和投影仪的两个透视转换矩阵),便可以进行三维重建以测量场景中每一个可见点的三维坐标。由于系统工作过程中只需要获取一幅场景图像,而且图像也只需在局部进行处理,因此工作效率非常高,可以用于实时三维系统。
模板彩色光映射矩阵S经数字放映机输出,场景中的三维物体被彩色调制,然后通过分析图像中的颜色分布就可以进行快速三维重建。
本发明的有益效果主要表现在1、只需读取单幅图象即可对三维场景进行测量;2、效率高、系统速度快;3、动态实时性好。
图1是典型的灰色编码法示意图。
图2是Griffin等人设计的编码图形。
图3是Salvi等人设计的编码图形。
图4是本发明所实现系统的结构示意图。
图5是本发明所采用的栅格图案示意图。
图6是由七种颜色产生的32×212栅格图案的示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
图1是典型的灰色编码法示意图,图2和图3是Griffin和Salvi等人近几年所设计的编码图形。本发明中,参照图4、图5,一种基于二维彩色光编码的实时三维视觉系统,包括一数字放映机,用以把光模板投射到物体上;一摄像机,用以获取图象;一微处理器,用以形成彩色调制光和进行三维重建,所述的微处理器包括有一颜色集合模块,用以形成颜色集合P={c1,c2,c3,...ci,...},i≥3,其中ci表示一种特定波长的光波或者颜色;一编码模块,用以从所述的颜色集合中选出元素,并进行特定的编码组合成编码字,所述的编码字的领域具有唯一性;一编码字输出模块,用以将所述的编码字一一对应到光投影器件以输出光束;一三维坐标计算模块,用以将获取的图像对应到光模板并计算得到三维空间坐标,所述的编码模块中,用以根据颜色集合P,构造一个最长的水平代码序列Sh=[c1,c2,c3,...,cm](1)其中,m是序列的长度,对于任何邻近的颜色对,它满足式(2)ci≠ci+1, 1≤i<m (2);
并且任意三个相邻颜色的组合Th3i=[cici+1ci+2]在序列中是唯一存在的,参见式(3)Th3i≠Th3j, i≠j,1≤i,j≤m-2 (3)水平序列长度的最大值Sh是Length(Sh)=p(p-1)(p-1)+2;再构造一个最长的垂直序列Sv=[c1,c2,c3,...,cn] (4)其中n是序列的长度,对于其中的任意颜色对,它不仅仅满足式(2),还满足唯一性条件[cici+1]≠[cjcj+1],i≠j,1≤i,j≤m-1(5)由P个颜色产生的垂直序列,其长度的最大值Sv是Length(Sv)=p(p-1)+1;根据P个颜色产生的最长水平序列和P-1个颜色产生的最长垂直序列通过卷积运算构建彩色映射矩阵S,参见(6)S=ShSv(6);该矩阵S满足条件1W={wijwij≠wkl,(i,j)≠(k,l),2≤i,k≤(m-1),2≤j,l≤(n-1)---(7)]]>条件2S={xijxij≠xi-1,j,xij≠xi+1,j,xij≠xi,j+1,xij≠xi,j-1,1≤i≤m,1≤j≤n}---(8)]]>其中,xij是彩色映射矩阵S中的第i行和j列的彩色网格点,字wij是一个五元组序列{xij,xi,j-1,xi-1,j,xi,j+1,xi+1,j};
进一步,所述的将彩色映射矩阵为栅格图案,矩阵S通过电脑可以输出到数字放映机上,每两个彩色代码字之间存在设定距离,从而使三维物体被模板彩色光调制。
本发明在栅格图案设计时提出了一个新的方法,一旦照相机的透视映射矩阵和放映机相对的全球坐标结构从初试的刻度被计算出来,由于没有匹配问题,处理三维坐目标点的三角测量只要简单计算线性方程式。
在栅格图案中,每个光格与其周围的领格所组成的字图形是唯一确定的,这在现实时非常重要。
让P为一系列颜色原始代码,P={1,2,…,p}(例如,1=白,2=红,3=绿,4=蓝,等)。这些颜色原始代码被指定给一个m×n的S矩阵,这个矩阵来自可能映射到场景上去的输入图象。我们定义了一个字,这个字来自颜色值在S中的坐标为(i,j)和它相邻的4个值。如果xij是指定的在S中的第i行和j列的彩色点,那么这个字就表示了所相应的位置,wij表示序列{xij,xi,j-1,xi-1,j,xi,j+1,xi+1,j},其中i∈{1,2,…,m},j∈{1,2,…,n}(图5)。如果S中所有字的值都存在一个表中,那么每个字在投影机上直接定义一个坐标位置。
通过这种方法,每个定义的坐标位置在矩阵中都是唯一的,所以匹配就不再成为问题了。也就是说,图象映射到场景中后,每个图象点的字值被决定了(通过计算图象点和它周围相邻点的颜色分布),这样,某个图象点在矩阵中的匹配位置是唯一确定的。
编码方法实现的步骤为首先,给定一个颜色集合P,我们尽力构造一个最长的水平代码序列,Sh=[c1,c2,c3,...,cm] (1)
其中,m是序列的长度。对于任何相邻的颜色对,它满足式(2)ci≠ci+1,1≤i<m(2);并且任意三个相邻颜色的组合Th3i=[cici+1ci+2]在序列中是唯一存在的,参见式(3)Th3i≠Th3j,i≠j,1≤i,j≤m-2(3)定理1水平序列Sh的长度最大值是Length(Sh)=p(p-1)(p-1)+2。
这是因为,对于p种颜色,独立三元组的最大数量是p(p-1)(p-1),假设它们都能连接在一起,那么链的长度就是p(p-1)(p-1)+2。
这个水平序列可以通过随机搜寻法产生。本发明检验了所有颜色数不大于32的颜色集合,每个颜色集合都能产生一个最长的链。由于在离线状态下只要产生一次而不影响系统工作的实时性能,所以无需特别注重改进这个算法。
例如,针对四色集合,其水平序列可以生成为Sh(4)=[12421213132312343243413423214143142412]再者,给定一个颜色集合P,我们设法构造一个垂直的最长彩色序列,Sv=[c1,c2,c3,...,cn] (4)其中n是序列的长度,对于其中的任意颜色对,它不仅仅满足条件(2),还满足唯一性条件[cici+1]≠[cjcj+1],i≠j,1≤i,j≤m-1 (5)定理2在相邻颜色对具有唯一性的条件下,垂直序列Sv其长度的最大值是Length(Sv)=p(p-1)+1。这个序列可由下面的形式产生,Sv=[121314...1p,2324...2p,...,(p-1)p,1]最大长度的证明和定理1相似。对于p种颜色,其独立颜色对的最大数量是p(p-1),假设它们都能连起来,链的长度是p(p-1)+1。事实上,序列的第一部分[1213...1p]包含了除了[p1]以外的所有含1的颜色对,它有2(p-1)个并且每对都是唯一的,第二部分[p2324...2p]包含了所有含有2的颜色对,这部分增加了2(p-2)对。根据这种方法和在序列的最后增加一个1,我们发现序列中的每一对都是唯一的。
例如,给定一个4个颜色的集合,垂直列序则是Sv(4)=[1213142324341]。
由于垂直序列作为模和水平序列一起作用的原因,数字p不能出现在垂直序列中。因此,该序列事实上比水平序列要少一种颜色。如果用颜色p来产生水平序列,那么p-1个数字就用来产生相应的长度为(p-1)(p-2)+1的垂直序列。
最后,彩色映射矩阵能由最大水平和垂直的代码序列(Shand Sv)产生,这使得编码字的最大可能尺寸[(p-1)(p-2)+2]×[p(p-1)2+2]的矩阵在矩阵中唯一存在。矩阵的第一行由Sh定义,第二行是由以p为模加Sv的第一个元素到Sh的每个元素中进行创造出来。其中模数操作只在集合{1,2.....p}中不包括0元素。(传统的模数操作包括0元素。)第三行是由以p为模加Sv的第二个元素到Sh的每个元素中创造出来。以此类推,通过这种方法,对于一个4色集合可以生成8×38的彩色映射矩阵。我们把上述方法定义为卷积运算操作,S=ShSv,可以证明每个字在矩阵S中是唯一确定的。
上述方法给出了满足条件(7)和(8)的空间编码矩阵的产生方法。这方法是一种有限自动机原理。第一行确定以后,接下来每行则可以通过其上面行的数字转换产生。但是,这种方案还有两个缺点,一是生成的矩阵形状有时不是我们想要的那样,因为它的形状象一条“长带”。例如,一个四色集合产生一个8×38的矩阵,一个5色集合产生一个14×82的矩阵,一个6色集合产生一个22×152的矩阵,等等。实际的数字投影机通常投放一个宽∶高为4∶3或16∶9的图象。所以,我们希望也产生这种矩阵与正方形的编码矩阵。然而,用纯数学公式产生这样的矩阵非常困难,我们可以用电脑解决这个问题。通过程序随机搜索算法可以找到一个最大方阵而满足条件(7)和(8)。
在示例中,我们采用一个7色集合,它能产生32×212的长方形矩阵进行二维空间编码。图5是该矩阵染色后的部分彩色光图案。
权利要求
1.一种基于二维彩色光编码的实时三维视觉系统,包括一数字放映机,用以把光模板投射到物体上;一摄像机,用以获取图象;一微处理器,用以形成彩色调制光和进行三维重建,所述的微处理器包括有一颜色集合模块,用以形成颜色集合P={c1,c2,c3,...ci,...},i≥3,其中ci表示一种特定波长的光波或者颜色;一编码模块,用以从所述的颜色集合中选出元素,并进行特定的编码组合成编码字,所述的编码字的领域具有唯一性;一编码字输出模块,用以将所述的编码字一一对应到光投影器件以输出光束;一三维坐标计算模块,用以将获取的图像对应到光模板并计算得到三维空间坐标,其特征在于所述的编码模块中,用以根据颜色集合P,构造一个最长的水平代码序列Sh=[c1,c2,c3,...,cm](1)其中,m是序列的长度,对于任何相邻颜色对,它满足式(2)ci≠ci+1,1≤i<m (2);并且任意三个相邻颜色的组合Th3i=[cici+1ci+2]在序列中是唯一存在的,参见式(3)Th3i≠Th3j,i≠j,1≤i,j≤m-2(3)水平序列长度的最大值Sh是Length(Sh)=p(p-1)(p-1)+2;再构造一个最长的垂直序列Sv=[c1,c2,c3,…,cn](4)其中n是序列的长度,对于其中的任意颜色对,它不仅仅满足式(2),还满足唯一性条件(5)[cici+1]≠[cjcj+1],i≠j,1≤i,j≤m-1 (5)由P个颜色产生的垂直序列Sv,其长度的最大值是Length(Sv)=p(p-1)+1;根据P个颜色产生的最长水平序列和P-1个颜色产生的最长垂直序列通过卷积运算构建彩色映射矩阵S,参见(6)S=ShSv(6);该矩阵S满足条件1W={wijwij≠wkl,(i,j)≠(k,l),2≤i,k≤(m-1),2≤j,l≤(n-1)}---(7)]]>条件2M={xijxij≠xi-1,j,xij≠xi+1,j,xij≠xi,j+1,xij≠xi,j-1,1≤i≤m,1≤j≤n}---(8)]]>其中,xij是彩色映射矩阵S中的第i行和j列的彩色网格点,字wij是一个五元组序列{xij,xi,j-1,xi-1,j,xi,j+1,xi+1,j}。
2.如权利要求1所述的基于二维彩色光编码的实时三维视觉系统,其特征在于所述的彩色映射矩阵为栅格图案,每两个相邻彩色栅格点颜色之间存在设定的最小距离。
3.如权利要求1或2所述的基于二维彩色光编码的实时三维视觉系统,其特征在于所述的卷积运算的规则为矩阵的第一行由Sh定义;第二行是由以p为模加Sv的第一个元素到Sh的每个元素中去创造出来,其中模数操作只在集合{1,2.....p}中,不包括0元素;第三行是由以p为模加Sv的第二个元素到Sh的每个元素中去创造出来,依次类推。
全文摘要
一种基于二维彩色光编码的实时三维视觉系统,包括数字放映机,用以把光模板投射到物体上;摄像机,用以获取图象;微处理器,用以形成彩色调制光和进行三维重建,微处理器包括有颜色集合模块,用以形成颜色集合P={c1,c2,c3,…ci,…},i≥3,其中ci表示一种特定波长的光波或者颜色;编码模块,用以从颜色集合中选出元素,并进行特定的编码组合成编码字,所述的编码字的具有领域唯一性;编码字输出模块,用以将编码字一一对应到光投影器件以输出光束;三维坐标计算模块,用以将获取的图像对应到光模板并计算得到三维空间坐标。本发明只需对单幅图象进行局部分析即可测量三维场景,因此重建效率高、系统速度快、实时性好。
文档编号G06T1/00GK101063605SQ200610050550
公开日2007年10月31日 申请日期2006年4月27日 优先权日2006年4月27日
发明者陈胜勇, 李友福, 姚春燕, 管秋, 王万良 申请人:浙江工业大学