通常处理医学图像,使用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格式医学图像相关推荐

  1. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换

    本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...

  2. 3D医学图像CT dcm格式转换为png

    医学图像 CT dcm格式转换为png 在normalize_hu()中修改像素值,需要具体数据对象具体分析 只需要在main函数中更改dcm文件路径 """ 读取dic ...

  3. mhd格式三维图像显示_关于医疗影像的mhd和dcm格式图像的读取和坐标转换

    本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...

  4. (01)VTK读取OBJ格式模型

    前言 使用vtk可以读取的模型格式非常有限,在此适应vtk加载.stl格式的工业数据(使用SolidWorks输出的或者CAD输出的,后来为了减少模型容量,用上SolidWorks将stl格式转换成了 ...

  5. .dcm格式文件软件读取及python处理

    要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件.若要查看dcm格式文件,可下Echo viewer ...

  6. pydicom读取头文件_.dcm格式文件软件读取及python处理详解

    要处理一些.dcm格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件. 若要查看dcm格式文件,可下echo viewe ...

  7. Pydicom读取dcm格式视频

    Pydicom读取dcm格式视频,格式转换 写本文的初衷是不想用dicom的付费软件格式转换,此处特指RadiAnt dicom viewer,找到的免费软件又没有这功能. dicom文件的相关处理是 ...

  8. 医学图像将dcm格式转化的nii格式如何处理

    1.数据格式 在MRI数据不同序列下存放着dcm格式的数据,以及单个nii格式的mask文件,所以需要将data和label分离. 2.数据处理 使用 os库进行文件处理,用shutil库进行文件迁移 ...

  9. [10]simpleITK读取dcm格式维度变化

    simpleitk在读取dcm格式时存储是xyz形式的,转换为数组后则为zyx. Simpleitk中图像形式: 使用GetSize()的输出为:(Width, Height, Depth),也即原始 ...

最新文章

  1. 专注力 化繁为简的惊人力量
  2. app测试之耗电量测试
  3. tablewidget 行数自适应_控制|基于自适应遗传算法的增程式电动汽车能量管理策略优化...
  4. python super用法
  5. matlab指定间隔符,在matlab中为.dat文件指定小数分隔符[复制]
  6. python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?
  7. chattr 改变文件的扩展属性
  8. TensorFlow 图片预处理
  9. 虚拟环境安装python3
  10. microsoft store 安装包_LOL英雄联盟手游官方安装包
  11. keeplive使用
  12. Python快速实现一个域名、IP信息聚合网站
  13. 最全整理反面角色谁更适合饰演老大角色,你认识多少?(已收藏)
  14. 微信公众号--生成带参数的二维码 {“errcode“:48001,“errmsg“:“api unauthorized rid: 60520af9-71ff2283-63d36e0d“}
  15. 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
  16. 【Android驱动】高通msm8953背光流程
  17. qpython oh下载_QPython OH
  18. 网页多次刷新出不来怎么办
  19. 华为交换机eth口作用_华为的交换机有什么用
  20. SVN教程 服务端/客户端

热门文章

  1. python入门教材带视频_Python全套,从入门到进阶。视频,电子书
  2. 虚拟化技术概念:什么是虚拟化?虚拟化和云计算的关系详解
  3. 【计算机网络】 网关:即“默认网关”的作用, 以及 默认路由的作用(只有路由器才有默认路由)
  4. bootstrapr表格父子框_JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】...
  5. ##实验 1-3 GVRP 配置
  6. 程序员接私活的6个网站,你有技术就有钱!
  7. 计算机实训报告心得怎么写,计算机实训报告心得体会范文_计算机实训总结怎么写...
  8. 积木式编程——自制app点灯
  9. 隧道测量快速坐标反程序48004850计算器
  10. 《超级演说家》刘媛媛:寒门贵子