vtkPolyData 如何转换 vtkImageData ?
时间:2020-04-13
本文章向大家介绍vtkPolyData 如何转换 vtkImageData ?,主要包括vtkPolyData 如何转换 vtkImageData ?使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
vtkSmartPointer<vtkImageData> polyDataToImageData(vtkSmartPointer<vtkPolyData> polydata)
{
vtkSmartPointer<vtkImageData> imageData = vtkSmartPointer<vtkImageData>::New();
double bounds[6];
polydata->GetBounds(bounds);
double spacing[3];// desired volume spacing
spacing[0] = 0.3;
spacing[1] = 0.3;
spacing[2] = 0.3;
imageData->SetSpacing(spacing);
//compute dimensions
int dim[3];
for(int i = 0;i < 3;++i){
dim[i] = static_cast<int>(ceil((bounds[2*i+1]-bounds[2*i])/spacingVal));
}
imageData->SetDimensions(dim);
imageData->SetExtent(0,dim[0]-1,0,dim[1]-1,0,dim[2]-1);
double origin[3];
origin[0] = bounds[0] + spacing[0] / 2;
origin[1] = bounds[2] + spacing[1] / 2;
origin[2] = bounds[4] + spacing[2] / 2;
imageData->SetOrigin(origin);
imageData->AllocateScalars(VTK_UNSIGNED_CHAR,1);
//fill the image with foreground voxels:
unsigned char inval = 255;
unsigned char outval = 0;
vtkIdType count = imageData->GetNumberOfPoints();
for(vtkIdType i = 0;i < count;++i){
imageData->GetPointData()->GetScalars()->SetTuple1(i,inval);
}
//polygonal data --> image stencil:
vtkSmartPointer<vtkPolyDataToImageStencil> pdtoImageStencil = vtkSmartPointer<vtkPolyDataToImageStencil>::New();
pdtoImageStencil->SetInputData(polydata);
pdtoImageStencil->SetOutputOrigin(origin);
pdtoImageStencil->SetOutputSpacing(spacingVal,spacingVal,spacingVal);
pdtoImageStencil->SetOutputWholeExtent(imageData->GetExtent());
pdtoImageStencil->Update();
//cut the corresponding white image and set the background:
vtkSmartPointer<vtkImageStencil> imageStencil = vtkSmartPointer<vtkImageStencil>::New();
imageStencil->SetInputData(imageData);
imageStencil->SetStencilConnection(pdtoImageStencil->GetOutputPort());
imageStencil->ReverseStencilOff();
imageStencil->SetBackgroundValue(outval);
imageStencil->Update();
imageData->DeepCopy(imageStencil->GetOutput());
return imageData;
}
原文地址:https://www.cnblogs.com/cheungxiongwei/p/12694284.html
- SQL SERVER修改函数名引起的问题
- SQL Server安全(1/11):SQL Server安全概述
- SQL Server安全(2/11):身份验证(Authentication)
- SQL Server安全(3/11):主体和安全对象(Principals and Securables)
- 在SQL Server里如何进行页级别的恢复
- 你可能不知道的字符比较中的“秘密”
- c++实现简单计算器
- re模块(正则表达式)
- Python学习——collections系列
- 为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01
- linux 普通操作,查看资源使用情况
- Python 函数使用记录,join函数和os.path.join用法
- 01.SQLServer性能优化之----强大的文件组----分盘存储
- stackGan实验
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- meterpreter shell | 加固shell
- R语言绘图:复杂散点图绘制
- windows下部署sentinel模式的Redis主从集群
- tmux | 加固shell
- Windows下离线部署Redis主从集群
- SSH 后门 | Nmap 脚本
- 【Tomcat源码解析】第二章:不用死记硬背记住Tomcat整体架构
- 计划任务后门 | Linux 后门系列
- alias后门 | Linux 后门系列
- vim 后门 | Linux 后门系列
- 个站建设基础教程
- 【Tomcat源码解析】第一章:如何搭建源码阅读环境
- LD_PRELOAD 后门 | Linux 后门系列
- 如何利用k8s拉取私有仓库镜像
- rsyslog queue队列权威指南