system: [SYSTEM]

user: 3. 基于多线外形的特征曲线网变形 本文将变形分为初始变形和配准变形两部分：初始变形利用基于ICP算法的刚体变换和纵向缩放实现两个相似个体的初始对齐；配准变形通过收缩包围算法实现两个平面曲线的演化，从而完成多线外形的变形，并建立映射函数，最后把基于多线外形的特征曲线网通过映射函数投影，得到新个体上的特征曲线网。 3.1. 基于ICP方法的刚体变换实现初始变形 最近点迭代(ICP)算法 [ 7 ] 是应用最为普遍的数据配准算法，它主要通过迭代方式逐步逼近最佳结果，但是由于该算法的收敛速度较慢，并且不能确保能够收敛到全局最优点，因此当数据集的初始位置相差较大时，该算法可能会出现错误的配准结果，因此本文对最近点迭代(ICP)算法进行了改进，在使用该算法之前，对数据进行刚体变换，使数据集具有一个相对良好的初始位置。 首先引入了刚体变换，对于点集A中一个数据点 X = [ x ， y ， z ] ，写成齐次坐标的形式 X = [ x ， y ， z ， 1 ] T ，通过刚体变换矩阵H，可以变换成点集B中一点 X ′ = [ x ′ ， y ′ ， z ′ ， 1 ] T ，变化关系式为 X ′ = H X ， H = [ R T 0 1 ] 其中H可以写成4*4的矩阵， | H | = 1 ，R为旋转矩阵，T为平移向量。 对于数据集 P = { P 1 ， P 2 ， ⋯ ， P N } ， Q = { Q 1 ， Q 2 ， ⋯ ， Q N } ，若数据集P经过变换矩阵H与数据集Q的误差表示为 f ( H ) ，我们以 f ( H ) 为目标函数，来求解非线性最优化问题 min ( f ( H ) ) 。根据误差度量选取点到点距离平方和作为目标函数： f ( H ) = f ( R ， T ) = ∑ i = 1 N ‖ Q i − R P i − T ‖ 2 2 那么，点云配准的目标误差函数可表示为： min ( f ( H ) ) = min ( f ( R ， T ) ) = min ( ∑ i = 1 N ‖ Q i − R P i − T ‖ 2 ) (1) 运用四元数法求解刚体变换矩阵R，T。 然后，采用ICP算法进行点云配准，假设源点集和目标点集分别为S和G，令 P 0 = S ， R 0 = I ， T 0 = 0 ， T 0 = 0 。本文利用ICP的迭代算法分五步实现两个多线外形的对齐。Step 1：分别计算源点集和目标点集的质心 S c ， G c ， T = G c − S c ；Step 2：计算出最近点，对于 P k 中的每个数据点，计算在目标点集G中的最近点 Q k ，此处选取距离最近点；Step 3：通过式(1)最小化目标函数，估计配准参数 H k = [ R k T k 0 1 ] ，并计算误差 d k ；Step 4：对源集更新，使用估计得到的变换矩阵 H k 对源点集 P k 进行更新， P k + 1 = H k ( P 0 ) = R k P 0 + T k ；Step 5：重复迭代，直到两次计算的误差变化小于阈值，即 | d k + 1 − d k | < τ ，停止迭代。 ICP算法能够保证得到的解局部最小，通过本节算法验证实例，得到了较好的初始配准结果，图4.6演示了通过ICP迭代进行初始变形的过程，其中图1(a)为三维变换后的两个多线外形，蓝色表示目标个体，红色表示经过ICP变形后的个体，图1(b)~(f)分别为迭代1，2，4，8，10次后的两个多线外形，可以看出，随着迭代次数的增大，两个多线外形越来越接近，表1给出了迭代过程中两个多线外形的平均误差。经过多次试验，本文将迭代终止条件设定为两个多线外形的平均距离小于5 mm，如表1所给个体需要迭代10次满足迭代终止条件。 图1. 经过初始变形后的两个股骨多线外形。(a) 迭代前；(b) 迭代1次；(c) 迭代2次；(d) 迭代4次；(e) 迭代8次；(f) 迭代10次 Table 1 Mean error by ICP iteration 迭代次数 1 2 3 4 5 平均误差(mm) 22.7011 16.8339 13.2454 10.6096 8.6193 迭代次数 6 7 8 9 10 平均误差(mm) 7.1460 6.1264 5.4368 5.0154 4.7602 表1. ICP迭代过程中的平均误差 3.2. 收缩包围算法实现曲线演化 通过2.1节的初始变形后，建立两个截面线间的特征对应关系，对截面间距做平均化处理，通过插入和删除截面线，建立多线外形A和多线外形B间对应曲线的一一对应。本节通过收缩包围算法实现平面曲线的演化。收缩包围算法的主要思路就是每次细分后将吸引力和松弛力共同作用于网格顶点，其中吸引力将顶点拉向初始网格上的顶点最近点；松弛力保证顶点移动时局部变形能量最小，在平面曲线的演化过程中，利用此算法的思想，提出了基于曲线参数化的变形算法。 对于两条截面线，记做 Γ k − 1 和 Γ k ∞ ，其中 Γ k − 1 为原曲线， Γ k ∞ 为目标曲线，为使原曲线变形成目标曲线，我们把 Γ k − 1 看做 Γ k 0 ，截面线 Γ k 0 向 Γ k ∞ 演化，演化的过程中不断产生过程曲线 Γ ′ k r ( r > 1 ，第r次演化)，如果 Γ ′ k r 存在断裂，也就是 Γ ′ k r 上两个点的索引号是相邻的，这两个点在相关联的图像中像素不是相邻的，这个时候就需要使用线段离散化成像素点来修补轮廓线，修补后的轮廓线为 Γ k r ， Γ k r 作为下一个演化的轮廓线接着向 Γ k ∞ 演化，最终演化得到目标曲线。曲线演化的过程可分为五步进行： Step 1：对于 Γ k r 上任一点 P i ， k r ，首先在 Γ k ∞ 上寻找最近点 P j ， k ∞ ，设定距离阈值 d δ ，通过判断 | P i ， k r P j ， k ∞ | ≤ d δ 来决定Step 2还是Step 3，若满足 | P i ， k r P j ， k ∞ | ≤ d δ 转Step 2，否则转Step 3； Step 2：通过计算 P i ， k r P j ， k ∞ 在各自曲线上的法向 n i ， k r ， n j ， k ∞ ，若 ( n i ， k r ， n j ， k ∞ ) ≥ 0 ，说明该点是有效点，将该点传给 Γ ′ k r ； Step 3：L是连接 Γ k r 上的所有点 P i ， k r 构成的多边形， P k ∞ 也是连接曲线 Γ k ∞ 上所有点构成的闭合的多边形。通过法向进行线段投影，将L上的点 P i ， k r − 1 投影到 P k ∞ ，如果同时有好几个交点，选择到点 P i ， k r 距离最短的交点，设交点在所在曲线上的法向为 n ，同时这个交点要满足 ( n ， n i ， k r − 1 ) > 0 由于像素点都是整数点，求出的交点可能不是整数，要把交点整数化，这样就能获得了 Γ k ∞ 上的点 P j ， k ∞ 。如果此点 P j ， k ∞ 满足Step 1中的条件，那么说明 P j ， k ∞ 是有效的，同时把这点传递到 Γ k r ，以便进行下一次的曲线投影； Step 4：在演化过程中，检查 上的点，如果两个点 P ′ i ， k r 和 P ′ i + 1 ， k r 的索引号是相邻的，那么这两个点在相关联的图像中对应的像素不相邻的。就要使用线段离散化成像素，得到新的截面线 Γ ′ k r ，作为下一轮轮廓演化的初始轮廓； Step 5：计算两曲线距离 N move (演化后的曲线与目标曲线的距离，通过两条曲线上点的距离和计算) 如果 N move = 0 ，停止迭代，否则 Γ ′ k r = Γ ′ k r + 1 ，转1。 上述算法的步骤Step1~Step3是曲线的变形部分，相当于收缩包围算法中的吸引力，Step4是曲线的离散部分，是用线段离散化成像素的方法来修补断裂的部分，相当于松弛力，在这两个力的作用下，使原曲线不断向目标曲线演化。 图2给出了本节曲线演化的示例，其中距离阈值 取2 mm，图中可见红色原曲线演化后的黑色星号曲线与蓝色目标曲线重合，经过曲线演化，可以完成两条曲线间的变形。红色表示原曲线，蓝色表示目标曲线，黑色星号表示红色曲线演化后的曲线。 图2. 曲线演化。(a) 曲线演化示例1；(b) 曲线演化示例2