news 2026/9/10 21:23:45

ImageWeightedSum 将两个不同的 2D 图像以指定权重进行线性加权求和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ImageWeightedSum 将两个不同的 2D 图像以指定权重进行线性加权求和

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①2D图像的的边界确定,②图像数据的类型转换,②图像的权重加减


二:代码及注释

from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkImagingSources import vtkImageMandelbrotSource, vtkImageSinusoidSource from vtkmodules.vtkImagingCore import vtkImageCast from vtkmodules.vtkImagingMath import vtkImageWeightedSum from vtkmodules.vtkRenderingCore import vtkImageActor, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer def main(): colors = vtkNamedColors() # 创建第一幅图像 source1 = vtkImageMandelbrotSource() """ SetWholeExtent 用来定义任何图像或 3D 结构化数据集的边界 Xmin=0 在X轴上的起始像素的索引 Xmax=255 在x轴上的结束像素索引 后面的以此类推 """ source1.SetWholeExtent(0, 255, 0, 255, 0, 0) source1.Update() """ vtkImageCast 专门用于将 2D 或 3D 图像数据中每个像素的标量类型(如 int, float, unsigned char)转换为另一种类型 保证了数据的兼容性和精度 如果在整数计算中进行四舍五入或截断,每次乘法和加法都会损失精度,导致混合图像失真或出现明显的“阶梯”伪影 """ source1Double = vtkImageCast() source1Double.SetInputConnection(source1.GetOutputPort()) source1Double.SetOutputScalarTypeToDouble() # 创建第二幅图像 source2 = vtkImageSinusoidSource() source2.SetWholeExtent(0, 255, 0, 255, 0, 0) source2.Update() """ vtkImageWeightedSum 将多个输入图像(至少两个)根据用户指定的权重进行线性组合(加权求和),从而生成一个新的输出图像 """ sumFilter = vtkImageWeightedSum() sumFilter.SetWeight(0, 0.8) # 第0幅图像的权重 sumFilter.SetWeight(1, 0.2) # 第1幅图像的权重 sumFilter.AddInputConnection(source1Double.GetOutputPort()) sumFilter.AddInputConnection(source2.GetOutputPort()) sumFilter.Update() """ 在图像混合(加权求和)之后将数据类型转换为UnsignedChar,意味着每个像素都可以表示0到255之间的256中灰度级别 是为了可视化和渲染的需要 """ source1CastFilter = vtkImageCast() source1CastFilter.SetInputConnection(source1.GetOutputPort()) source1CastFilter.SetOutputScalarTypeToUnsignedChar() source1CastFilter.Update() source2CastFilter = vtkImageCast() source2CastFilter.SetInputConnection(source2.GetOutputPort()) source2CastFilter.SetOutputScalarTypeToUnsignedChar() source2CastFilter.Update() summedCastFilter = vtkImageCast() summedCastFilter.SetInputConnection(sumFilter.GetOutputPort()) summedCastFilter.SetOutputScalarTypeToUnsignedChar() summedCastFilter.Update() source1Actor = vtkImageActor() source1Actor.GetMapper().SetInputConnection(source1CastFilter.GetOutputPort()) source2Actor = vtkImageActor() source2Actor.GetMapper().SetInputConnection(source2CastFilter.GetOutputPort()) summedActor = vtkImageActor() summedActor.GetMapper().SetInputConnection(summedCastFilter.GetOutputPort()) renderWindow = vtkRenderWindow() renderWindow.SetSize(600, 300) # And one interactor interactor = vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # ViewPort=[Xmin, Ymin, Xmax, Ymax] leftViewport = [0.0, 0.0, 0.33, 1.0] centerViewport = [0.33, 0.0, .66, 1.0] rightViewport = [0.66, 0.0, 1.0, 1.0] # Setup renderers leftRenderer = vtkRenderer() renderWindow.AddRenderer(leftRenderer) leftRenderer.SetViewport(leftViewport) leftRenderer.SetBackground(colors.GetColor3d('Peru')) centerRenderer = vtkRenderer() renderWindow.AddRenderer(centerRenderer) centerRenderer.SetViewport(centerViewport) centerRenderer.SetBackground(colors.GetColor3d('DarkTurquoise')) rightRenderer = vtkRenderer() renderWindow.AddRenderer(rightRenderer) rightRenderer.SetViewport(rightViewport) rightRenderer.SetBackground(colors.GetColor3d('SteelBlue')) leftRenderer.AddActor(source1Actor) centerRenderer.AddActor(source2Actor) rightRenderer.AddActor(summedActor) leftRenderer.ResetCamera() centerRenderer.ResetCamera() rightRenderer.ResetCamera() renderWindow.SetWindowName('ImageWeightedSum') renderWindow.Render() interactor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 7:21:46

如何为anything-llm配置自动缩放策略应对流量高峰?

如何为 anything-llm 配置自动缩放策略应对流量高峰? 在企业知识库系统日益智能化的今天,一个看似安静运行的 AI 助手,可能在下一秒就迎来数十名员工同时发起复杂查询。尤其是在会议前后、项目启动或文档集中上传时段,anything-l…

作者头像 李华
网站建设 2026/9/2 5:58:22

Windows 11远程桌面多用户终极配置指南:RDP Wrapper完整解决方案

Windows 11远程桌面多用户终极配置指南:RDP Wrapper完整解决方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows 11只能单用户远程连接而烦恼?RDP Wrapper Library这款开源神…

作者头像 李华
网站建设 2026/9/5 0:25:20

窗口置顶技术:重塑你的多任务工作体验

窗口置顶技术:重塑你的多任务工作体验 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 你是否曾经历过这样的工作场景:正在专注编写代码时,参考…

作者头像 李华
网站建设 2026/9/4 8:49:05

鲜花销售管理|基于springboot + vue鲜花销售管理系统(源码+数据库+文档)

鲜花销售管理 目录 基于springboot vue鲜花销售管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue鲜花销售管理系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/9/2 14:09:41

ComfyUI插件管理大师:从零开始构建高效AI绘画工作流

ComfyUI插件管理大师:从零开始构建高效AI绘画工作流 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 还在为ComfyUI插件安装的繁琐流程而烦恼吗?ComfyUI-Manager正是你需要的终极解决方案&#…

作者头像 李华
网站建设 2026/9/10 7:45:29

League Director:打造专业级英雄联盟回放视频的终极方案

League Director:打造专业级英雄联盟回放视频的终极方案 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector Leagu…

作者头像 李华