news 2026/2/18 22:35:04

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/2/18 0:16:33

Cowabunga Lite完全手册:iOS 15+非越狱定制终极指南

Cowabunga Lite完全手册:iOS 15非越狱定制终极指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite Cowabunga Lite是一款专为iOS 15设备设计的非越狱定制工具箱,无需越…

作者头像 李华
网站建设 2026/2/15 19:06:46

为什么顶尖团队都在抢搭Open-AutoGLM?核心优势与实操细节首次披露

第一章:为什么顶尖团队都在抢搭Open-AutoGLM在人工智能快速演进的当下,大语言模型(LLM)自动化已成为提升研发效率的核心路径。Open-AutoGLM 作为首个开源的自动代码生成与模型调优协同框架,正迅速成为头部科技公司和AI…

作者头像 李华
网站建设 2026/2/18 6:11:57

网盘直链下载助手:技术架构深度解析与多平台部署指南

网盘直链下载助手是一款基于AGPL-3.0开源协议的浏览器扩展脚本,通过PCS API技术实现百度网盘、阿里云盘、天翼云盘、迅雷云盘、夸克网盘和移动云盘的真实下载地址获取。该工具采用模块化设计,支持Windows、Mac、Linux多平台部署,为技术用户提…

作者头像 李华
网站建设 2026/2/10 14:39:02

酒店管理系统|基于springboot + vue酒店管理系统(源码+数据库+文档)

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

作者头像 李华
网站建设 2026/2/17 23:20:32

深蓝词库转换:实现跨平台输入法词库无缝迁移的终极指南

深蓝词库转换:实现跨平台输入法词库无缝迁移的终极指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 在数字化办公和移动设备普及的今天,深…

作者头像 李华
网站建设 2026/2/8 2:37:31

终极指南:Nintendo Switch NAND管理器完全操作手册

终极指南:Nintendo Switch NAND管理器完全操作手册 【免费下载链接】NxNandManager Nintendo Switch NAND management tool : explore, backup, restore, mount, resize, create emunand, etc. (Windows) 项目地址: https://gitcode.com/gh_mirrors/nx/NxNandMana…

作者头像 李华