VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

在VTK中连通区域分析常用到的类是:vtkPolyDataConnectivityFilter。从名字可以看出来其输入类型为vtkPolyData;了解VTK的人都知道这是图形的基本数据结构保存了图形的几何结构和拓扑结构。如果你要进行连通分析的对象是图形那自然就没问题。但如果需要对图像进行连通区域分析,那该类就不能直接用了,要先进行一步数据类型转换。根据参考文1,我们可以以一种非严谨方式将VTK数据处理算子(Filter)分为一下几类:

    1、图像处理   其输入为vtkImageData(图像基本数据类型),输出也为vtkImageData

    2、几何提取   其输入为vtkImageData,输出为vtkPolyData

    3、图形处理   其输入为vtkPolyData,输出也为vtkPolyData,例如前面的vtkPolyDataConnectivityFilter

    4、渲染       如Mapper和Actor 来完成图形图像的显示


 vtkpolydataconnectivityfilter是一个筛选器,它提取共享公共点和/或满足标量阈值条件的单元格。
(这样的单元格组称为连通域。)
此筛选器专门用于多边形数据。这意味着它运行得更快,更容易构建处理多边形数据的可视化网络。
可以通过启用布尔ivar scalarconnectivity来修改vtkpolydataconnectivityfilter的行为。如果此标志处于启用状态,则修改连接算法,以便仅当1)单元格是几何连接的(共享一个点)和2)单元格的点的标量值落在指定的标量范围内时,才认为单元格是连接的。如果启用scalarconnectivity和fullscalarconnectivity,则单元格的所有点都必须位于为该单元格指定的标量范围内,才能符合连接条件。如果fullscalarconnectivity处于禁用状态,则单元格的任何一个点都可能位于用户指定的标量范围内,以便单元格符合连接条件。
scalarconnectivity的这种用法对于选择单元格以供以后处理特别有用。
 

    完成数据类型转换我们就可以使用vtkPolyDataConnectivityFilter来提取连通区域。该类在提取连通区域时候有如下6中模式:

    1)提取数据集中的最大(最多点)连接区域:SetExtractionModeToLargestRegion();

    2)提取指定区域号:SetExtractionModeToSpecifiedRegions();

    3)提取共享指定点ids的所有区域:SetExtractionModeToPointSeededRegions();

    4)提取共享指定单元ID的所有区域:SetExtractionModeToCellSeededRegions();

    5)提取最靠近指定点的区域:SetExtractionModeToClosestPointRegion();

    6)提取所有区域(用于着色区域):SetExtractionModeToAllRegions()

可以用来 显示或删除部分数据;

		vtkNew<vtkPolyDataConnectivityFilter> connectivityFilter;
		connectivityFilter->SetInputData(mStlPolyData);
	 

		connectivityFilter->SetExtractionModeToSpecifiedRegions();
		//connectivityFilter->SetExtractionModeToLargestRegion();
		connectivityFilter->AddSpecifiedRegion(0); // select the region to extract
												   // here
		connectivityFilter->Update();

		int count = connectivityFilter->GetNumberOfExtractedRegions();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值