VTK简介:

VTK是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的。

因为使用C#语言开发,而VTK是C++的,所以推荐使用VTK的.Net开发库:ActiViz。

本系列文章主要以技术和代码讲解为主,ActiViz的安装和环境配置可以参考:

ActiViz(VTK的C#库)学习使用心得之二:Activiz.NET的下载和安装

官网资料:ActiViz - 3D Visualization Library for .Net C# and Unity | Kitware

三维重建技术介绍:

对于一些复杂的图像,医生希望用三维重建来观察病灶点来辅助诊断,一般在医学领域内的三维重建类型分为以下六种:

多层面重建(MPR)

最大密度投影(MIP)

表面阴影遮盖(SSD)

容积漫游技术(VR)

曲面重建(CPR)

虚拟内镜技术(VE)

本系列教程最终效果(实际效果受显卡能力决定):

当我们下载并安装好ActiViz之后,准备好要三维重建的Dcm文件,在VS2017中新建一个桌面应用程序项目:

引用相关的动态库:

在Form1的Load事件中:

        private void Form1_Load(object sender, EventArgs e){//创建数据读取对象vtkDICOMImageReader reader = new vtkDICOMImageReader();//小端字节reader.SetDataByteOrderToLittleEndian();//设置切片数据路径reader.SetDirectoryName(@"C:\Users\Administrator\Desktop\vtk\801");vtkImageShrink3D shrink = new vtkImageShrink3D();shrink.SetShrinkFactors(4, 4, 1);shrink.AveragingOn();shrink.SetInput((vtkDataObject)(reader.GetOutput()));//提取等值面vtkMarchingCubes skinExtractor = new vtkMarchingCubes();//建立算法对象,从CT切片数据中提取出皮肤skinExtractor.SetValue(0, 50); //提取出CT值为50的组织skinExtractor.SetInputConnection(shrink.GetOutputPort());vtkDecimatePro deci = new vtkDecimatePro(); deci.SetTargetReduction(0.3);deci.SetInputConnection(skinExtractor.GetOutputPort());vtkSmoothPolyDataFilter smooth = new vtkSmoothPolyDataFilter();  //光滑图像smooth.SetInputConnection(deci.GetOutputPort());smooth.SetNumberOfIterations(200);vtkPolyDataNormals skinNormals = new vtkPolyDataNormals();  //法线skinNormals.SetInputConnection(smooth.GetOutputPort());skinNormals.SetFeatureAngle(60.0);vtkStripper stripper = new vtkStripper();  stripper.SetInputConnection(skinNormals.GetOutputPort());vtkDataSetMapper skinMapper = new vtkDataSetMapper(); skinMapper.SetInput(stripper.GetOutput());skinMapper.ScalarVisibilityOff();//设置相机vtkCamera aCamera = new vtkCamera();aCamera.SetViewUp(0, 0, -1);aCamera.SetPosition(0, 1, 0);aCamera.SetFocalPoint(0, 0, 0);aCamera.ComputeViewPlaneNormal();//设置ActorvtkActor coneActor = new vtkActor();coneActor.SetMapper(skinMapper);coneActor.GetProperty().SetAmbient(0.5);coneActor.GetProperty().SetDiffuse(1);coneActor.GetProperty().SetSpecular(0.6);//显示类vtkRenderer renderer = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();renderer.AddActor(coneActor);//添加coneActor对象//renderer.AddActor2D(new vtkProp());//添加textActor对象renderer.SetBackground(0, 0, 0);renderer.SetActiveCamera(aCamera);//添加相机renderer.ResetCamera();vtkRenderWindow renWin = renderWindowControl1.RenderWindow;//设置绘图窗口renWin->AddRenderer(renderer);//装载绘图类vtkWin32RenderWindowInteractor iren = new vtkWin32RenderWindowInteractor();iren.SetRenderWindow(renWin);//装载绘图窗口}

这里我用的是头颅的CT影像切片,运行后就得到了一个未上色的三维模型:

修改上面的代码,尝试提取脑部血管模型:

 //建立算法对象,从CT切片数据中提取出皮肤
skinExtractor.SetValue(0, 250); //血管CT值为200-300左右

C#开发PACS、RIS、3D医学影像处理系统系列教程 目录整理:

菜鸟入门篇

C#开发PACS医学影像处理系统(一):开发背景和功能预览

C#开发PACS医学影像处理系统(二):界面布局之菜单栏

C#开发PACS医学影像处理系统(三):界面布局之工具栏

C#开发PACS医学影像处理系统(四):界面布局之状态栏

C#开发PACS医学影像处理系统(五):查询病人信息列表

C#开发PACS医学影像处理系统(六):加载Dicom影像

C#开发PACS医学影像处理系统(七):读取影像Dicom信息

C#开发PACS医学影像处理系统(八):单元格变换

C#开发PACS医学影像处理系统(九):序列控件与拖拽

C#开发PACS医学影像处理系统(十):Dicom影像下载策略与算法

C#开发PACS医学影像处理系统(十一):Dicom影像挂片协议

C#开发PACS医学影像处理系统(十二):绘图处理之图形标记

C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量

C#开发PACS医学影像处理系统(十四):处理Dicom影像窗宽窗位

C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放

C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转

C#开发PACS医学影像处理系统(十八):Dicom使用LUT色彩增强和反色

C#开发PACS医学影像处理系统(十九):Dicom影像放大镜

医学影像三维篇

C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

C#开发PACS医学影像三维重建(二):使用VTK进行体绘制

C#开发PACS医学影像三维重建(三):纹理映射与颜色传输

C#开发PACS医学影像三维重建(四):3D网格平滑效果

C#开发PACS医学影像三维重建(五):基于梯度透明的组织漫游

C#开发PACS医学影像三维重建(六):三维光源与阴影效果

C#开发PACS医学影像三维重建(七):空间测量与标注

C#开发PACS医学影像三维重建(八):VR体绘制

C#开发PACS医学影像三维重建(九):MPR三视图切面重建

C#开发PACS医学影像三维重建(十):MIP最小密度投影

C#开发PACS医学影像三维重建(十一):CPR曲面重建

C#开发PACS医学影像三维重建(十二):VE虚拟内镜技术

C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路

C#开发PACS医学影像三维重建(十四):基于能量模型算法将曲面牙床展开至二维平面

熟手进阶篇

C#处理医学影像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比

C#处理医学影像(二):基于Hessian矩阵的医学影像增强与窗宽窗位

C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路

C#处理医学影像(四):基于Stitcher算法拼接人体全景脊柱骨骼影像

胶片打印:

C#开发医学影像胶片打印系统(一):万能花式布局的实现思路

C#开发医学影像胶片打印系统(二):胶片打印机通讯

C#开发医学影像胶片打印系统(三):Pacs二维功能在排版中的应用

登峰造极篇

C#开发基于Python人工智能的肺结节自动检测

C#开发基于Python人工智能的脊柱侧弯曲率算法

C#开发基于Python机器学习的医学影像骨骼仿真动画

C#开发基于Python机器学习的术后恢复模拟

C#开发基于U3D的VR眼镜设备虚拟人体三维重建

C#开发基于全息投影的裸眼3D医学影像显示技术

免费下载

免费下载使用本教程PACS软件

C#开发PACS医学影像三维重建(一):使用VTK重建3D影像相关推荐

  1. vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像

    VTK简介: VTK是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的. 因为使用C#语言开发,而VTK是C++ ...

  2. C#开发PACS医学影像三维重建(十三):基于人体CT值从皮肤渐变到骨骼的梯度透明思路

    当我们将CT切片重建为三维体之后,通常会消除一些不必要的外部组织来观察内部病灶, 一般思路是根据人体常见CT值范围来使得部分组织透明来达到效果, 但这是非黑即白的,即,要么显示皮肤,要么显示神经,要么 ...

  3. 【转】C#开发PACS医学影像处理系统(一):开发背景和功能预览

    转自:https://www.cnblogs.com/Uncle-Joker/p/13646949.html 本系列文章将从以下模块和大家分享和讨论使用C#开发医学软件PACS和RIS系统, 国内相关 ...

  4. 【转】C#开发PACS医学影像处理系统(二):界面布局之菜单栏

    转自:C#开发PACS医学影像处理系统(二):界面布局之菜单栏 - 乔克灬叔叔 - 博客园 在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并 ...

  5. 【转】pacs定位线_C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

    转自:https://www.cnblogs.com/Uncle-Joker/p/13686618.html 1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向 ...

  6. pacs定位线_C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

    1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向)在矢状面(从左手到右手)上的影像投影面交线. 举个例子:右边的是MR(核磁共振)的某一帧切片,这是从头开始扫 ...

  7. 【转】C#开发PACS医学影像处理系统(三):界面布局之工具栏

    转自:https://www.cnblogs.com/Uncle-Joker/p/13650330.html 工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator ...

  8. PACS医学影像系统(完整版)

    一.PACS影像存取与传输系统以实现医学影像数字化存储.诊断为核心任务,从医学影像设备(如CT.CR.DR.MR.DSA.RF等)获取影像,集中存储.综合管理医学影像及病人相关信息,建立数字化工作流程 ...

  9. 7.2影像云阅片【斯纳克PACS医学影像云平台用户手册】

    标签:[斯纳克PACS医学影像云平台][影像云][PACS系统][云胶片][申请使用] 在查看DICOM图像页对病人的检查进行诊断 支持以下DICOM图像处理工具 窗宽窗位 预设窗宽窗位 反片 缩放 ...

最新文章

  1. Windows azure 上将Legcay IO操作轻松切换到Blob
  2. 网络营销——网站在网络营销优化中不收录了怎么办呢?
  3. 爬虫基础-登陆github获取个人信息
  4. KDE Akademy 2008 会议
  5. Acwing202. 最幸运的数字
  6. 使用react实现select_使用 Hooks 优化 React 组件
  7. 微信小程序实战–集阅读与电影于一体的小程序项目(八)
  8. MessageQueue Message Looper Handler的解释说明
  9. WordPress环境配置与安装
  10. 代码分析 | 单细胞转录组Normalization详解
  11. 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...
  12. native下拉图片放大 react_RN下拉图片放大 - Chason-洪的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. 考研数学三考摆线吗_考研数学草稿纸发几张?可以多打几张准考证当草稿纸用吗?...
  14. 编辑WCF配置不出现
  15. 植入式医疗电子设备供电电源原理与设计
  16. java实验指导书 eclipse_《Java语言程序设计实验指导书》实验指导书.doc
  17. 在vue中使用jsmind组织架构或思维导图
  18. 关于设计BOM和制造BOM的介绍
  19. SQL数据库连接失败
  20. 趋势杀毒文件服务器版10用户,趋势杀毒软件(OSCE 10.0)服务器端备份与恢复

热门文章

  1. 《简易个税计算器》技术支持网址(URL)
  2. Office 2011 2016 2019 For Mac 下载合集
  3. Android 8.1/9.0 一份能用的录音机源码
  4. 四、Hive数据仓库应用之Hive数据查询语言(一)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
  5. 债券交易日志12.24
  6. 超详细preact hook源码逐行解析
  7. 泰坦尼克号:从灾难中学习机器
  8. 人声美化-空气感音效
  9. 长期睡软床会引发腰椎间盘突出吗?
  10. python vs Java(谁更胜一筹)