news 2026/6/6 7:19:59

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/5/19 18:51:02

纪念币预约自动化工具操作手册

纪念币预约自动化工具操作手册 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为每次纪念币预约失败而苦恼吗?纪念币预约自动化工具为你提供智能化解决方案&#xff…

作者头像 李华
网站建设 2026/5/22 23:19:57

纪念币预约自动化工具:从零开始的高效抢购指南

还在为抢不到心仪的纪念币而烦恼吗?纪念币预约自动化工具正是你需要的智能解决方案!这款工具能够自动识别验证码、快速填写信息、并发预约多个名额,让你彻底告别手忙脚乱的抢购过程。🎯 【免费下载链接】auto_commemorative_coin_…

作者头像 李华
网站建设 2026/5/16 14:20:51

多平台直播录制终极方案:DouyinLiveRecorder深度解析

多平台直播录制终极方案:DouyinLiveRecorder深度解析 【免费下载链接】DouyinLiveRecorder 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveRecorder 在当今直播内容爆炸的时代,如何高效保存有价值的直播内容成为众多用户面临的实际问题…

作者头像 李华
网站建设 2026/5/26 10:10:10

ComfyUI-Manager:AI绘画工作流的终极管理解决方案

ComfyUI-Manager:AI绘画工作流的终极管理解决方案 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 还在为复杂的ComfyUI插件安装流程而头疼吗?ComfyUI-Manager正是你寻找的完美答案!…

作者头像 李华
网站建设 2026/6/1 22:44:04

DownKyi终极指南:快速掌握B站视频下载神器

还在为无法离线观看B站精彩视频而烦恼吗?DownKyi作为专业的B站视频下载工具,能够完美解决你的视频收藏需求。这款开源神器支持从普通画质到8K超高清的全格式下载,让你随时随地享受优质视频内容。 【免费下载链接】downkyi 哔哩下载姬downkyi&…

作者头像 李华
网站建设 2026/5/30 0:36:28

Open UI5 源代码解析之23:whitespaceReplacer.js

whitespaceReplacer.js 详解:在 OpenUI5 项目中面向 HTML 展示的空白符替换工具 版本背景:该工具在 UI5 版本 1.94 引入,位于 src/sap.ui.core/src/sap/base/strings/whitespaceReplacer.js,作为 sap/base/strings 模块族中的一个小而精的字符串处理能力。 概览与设计初衷 …

作者头像 李华