VTK读取序列DCM格式医学图像
通常处理医学图像,使用VTK库,VTK库在官网下载,并经过Cmake,编译并配置好环境变量后使用,下文提供使用VTK读取三维图像并显示的代码,经过调试可运行。
// RAWREAD.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<vtkRenderWindow.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkDICOMImageReader.h>
#include<vtkMarchingCubes.h>
#include<vtkPolyDataMapper.h>
#include<vtkStripper.h>
#include<vtkActor.h>
#include<vtkProperty.h>
#include<vtkCamera.h>
#include<vtkOutlineFilter.h>
#include<vtkOBJExporter.h>
#include<vtkRenderer.h>
#include<vtkMetaImageReader.h>
#include<vtkInteractorStyleTrackballCamera.h>#include<iostream>
#include<string.h>//需要进行初始化,否则会报错#include <vtkAutoInit.h>
#include<vtkRenderingVolumeOpenGL2ObjectFactory.h>
#include<vtkRenderingOpenGL2ObjectFactory.h>#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)int main(void)
{vtkObjectFactory::RegisterFactory(vtkRenderingOpenGL2ObjectFactory::New());vtkObjectFactory::RegisterFactory(vtkRenderingVolumeOpenGL2ObjectFactory::New());vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();//WINDOW;renWin->AddRenderer(ren);vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();//wininteratcor;iren->SetRenderWindow(renWin);vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();reader->SetDirectoryName("D:/CT_Brain");reader->SetDataByteOrderToLittleEndian();reader->Update();cout << "读取数据完毕" << endl;cout << "The width is" << reader->GetWidth() << endl;cout << "The height is" << reader->GetHeight() << endl;cout << "The depth is" << reader->GetPixelSpacing() << endl;cout << "The Output port is" << reader->GetOutputPort() << endl;vtkSmartPointer<vtkMarchingCubes> marchingcube = vtkSmartPointer<vtkMarchingCubes>::New();marchingcube->SetInputConnection(reader->GetOutputPort());//获得读取的数据的点集;marchingcube->SetValue(0, 200);//Setting the threshold;marchingcube->ComputeNormalsOn();//计算表面法向量;vtkSmartPointer<vtkStripper> Stripper = vtkSmartPointer<vtkStripper>::New();Stripper->SetInputConnection(marchingcube->GetOutputPort());//获取三角片vtkSmartPointer<vtkPolyDataMapper> Mapper = vtkSmartPointer<vtkPolyDataMapper>::New();//将三角片映射为几何数据;Mapper->SetInputConnection(Stripper->GetOutputPort());Mapper->ScalarVisibilityOff();//vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();//Created a actor;actor->SetMapper(Mapper);//获得皮肤几何数据actor->GetProperty()->SetDiffuseColor(1, .49, .25);//设置皮肤颜色;actor->GetProperty()->SetSpecular(0.3);//反射率;actor->GetProperty()->SetOpacity(1.0);//透明度;actor->GetProperty()->SetSpecularPower(20);//反射光强度;actor->GetProperty()->SetColor(1, 0, 0);//设置角的颜色;actor->GetProperty()->SetRepresentationToWireframe();//线框;//vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();//Setting the Camera;//camera->SetViewUp(0, 0, -1);//设置相机向上方向;//camera->SetPosition(0, 1, 0);//位置:世界坐标系,相机位置;//camera->SetFocalPoint(0, 0, 0);//焦点,世界坐标系,控制相机方向;//camera->ComputeViewPlaneNormal();//重置视平面方向,基于当前的位置和焦点;vtkSmartPointer<vtkOutlineFilter> outfilterline = vtkSmartPointer<vtkOutlineFilter>::New();outfilterline->SetInputConnection(reader->GetOutputPort());vtkSmartPointer<vtkPolyDataMapper> outmapper = vtkSmartPointer<vtkPolyDataMapper>::New();outmapper->SetInputConnection(outfilterline->GetOutputPort());vtkSmartPointer<vtkActor> OutlineActor = vtkSmartPointer<vtkActor>::New();OutlineActor->SetMapper(outmapper);OutlineActor->GetProperty()->SetColor(0, 0, 0);//线框颜色ren->AddActor(actor);ren->AddActor(OutlineActor);//ren->SetActiveCamera(camera);//设置渲染器的相机;ren->ResetCamera();ren->ResetCameraClippingRange();//camera->Dolly(1.5);//使用Dolly()方法延伸着视平面法向移动相机;ren->SetBackground(1, 1, 1);//设置背景颜色;renWin->SetSize(1000, 600);vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();iren->SetInteractorStyle(style);renWin->Render();iren->Initialize();iren->Start();vtkSmartPointer<vtkOBJExporter> porter = vtkSmartPointer<vtkOBJExporter>::New();porter->SetFilePrefix("D:/polywrite.obj");//重建图像输出porter->SetInput(renWin);porter->Write();return EXIT_SUCCESS;}
运行结果:
序列医学图像:
VTK读取序列DCM格式医学图像相关推荐
- 关于医疗影像的mhd和dcm格式图像的读取和坐标转换
本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...
- 3D医学图像CT dcm格式转换为png
医学图像 CT dcm格式转换为png 在normalize_hu()中修改像素值,需要具体数据对象具体分析 只需要在main函数中更改dcm文件路径 """ 读取dic ...
- mhd格式三维图像显示_关于医疗影像的mhd和dcm格式图像的读取和坐标转换
本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...
- (01)VTK读取OBJ格式模型
前言 使用vtk可以读取的模型格式非常有限,在此适应vtk加载.stl格式的工业数据(使用SolidWorks输出的或者CAD输出的,后来为了减少模型容量,用上SolidWorks将stl格式转换成了 ...
- .dcm格式文件软件读取及python处理
要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件.若要查看dcm格式文件,可下Echo viewer ...
- pydicom读取头文件_.dcm格式文件软件读取及python处理详解
要处理一些.dcm格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件. 若要查看dcm格式文件,可下echo viewe ...
- Pydicom读取dcm格式视频
Pydicom读取dcm格式视频,格式转换 写本文的初衷是不想用dicom的付费软件格式转换,此处特指RadiAnt dicom viewer,找到的免费软件又没有这功能. dicom文件的相关处理是 ...
- 医学图像将dcm格式转化的nii格式如何处理
1.数据格式 在MRI数据不同序列下存放着dcm格式的数据,以及单个nii格式的mask文件,所以需要将data和label分离. 2.数据处理 使用 os库进行文件处理,用shutil库进行文件迁移 ...
- [10]simpleITK读取dcm格式维度变化
simpleitk在读取dcm格式时存储是xyz形式的,转换为数组后则为zyx. Simpleitk中图像形式: 使用GetSize()的输出为:(Width, Height, Depth),也即原始 ...
最新文章
- 专注力 化繁为简的惊人力量
- app测试之耗电量测试
- tablewidget 行数自适应_控制|基于自适应遗传算法的增程式电动汽车能量管理策略优化...
- python super用法
- matlab指定间隔符,在matlab中为.dat文件指定小数分隔符[复制]
- python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?
- chattr 改变文件的扩展属性
- TensorFlow 图片预处理
- 虚拟环境安装python3
- microsoft store 安装包_LOL英雄联盟手游官方安装包
- keeplive使用
- Python快速实现一个域名、IP信息聚合网站
- 最全整理反面角色谁更适合饰演老大角色,你认识多少?(已收藏)
- 微信公众号--生成带参数的二维码 {“errcode“:48001,“errmsg“:“api unauthorized rid: 60520af9-71ff2283-63d36e0d“}
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
- 【Android驱动】高通msm8953背光流程
- qpython oh下载_QPython OH
- 网页多次刷新出不来怎么办
- 华为交换机eth口作用_华为的交换机有什么用
- SVN教程 服务端/客户端
热门文章
- python入门教材带视频_Python全套,从入门到进阶。视频,电子书
- 虚拟化技术概念:什么是虚拟化?虚拟化和云计算的关系详解
- 【计算机网络】 网关:即“默认网关”的作用, 以及 默认路由的作用(只有路由器才有默认路由)
- bootstrapr表格父子框_JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】...
- ##实验 1-3 GVRP 配置
- 程序员接私活的6个网站,你有技术就有钱!
- 计算机实训报告心得怎么写,计算机实训报告心得体会范文_计算机实训总结怎么写...
- 积木式编程——自制app点灯
- 隧道测量快速坐标反程序48004850计算器
- 《超级演说家》刘媛媛:寒门贵子