三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

这篇具有很好参考价值的文章主要介绍了三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 概述

此系统实现了常见的VTK四视图,实现了很好的CT图像分割,可以用于骨骼,头部,肺部,脂肪等分割,,并且通过三维重建实现可视化。使用了第三方库 VTK,ITK 实现分割和生不重建。

窗口分为 (横断面)、冠状面、矢状面,和3D窗口;包含了体绘制和面绘制;

效果:

三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

CT分割重建

二、 开发环境 

操作系统: Windows 10:

工具:Qt 5.12.4+ Visual Studio 2017,

使用开源库:VTK-8.1 ITK4.13。

三、主要任务:

图像的输入与预处理,组织或器官的分割与提取,由二 维轮廓线重构三维形体,基于规则体数据的三维表面重建;

四、图像重建介绍:

1.医学图像分割:
根据需要选择一定的特征量或指定特定的测量准则来检测图像中不同区域的一致性,根据检测出来的区域一致性将图像区别成不同区域,从而可以更加方便地进行进一步的分析和理解

2.医学图像分割方法:
a.基于图像区域的方法:通过检测同一区域内的均匀性是否一致来将图像中的不同区域识别出来。
区域分割方法包括:阈值分割法,区域生长法,基于随机场的方法。
b.基于边缘检测的分割方法:边缘检测技术提取区域进行分割。
常用的边缘检测技术有:并行微分算子、基于边界曲线拟合的方法、基于局部图像的方法、串行边界查找等。
c.结合区域和边缘信息的方法:采用基于形变模型的方法将基于区域的分割方法和边缘检测方法结合起来进行图像分割处理。

3.医学图像三维可视化 :
将医学影像设备输出的二维切片图像序列重新组合重建为三维图像模型,并对重建后的模型进行定性定量分析的技术;

三维重建方法:
a.面绘制:表面重建,即从医学影像设备输出的切片数据集构造出三维数据,然后在三维数据中抽取出等值面,然后进行三角剖分,获得三角形面片,在用图形学中的图元绘制技术将三角形面片绘制出来实现表面绘制。
根据用户需要提取的目标物体的属性设定一个特定的阈值,从体数据中提取到与该阈值相同的数据点,并根据三角剖分分为若干个三角面片集,在利用图形学中基本的三角形图元的绘制方法对三角面片进行渲染,形成三维图像。
常用的面绘制算法有:移动立方体算法,剖分立方体算法,立方体算法。
b.体绘制:。将体数据中的“体素”作为基本的绘制单位。把体数据中的每个体素看成是可以接收或发出光线的点,选择光照模型,对体素进行分类并根据其实际的介质属性分配不同的颜色和不透明度,并沿着视线观察的方向进行合成,在视点所在的位置形成具有一定颜色和透明度的三维投射图像。
常用的体绘制算法有:光线投射算法、错切变形法、和基于硬件的3D纹理映射算法。

医学图像三维重建流程:
获得和封装体数据、模型的建立、映射体数据、三维图形绘制。
体数据分类(根据三维空间上每个数据点之间的相互关系):结构化体数据、非结构化体数据、结构化和非结构化混合型体数据


五、主要实现过程

1.数据读取:

	reader = vtkSmartPointer<vtkDICOMImageReader>::New();
	reader->SetDirectoryName(path.toStdString().c_str()); 
	reader->Update();


 这里有一个bug,VTK 读取会丢失信息;

后面换成 ITK

2.CT分割

这里我们使用了 阈值分割,则CT图像的CT值在这个阈值内的保留原值不变,小于下界阈值的变黑,大于上界阈值的变白。

    vtkNew<vtkImageThreshold> threshould;
	threshould->SetInputData(reader->GetOutput());
 
	threshould->ThresholdBetween(LowValue, HighValue); 
	threshould->SetInValue(1024);
	threshould->SetOutValue(-1024);

效果:

可以看到肺部已经被分割出来

三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

4、三维重建:

面绘制,这里使用 阈值分割后的结果:

   vtkSmartPointer< vtkMarchingCubes > boneExtractor =
        vtkSmartPointer< vtkMarchingCubes >::New();
    boneExtractor->SetInputConnection(threshould->GetOutputPort());
    boneExtractor->SetValue(0, 400); //设置提取的等值信息
    boneExtractor->Update();
 

面绘制具体可见:

vtk 常用绘制方法 vtkMarchingCubes 面绘制_恋恋西风的博客-CSDN博客

效果,这里使用了 肺部,骨头两种测试:

三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

 体绘制:

这里同样使用阈值分割后的结果


	vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper =
		vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New();
	volumeMapper->SetInputData(threshould->GetOutput());;
	volumeMapper->SetSampleDistance(volumeMapper->GetSampleDistance() / 2);    //设置光线采样距离
	//volumeMapper->SetAutoAdjustSampleDistances(0);//设置图像采样步长
	//volumeMapper->SetImageSampleDistance(4);
	/*************************************************************************/
	vtkSmartPointer<vtkVolumeProperty> volumeProperty =
		vtkSmartPointer<vtkVolumeProperty>::New();
	volumeProperty->SetInterpolationTypeToLinear();
	volumeProperty->ShadeOn();  //打开或者关闭阴影测试
	volumeProperty->SetAmbient(0.4);
	volumeProperty->SetDiffuse(0.6);  //漫反射
	volumeProperty->SetSpecular(0.2); //镜面反射
	//设置不透明度
	vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity =
		vtkSmartPointer<vtkPiecewiseFunction>::New();
	compositeOpacity->AddPoint(70, 0.00);
	compositeOpacity->AddPoint(90, 0.40);
	compositeOpacity->AddPoint(180, 0.60);
	volumeProperty->SetScalarOpacity(compositeOpacity); //设置不透明度传输函数
	//设置梯度不透明属性
	vtkSmartPointer<vtkPiecewiseFunction> volumeGradientOpacity =
		vtkSmartPointer<vtkPiecewiseFunction>::New();
	volumeGradientOpacity->AddPoint(10, 0.0);
	volumeGradientOpacity->AddPoint(90, 0.5);
	volumeGradientOpacity->AddPoint(100, 1.0);
	volumeProperty->SetGradientOpacity(volumeGradientOpacity);//设置梯度不透明度效果对比
	//设置颜色属性
	vtkSmartPointer<vtkColorTransferFunction> color =
		vtkSmartPointer<vtkColorTransferFunction>::New();
	color->AddRGBPoint(0.000, 0.00, 0.00, 0.00);
	color->AddRGBPoint(64.00, 1.00, 0.52, 0.30);
	color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);
	color->AddRGBPoint(220.0, 0.20, 0.20, 0.20);
	volumeProperty->SetColor(color);
	/********************************************************************************/
	vtkSmartPointer<vtkVolume> volume =
		vtkSmartPointer<vtkVolume>::New();
	volume->SetMapper(volumeMapper);
	volume->SetProperty(volumeProperty);
 
	vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();
	ren->SetBackground(0, 0, 0);
	ren->AddVolume(volume);
 

 效果如下:

三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

 最后分割出的结果如下:

三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用

(横断面)、冠状面、矢状面,三个窗口可以通过拖动条,切换图层; 

由于一些关系,还有些细节不便透露;大体流程如此;文章来源地址https://www.toymoban.com/news/detail-478451.html

到了这里,关于三维重建 阈值分割 3D可视化 医学图像分割 CT图像分割及重建系统 可视化编程技术及应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 带你玩转 3D 检测和分割 (三):有趣的可视化

    小伙伴们好呀,3D 检测和分割系列文章继续更新啦,在第一篇文章中我们带领大家了解了整个框架的大致流程,第二篇文章我们给大家解析了 MMDetection3D 中的坐标系和核心组件 Box,今天我们将带大家看看 3D 场景中的可视化组件 Visualizer,如何在多个模态数据上轻松可视化并且

    2023年04月21日
    浏览(38)
  • 使用Open3D进行OBJ模型三维可视化

    使用Open3D进行OBJ模型三维可视化 在三维图像处理领域,OBJ文件是一种常见的三维模型格式,而Open3D则是一个强大的开源3D计算机视觉库。本文将介绍如何使用Open3D对OBJ文件进行可视化。 首先,需要安装Open3D库。使用pip install即可: 接下来,我们可以使用Open3D提供的read_triang

    2024年02月06日
    浏览(49)
  • C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

    VTK简介:   VTK是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的。 因为使用C#语言开发,而VTK是C++的,所以推荐使用VTK的.Net开发库:ActiViz。 本系列文章主要以技术和代码讲解为

    2024年02月09日
    浏览(47)
  • open3d教程(二):可视化三维模型,并转换成点云(Python版本)

    可以自己用建模软件建立一个模型 从free3d免费下载 open3d.visualization. draw_geometries 参数: geometry_list ( List[open3d.geometry.Geometry]) : 要可视化的几何体列表. window_name( str ,  optional ,  default=\\\'Open3D\\\'): 展示模型的可视化窗口名称,默认是Open3d. width: 

    2024年02月11日
    浏览(37)
  • 可视化绘图技巧100篇进阶篇(九)-三维百分比堆积条形图(3D Stacked Percentage Bar Chart)

    目录 前言 适用场景 绘图工具及代码实现    帆软 实现思路 方案一:使用计算指标

    2024年02月12日
    浏览(29)
  • 医学可视化应用简介

    VolView是一款为临床专业人员开发的开源放射学查看器。使用VolView,可以通过交互式电影体积渲染对数据有更深入的视觉理解,并轻松地以3D形式可视化DICOM数据。由于VolView在浏览器中运行,不需要安装软件,数据也可以安全地保存在您的机器上。 它说是可以得到电影级渲染

    2024年02月07日
    浏览(29)
  • Pytorch1.7复现PointNet++点云分割(含Open3D可视化)(文末有一个自己做的书缝识别项目代码)

      毕设需要,复现一下PointNet++的对象分类、零件分割和场景分割,找点灵感和思路,做个踩坑记录。 https://github.com/yanx27/Pointnet_Pointnet2_pytorch   我的运行环境是pytorch1.7+cuda11.0。   PointNet++代码能实现3D对象分类、对象零件分割和语义场景分割。 对象分类   下载数据

    2023年04月15日
    浏览(73)
  • python三维建模可视化与交互,python三维建模可视化

    本篇文章给大家谈谈python三维建模可视化与交互,以及python三维建模可视化,希望对各位有所帮助,不要忘了收藏本站喔。 一、 内容介绍 人类是那么得有创造力,我们创造、发明、设计、生产了一切大自然没有直接给予我们的东西使我们的生活变得更轻松更美好。在过去,

    2024年01月23日
    浏览(40)
  • 使用Python进行三维可视化

    使用Python进行三维可视化 Python是一种易于学习和使用的编程语言,它拥有强大的图形处理能力。在科学、工程或数据分析等领域,Python可以用来处理和生成各种图表和图像。本文将介绍如何使用Python进行三维可视化,并提供相应的源代码。 首先,我们需要安装必要的Python库

    2024年02月14日
    浏览(33)
  • Unity制作数据可视化三维场景

    数据可视化大屏是这几年比较热门的一个方向,人们对数据的感知方式,也慢慢要求更严苛了。 Bi报表到数据可视化大屏,再到三维可视化大屏,这个发展趋势也体现了人们在使用数据可视化大屏时对效果的要求逐渐提高。 2维图表在过去几年的使用中,不断完善,已经有了

    2023年04月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包