1、点云重建
虽然Delaunay三角部分算法可以实现网格曲面重建,但是其应用主要在二维部分,在三维空间网格生成中遇到了问题。因为在三维点云曲面重建中,Delaunay条件不在满足,不仅基于最大最小判断的对角线准则不成立,而且基于外接圆判据的Delaunay三角化也不能保证网格质量。VTKSurfaceReconstructionFilter则实现一种隐式曲面重建的方法,即将曲面看做一个符号距离函数的等值面,曲面内外的距离值得符号相反,而零等值面即为所求的曲面。该方法需要对点云数据进行网格划分,然后估算每个点的切平面和方向,并以每个点与最近的切平面距离来近似表面距离。这样即可以得到一个符号距离的体数据。这样,我们就可以利用VTKContourFilter来提取零等值面即可得到相应的网络。
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkPolyDataReader.h>
#include <vtkPolyData.h>
#include <vtkSurfaceReconstructionFilter.h>
#include <vtkContourFilter.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkCamera.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
int main()
{
vtkSmartPointer<vtkPolyDataReader> reader =
vtkSmartPointer<vtkPolyDataReader>::New();
reader->SetFileName("data/fran_cut.vtk");
reader->Update();
vtkSmartPointer<vtkPolyData

本文介绍了使用VTK库进行三维点云曲面重建的过程,通过VTKSurfaceReconstructionFilter实现隐式曲面重建,利用符号距离函数和ContourFilter提取曲面。重点讲解了SetNeighborhoodSize和SetSampleSpacing参数对重建质量的影响。
&spm=1001.2101.3001.5002&articleId=124713791&d=1&t=3&u=1384205a750e4e8ebbb35afd415951f9)
1万+

被折叠的 条评论
为什么被折叠?



