[发明专利]假肢接受腔自适应匹配与自动生成方法有效
申请号: | 202010027770.0 | 申请日: | 2020-01-10 |
公开(公告)号: | CN111265343B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 李凤岐;李东岳;王祎;王胜法;范永刚 | 申请(专利权)人: | 大连理工大学 |
主分类号: | A61F2/30 | 分类号: | A61F2/30;G06F30/20;G06T17/00;G06T7/62 |
代理公司: | 大连理工大学专利中心 21200 | 代理人: | 隋秀文;温福雪 |
地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 假肢 接受 自适应 匹配 自动 生成 方法 | ||
1.假肢接受腔自适应匹配与自动生成方法,其特征在于,具体如下:
S1:残肢点云预处理阶段
S1.1:残肢点云读取:使用PCL点云库建一个点云指针,然后通过PCL中的io接口将指定位置的残肢点云文件读入到该点云指针中;
S1.2:模型显示:使用OpenSceneGraph中的osgViewer函数完成对读入的残肢点云文件的可视化,形成残肢点云模型,并对模型进行三维旋转;
对模型进行三维旋转,其中绕z轴的旋转矩阵为:
对于绕y轴、x轴的旋转矩阵如下:
其中,θx、θy、θz分别为绕x轴、y轴、z轴旋转的角度;
S1.3:点云滤波:使用半径滤波器完成对点云滤波,具体方法为将点云中一点设定为固定点,以该固定点为球心按指定半径画球体,计算其中点的数量,根据数量与给定值的大小决定是否保留该固定点,将点云中最密集的部分保留;若指定半径的球体内的点数不满足特定要求,则认为其为噪声点并将其去除;
S1.4:点云精简:使用随机法,假设残肢点云的数量为n,将残肢点云存入一个结构体中,然后声明一个大小为n的结构体数组,通过设置1-n之间的m个随机数,将随机数对应的数组索引保留,其他的全部去除;
S2:建立残肢点云模型自适应匹配接受腔模型
S2.1:计算残肢围长
S2.1.1:将给定高度的残肢点云模型的所有点投影到XOY面,取纵坐标最小的点为起始点,设为p0,并计算XOY面内的点的个数,设为t;
S2.1.2:建立平面上其他点与p0的连线,然后计算连线与正X轴的夹角的角度,根据角度的大小对其他点进行排序,当角度相同时,距离p0近的点排在前面,将排序的点设为pi,i=0,1,2…t-1;
S2.1.3:创建一个空栈,将p0、p1压入栈中,从步骤S2.1.2中得到的排序结果里,把p1后面的点p2拿出来做当前点,接下来开始找第三个点;
S2.1.4:连接栈中栈顶和与之相邻的点,得到直线L,看当前点是在直线L的右侧还是左侧;如果是在直线L的右侧则执行步骤S2.1.5;如果在直线L上或在直线L的左侧则执行步骤S2.1.6;
S2.1.5:将栈顶元素出栈,然后执行步骤S2.1.4;
S2.1.6:把当前点压入栈中,执行步骤S2.1.7;
S2.1.7:检查当前点是不是步骤S2.1.2中排序结果的最后一个元素;若是,则执行步骤S2.1.8,若不是,则将与p2相邻的后面点做当前点,返回步骤S2.1.4;
S2.1.8:将栈中的点依次弹出,依次计算相邻两点的线段距离,并计算栈顶和栈底两点之间的距离,将两个距离求和即为残肢给定高度的围长;
S2.2:残肢点云自适应分层与数学模型的建立
确定残肢点云模型分层高度h时需要计算残肢不同高度围长误差σ,通过选择h使不同分层的σ≤ε,其中ε为分层系数,1ε1.1,围长误差σ的计算公式为:
其中,c0为切层下表面即坐标为z0的残肢围长,c1为切层上表面即坐标为z1的残肢围长;
假定切层方向为z轴正方向,沿着z轴正方向实现对自适应分层,整个残肢点云模型z坐标的最大值、最小值分别为zmax、zmin,具体步骤如下:
S2.2.1:将残肢的点云按z轴正方向分成多个区间,每个区间的高度为Δh≤hmin/4,其中hmin为3D打印机的最小加工层厚;
S2.2.2:在z0=zmin处取得第一层切片,然后令切片厚度Δz=hmin,则第二层切面的初始位置为z1=z0+hmin;
S2.2.3:计算高度为z0与z1的围长误差σ,然后判断σ是否大于误差ε,若是,转入步骤S2.2.4;否则Δz=Δz+Δh,z1=z0+Δz,转入步骤S2.2.3;其中,Δz为分层增加的厚度;
S2.2.4:Δz=Δz-Δh,然后判读Δz是否小于hmin,若是,令Δz=hmin,z1=z0+Δz,判断z1是否大于zmax,若是,则转入步骤S2.2.6,否则,转入步骤S2.2.5;
S2.2.5:令z0=z1,Δz=hmin,z1=z0+hmin,转入步骤S2.2.3;
S2.2.6:结束;
建立残肢自适应分层后不同层高围长的数学模型如下:
其中,H=[H0…Hq]T,为自适应分层高度矩阵;H0=zmin为残肢末端的高度,Hq=zmax残肢顶端的高度;
C=[C0…Cq]T;C0为残肢高度在zmin时的残肢围长,Cq为残肢高度在zmax时的残肢围长;
S2.3:残肢模型匹配接受腔
S2.3.1:计算残肢点云模型的高度Llimb,Llimb=zmax-zmin;
S2.3.2:接受腔数据库使用MySql数据库,接受腔数据库中存储的数据包括:接受腔点云文件的存储路径、接受腔的高度Lsocket、接受腔的末端围长和接受腔的顶端围长
S2.3.3:先进行初次匹配,根据残肢点云模型的高度Llimb、残肢末端围长C0和残肢顶端围长Cq在接受腔数据库中进行匹配,匹配准则如下:
其中,α为匹配系数,1α1.1;
得到符合条件的接受腔的路径,并将其存储在字符串数组Path中;
S2.3.4:获得最佳舒适度匹配
将步骤S2.3.3得到的字符串数组Path中的路径下的接受腔点云文件依次读入,根据残肢的数学矩阵[H C]中的自适应分层高度矩阵H分别计算接受腔对应高度的围长,得到接受腔的围长矩阵B,B的表示如下:
因此假肢和接受腔在同一高度的围长比值βi如下:
使用矩阵来表示不同高度的围长比值:
β=[β0…βq]T
舒适系数λ表达如下:
分别计算字符串数组Path中的所有路径对应的接受腔点云模型的舒适系数λ值,取出λ最小值对应路径下的接受腔文件,即为匹配的最佳舒适度接受腔;S3:由残肢点云数据直接生成接受腔
S3.1:残肢表面点云的表面建模:使用PCL点云库中贪婪投影三角化算法进行曲面重建,具体方法是:先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内三位点的拓扑连接关系获得一个三角网格曲面模型;残肢点云表面建模后得到的是STL格式的残肢三角网格曲面模型;
S3.2:残肢曲面加厚生成接受腔:
S3.2.1残肢曲面的边界点提取:假设残肢三角网格曲面模型的残肢曲面上有N个点,组成M个三角网格;声明一个结构体数组Triangles[M],存放所有的三角网格;残肢曲面边界点提取的步骤如下:
(1)创建一个临时点数组Temp,并置为空;
(2)对当前残肢曲面上的点的所有邻接三角网格上异于当前残肢曲面上的点的点作如下操作:如果Temp包含异于当前残肢曲面上的点的点,则从Temp中删除异于当前残肢曲面上的点的点,否则,把异于当前残肢曲面上的点的点加入到Temp中;
(3)检查Temp,如果Temp为空,则当前残肢曲面上的点为内点,否则为边界点,并且Temp中的点是和当前残肢曲面上的点的邻接边界点;
S3.3由残肢曲面自动生成接受腔:
计算残肢三角网格曲面每个三角面片的非边界点的偏移方向,对于结构体数组Points[N]中的每个点,包含所有邻接三角形的信息,对于残肢三角网格曲面的每个三角面片的非边界点,其偏移方向n的计算公式为:
其中,nsum为该非边界点的所有邻接三角面片的法矢量坐标之和;nk为该点的所有邻接三角面片的法矢量坐标,v=NumAdjPoint,NumAdjPoint为与该非边界点邻接的三角面片的总数;
然后判断残肢三角网格曲面上的每个三角面片的三个点,若为边界点则不做处理,若非边界点,则沿其计算出的偏移方向偏移d的距离,d为接受腔的厚度,最终得到一个有厚度的、封闭的三角面片模型,即假肢接受腔。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010027770.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种工业粉末状废弃物回收系统
- 下一篇:一种高效脱硫塔