对齐两个拓扑相同的网格

Align two topologically identical meshes

我有两个代表两个不同头部的网格,因为几何形状不相同,但具有相同的拓扑结构。此外,这些点的子集代表人脸上的相同特征,即鼻尖、下巴、嘴角等;它们用于修改后的网格所来自的拓扑转移算法。

现在,虽然拓扑匹配,因为两个网格具有相同的点数,并且点以相同的方式连接,但对象在 space 中不是最佳方向。

我正在寻找可以更好地对齐两个网格的优化步骤的名称,以及这个概念是否已经存在于 CGAL 中。

两个网格之间的距离可以只是匹配点之间距离的总和,或者更微妙的东西,可以给靠近前面步骤中使用的地标的点更多的权重。任何线性变换都是可以接受的,但在这种情况下更有意义的是平移、旋转和缩放。

文件在here你有兴趣看一下吗

我找到了一种方法 - 不是在 CGAL 中,而是在 OpenCV 中

函数是:estimateAffine3D

estimateAffine3D() int cv::estimateAffine3D ( InputArray 源, 输入数组 dst, OutputArray出来, OutputArray 内点, 双 ransacThreshold = 3, 双置信度 = 0.99 )

计算两个 3D 点集之间的最佳仿射变换。

它计算 R 和 T,使得 P' = RxP + T ,并且每个集合中匹配点之间的距离最小化。 R旋转矩阵,T平移矩阵。