[0025] 优选地,所述步骤S2中的对角线法为:
[0026] 采用一维伪随机序列从矩阵M的左上角第一个元素沿对角线方向循环赋值,若到达矩阵M的右边界,则转至当前右边界所在行的下一行左上角第一个元素继续沿对角线方向赋值;若到达矩阵M的下边界,则转至当前下边界所在列的下一列左上角第一个元素继续沿对角线方向赋值,直至矩阵M中所有元素赋值完毕。
[0027] 优选地,所述步骤S3中,根据M阵列形成的编码光线投射到待测样品将形成编码图像,所述编码图像包含的特征点若疏散的分布在待测样品的表面,则认为选取的M阵列不符合实际需求,需重新确定编码元数目或者调整窗口大小,进而重新获取M阵列,若编码图像包含的特征点具有合适间距的分布在整个待测样品的表面,则根据待测样品的视场大小,进一步调整矩阵M阵列,获取能让编码图像分辨率更高的M'阵列。
[0028] 需指出,合适间距指大于等于相机能够分辨的最小间距距离并且使得视场中包含有更多的特征点的间距。
[0029] 所述步骤S5包括:
[0030] S5.1根据M阵列以及第二窗口大小,将M'阵列分为C'区矩阵、A区矩阵以及B区矩阵;
[0031] 其中,所述M'阵列的大小m2×n2;所述M阵列的大小为m1×n1;n1>n2;第二窗口大小为f1×f2;所述C'区矩阵大小为m1×n2,为M'阵列中的前m1行矩阵,所述A区矩阵大小为(m2-m1)×f2,为M'阵列中的后m2-m1行且前f2列构成的矩阵;所述B区矩阵大小为(m2-m1)×(n2-f2),为M'阵列中的后m2-m1行且后n2-f2列构成的矩阵;
[0032] S5.2通过分割M阵列,获取C'区矩阵;
[0033] S5.3采用上下拼接的方式将A区矩阵拼接至C'区矩阵;
[0034] S5.4根据A区矩阵和C'区矩阵,采用对角拼接的方式将B区矩阵拼接,完成M'阵列的构建。
[0035] 所述C'区矩阵的赋值方法为:将M阵列根据M'阵列的列数分割为C区和D区两个矩阵,C区矩阵构成M'阵列的C'区矩阵;
[0036] 其中,所述C区矩阵大小为m1×n2,D区矩阵大小为m1×(n1-n2);
[0037] 所述步骤S5.3包括:
[0038] S5.3.1将第二窗口f1×f2分割为矩阵O1和矩阵O2;
[0039] 其中,所述矩阵O2为第二窗口最后一行矩阵,第二窗口剩余部分构成矩阵O1;
[0040] S5.3.2在D区矩阵中搜索矩阵O1,并利用D区矩阵中矩阵O1所在列与矩阵O1以下的行元素构建矩阵p1;
[0041] 或在D区矩阵中搜索矩阵O1T,并利用D区矩阵中矩阵O1T所在行与矩阵O1T右侧的列元素构建矩阵p2;
[0042] S5.3.3在矩阵p1中筛选(m2-m1)×f2大小的矩阵A或在矩阵p2中筛选f2×(m2-m1)大小的矩阵AT;其中,所述D区矩阵为矩阵M的后n1-n2列且m1行元素构成的矩阵,矩阵AT的转置或矩阵A为A区矩阵。
[0043] 所述步骤S5.4包括:
[0044] S5.4.1将第二窗口分割为矩阵H1、矩阵H2和矩阵H3;
[0045] 所述矩阵H1为第二窗口矩阵的最后一元素组成,所述矩阵H2为第二窗口矩阵前f1-1行与f2列构成的矩阵;所述H3为窗口前f2-1列与第f1行元素构成的矩阵;
[0046] S5.4.2判断是否第二窗口满足矩阵H1为B区矩阵的未被赋值的子矩阵且满足矩阵H2与矩阵H3已赋值的条件,若满足条件,转至步骤S5.4.3,否则在M'阵列中移动窗口矩阵,继续步骤S5.4.2,直至满足条件;
[0047] S5.4.3根据矩阵H2与矩阵H3,在D区矩阵搜索与第二窗口相同
位置处元素值相等的矩阵J,将矩阵J的最后一个元素值赋值于B区矩阵的子矩阵;
[0048] S5.4.4移动第二窗口,重复步骤S5.4.2,直至B区矩阵全部元素被赋值,完成B区矩阵的拼接;
[0049] 其中,所述D区矩阵为矩阵M的后n1-n2列且m1行元素构成的矩阵。
[0050] 优选地,所述S5.4.2~S5.4.3可多个第二窗口同
时移动;
[0051] 优选地,所述第二窗口以一个字符的步长沿行或列的方向移动;
[0052] 优选地,所述多个第二窗口独立沿不同方向移动。
[0053] 通过本发明所构思的以上技术方案,与现有技术相比,能够取得以下有益效果:
[0054] 1、本发明通过一维伪随机序列获取二维伪随机矩阵M后,由于矩阵M的行数与列数相差较大,测量的空间分辨率会被较小的行数所限制,而很大的列数发挥不了作用,因此,本发明通过观察编码光场图案构成的待测样品的视场包含的特征点不足,将矩阵M转换为M'阵列,减少M'阵列行数与列数间的差距,提高了编码图像的分辨率。
[0055] 2、传统矩阵M的扩展采用对角线法简单在矩阵M中
抽取几个
子窗口连接在一起,并不能保证在拼接处窗口具有代码唯一性,因此,本发明采用上下拼接和对角拼接的方式,不仅能保证拼接的效率,同时可保证任意两个子窗体
块中的元素不完全相同,具有全局唯一性,在对待测样品的缺陷识别时准确度更高。
[0056] 3、本发明矩阵M的扩展中采用上下拼接和对角拼接的方式,在对角拼接时,可同时采用多个窗口、多个方向同步拼接,因此,大大提升了发明的拼接效率。
[0057] 4、本发明使用几何编码元+, 代替阵列中的数字0,1,2。不同于其他几何编码元,对于CCD相机拍摄到的编码图案的特征点比较复杂,计算的时间更长,使用本发明中的编码元对于特征点的提取更加容易,解码的速度更快,结果的鲁棒性更好。
附图说明
[0058] 图1是本发明提供的检测方法示意图;
[0059] 图2是本发明提供的M'阵列结构示意图;
[0060] 图3是本发明提供的第二窗口分割为矩阵O1和矩阵O2的结构示意图;
[0061] 图4是本发明提供的上下拼接方法示意图;
[0062] 图5是本发明提供的第二窗口分割为矩阵H1、矩阵H2和矩阵H3的结构示意图;
[0063] 图6是本发明提供的对角线拼接方法示意图;
[0064] 图7是本发明提供的整体拼接顺序;
[0065] 图8是本发明提供的截取的M'阵列编码模式;
[0066] 图9是本发明提供的空间编码结构光的三维重构系统。
具体实施方式
[0067] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及
实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0068] 如图1所示,本发明提供了一种空间编码光场对曲面玻璃表面缺陷的检测方法,包括:
[0069] S1:根据选择的编码元数目以及第一窗口大小,通过De Bruijn序列方法生成具有窗口特性的一维伪随机序列;
[0070] S2:根据一维伪序列的长度以及周期大小,采用对角线法构建二维伪随机矩阵M;
[0071] S3:判断M阵列形成的待测样品的视场是否满足条件,若满足,则转至S4;否则,转至步骤S1;
[0072] S4:根据待测样品视场的特征点分布确定M'阵列的大小;
[0073] S5:通过上下拼接以及对角拼接的方法将M阵列转换为M'阵列;
[0074] S6:通过对各不同编码元对应不同的几何图案,将M'阵列转换为M'阵列编码;
[0075] S7:将M'阵列编码转换为物体表面的编码图像,实现对曲面玻璃的缺陷检测。
[0076] 优选地,所述一维伪随机序列的字符串长度与编码元数目、第一窗口大小之间的关系为:
[0077] p=qm
[0078] 其中,p为一维伪随机序列的字符串长度,q为编码元数目,m为第一窗口大小,T=qm-1为一维伪随机序列的最大周期数。
[0079] 优选地,所述S2包括:
[0080] S2.1根据一维伪随机序列的长度及周期大小,确定二维伪随机矩阵M的大小m1×n1;
[0081] S2.2根据一维伪随机序列的长度以及周期大小,采用对角线法对二维伪随机矩阵M赋值。
[0082] 优选地,所述步骤S2.1中二维伪随机矩阵M的m1为:
[0083]
[0084] 二维伪随机矩阵M的n1为:
[0085]
[0086] 其中,m=k1k2为第一窗口大小;q为编码元数目;k1,k2为素数,且1
[0087] 所述对角线法为:采用一维伪随机序列从矩阵M的左上角第一个元素沿对角线方向循环赋值,若到达矩阵M的右边界,则转至当前右边界所在行的下一行左上角第一个元素继续沿对角线方向赋值;若到达矩阵M的下边界,则转至当前下边界所在列的下一列左上角第一个元素继续沿对角线方向赋值,直至矩阵M中所有元素赋值完毕。
[0088] 优选地,所述步骤S3中,根据M阵列形成的编码光线投射到待测样品将形成编码图像,所述编码图像包含的特征点若疏散的分布在待测样品的表面,则认为选取的M阵列不符合实际需求,需重新确定编码元数目或者调整窗口大小,进而重新获取M阵列,若编码图像包含的特征点具有合适间距的分布在整个待测样品的表面,则根据待测样品的视场大小,进一步调整矩阵M阵列,获取能让编码图像分辨率更高的M'阵列。
[0089] 需指出,合适间距指大于等于相机能够分辨的最小间距距离并且使得视场中包含有更多的特征点的间距。
[0090] 所述S5包括:
[0091] S5.1根据M阵列以及第二窗口大小,将M'阵列分为C'区矩阵、A区矩阵以及B区矩阵;
[0092] 其中,如图2所示,所述M'阵列的大小m2×n2;所述M阵列的大小为m1×n1;n1>n2;第二窗口大小为f1×f2;所述C'区矩阵大小为m1×n2,为M'阵列中的前m1行矩阵,所述A区矩阵大小为(m2-m1)×f2,为M'阵列中的后m2-m1行且前f2列构成的矩阵;所述B区矩阵大小为(m2-m1)×(n2-f2),为M'阵列中的后m2-m1行且后n2-f2列构成的矩阵;
[0093] S5.2通过分割M阵列,获取C'区矩阵;
[0094] 根据M'阵列的大小m2×n2,将矩阵M分为C区矩阵和D区矩阵,所述C区矩阵的大小为m1×n2,由矩阵M的前n2列m1行元素构成,所述D区矩阵大小为m1×(n1-n2),由矩阵M的后n1-n2列m1行元素构成,所述C区矩阵即为M'阵列的C'区矩阵。
[0095] S5.3采用上下拼接的方式将A区矩阵拼接至C'区矩阵;
[0096] S5.4根据A区矩阵和C'区矩阵,采用对角拼接的方式将B区矩阵拼接,完成M'阵列的构建。
[0097] 所述S5.3包括:
[0098] S5.3.1如图3所示,将第二窗口f1×f2分割为矩阵O1和矩阵O2;
[0099] 其中,所述矩阵O2为第二窗口最后一行矩阵,第二窗口剩余部分构成矩阵O1;
[0100] S5.3.2在D区矩阵中搜索矩阵O1,并利用D区矩阵中矩阵O1所在列与矩阵O1以下的行构建矩阵p1;
[0101] 或在D区矩阵中搜索矩阵O1T,并利用D区矩阵中矩阵O1T所在行与矩阵O1T右侧的列元素构建矩阵p2;
[0102] S5.3.3如图4所示,在矩阵p1中筛选(m2-m1)×f2大小的矩阵A或在矩阵p2中筛选f2×(m2-m1)大小的矩阵AT,矩阵AT的转置或矩阵A为A区矩阵拼接在C'区矩阵。
[0103] 步骤S5.4包括:
[0104] S5.4.1如图5所示,将第二窗口分割为矩阵H1、矩阵H2和矩阵H3;
[0105] 所述矩阵H1为第二窗口矩阵的最后一元素组成,所述矩阵H2为第二窗口矩阵前f1-1行与f2列构成的矩阵;所述H3为窗口前f2-1列与第f1行元素构成的矩阵;
[0106] S5.4.2如图6所示,判断是否第二窗口满足矩阵H1为B区矩阵的未被赋值的子矩阵且满足矩阵H2与矩阵H3已赋值的条件,若满足条件,转至步骤S5.4.3,否则在M'阵列中移动窗口矩阵,继续步骤S5.4.2,直至满足条件;
[0107] S5.4.3根据矩阵H2与矩阵H3,在D区矩阵搜索与第二窗口相同位置处元素值相等的矩阵J,将矩阵J的最后一个元素值赋值于B区矩阵的子矩阵;
[0108] S5.4.4移动第二窗口,重复步骤S5.4.2,直至B区矩阵全部元素被赋值,完成B区矩阵的拼接。
[0109] 所述S5.4.2~S5.4.3为多个第二窗口同时移动。
[0110] 所述第二窗口以一个字符的步长沿行或列的方向移动。
[0111] 所述多个第二窗口独立沿不同方向移动。
[0112] 若
存储器中含有3个编码元,4个存储器,则可获取的34的循环字符串,选择最大的周期数T=34-1,即“0001002101 1120022010 22110101212212012222 0002001202 2210011020 1122020212 11210021111……”
[0113] 选择第一窗口的大小为3*3,即二维伪随机矩阵M的大小为26*757,从上述二维伪随机矩阵M的行数和列数相差很大,测量的空间分辨率会被较小的行数所限制,所以较大的列数也发挥不了作用。
[0114] 采用对角拼接的方式将M'阵列中B区矩阵拼接,采用如图8所示的方式进行拼接,即第二窗口每次按照一个字符的步长移动,其中一个第二窗口沿着行方向移动,另一第二窗口沿着列方向移动,整体构建的效果为图8所示,按照①②③④执行。
[0115] 由于存在3个编码元,因此本发明采用+, 代替M'阵列中的数字0,1,2;获取M'阵列编码,将M'阵列编码调制的编码光线透射到被测物体表面时形成如图8所示的编码图像,利用摄像机捕获打到样品表面的反射回来的图案,对捕获的图像进行
图像处理及识别,如图9所示,提取编码点的坐标,重构三维编码点的空间三维坐标,测量结果的三维点
云图。由于二维伪随机阵列具有窗口唯一性,通过对场景图像中窗口的查询,可以确定编码点在编码阵列中的位置,使场景中每个特征点有唯一的码字,可以唯一的识别,从而对物体进行三维重建。
[0116] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何
修改、等同替换和改进等,均应包含在本发明的保护范围之内。