当前位置: 首页 > news >正文

Learning vtkjs之ImageCropFilter

过滤器 图片数据体积裁剪

介绍

vtkImageCropFilter可以裁剪vtkImageData。这只适用于IJK对齐的平面。
请注意,由于CPU限制的裁剪,这在大型数据集上会很慢。

效果

在这里插入图片描述

核心代码

需要实现这个代码主要逻辑

1、设定的crop的包围盒

其实主要是IMax IMin JMin JMax KMin KMax的数值

	const { cropFilter, renderWindow } = context.current;let newObj = {...state,...obj,};cropFilter.setCroppingPlanes(...Object.values(newObj));setState(newObj);renderWindow.render();

2、主流程

 	const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerRef.current,});const renderer = fullScreenRenderer.getRenderer();const renderWindow = fullScreenRenderer.getRenderWindow();// create filterconst cropFilter = vtkImageCropFilter.newInstance();const reader = vtkHttpDataSetReader.newInstance({ fetchGzip: true });const actor = vtkVolume.newInstance();const mapper = vtkVolumeMapper.newInstance();mapper.setSampleDistance(1.1);actor.setMapper(mapper);// create color and opacity transfer functionsconst ctfun = vtkColorTransferFunction.newInstance();ctfun.addRGBPoint(0, 85 / 255.0, 0, 0);ctfun.addRGBPoint(95, 1.0, 1.0, 1.0);ctfun.addRGBPoint(225, 0.66, 0.66, 0.5);ctfun.addRGBPoint(255, 0.3, 1.0, 0.5);const ofun = vtkPiecewiseFunction.newInstance();ofun.addPoint(0.0, 0.0);ofun.addPoint(255.0, 1.0);actor.getProperty().setRGBTransferFunction(0, ctfun);actor.getProperty().setScalarOpacity(0, ofun);actor.getProperty().setScalarOpacityUnitDistance(0, 3.0);actor.getProperty().setInterpolationTypeToLinear();actor.getProperty().setUseGradientOpacity(0, true);actor.getProperty().setGradientOpacityMinimumValue(0, 2);actor.getProperty().setGradientOpacityMinimumOpacity(0, 0.0);actor.getProperty().setGradientOpacityMaximumValue(0, 20);actor.getProperty().setGradientOpacityMaximumOpacity(0, 1.0);actor.getProperty().setShade(true);actor.getProperty().setAmbient(0.2);actor.getProperty().setDiffuse(0.7);actor.getProperty().setSpecular(0.3);actor.getProperty().setSpecularPower(8.0);cropFilter.setInputConnection(reader.getOutputPort());mapper.setInputConnection(cropFilter.getOutputPort());context.current = {reader,actor,cropFilter,renderer,renderWindow,};GetModel();

全部代码都放到github上了
新坑_Learning vtkjs_git地址
关注我,我持续更新vtkjs的example学习案例

也欢迎各位给我提意见,技术交流~

大鸿

WeChat : HugeYen
WeChat Public Account : BIM树洞

做一个静谧的树洞君

用建筑的语言描述IT事物;

用IT的思维解决建筑问题;

共建BIM桥梁,聚合团队。

本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!

相关文章:

  • C++负载均衡远程调用学习之自定义内存池管理
  • 突破SQL注入字符转义的实战指南:绕过技巧与防御策略
  • RSYSLOG收集深信服log
  • 20250430在ubuntu14.04.6系统上查看系统实时网速
  • 耘想WinNAS:企业级NAS解决方案的终极选择
  • JavaScript 代码搜索框
  • 自动驾驶-一位从业两年的独特视角
  • LeetCode —— 572. 另一棵树的子树
  • VS Code 插件Git History Diff 使用
  • 数学建模论文手的学习日常01
  • 数据接收全流程图(物理网卡 → 应用层)
  • 90.如何将Maui应用安装到手机(最简) C#例子 Maui例子
  • 游戏引擎学习第249天:清理调试宏
  • CMake解析参数用法示例
  • 猿人学web端爬虫攻防大赛赛题第13题——入门级cookie
  • wordpress网站速度慢如何优化
  • 基于Docker的内网穿透实战:frp 0.68 + Nginx最佳实践
  • 【大模型面试每日一题】Day 4:低资源语言建模方案
  • spring boot中@Validated
  • TIME_WAIT状态+UDP概念及模拟实现服务器和客户端收发数据
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • 美商界报告:全美超86万岗位依赖对华出口,关税将重创美国出口商
  • 发挥全国劳模示范引领作用,加速汽车产业电智化转型
  • 专访|首夺天元头衔创生涯历史,王星昊打算一步一步慢慢来
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 王星昊再胜连笑,夺得中国围棋天元赛冠军