本发明涉及机器视觉三维测量技术领域,尤其涉及一种二值码相移周期码错位的校正方法。
背景技术:
相位轮廓术作为结构光三维测量中非常重要的一种方法,而时间多路复用法中的二值码加相移码求解绝对相位是相位轮廓术中常用的方法,由于二值码图像中存在噪声,导致二值码周期边界处存在周期误差,从而导致最终求解的绝对相位产生突变。传统的误差校正方法一般通过误差判断的方式或投射额外的相移周期等方法来校正,但这些方法一般较为耗时或精度较低。
技术实现要素:
本发明提供了一种二值码相移周期码错位的校正方法,解决相关技术中存在的二值码相移周期码错位的校正方法耗时且精度低的问题。
作为本发明的一个方面,提供一种二值码相移周期码错位的校正方法,其中,包括:
步骤s10、分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码;
步骤s20、将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码;
步骤s30、重复步骤s10和步骤s20,得到全周期校正后的二值码。
进一步地,所述分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码,包括:
将周期值均为tm的二值码和相移码确定为对应周期值相同的二值码bm和相移码pm,并将相移码pm分为pu和pd,其中pu=(pm≥0),pd=(pm<0),得到待校正的二值码bm。
进一步地,所述将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码,包括:
分别定义膨胀算子od和腐蚀算子oe;
对所述待校正的二值码bm进行一次膨胀操作,得到一次膨胀操作后的二值码;
对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分;
对于所述相移码pm对应的二值码部分进行腐蚀操作得到腐蚀操作后的二值码部分;
对所述腐蚀操作后的二值码部分进行二次膨胀操作得到二次膨胀后的二值码;
对所述二次膨胀后的二值码进行计算得到一个校正后的二值码。
进一步地,所述对所述二值码bm进行一次膨胀操作,包括:
其中,
进一步地,所述对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分,包括:
bmu1=bm1·pu,
bmd1=bm1·pd,
其中,·表示点乘操作,bmu1和bmd1均表示与所述相移码pm对应的二值码部分。
进一步地,所述对于所述相移码pm对应的二值码部分进行腐蚀操作得到腐蚀操作后的二值码部分,包括:
其中,bmu2和bmd2均表示腐蚀操作后的二值码部分。
进一步地,所述对所述腐蚀操作后的二值码部分进行二膨胀操作得到二次膨胀后的二值码,包括:
其中,bmu3和bmd3均表示二次膨胀后的二值码。
进一步地,所述对所述二次膨胀后的二值码进行计算得到一个校正后的二值码,包括:
bmu4=bmu3·pu,
bmd4=bmd3·pd,
bcm=bmu4 bmd4,
其中,bmu4表示对二次膨胀后的二值码bmu3进行点乘后的结果,bmd4表示对二次膨胀后的二值码bmd3进行点乘后的结果,bcm表示校正后的二值码。
进一步地,所述重复步骤s10和步骤s20,得到全周期校正后的二值码,包括:
其中,bc表示全周期校正后的二值码。
本发明提供的二值码相移周期码错位的校正方法,通过采用图像形态学操作中的膨胀腐蚀相结合的方法对二值码相移码的周期错位进行校正,该校正方法能极大的提高求解绝对相位的速度,提高相位求解的精度,从而提升三维测量的精度;相比于传统的校正方法,本方明不需要投射额外的相移周期或对误差进行判断,具有更好的实用性。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的二值码相移周期码错位的校正方法的流程图。
图2为本发明实施例提供的二值码示意图。
图3为本发明实施例提供的相移码示意图。
图4为本发明实施例提供的根据二值码和相移码求解的绝对相位示意图。
图5为本发明实施例提供的周期数为对应的二值码和相移码示意图。
图6为本发明实施例提供的膨胀操作后的二值码相移码示意图。
图7为本发明实施例提供的与相移码上半部分对应的二值码示意图。
图8为本发明实施例提供的与相移码下半部分对应的二值码示意图。
图9为本发明实施例提供的对相移码上半部分对应的二值码进行腐蚀操作示意图。
图10为本发明实施例提供的对相移码下半部分对应的二值码进行腐蚀操作示意图。
图11为本发明实施例提供的对相移码上半部分对应的二值码进行膨胀操作示意图。
图12为本发明实施例提供的对相移码下半部分对应的二值码进行膨胀操作示意图。
图13为本发明实施例提供的校正相移上半部分和对应的二值码示意图。
图14为本发明实施例提供的校正相移下半部分和对应的二值码示意图。
图15为本发明实施例提供的经膨胀腐蚀操作校正后的绝对相位示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互结合。下面将参考附图并结合实施例来详细说明本发明。
为了使本领域技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包括,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本实施例中提供了一种二值码相移周期码错位的校正方法,图1是根据本发明实施例提供的二值码相移周期码错位的校正方法的流程图,如图1所示,包括:
步骤s10、分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码;
步骤s20、将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码;
步骤s30、重复步骤s10和步骤s20,得到全周期校正后的二值码。
本发明实施例提供的二值码相移周期码错位的校正方法,通过采用图像形态学操作中的膨胀腐蚀相结合的方法对二值码相移码的周期错位进行校正,该校正方法能极大的提高求解绝对相位的速度,提高相位求解的精度,从而提升三维测量的精度;相比于传统的校正方法,本方明不需要投射额外的相移周期或对误差进行判断,具有更好的实用性。
可以理解的是,本发明实施例提供的二值码相移周期码错位的校正方法可以应用于机器视觉三维测量、检测等领域。
由图2和图3所示,为原始的二值码图像和相移码图像,求解的绝对相位如图4所示,从图4中可以得到可知绝对相位存在突变现象,该突变是由二值码在周期边界处的错位现象造成。
具体地,所述分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码,包括:
将周期值均为tm的二值码和相移码确定为对应周期值相同的二值码bm和相移码pm,并将相移码pm分为pu和pd,其中pu=(pm≥0),pd=(pm<0),得到待校正的二值码bm。
如图5所示,先确定二值码b和相移码p对应周期数为tm的部分bm和pm,将相移pm分为pu和pd,其中pu=(pm≥0),pd=(pm<0)。
具体地,所述将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码,包括:
分别定义膨胀算子od和腐蚀算子oe;
对所述待校正的二值码bm进行一次膨胀操作,得到一次膨胀操作后的二值码;
对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分;
对于所述相移码pm对应的二值码部分进行腐蚀操作得到腐蚀操作后的二值码部分;
对所述腐蚀操作后的二值码部分进行二次膨胀操作得到二次膨胀后的二值码;
对所述二次膨胀后的二值码进行计算得到一个校正后的二值码。
进一步具体地,所述对所述二值码bm进行一次膨胀操作,包括:
其中,
进一步具体地,所述对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分,包括:
bmu1=bm1·pu,
bmd1=bm1·pd,
其中,·表示点乘操作,bmu1和bmd1均表示与所述相移码pm对应的二值码部分。
进一步具体地,所述对所述腐蚀操作后的二值码部分进行二膨胀操作得到二次膨胀后的二值码,包括:
其中,bmu3和bmd3均表示二次膨胀后的二值码。
进一步具体地,所述对所述二次膨胀后的二值码进行计算得到一个校正后的二值码,包括:
bmu4=bmu3·pu,
bmd4=bmd3·pd,
bcm=bmu4 bmd4,
其中,bmu4表示对二次膨胀后的二值码bmu3进行点乘后的结果,bmd4表示对二次膨胀后的二值码bmd3进行点乘后的结果,bcm表示校正后的二值码。
可以理解的是,定义膨胀算子od和腐蚀算子oe,
具体地,所述对所述二次膨胀后的二值码进行计算得到一个校正后的二值码,包括:
bmu4=bmu3·pu,
bmd4=bmd3·pd,
bcm=bmu4 bmd4,
其中,bmu4表示对二次膨胀后的二值码bmu3进行点乘后的结果,bmd4表示对二次膨胀后的二值码bmd3进行点乘后的结果,bcm表示校正后的二值码。
可以理解的是,对bmu1和bmd1进行腐蚀操作得到bmu2和bmd2,即
具体地,所述重复步骤s10和步骤s20,得到全周期校正后的二值码,包括:
其中,bc表示全周期校正后的二值码。
经过上述操作后,bmu3和bmd3比对应的相移码宽,再经过bmu4=bmu3·pu、bmd4=bmd3·pd、bcm=bmu4 bmd4操作,即可将二值码bm精确校正,如图13和图14所示。最后重复上述步骤对整个二值码进行校正,即
因此,本发明实施例提供的二值码相移周期码错位的校正方法具有简单有效且耗时少的优势,能对二值码进行精确的校正,从而最终求得准确的绝对相位,提高三维测量的精度。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
1.一种二值码相移周期码错位的校正方法,其特征在于,包括:
步骤s10、分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码;
步骤s20、将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码;
步骤s30、重复步骤s10和步骤s20,得到全周期校正后的二值码。
2.根据权利要求1所述的二值码相移周期码错位的校正方法,其特征在于,所述分别确定二值码和相移码中对应周期值相同的二值码和相移码,得到一个待校正的二值码,包括:
将周期值均为tm的二值码和相移码确定为对应周期值相同的二值码bm和相移码pm,并将相移码pm分为pu和pd,其中pu=(pm≥0),pd=(pm<0),得到待校正的二值码bm。
3.根据权利要求2所述的二值码相移周期码错位的校正方法,其特征在于,所述将一个所述待校正的二值码根据膨胀腐蚀法进行计算得到校正后的二值码,包括:
分别定义膨胀算子od和腐蚀算子oe;
对所述待校正的二值码bm进行一次膨胀操作,得到一次膨胀操作后的二值码;
对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分;
对于所述相移码pm对应的二值码部分进行腐蚀操作得到腐蚀操作后的二值码部分;
对所述腐蚀操作后的二值码部分进行二次膨胀操作得到二次膨胀后的二值码;
对所述二次膨胀后的二值码进行计算得到一个校正后的二值码。
4.根据权利要求3所述的二值码相移周期码错位的校正方法,其特征在于,所述对所述二值码bm进行一次膨胀操作,包括:
其中,
5.根据权利要求4所述的二值码相移周期码错位的校正方法,其特征在于,所述对一次膨胀后的二值码进行点乘操作后得到与所述相移码pm对应的二值码部分,包括:
bmu1=bm1·pu,
bmd1=bm1·pd,
其中,·表示点乘操作,bmu1和bmd1均表示与所述相移码pm对应的二值码部分。
6.根据权利要求5所述的二值码相移周期码错位的校正方法,其特征在于,所述对于所述相移码pm对应的二值码部分进行腐蚀操作得到腐蚀操作后的二值码部分,包括:
其中,bmu2和bmd2均表示腐蚀操作后的二值码部分。
7.根据权利要求6所述的二值码相移周期码错位的校正方法,其特征在于,所述对所述腐蚀操作后的二值码部分进行二膨胀操作得到二次膨胀后的二值码,包括:
其中,bmu3和bmd3均表示二次膨胀后的二值码。
8.根据权利要求7所述的二值码相移周期码错位的校正方法,其特征在于,所述对所述二次膨胀后的二值码进行计算得到一个校正后的二值码,包括:
bmu4=bmu3·pu,
bmd4=bmd3·pd,
bcm=bmu4 bmd4,
其中,bmu4表示对二次膨胀后的二值码bmu3进行点乘后的结果,bmd4表示对二次膨胀后的二值码bmd3进行点乘后的结果,bcm表示校正后的二值码。
9.根据权利要求8所述的二值码相移周期码错位的校正方法,其特征在于,所述重复步骤s10和步骤s20,得到全周期校正后的二值码,包括:
其中,bc表示全周期校正后的二值码。
技术总结