VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

news2024/9/23 2:50:41

前言:

   vtkPolyDataConnectivityFilter 使用过,但网上没有看到完事的教程;这里整理一下;

 

提取数据集中连通的多边形数据。

该类是一个滤波器,提取cell(区域) - 拥有公共点或者满足某个阈值

该类在提取连通区域时候有如下6种模式:
   1 )提取数据集中的最大(最多点)连接区域:SetExtractionModeTo LargestRegion();
    2)提取指定区域号:SetExtractionModeTo SpecifiedRegions();
    3)提取共享指定点ids的所有区域:SetExtractionModeTo PointSeededRegions();
    4)提取共享指定单元ID的所有区域:SetExtractionModeTo CellSeededRegions();
    5)提取最靠近指定点的区域:SetExtractionModeTo ClosestPointRegion();
    6)提取所有区域(用于着色区域):SetExtractionModeTo AllRegions()

这个滤波器是针对多边形数据的。

通过修改 ScalarConnectivity 该布尔值,可以修改该类的行为。如果该值为true,算法中① 共享一个点的cell 会被认为是几何连通的;②cell中点的标量在指定的标量范围内;这两种情况下,cell会被认为是连通的。

如果 ScalarConnectivity 和 FullScalarConnectivity 都为 true,只有当cell中所有的点的标量值满足指定范围,该cell才会被认为是连通的。如果 FullScalarConnectivity 为false,cell中任何一个点满足标量的指定范围都会被认为是连通的。

ColorRegionsOn() 用于对不同的连通区域着色。

1. LargestRegion 这种通常取最大的哪个;

vtkNew<vtkPolyDataConnectivityFilter> ConnectivityFilter ;
 
  ConnectivityFilter->SetInputConnection(polyData);
  ConnectivityFilter->SetExtractionModeToLargestRegion();
 ConnectivityFilter->Updata()
// get largest region
mPolydata->DeepCopy(ConnectivityFilter->GetOutput());
 

2. SpecifiedRegions 可能会有多个连通区域,每个有相应Id;

需要在第6个的基础上,取其中一个 ;

    vtkNew<vtkConnectivityFilter> connectivityFilter;
    connectivityFilter->SetInputData(mVtkPolyDataAll);
    connectivityFilter->SetExtractionModeToAllRegions();
    connectivityFilter->ColorRegionsOn();
    connectivityFilter->Update();

int regionNum = connectivityFilter->GetNumberOfExtractedRegions()  # 获取连通区域的数目
for (int i =0;i<regionNum;i++)
{
    connectivityFilter2 = vtk.vtkPolyDataConnectivityFilter()
    connectivityFilter2.SetInputData(mVtkPolyDataAll)
    connectivityFilter2.InitializeSpecifiedRegionList()   # 清空要提取的连通区域号的列表
    connectivityFilter2.SetExtractionModeToSpecifiedRegions()  # 用于提取一个或多个连通区域
    connectivityFilter2.AddSpecifiedRegion(i)  # 设置提取的连通区域号
    connectivityFilter2.Update()

    // get one region
    vtkPolyData * polydata = connectivityFilter2->GetOutput();
}

 


 3. SetExtractionModeToPointSeededRegions 获取包含一个 点 id 的区域;

需要先找到一个点Id,这个 id 通常需要使用交互,鼠标选择得到 ;

  vtkSmartPointer<vtkPolyDataConnectivityFilter> connectivityFilter =
        vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
   connectivityFilter->SetInputData(appendFilter->GetOutput());
   connectivityFilter->SetExtractionModeToPointSeededRegions();
   connectivityFilter->AddSeed(100);
   connectivityFilter->Update();

   // get plydata
   connectivityFilter->GetOutput();

4. SetExtractionModeToCellSeededRegions 需要指定一个 cell id;

vtkSmartPointer<vtkPolyDataConnectivityFilter> connectivityFilter = 
      vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
  connectivityFilter->SetInputData(polyData);
  connectivityFilter->SetExtractionModeToCellSeededRegions(); 
  connectivityFilter->InitializeSeedList();
  connectivityFilter->AddSeed(cellId); 
  connectivityFilter-Update();
 

6. SetExtractionModeToClosestPointRegion 提取最靠近指定点的区域

vtkSmartPointer<vtkPolyDataConnectivityFilter> connectivityFilter = 
      vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
  connectivityFilter->SetInputData(polyData);
  connectivityFilter->SetExtractionModeToClosestPointRegion(); 
  connectivityFilter->InitializeSeedList();
  connectivityFilter->AddSeed(PointId); 
  connectivityFilter-Update();

6. SetExtractionModeToAllRegions 获取所有连通区域

    vtkSmartPointer<vtkPolyDataConnectivityFilter> connectFilter1=
            vtkSmartPointer<vtkPolyDataConnectivityFilter>::New();
    connectFilter1->SetInputConnection(contourFilter->GetOutputPort());
    connectFilter1->SetExtractionModeToAllRegions();
    connectFilter1->ColorRegionsOn();
    connectFilter1->MarkVisitedPointIdsOn();
    connectFilter1->Update();
    int regionNum=connectFilter1->GetNumberOfExtractedRegions();
    qDebug()<<"regionNum:"<<regionNum;
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/479915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Soft-RoCE部署及通信测试

Soft-RoCE部署及通信测试 Soft-RoCE是一种基于软件的RoCE&#xff08;RDMA over Converged Ethernet&#xff09;实现。RoCE是一种在以太网上实现RDMA&#xff08;Remote Direct Memory Access&#xff09;的技术&#xff0c;它允许数据在网络中直接传输&#xff0c;而无需CPU…

【ElasticSearch】几点优化及面试相关

文章目录 硬件选择分片策略合理设置分片数推迟分片分配 路由选择写入速度优化(磁盘优化)批量数据提交优化存储设备合理使用合并减少 Refresh 的次数加大 Flush 设置减少副本的数量 内存设置ES配置文件解析Elasticsearch 面试题为什么要使用 Elasticsearch?Elasticsearch 的 ma…

【Java网络编程】基于UDP-Socket 实现客户端、服务器通信

​ 哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 本期为大家带来的是网络编程的 UDP Socket 套接字&#xff0c;基于 UDP协议的 Socket 实现客户端服务器通信&#xff0c;Socket 套接字可以理解为是&#xff0c;传输层给应用层提供的一组 API&#xff0c;…

Java中提升接口性能的一些方法

目录 1.使用线程池并行执行2.数据库优化2.1 小表关联大表2.2 反三大范式操作2.3 增加索引2.4 减小事务粒度2.5 读写分离、分库分表 3.拥抱缓存3.1 Redis3.2 内存缓存 4.锁和异步4.1 减小锁的粒度4.2 分布式锁 1.使用线程池并行执行 假如有一个接口的逻辑如下&#xff1a; 接口…

cadence遇到的问题

1、最烦人的&#xff0c;突然卡住。 设置grid卡住&#xff0c;导出libraries卡住&#xff0c;选择其他产品时卡住。 从微软拼音输入法改成美式键盘后能解决一些问题。但不能解决全部。 今天下载了搜狗输入法来替代微软自带输入法。效果奇佳&#xff0c;真的可以诶。 2、如果…

沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 CH32V208 CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC-V4C内核, 最高144MHz主频, 64KB SRAM&#xff0c;128KB Flash, 供电电压2.5/3.3V. 这个型号的特点: 除了特有的硬件堆栈区、…

【C++11那些事儿(三)】

文章目录 一、可变参数模板1.1 概念引入1.2 递归函数方式展开参数包1.3 逗号表达式展开参数包1.4 可变参数模板在STL中的应用 二、包装器1.1 function1.2 bind 一、可变参数模板 1.1 概念引入 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板&#x…

链表的添加修改删除操作

public class HeroNodeDemo {public static void main(String[] args) {HeroNode hero1 new HeroNode(1, "松江");HeroNode hero2 new HeroNode(2, "武松");HeroNode hero3 new HeroNode(3, "及时雨");HeroNode hero4 new HeroNode(4, "…

AWVS-window版本安装

Acunetix Web Vulnerability Scanner&#xff08;简称AWVS&#xff09;是一款知名的网络漏洞扫描工具&#xff0c;它通过网络爬虫测试你的网站安全&#xff0c;检测流行安全漏洞。 一、下载 链接&#xff1a;https://pan.baidu.com/s/1GuLCmYBmhVYA2_qBwfjZhw 提取码&#x…

管家婆安装导致电脑蓝屏问题解决方案

安装完管家婆后&#xff0c;电脑蓝屏&#xff0c;重启还是蓝屏&#xff0c;这该怎么办&#xff1f; 导致的原因&#xff1a;因加密狗驱动不适配于Windows10系统&#xff0c;导致电脑蓝屏 修复方案&#xff1a;进入电脑安全模式&#xff08;怎么进入问度娘&#xff09;&#…

css奇淫巧计

1.input文本内容替换 -webkit-text-security&#xff1a;通过用形状替换字符,仅影响那些字段不是的typepassword 可选值:none &#xff08;无&#xff09;&#xff0c;circle &#xff08;圆圈&#xff09;&#xff0c;disc &#xff08;圆形&#xff09;&#xff0c;square &a…

【STM32CubeMX】串口通信

前言 本文记录下我学习STM32CubeMX时的流程&#xff0c;方便以后回忆。本章记录串口通信。这里居然有玄学问题&#xff0c;给我整了好久&#xff0c;头都大了。可能也是我能力有限才有的吧&#xff0c;泪目。 目录 串口通信 串口通信 STM32CubeMX中的串口配置&#xff0c;配…

MiniGPT-4引领潮流,GPT-4提前发布图片阅读功能

ChatGPT中国站翻译自medium.com 让我们来看看如何玩Minigpt-4并将其应用到日常生活中。 今年三月&#xff0c;OpenAI 宣布了 GPT-4 的图像识别功能&#xff0c;这意味着 GPT 技术又被提升一个维度。-4 尚未发布给大众使用很长时间&#xff0c;所以终于有人忍不住了&#xff01;…

由 ChatGPT 团队开发,堪称辅助神器!IntelliJ IDEA 神级插件

什么是Bito&#xff1f; 为什么要使用Bito&#xff1f; 如何安装Bito插件 如何使用Bito插件 什么是Bito&#xff1f; Bito是一款由ChatGPT团队开发的IntelliJ IDEA编辑器插件&#xff0c;旨在提高开发人员的工作效率。此插件强大之处在于它不仅可以帮助开发人员更快地提交…

vulnhub靶机sar

准备工作 下载连接&#xff1a;https://download.vulnhub.com/sar/sar.zip 下载完后解压&#xff0c;然后双击打开&#xff0c;VMware导入OVA 网络环境&#xff1a;DHCP、NAT 信息收集 主机发现 先扫描整个C段 192.168.100.132应该就是我们的目标 端口扫描 扫描目标主机…

3个经典线程同步问题

生产者消费者问题 问题描述 系统中有一组生产者进程和一组消费者进程&#xff0c;生产者进程每次生产一个产品放入缓冲区&#xff0c;消费者进程每次从缓冲区中取出一个产品并使用。生产者、消费者共享一个初始为空、大小为n的缓冲区 伪码描述 semaphore mutex 1;//互斥信…

Zabbix服务端监控目标主机的Web服务(网站的访问延迟)

zabbix服务端和目标主机的部署见上一篇文章&#xff1a; http://t.csdn.cn/XD5Hc Zabbix服务端监控目标主机 服务端启动zabbix服务后&#xff0c;在浏览器上访问&#xff1a;http&#xff1a;//IP/zabbix 1.创建主机群主&#xff08;名字自定义&#xff09; 2.创建主机 主…

javaEE基于SSh学生选课系统

设计内容1. 搜集相关资料、作出功能需求分析&#xff1b; 2. 各个功能模块的基本功能大体如下&#xff1a; (1). 管理员模块 包括个人中心、专业管理、班级管理、课程管理、教师管理、选课管理。&#xff0e; (2).教师模块 包括个人中心、课程信息、出勤管理、成绩管理。 (3)…

大数据-玩转数据-netcat

Netcat&#xff08;简称nc&#xff09;是一款强大的命令行网络工具&#xff0c;用来在两台机器之间建立TCP/UDP连接&#xff0c;并通过标准的输入输出进行数据的读写。 一、Windows 下载安装 netcat(nc)命令 1、netcat(nc)下载地址&#xff1a; https://eternallybored.org/…

《程序员面试金典(第6版)》面试题 16.08. 整数的英语表示

题目描述 给定一个整数&#xff0c;打印该整数的英文描述。 示例 1: 输入: 123输出: “One Hundred Twenty Three” 示例 2: 输入: 12345输出: “Twelve Thousand Three Hundred Forty Five” 示例 3: 输入: 1234567输出: “One Million Two Hundred Thirty Four Thousand…