1.一种由粗到精的旗袍三维点云模型对齐方法,其特征在于包括如下步骤:
(1)用手持式三维扫描装置获取人台和旗袍的全面三维点云数据;
(2)坐标轴旋转手动对齐;
(3)点云模型转换为体素模型;
(4)建立逻辑数组;
(5)提取模型“顶部”截面并计算重心;
(6)计算侧面方向的平移量并对齐截面重心;
(7)同一高度各个截面离群体素处理;
(8)对同一高度的两个截面求并集定义为穿模量;
(9)穷举所有有效截面计算平均穿模量;
(10)寻找平均穿模量最低时的平移变换进行对齐。
2.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(2),提供待对齐的两个三维点云模型ptCloud_1和ptCloud_2,分别为人台三维点云模型及旗袍三维点云模型,使用compose_rotation函数构造一个3x3的旋转矩阵compose_rotation(theta_x,theta_y,theta_z),其中theta_x、theta_y和theta_z是各个轴的旋转角度,接受三个角度作为输入,并输出旋转矩阵;
a、对于绕x轴的旋转,旋转矩阵X是:
b、对于绕y轴的旋转,旋转矩阵Y是:
c、对于绕z轴的旋转,旋转矩阵Z是:
d、通过矩阵乘法将这三个旋转矩阵组合在一起以得到总旋转矩阵R:R=Z*Y*X。
3.根据权利要求2所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(3),使用convert_to_voxel(ptCloud,metadata,params)函数将点云模型ptCloud_
1和ptCloud_2转换为体素模型voxel_data_1和
voxel_data_2,并设定体素模型的空间分辨率;转换过程如下:
a、创建体素数组:根据体素模型的空间分辨率和范围,创建一个三维数组,用于表示体素模型,数组的大小由体素模型的边界确定,并且根据空间分辨率划分为小的体素单元;
b、映射点云到体素坐标:对于点云中的每个点,根据其坐标,将其映射到相应的体素坐标中;
c、设置体素值:遍历点云中的每个点,将其对应的体素坐标位置在体素数组中设置为True,通过在该位置上计数找到的点的数量,决定是否将体素设置为True,这样,体素模型中的True值表示该体素内存在点云数据;
通过上述转换过程,将点云模型转换为体素模型,并将其表示为一个三维数组,其中每个数组元素表示一个体素单元,True值表示该体素单元内存在点云数据,False值表示没有点云数据。
4.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(4),根据点云数据在Z轴上的分布,构造了一个三维的逻辑数组"voxel_data",在这个逻辑数组中,Z轴的每一层都代表一个不同高度的截面;对于任意一层Z值的截面,通过访问"voxel_data(:,:,Z)"获取;在逻辑数组中,每个体素单元表示为一个布尔值,True表示该体素存在,False表示不存在;通过构建逻辑数组,对体素模型在不同高度截面上的分布进行可视化和分析;
假设voxel_data的维度为(X,Y,Z),其中X和Y表示平面的宽度和长度,Z表示截面的高度;通过访问voxel_data(:,:,Z),获取第Z层的截面,这将返回一个二维逻辑数组,描述该高度截面上的体素分布情况,通过分析这个二维逻辑数组,获取特定高度截面上的体素信息。
5.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(5),首先,通过检索人台模型和旗袍模型的体素数据,访问模型的体素数据结构中的Z轴极值来获取它们在Z轴上的范围;将人台模型的最大Z值存储在Z_max_model变量中,将旗袍模型的最大Z值存储在Z_max_qipao变量中;
计算了两个Z值截面的重心,分别保存在centroid_3D_model和
centroid_3D_qipao变量中,这些重心代表了对应模型在Z轴上的平均高度位置;通过计算模型点云的坐标平均值,即X、Y和Z坐标分量的平均值,可以得到模型在Z轴上的平均高度位置;
通过提取Z轴最大值和计算截面重心,获得模型在垂直方向上的高度范围和平均高度位置,用于确定模型的垂直位置关系。
6.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(6),通过计算截面重心之间的差异,比较了两个模型的重心位置,并计算出它们在X、Y和Z轴上的差异;接下来,对模型在X、Y和Z轴上的平移量进行估计,根据网格大小将差异量除以网格大小以进行标准化;然后,通过向下取整将差异量量化为离散的网格单元数量;
最后,乘以网格大小以获得在实际空间中的平移量估计,并将结果保存在`trans_X_model_rough`、`trans_Y_model_rough`和`trans_Z_model_rough`变量中;
通过上述计算和操作,可以估计模型在X轴,Y轴,Z轴上的平移量,并将模型的截面重心对齐。
7.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(7),在给定的搜索范围内,循环遍历模型的每个截面;对于每个截面,获取模型的体素数据voxel_data_model和旗袍的体素数据voxel_data_qipao;
通过一系列形态学操作对模型和旗袍的体素数据进行预处理;这些操作包括桥接、清理和填充,通过bwmorph函数实现;桥接操作用于连接体素中的断开部分,清理操作用于去除小的噪声体素,填充操作用于填充截面中的孔洞。
8.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(8),将经过预处理的人台截面体素数据BW_model和旗袍截面体素数据BW_qipao进行合并,生成合并后的二值图像`BW_merge`。
合并操作使用逻辑运算符OR将两个二值图像进行逻辑或运算,获得人台模型和旗袍模型的共同区域;随后计算BW_qipao和BW_merge的面积,如果BW_merge的面积大于BW_qipao的面积,则截面穿模量被定义为这两个面积的差;
使用`vision.BlobAnalysis`进行区域分析,对合并后的二值图像BW_merge进行连通区域分析,获取关于区域形状、大小和位置的信息,进一步分析模型之间的差异;
在区域分析中,首先创建了`vision.BlobAnalysis`对象,并设置`MaximumCount`属性为1,以确保只获取最大的连通区域;然后,针对合并后的二值图像`BW_merge`进行连通区域分析;通过调用`Hblob`对象并传入二值图像,获取连通区域的相关信息,连通区域的面积表示该区域的像素数目,重心表示区域的中心位置;
通过连通区域分析,获得合并后的二值图像中连通区域的属性,包括穿模量的面积和重心。
9.根据权利要求8所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:所述步骤(9),在每个有效截面上进行循环:对当前截面的人台模型体素数据BW_model和旗袍模型体素数据BW_qipao进行预处理,使用bwmorph函数进行桥接、清理操作;创建合并后的二值图像BW_merge,使用逻辑运算符OR将BW_model和BW_qipao进行逻辑或运算;使用vision.BlobAnalysis对象进行连通区域分析;设置MaximumCount属性为1,以确保只获取最大的连通区域;对合并后的二值图像BW_merge进行连通区域分析,获取连通区域的属性,包括面积和重心;如果连通区域的面积大于等于旗袍模型的面积,则计算该截面的穿模量;将重心差异保存在dev_centroid数组中,将穿模量保存在area_chuanmo数组中;
循环结束后,计算重心差异和穿模量的平均值,得到平均穿模量。通过穷举所有有效截面并计算重心差异和穿模量,可以综合考虑模型在各个截面的差异程度。平均穿模量提供了模型与旗袍之间整体相似性的度量,有助于评估模型之间的一致性和匹配程度。
10.根据权利要求1所述的一种由粗到精的旗袍三维点云模型对齐方法,其特征在于:
所述步骤(10),通过改变每个体素的坐标,穷举所有可能的位移,然后通过计算重心偏差和穿模量来选择最优的对齐方式:根据平均穿模量大小和重心差异,估计了模型在X、Y和Z轴上的平移量;其中,X轴的平移量为trans_X_model_rough,Y轴的平移量为trans_Y_model_rough,Z轴的平移量为trans_Z_model_rough;
接下来,使用循环遍历的方式,在给定的搜索范围内,对平移量进行微调,以找到平均穿模量最低的对齐结果;搜索范围由search_area_refinement_lateral侧向搜索范围和
search_area_refinement_vertical垂直搜索范围决定;在每一次迭代中,根据微调后的平移量构造一个临时的刚性变换tform_Z_model_temp,并使用该变换将人台模型进行平移;将平移后的人台模型转换为体素模型,并通过调用compare_voxel函数计算平移后的模型与旗袍模型的穿模量相关参数,包括重心差异和穿模量;保存穿模量相关参数到results数组中,记录每一次迭代的结果;
循环结束后,根据所有迭代结果中的最小穿模量,找到平均穿模量最低的对齐结果,并获取对应的平移量;将最佳的平移量应用于刚性变换,得到最终的对齐变换tform;
使用最终的对齐变换,将人台模型进行平移,得到平移后的体素模型;将平移后的体素模型转换为体素数据,保存在voxel_data_model_registered中;通过上述过程,寻找到平均穿模量最低的对齐结果,并得到相应的平移变换;这个过程基于穿模量的度量,通过不断微调平移量来找到最优的对齐结果,以实现人台模型和旗袍模型的精确对齐。