当前位置: 首页 > news >正文

VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

前言:

   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 regionvtkPolyData * 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 plydataconnectivityFilter->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;

相关文章:

VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

前言&#xff1a; vtkPolyDataConnectivityFilter 使用过&#xff0c;但网上没有看到完事的教程&#xff1b;这里整理一下&#xff1b; 提取数据集中连通的多边形数据。 该类是一个滤波器&#xff0c;提取cell&#xff08;区域&#xff09; - 拥有公共点或者满足某个阈值 该类…...

scss、css样式中使用变量的方法;Vue动态改变css等样式文件中的变量

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.遇到一些样式 设置的值都是重复的不想重复写&#xff0c;想和js一样定义一个常量&#xff0c;然后直接引用这个常量。 2.想要在js中动态设置样式中的值&#xff0c;在 css、scss等样式表中直接使用。 二、原因及解…...

数据治理在学术上的发展史以及未来展望

数据治理是大数据领域中非常重要的一环&#xff0c;从早期的学术研究到如今的各大企业落地实践&#xff0c;经历了漫长的过程&#xff0c;数据治理的实践落地本身也是一场马拉松。 从百度学术通过精确关键词匹配&#xff0c;搜索中文期刊的“数据治理” 和外文期刊的“data gov…...

【搭建博客】宝塔面板部署Typecho博客,并发布上线访问

目录 前言 1.安装环境 2.下载Typecho 3.创建站点 4.访问Typecho 5.安装cpolar 6.远程访问Typecho 7.固定远程访问地址 8.配置typecho 前言 Typecho是由type和echo两个词合成的&#xff0c;来自于开发团队的头脑风暴。Typecho基于PHP5开发&#xff0c;支持多种数据库&…...

【Spring篇】IOC相关内容

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、bean基础配置 1.bean基础配置(id与class) 2.bean的name属性 3.bean作用范围scope配置 二、bean实例化 1.构造方法实例化 2.分析Spring的错误信息 3.静态工厂实例化 4.实例工厂 5.FactoryBean 三…...

Python超矩形

文章目录 距离函数矩形分割 Rectangle是 scipy.spatial中封装的类&#xff0c;其构造函数只需输入最小值和最大值的数组即可&#xff0c;并且可通过内置的 volume方法计算广义的体积。 from scipy.spatial import Rectanglerec Rectangle((0,0), (5,5)) print(rec.maxes) …...

【软考数据库】第五章 计算机网络

目录 5.1 网络功能和分类 5.2 OSI七层模型 5.3 TCP/IP协议 5.4 传输介质 5.5 通信方式和交换方式 5.6 IP地址 5.7 IPv6 5.8 网络规划和设计 5.9 其他考点补充 5.10 网络安全技术 5.11 网络安全协议 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff…...

深眸科技|深度学习、3D视觉融入机器视觉系统,实现生产数智化

随着“中国制造2025”战略加速落实&#xff0c;制造业生产线正在加紧向智能化、自动化和数字化转型之路迈进。而人工智能技术的兴起以及边缘算力持续提升的同时&#xff0c;机器视觉及其相关技术也在飞速发展&#xff0c;并不断渗透进工业领域&#xff0c;拓展应用场景的同时&a…...

DateFormat使用时需要注意:多线程下需要特殊处理

前言 工作或学习过程中难免会接触到时间&#xff08;Date&#xff09;相关的内容&#xff0c;比如String类型转为Date类型&#xff0c;或者Date类型转为String类型&#xff0c;jdk为我们提供了一套完善的日期格式化工具&#xff0c;DateFormat类&#xff0c;使用者可以使用该接…...

Packet Tracer - 研究直连路由

Packet Tracer - 研究直连路由 目标 第 1 部分&#xff1a;研究 IPv4 直连路由 第 2 部分&#xff1a;研究 IPv6 直连路由 拓扑图 背景信息 本活动中的网络已配置。 您将登录路由器并使用 show 命令发现并回答以下有关直连路由的问题。 注&#xff1a;用户 EXEC 密码是 c…...

大专生程序员找工作的一点小建议 知识分享 经验分享

最近呢有人在私信我 就问我说我呢是一个大专生 大专毕业 学历呢也不是很好 我但是我学的是这个计算机 这样一个专业 然后呢现在找工作找不到 就这样的一个要求 让我们呢给一些建议 当然就是私底下在网上聊吗 就会给 也相信 我的一个建议是什么样的 就是你首先你要去找工作的 首…...

PyCaret:低代码自动化的机器学习工具

PyCaret简介 随着ChatGPT和AI画图的大火&#xff0c;机器学习作为实现人工智能的底层技术被大众越来越多的认知&#xff0c;基于机器学习的产品也越来越多。传统的机器学习实现方法需要较强的编程能力和数据科学基础&#xff0c;这使得想零基础尝试机器学习变得非常困难。 机器…...

【Hello Network】网络编程套接字(三)

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;简单介绍下各种类型的Tcp协议 各种类型Tcp服务器 多进程版的TCP网络程序捕捉SIGCHLD信号让孙子进程执行任务 多线程TCP网络程序线程池版多线程TCP网络…...

3.4 只读存储器

学习目标&#xff1a; 学习只读存储器&#xff08;ROM&#xff09;的目标可以包括以下内容&#xff1a; 了解ROM的基本概念、分类以及适用场景。掌握ROM的电路原理、逻辑结构和读取方式。熟悉ROM的编程方式和编程工具。理解ROM与EPROM、EEPROM和闪存的区别和联系。了解ROM在计…...

从后端开发转大数据开发怎么样?

很多做后端的小伙伴&#xff0c;在某一个瞬间&#xff0c;都想转行大数据&#xff0c;那这种想法可行嘛&#xff1f; 转大数据的最初原因很简单&#xff0c;就是好几个同事都转了&#xff0c;他们的收入瞬间提高了好多&#xff0c;于是在同事的内推我也就跟着转了&#xff0c;…...

编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?

重写push与replace方法 编程式导航路由跳转到当前路由&#xff08;参数不变&#xff09;&#xff0c;多次执行会抛出NavigatorDuplicated的禁告错误&#xff1f; 路由跳转有俩种形式&#xff1a;声明式导航&#xff0c;编程式导航 声明式导航没有这类问题的&#xff0c;因为…...

AppArmor无内核及系统日志的问题及解决

在AppArmor中&#xff0c;正常情况下&#xff0c;一旦违反了规则&#xff0c;是能够在内核及系统日志中看到相关信息的。比如&#xff1a;在Ubuntu下正常产生的日志信息&#xff08;示例&#xff09;如下&#xff1a; kernel: [140321.028000] audit(1191433716.584:1578): t…...

本地更改配置ssh密钥和更改github网址

配置 SSH 密钥以进行身份验证&#xff0c;可以遵循以下步骤&#xff1a; 生成SSH密钥 打开 Git Bash 终端 在 Windows 上&#xff0c;可以打开 Git Bash 终端。通常&#xff0c;可以在开始菜单中搜索 Git Bash 并启动它。一旦打开了 Git Bash 终端&#xff0c;将进入一个基于…...

MATLAB函数封装2:QT调用封装函数

在利用MATLAB进行封装函数之后&#xff0c;最主要的目的是对函数进行调用&#xff0c;能够对矩阵运算和其他算法的运行进行快捷处理。 在有了MATLAB函数之后封装成DLL文件之后&#xff0c;在QT中添加动态链接库&#xff0c;就可以实现函数的调用过程&#xff0c;这个过程相对简…...

AJAX和JSON

1、什么是AJAX? AJAX&#xff08;ASynchronous JavaScript And XML&#xff09;异步的JavaScript 和 XML&#xff1b; 由Jesse James Garrett 在他的文章AJAX&#xff1a;A New Approoch to Web Applications中首次提出。 ajax&#xff08;Web数据交互方式&#xff09;_百…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...