news 2026/4/23 12:54:34

ClampGlyphSizes 3DImageData的梯度计算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ClampGlyphSizes 3DImageData的梯度计算

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①图像or体数据的梯度计算


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkImagingCore import vtkRTAnalyticSource from vtkmodules.vtkImagingGeneral import vtkImageGradient from vtkmodules.vtkFiltersSources import vtkConeSource from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera from vtkmodules.vtkFiltersCore import ( vtkElevationFilter, vtkGlyph3D ) from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() """ vtkRTAnalyticSource 用于生成一个三维标量场.方便做体绘制、等值面、流线等演示 """ rt = vtkRTAnalyticSource() rt.SetWholeExtent(-2, 2, -2, 2, 0, 0) """ vtkImageGradient 作用是计算图像或体数据的梯度(gradient) 简单来说,它输入一张图像或一个体数据,输出在每个点上该位置的“变化率”——也就是梯度向量,3D数据包含三个方向,2D数据包含两个方向 """ grad = vtkImageGradient() grad.SetDimensionality(3) grad.SetInputConnection(rt.GetOutputPort()) sph = vtkConeSource() sph.SetRadius(0.1) sph.SetHeight(0.5) # 在这里的作用就是将空间位置信息转换为一个可用于视觉缩放的标量属性 elev = vtkElevationFilter() elev.SetLowPoint(-2, 0, 0) elev.SetHighPoint(2, 0, 0) """ 在 VTK 的数据处理流程中,过滤器通常会将其输入数据中所有的属性数组(例如标量、矢量、法线等)传递到其输出中,同时添加或修改它自己生成的新属性 所以elev的输出数据对象中包含三个主要属性数组,RTData(标量),RTDataGradient (矢量) ,Elevation (标量) 。 """ elev.SetInputConnection(grad.GetOutputPort()) glyph = vtkGlyph3D() glyph.SetInputConnection(elev.GetOutputPort()) glyph.SetSourceConnection(sph.GetOutputPort()) glyph.ScalingOn() # 启用缩放 glyph.SetScaleModeToScaleByScalar() # 指定符号的尺寸应该由标量属性来控制,在这里是elevation glyph.SetVectorModeToUseVector() # 应该使用矢量属性来控制符号的方向,在这里是梯度 glyph.OrientOn() # 启用定向,允许符号(锥体)根据数据属性进行旋转 glyph.SetRange(-0.5, 1) glyph.ClampingOn() # 开启了特殊的缩放范围限制。这意味着任何超出 SetRange 所定义范围的输入标量值,在计算缩放因子时都将被限制在边界值上。 glyph.SetScaleFactor(1) # 这是一个乘法因子。在标量值被钳制和映射到 [0, 1]范围后,最终的缩放值将乘以这个系数1。它用于统一调整所有符号的整体视觉大小 """ SetInputArrayToProcess的格式是(idx, port, connection, fieldAssociation, fieldAttributeType) idx: 这个参数告诉 vtkGlyph3D 你想用这个数组做什么,对于 vtkGlyph3D,这个参数是必需的,用于识别它将把哪个数组分配给哪个内部功能槽(如缩放、定向、着色) """ glyph.SetInputArrayToProcess(0, 0, 0, 0, 'Elevation') # 缩放 glyph.SetInputArrayToProcess(1, 0, 0, 0, 'RTDataGradient') # 定向 glyph.SetInputArrayToProcess(3, 0, 0, 0, 'RTData') # 颜色或者张量 coloring_by = 'RTData' mapper = vtkPolyDataMapper() mapper.SetInputConnection(glyph.GetOutputPort()) mapper.SetScalarModeToUsePointFieldData() mapper.SetColorModeToMapScalars() mapper.ScalarVisibilityOn() mapper.SetScalarRange(glyph.GetOutputDataObject(0).GetPointData().GetArray(coloring_by).GetRange()) mapper.SelectColorArray(coloring_by) actor = vtkActor() actor.SetMapper(mapper) ren = vtkRenderer() ren.AddActor(actor) ren.SetBackground(colors.GetColor3d('MidnightBlue')) renWin = vtkRenderWindow() renWin.AddRenderer(ren) renWin.SetWindowName('ClampGlyphSizes') iren = vtkRenderWindowInteractor() istyle = vtkInteractorStyleTrackballCamera() iren.SetInteractorStyle(istyle) iren.SetRenderWindow(renWin) ren.ResetCamera() renWin.Render() iren.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:52:51

CollisionDetection 碰撞检测

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkCollisionDetectionFilter检测三维物体…

作者头像 李华
网站建设 2026/4/23 6:52:51

PDF补丁丁跨平台终极指南:Windows与Linux完整使用教程

PDF补丁丁跨平台终极指南:Windows与Linux完整使用教程 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gi…

作者头像 李华
网站建设 2026/4/23 7:00:31

Roblox帧率解锁终极指南:一键配置完整教程

Roblox帧率解锁终极指南:一键配置完整教程 【免费下载链接】rbxfpsunlocker FPS Unlocker for Roblox 项目地址: https://gitcode.com/gh_mirrors/rb/rbxfpsunlocker 想要在Roblox游戏中获得更加流畅的视觉体验?本教程将详细介绍如何使用Roblox F…

作者头像 李华
网站建设 2026/4/23 8:17:51

AhabAssistantLimbusCompany:智能算法驱动的终极自动化配置指南

AhabAssistantLimbusCompany:智能算法驱动的终极自动化配置指南 【免费下载链接】AhabAssistantLimbusCompany AALC,大概能正常使用的PC端Limbus Company小助手 项目地址: https://gitcode.com/gh_mirrors/ah/AhabAssistantLimbusCompany AhabAss…

作者头像 李华
网站建设 2026/4/23 8:15:37

openstack计算节点nova-compute服务启动异常处理

#你处理过openstack中计算节点nova-compute服务假死的问题吗,正常状态下,突发指定到该节点的云主机创建失败,本篇介绍两个案例。# 在openstack云计算平台,nova计算节点经常出现nova-compute服务假死的状态,重启也起不…

作者头像 李华
网站建设 2026/4/23 11:20:49

PIAS1如何通过SUMO化修饰调控细胞迁移过程?

一、SUMO化修饰有何生物学功能?SUMO化修饰是一种动态可逆的蛋白质翻译后修饰过程,其机制虽与泛素化相似,但生物学功能存在显著差异。不同于泛素化主要介导蛋白质降解,SUMO化修饰参与调控蛋白质的亚细胞定位、蛋白质相互作用及功能…

作者头像 李华