VTK知识学习(25)- 图像显示2

ops/2024/12/18 13:46:18/

1、vtkImageActor

1)概述

        一个三维图像渲染 Actor,通过纹理映射将图像映射到一个多边形上进行显示。使用 vtkImageActor 较 vtklmageViewer2要复杂一些,需要建立完整的渲染管线:包括 vtklmageActor、vtkRender、vtkRenderWindow 和 vtkRenderWindowInteractor。另外,作为二维图像浏览器,不需要在三维空间中进行旋转操作,因此还需要为vtkRenderWindowInteractor定义一个 vtkInteractorStylelmage 对象。

2)使用
private void TestImageActor(){vtkBMPReader reader = vtkBMPReader.New();reader.SetFileName("F:\\code\\VTK\\TestActiViz\\bin\\Debug\\data\\lena.bmp");reader.Update();vtkImageActor actor = vtkImageActor.New();actor.SetInputData(reader.GetOutput());vtkRenderer renderer = vtkRenderer.New();renderer.AddActor(actor);renderer.SetBackground(0.4, 0.5, 0.6);vtkRenderWindow renderWindow = renderWindowControl.RenderWindow;renderWindow.AddRenderer(renderer);renderWindow.Render();}

2、图像融合

1)概述        

        在实际应用中经常需要在窗口中同时显示多幅图像,这就会用到图像融合技术。图像融合是利用图像的不透明度来合成图像。在 VTK 中,用类vtkImageBlend 实现图像的融合,

2)vtkImageBlend

        vtkImageBlend 可以接收多个图像输入,其输出为融合图像。输出图像的像素间隔、原点、范围以及像素组分个数与第一个图像一致。该类提供了两种融合式。

        第一种是标准模式,也是默认的融合方式。

        第二种是混合模式(Compound)。该模式下输出结果利用不透明度的和做归一化。当像素的不透明度 alpha*opacity 小于或等于阈值 threshold 时,该像素会被忽略。

private void TestImageBlend(){vtkJPEGReader reader = vtkJPEGReader.New();reader.SetFileName("F:\\code\\VTK\\TestActiViz\\bin\\Debug\\data\\lena-gray.jpg");reader.Update();vtkImageCanvasSource2D imageSource = vtkImageCanvasSource2D.New();imageSource.SetNumberOfScalarComponents(1);imageSource.SetScalarTypeToUnsignedChar();imageSource.SetExtent(0, 600, 0, 600, 0, 0);imageSource.SetDrawColor(0.0);imageSource.FillBox(0, 600, 0, 600);imageSource.SetDrawColor(255.0);imageSource.FillBox(0, 600, 0, 600);imageSource.Update();vtkImageBlend imageBlend = vtkImageBlend.New();imageBlend.AddInputData( reader.GetOutput());imageBlend.AddInputData(imageSource.GetOutput());imageBlend.SetOpacity(0, 0.4);  //设置对应图像的不透明度imageBlend.SetOpacity(1, 0.6);imageBlend.Update();vtkImageActor originalActor = vtkImageActor.New();originalActor.SetInputData(reader.GetOutput());vtkImageActor imageActor2 = vtkImageActor.New();imageActor2.SetInputData(imageSource.GetOutput());vtkImageActor imageActor3 = vtkImageActor.New();imageActor3.SetInputData(imageBlend.GetOutput());vtkRenderer renderer1 = vtkRenderer.New();renderer1.AddActor(originalActor);renderer1.SetBackground(0.4, 0.5, 0.6);renderer1.SetViewport(0.0, 0.0, 0.33, 1.0);vtkRenderer renderer2 = vtkRenderer.New();renderer2.AddActor(imageActor2);renderer2.SetBackground(0.4, 0.5, 0.6);renderer2.SetViewport(0.33, 0.0, 0.66, 1.0);vtkRenderer renderer3 = vtkRenderer.New();renderer3.AddActor(imageActor3);renderer3.SetBackground(0.4, 0.5, 0.6);renderer3.SetViewport(0.66, 0.0, 1.0, 1.0);vtkRenderWindow renderWindow = renderWindowControl.RenderWindow;renderWindow.AddRenderer(renderer1);renderWindow.AddRenderer(renderer2);renderWindow.AddRenderer(renderer3);renderWindow.Render();}


http://www.ppmy.cn/ops/142921.html

相关文章

如何利用Python爬虫京东获得JD商品详情

在数字化时代,数据如同黄金般珍贵,而电商数据,尤其是像京东这样的大型电商平台上的信息,更是商家、市场分析师和数据科学家眼中的瑰宝。本文将带您走进Python爬虫的世界,探索如何高效、合法地采集京东商品数据&#xf…

《外国服务区加油站模型:功能与美观的完美结合 caotu66.com》

这个外国服务区加油站模型在设计上独具特色,兼具实用性和美观性。 从整体布局来看,加油站位于服务区的显眼位置。加油站的顶棚采用了现代风格的设计,顶棚的颜色主要是黄色和蓝色,色彩鲜明且具有辨识度。顶棚下方有多个加油柱&…

Sui 区块链 Move 语言基础:深入解析数据类型与模块概念

目录 前言Move 共学活动:快速上手 Move 开发一、整数类型1. Move 语言特性:强类型与类型安全2. 运算符3. 处理负数与小数 二、布尔类型三、地址类型1. 十六进制地址2. 命名地址 四、包和模块的概念1. 创建一个包2. 包名与配置文件一致性3. 模块名与文件名…

深度学习day4|用pytorch实现猴痘病识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺要求: 训练过程中保存效果最好的模型参数。 加载最佳模型参数识别本地的一张图片。 调整网络结构使测试集accuracy到达88%&#x…

正则表达式的元字符(有功能的符号)

通配符 : . 叫通配符、万能通配符,匹配1个除了换行符\n以外的任意原子符号 字符集:[] : 只能匹配一个 例如 [a-z]匹配a到z中任何一个 # 通配符 . data "a 12 32 你好 221 a fbd facdsd c231 dda 测试 f d" # 匹配以f开头&…

Linux 打印队列功能解析

在 Linux 系统中,打印队列是一个管理和处理打印任务的机制。通过打印队列,用户可以将多个打印任务排队等待打印机处理,而打印机按顺序处理这些任务。Linux 使用 CUPS(Common UNIX Printing System)或 LPD(L…

vite配置tailwindcss

这里以vue3为例,其他的框架只要是vite配置的也可参考这个 项目创建 Vite 需要 Node.js 版本 18 或 20 npm create vitelatest my-vue-app创建完执行命令运行项目 cd my-vue-appnpm installnpm run dev项目正常运行即可 安装和初始化tailwindcss相关插件 安装相…

Java面试之单例模式浅谈

单例模式是Java面试中常会问到的一个问题,众所周知,单例模式分为两大部分:饿汉模式和懒汉模式。但是,如果当面试官问道关于单例模式的话,如果你只答出这两种模式,且懒汉模式还是最基础最简陋版的话&#xf…