版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/zhouyelihua https://blog.csdn.net/zhouyelihua/article/details/73794338
后续会详细的解读全部的源码。。。。
Fast ICP论文地址:
http://docs.happycoders.org/orgadoc/graphics/imaging/fasticp_paper.pdf
fast icp source code C++源码:
http://gfx.cs.princeton.edu/proj/trimesh2/
这个代码是vs2010根据源码修改的一个工程。。本程序只使用lib和头文件十分方便使用
工程地址
#include "TriMesh.h"
#include "TriMesh_algo.h"
#include "ICP.h"
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <string>
using namespace std;
using namespace trimesh;
int main(){
int verbose = 0;
bool do_scale = false;
bool do_affine = false;
bool bulkmode = true;
char filename1[100]="../1.obj";//输入的工程文件支持obj。ply,stl
char filename2[100]="../2.obj";
TriMesh *mesh1 = TriMesh::read(filename1);
TriMesh *mesh2 = TriMesh::read(filename2);
xform xf1;
string xffilename1 = xfname(filename1);
xf1.read(xffilename1);
xform xf2;
string xffilename2 = xfname(filename2);
xf2.read(xffilename2);
KDtree *kd1 = new KDtree(mesh1->vertices);
KDtree *kd2 = new KDtree(mesh2->vertices);
vector<float> weights1, weights2;
if (bulkmode) {
float area1 = mesh1->stat(TriMesh::STAT_TOTAL, TriMesh::STAT_FACEAREA);
float area2 = mesh2->stat(TriMesh::STAT_TOTAL, TriMesh::STAT_FACEAREA);
float overlap_area, overlap_dist;
find_overlap(mesh1, mesh2, xf1, xf2, kd1, kd2,
overlap_area, overlap_dist);
float frac_overlap = overlap_area / min(area1, area2);
if (frac_overlap < 0.1f) {
TriMesh::eprintf("Insufficient overlap\n");
exit(1);
} else {
TriMesh::dprintf("%.1f%% overlap\n",
frac_overlap * 100.0);
}
}
float err = ICP(mesh1, mesh2, xf1, xf2, kd1, kd2, weights1, weights2,
verbose, do_scale, do_affine);
if (err >= 0.0f)
err = ICP(mesh1, mesh2, xf1, xf2, kd1, kd2, weights1, weights2,
verbose, do_scale, do_affine);
if (err < 0.0f) {
TriMesh::eprintf("ICP failed\n");
exit(1);
}
TriMesh::eprintf("ICP succeeded - distance = %f\n", err);
xf1.write(xffilename1);//输出的网格1的变化矩阵
xf2.write(xffilename2);//网格2的变换举证
return 0;
}
具体查看一下网格变换矩阵
具体整个工程的下载
http://download.csdn.net/detail/zhouyelihua/9881814
如果您觉得此博客对您有用,欢迎对我进行小额赞助。
扫描二维码关注公众号,回复:
4229166 查看本文章
不筹钱娶媳妇的程序员不是好程序员!