基于PCL的人体模型自动化修形研究

2018-10-31 08:17武力周伟关天民
大连交通大学学报 2018年5期
关键词:矫形器修形矫形

武力,周伟,关天民

(大连交通大学 机械工程学院 ,辽宁 大连 116028)*

0 引言

国内外青少年脊柱侧弯发病率为1.06%~13.6%.目前普遍采用手工方法制造矫形支具,利用石膏完成阳模取型、阴模修型和矫形器成型,制作经验要求高,生产周期长,石膏材料消耗严重,甚至会因操作不当造成对患者的二次伤害[1].随着计算机辅助设计技术在康复医疗领域的应用,矫形器的设计方法也在不断改善.Julien等利用人体的脊柱、盆骨、胸腔和腹腔部位进行矫形器曲面的设计,但是未考虑人体皮肤和软组织对矫形压力的承受能力[2];刘建辉等实现了依据扫描数据对腿部矫形器的设计[3];Frederique等利用计算机辅助设计软件Rodin4D实现了矫形器曲面设计,但仍需建造阳模模型[4];Daniel等将几何模型分成若干层,将三维问题变成二维问题,通过对每层的变形完成矫形器曲面设计[5].

点云库PCL(Point Cloud Library)是一个开源库,随着库内算法模块的不断更新与发展,应用领域不断拓宽,能够实现点云数据的滤波、分割和重建等多种处理操作[6].Janusz等使用PCL开发了机器人操作系统的3D制图框架;Hsieh和Jerbi等利用PCL实现了点云数据对象的配准[8- 9];王增涛利用PCL建立了点云数据平台,实现了滤波、拼接和曲面重建功能,验证了PCL在点云数据处理领域的实用性[10];马旋等提出的基于kinect的人体重建方法,通过定位点云数据中的特征点实现了参数化人体建模[11];崔微等提出的依据点云数据完成的人脸修复,效果良好[12];Xiao Jun等提出了基于PCL的岩体三维重建方法,重建精度和速度良好[13].

本文提出基于点云数据的人体模型曲面设计方法并编写设计软件,为脊柱侧凸支具自动化设计打下基础.

1 修形思想提出

人体修形曲面设计基于人体扫描点云数据,主要包括以下步骤:

(1)点云数据的滤波,包括移除点云数据的离散点和孤岛,优化点云数据;

(2)点云数据的分块分割,将点云数据分割成骨盆、腹腔和胸腔三部分,以便完成对每块点云的数据变形;

(3)点云数据的变形与修正,利用变形原理分别在三块点云内找出需要变形的数据并实现变形操作,此步为该修形方法关键;

(4)点云数据的拼接,将变形后的各部分点云数据拼接成完整的点云数据,为人体修形曲面创建做准备;

(5)曲面创建,建立点云数据中点与点之间的连接,生成三角网格,得到曲面模型.

2 自动化设计方法

2.1 点云数据的采集

扫描人体尾骨至肩胛骨之间的人体表面点云数据.数据采集时需要在特殊部位标记荧光点,如脊柱弯曲部位、骨盆髂脊走向、胸部标志点等,以便对点云数据进行后续处理.

2.2 点云数据的滤波

点云数据的滤波包括离散点、噪声点和孤岛的删除.离散点和噪声点的删除使用类pcl::RadiusOutlier Removal 实现,需要根据点云数据情况设置搜索半径和近邻数量两个参数,分别使用void setRadiusSearch(double radius)和void setMinNeighborsInRadius(int min_pts)两个内部成员.若待处理的点云数据在成员函数设置值范围内,则将其作为离散点和噪声点删除.孤岛的删除使用三个类,其中类pcl::visualization::PCLVisualizer的作用是使用区域选取回调函数registerArea PickingCallback选取孤岛点云数据;类pcl::ConvexHull的作用是获取孤岛点云数据的索引;类pcl::CropHull的作用是根据索引将孤岛点云数据删除.

2.3 点云数据的分割

分割是沿额状面进行的,因患者脊柱侧弯位置的不同,具体的分割位置也不同,但一般分为三个部分:骨盆部位、腹腔部位和躯干部位.其中,躯干部分的上限在弯曲顶椎的上方1~2个椎体;躯干部位与腹腔部位的分界点在距离正中线最近的位置;腹腔部位与骨盆部位的分界点在骶椎附近位置,如图1所示.

图1 某脊柱侧弯患者的部位分割图

分割功能的实现需要使用到两个功能类:其中类pcl::visualization::PCLVisualizer的作用是利用区域选取回调函数registerPointPickingCallback,获取分割位置的点云临界点坐标值;类pcl::PassThrough的功能是根据分界点的坐标完成具体的分割,需要设置分割通道(X、Y、Z),分割区间和保存得到的点云数据集.

2.4 点云数据的变形

2.4.1 点云数据的提取

点云数据的提取在整个变形中发挥着中枢的关键作用,点云数据的提取包括:提取用于设置伸展空间的点云数据;提取需要施加矫形压力的点云数据.提取过程包括:利用类pcl:: visualization::PCLVisualizer的点云拾取回调函数registerPointPicking Callback获取控制点的坐标值;利用类pcl:: ConvexHull 获取控制点围成的多边形内的点云数据集的索引;利用类pcl::CropHull 提取上述点云数据索引对应的点云数据集.

2.4.2 点云数据的矩阵变换

点云数据的变形是依据脊柱侧弯矫形原理,即矫形常用的“三点力学”原理并配合使用转矩的施加方法(如图2所示),利用矩阵变换实现矫形压力的施加和免压部位间隙的调整,使矫形器的穿戴不影响人体自身的生理行为.

图2 矫形原理图

利用点云库PCL中的类Eigen::Matrix4f实现变形功能,需要设置4×4矩阵的相应参数实现平移变换或者比例变换.变形量需要结合患者的年龄、Cobb角度和骨质等具体因素确定,其中,青少年由于在骨骼发育期,可以适当加大矫正力度.

2.5 点云数据的拼接

点云数据的拼接包括每块内点云数据拼接和各块间点云数据的拼接.点云拼接通过数据地址传递实现.

2.6 创建曲面

曲面创建的本质是建立相邻点之间的联系,利用PCL中的类pcl::GreedyProjectionTriangulation实现.其成员函数void setSearchRadius (double radius)设置紧邻搜索时的球半径;void setMu (double mu)设置搜索半径的乘积系数获取样本点与邻域之间最大距离;void setMaximumNearestNeighbors (int nnn)设置样本搜索区域内的邻近点的最大数目;void etMaximumSurfaceAngle (double eps_angle)设置样本点和连接点法线的最大角度,超过该最大值,则作为无效点;void setMinimumAngle(double minimum_angle)和void setMaximumAngle(double maximum_angle)分别设置合成的三角面片中的最小和最大角度;void setNormalConsistency(bool consisitant)设置是否对数据中点的法线方向做一致性检查;void reconstruct (PointCloud &output)得到重建后的曲面网格并储存在output中.

3 设计案例

因分割后每一部分点云处理方法大致相同,故以分割后腹腔部位点云数据为例,验证人体模型自动化修形方法的可行性.编写了自动化修形程序界面,如图3所示,窗口内数据为待处理的腹腔部位点云,点云总量为117 743个.

图3 自动化修形案例

该软件中的参数设置与获取的点云数据密度等属性有关,需要在处理的过程中找寻最佳值,图4~6中的参数设置值可作为参考.利用临界点个数和阈值两个参数控制去除点云数据中的孤岛点云、噪点和离散点,图4(a)为删除离散点云数据的参数设置以及图4(b)为离散点删除后的点云数据.利用曲面截取和点云变形两个功能模块提取点云数据进行变形,图5为该过程处理使用的参数设置和图6(a)为变形后的点云数据.利用曲面重建功能模块将变形后的点云数据创建成曲面,图6(b)为曲面创建时的参数设置和图6(c)为修形后创建的曲面.

(a)离散点去除参数设置 (b)除去离散点云后的数据

图4离散点处理

图5 点云数据变形参数设置

(a)变形后的点云数据(b)曲面创建参数设置 (c)创建后的曲面

图6曲面创建过程

4 结论

提出了人体模型自动化修形的设计方法,以人体腹腔部位点云数据为例,利用PCL中的滤波、点云数据提取、点云数据变形和曲面创建等算法完成了人体修形曲面设计,验证了该修形设计方法的可行性.从三维层面直接处理和变形点云数据,为脊柱侧凸支具的曲面设计和制造奠定基础.

猜你喜欢
矫形器修形矫形
矫形机技术现状与发展趋势**
风电齿轮螺旋角修形方式的探讨
大型矿挖减速机传动系统修形研究
防崴脚,佩戴踝矫形器管用吗
矫形器技术及发展展望
基于齿廓修形的齿轮箱行星轮系优化设计*
斜齿轮对角修形设计研究
矫形工艺对6N01-T5铝合金焊接接头性能的影响
不同温度矫形的7N01铝合金接头组织性能分析
3D打印技术在矫形鞋垫中的应用进展