vtk三维点云重建vtkSurfaceConstructionFilter
vtkSurfaceReconstructionFilter获取假设为位于实体3D对象表面上的点列表。 计算与表面距离的带符号度量,并在常规网格上采样。 然后可以将网格轮廓化为零以提取表面,使用了三维点云隐式曲面重构技术。
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkSmartPointer.h"
#include "vtkProperty.h"
#include "vtkCamera.h"
#include "vtkPoints.h"
#include "vtkCellArray.h"
#include "vtkSurfaceReconstructionFilter.h"
#include "vtkContourFilter.h"
void main()
{
vtkSmartPointer<vtkRenderer>ren=vtkSmartPointer<vtkRenderer>::New(); //设置绘制者(绘制对象指针)
vtkSmartPointer<vtkRenderWindow>renWin=vtkSmartPointer<vtkRenderWindow>::New(); //设置绘制窗口
vtkSmartPointer<vtkRenderWindowInteractor>iren=vtkSmartPointer<vtkRenderWindowInteractor>::New();//设置绘制交互操作窗口的
vtkSmartPointer<vtkPoints>m_Points=vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkCellArray>vertices=vtkSmartPointer<vtkCellArray>::New();
//_读进点云数据信息
FILE*fp = NULL;
fp=fopen("斯坦福兔子.txt","r"); //读取TXT中的XYZ坐标
if(!fp)
{
printf("打开文件失败!!\n");
exit(0);
}
double x=0,y=0,z=0;
int i = 0;
while (!feof(fp))
{
fscanf(fp,"%lf %lf %lf",&x,&y,&z);
m_Points->InsertPoint(i,x,y,z); //_加入点信息
vertices->InsertNextCell(1); //_加入细胞顶点信息----用于渲染点集
vertices->InsertCellPoint(i);
i ++;
}
fclose(fp);
vtkSmartPointer<vtkPolyData>points=vtkSmartPointer<vtkPolyData>::New();
points->SetPoints(m_Points);
vtkSmartPointer<vtkSurfaceReconstructionFilter>surf=vtkSmartPointer<vtkSurfaceReconstructionFilter>::New();
surf->SetInput(points);
vtkSmartPointer<vtkContourFilter>contour=vtkSmartPointer<vtkContourFilter>::New();
contour->SetInputConnection(surf->GetOutputPort());
contour->SetValue(0,0.0);
vtkSmartPointer<vtkPolyDataMapper>pointMapper=vtkSmartPointer<vtkPolyDataMapper>::New();
pointMapper->SetInput(contour->GetOutput());
vtkSmartPointer<vtkActor>actor=vtkSmartPointer<vtkActor>::New();
actor->SetMapper(pointMapper);
ren->AddActor(actor);
renWin->AddRenderer(ren);
renWin->SetSize(800,800);
iren->SetRenderWindow(renWin);
renWin->Render();
iren->Start();
}
重建结果
如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。