news 2026/10/18 6:24:26

PolyDataToImageDataStencil如何用多边形数据作为“模板”来裁剪或屏蔽图像数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PolyDataToImageDataStencil如何用多边形数据作为“模板”来裁剪或屏蔽图像数据

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①多边形数据裁剪(屏蔽)图像数据


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkIOImage import vtkPNGReader from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkFiltersCore import vtkTriangleFilter from vtkmodules.vtkImagingStencil import vtkPolyDataToImageStencil, vtkImageStencil from vtkmodules.vtkCommonDataModel import vtkPlane from vtkmodules.vtkFiltersCore import vtkCutter, vtkStripper, vtkImageAppend from vtkmodules.vtkInteractionImage import vtkImageViewer from vtkmodules.vtkRenderingCore import vtkRenderWindowInteractor def main(): fn = "Data/fullhead15.png" # 一:用球体集合裁剪图像 reader = vtkPNGReader() reader.SetFileName(fn) """ PNG图像明明是一个二维图像,为什么这里还能设置三个维度的间距? vtkPNGReader是一个二维图像读取器,单独读一个PNG,它会生成一个vtkImageData,Z维度的extent是常数 Extent: (0, width-1, 0, height-1, 0, 0),也就是说它的 Z 范围只有一层(z=0),是 二维的 2D 图像切片 那这里的1.5的含义是指,在单张图片的情况下,z_spacing只是被保留作元数据 """ reader.SetDataSpacing(0.8, 0.8, 1.5) reader.SetDataOrigin(0, 0, 0) # 设置图像原点在坐标系中的位置 sphere = vtkSphereSource() sphere.SetPhiResolution(12) sphere.SetPhiResolution(12) sphere.SetCenter(102, 102, 0) sphere.SetRadius(60) # 将球体sphere转换为三角形 stripper = vtkTriangleFilter() stripper.SetInputConnection(sphere.GetOutputPort()) """ 把球体的多边形网格 转换成一张图像掩膜(stencil mask),即: 球体内部的像素 = 1(保留或删除) 球体外部的像素 = 0(反向操作) """ # 将polydata转换为图像模板,为之后的图像处理做准备 dataToStencil = vtkPolyDataToImageStencil() dataToStencil.SetInputConnection(stripper.GetOutputPort()) dataToStencil.SetOutputOrigin(0, 0, 0) dataToStencil.SetOutputSpacing(0.8, 0.8, 1.4) # 运用球体遮罩裁剪图像 stencil = vtkImageStencil() stencil.SetInputConnection(reader.GetOutputPort()) stencil.SetStencilConnection(dataToStencil.GetOutputPort()) stencil.ReverseStencilOn() # 反向裁剪,表示保留球体外部,挖掉球体内部 stencil.SetBackgroundValue(500) # 被挖掉的区域填充值为500 # 二:用球体和平面切割出的轮廓裁剪图像 reader2 = vtkPNGReader() reader2.SetFileName(fn) reader2.SetDataSpacing(0.8, 0.8, 1.5) reader2.SetDataOrigin(0.0, 0.0, 0.0) plane = vtkPlane() plane.SetOrigin(0, 0, 0) plane.SetNormal(0, 0, 1) cutter = vtkCutter() cutter.SetCutFunction(plane) cutter.SetInputConnection(sphere.GetOutputPort()) stripper2 = vtkStripper() stripper2.SetInputConnection(cutter.GetOutputPort()) dataToStencil2 = vtkPolyDataToImageStencil() dataToStencil2.SetInputConnection(stripper2.GetOutputPort()) dataToStencil2.SetOutputSpacing(0.8, 0.8, 1.5) dataToStencil2.SetOutputOrigin(0.0, 0.0, 0.0) stencil2 = vtkImageStencil() stencil2.SetInputConnection(reader2.GetOutputPort()) stencil2.SetStencilConnection(dataToStencil2.GetOutputPort()) stencil2.SetBackgroundValue(500) imageAppend = vtkImageAppend() imageAppend.SetInputConnection(stencil.GetOutputPort()) imageAppend.AddInputConnection(stencil2.GetOutputPort()) interactor = vtkRenderWindowInteractor() viewer = vtkImageViewer() viewer.SetInputConnection(imageAppend.GetOutputPort()) viewer.SetupInteractor(interactor) viewer.SetZSlice(0) # 控制显示Z轴的第几层 """ 参数 视觉效果 增大 ColorWindow 提高对比范围,整体更“平” 减小 ColorWindow 缩小对比范围,图像更“锐” 增大 ColorLevel 图像整体变亮 减小 ColorLevel 图像整体变暗 """ viewer.SetColorWindow(2000) # 控制对比度范围 viewer.SetColorLevel(1000) viewer.GetRenderWindow().SetWindowName('PolyDataToImageDataStencil') viewer.Render() interactor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 16:49:23

Linly-Talker支持模型性能 profiling,精准定位瓶颈

Linly-Talker 支持模型性能 profiling,精准定位瓶颈 在虚拟主播、智能客服和数字员工逐渐走入大众视野的今天,用户对交互体验的要求早已不再局限于“能说话”——他们期待的是自然、实时、有情感的对话。然而,构建一个真正流畅可用的数字人系…

作者头像 李华
网站建设 2026/10/17 5:14:46

Linly-Talker如何处理中英文混读?语音识别适配策略

Linly-Talker 如何处理中英文混读?语音识别适配策略 在当今数字人系统广泛应用于虚拟主播、智能客服和企业级对话代理的背景下,用户对交互自然性的要求已经远超“能听懂”这一基础标准。真实场景中的语言表达往往是复杂且不规则的——尤其是在科技、金融…

作者头像 李华
网站建设 2026/10/17 11:49:00

LLM 的思考方式

原文:towardsdatascience.com/how-llms-think-d8754a79017d 你是否曾经想过 AI 模型是如何“思考”的?想象一下窥视机器的内心,观察齿轮的转动。这正是 Anthropic 的一项开创性论文所探讨的内容。标题为“扩展单义性:从 Claude 3 …

作者头像 李华
网站建设 2026/10/18 0:06:20

万字长文!关于AI绘图,一篇超详细的总结发布

Datawhale干货 教程作者:Mark,华南理工大学 继此前的《再也不担心论文!Nano-Banana Pro 论文绘图最全教程发布》获得 10W 阅读后,我们精心打磨了一套更系统的 AI 绘图总结。 这不是一篇快餐式的操作手册,而是一张带你…

作者头像 李华
网站建设 2026/10/17 7:47:44

数字人会议主持:Linly-Talker在远程会议中的创新应用

数字人会议主持:Linly-Talker在远程会议中的创新应用 在一场跨国企业晨会上,主持人准时出现在屏幕中央——西装笔挺、语气沉稳,逐项推进议程、回应提问、引导讨论。但仔细观察会发现,这位“主持人”从未眨过眼过度,语调…

作者头像 李华