1.创建
PointSet是一个基本类,旨在以n维空间中一组点的形式表示几何。
它是itk::Mesh的基类,提供了操作点集所需的方法。点可以有与之相关的值。这些值的类型是由itk::PointSet类的模板参数定义的。
ITK中有两种基本的切入点集交互样式。这些样式分别称为静态样式(static )和动态样式( dynamic)。点集的数量是固定并且不希望改变时用第一种,要增改删则用第二种。
#include "itkPointSet.h"
//我们必须决定什么类型的值与这些点相关联。
//为了使术语与itk::Image一致,通常称为PixelType。
//点集还在表示点的空间维度上模板化。下面的声明说明了PointSet类的典型实例化:
typedef itk::PointSet< unsigned short, 3 > PointSetType;
//PointSet对象是通过对其类型调用New()方法创建的。
//产生的对象必须分配给一个智能指针。然后点集是引用计数的,可以由多个对象共享。当对对象的引用数量减少到零时,为PointSet分配的内存将被释放。
//这仅仅意味着用户不需要关心调用该类上的Delete()方法。实际上,不应该在任何引用计数的ITK类中直接调用Delete()方法。
PointSetType::Pointer pointsSet = PointSetType::New();
//遵循泛型编程的原则,PointSet类拥有一组相关的已定义类型,以确保使用兼容类型声明交互对象。这组类型定义通常称为一组特征。
//例如,我们可以在其中找到PointType类型。这是点集用来表示空间中的点的类型。下面的声明采用点集特征中定义的点类型.
//这里将其重命名,以便在全局名称空间中使用。
typedef PointSetType::PointType PointType;
//现在可以使用PointType来声明要插入到切入点集中的点对象。点是相当小的对象,所以使用引用计数和智能指针来管理它们很不方便。它们只是被实例化为典型的c++类。
//Point类从itk::Array类继承了[]操作符。这使得使用索引表示法访问其组件成为可能。
//为了提高效率,在索引访问期间不执行边界检查。用户负责确保所使用的索引在{0,维−1}范围内。
PointType p0;
p0[0] = -1.0; // x coordinate
p0[1] = -1.0; // y coordinate
p0[2] = 0.0; // z coordinate
//使用SetPoint()方法将点插入到点集中。此方法要求用户为该点提供唯一标识符。
//标识符通常是一个无符号整数,将在插入点时枚举它们。
//下面的代码显示了如何将三个点插入到切入点中:
pointsSet->SetPoint( 0, p0 );
pointsSet->SetPoint( 1, p1 );
pointsSet->SetPoint( 2, p2 );
//可以查询切入点集,以确定插入了多少个点。
//这是通过GetNumberOfPoints()方法完成的,如下所示:
const unsigned int numb

本文深入探讨了ITK库中的PointSet类,讲解了如何创建、操作和访问点集,包括点的插入、获取及与点关联的数据管理。同时介绍了静态和动态点集的区别,以及如何使用迭代器高效遍历点集。
最低0.47元/天 解锁文章
247

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



