首页 > 编程语言 >ITK 实例7 置信连接算法对脑部MHA文件进行三维分割

ITK 实例7 置信连接算法对脑部MHA文件进行三维分割

时间:2023-08-16 14:56:49浏览次数:42  
标签:typedef InternalImageType itk 置信 MHA include confidenceConnected index1 ITK

  在这个例子中使用前面例子中的代码,并设置图像的维数为 3 。应用梯度各向异性扩散来平滑图像。这个滤波器使用两个迭代器、一个值为 0.05 的 time step 和一个值为 3 的conductance 值,然后使用置信连接方式对平滑后的图像进行分割。使用的五个种子点的坐标分别为( 118 , 85 , 92 )、( 63 , 87 , 94 )、( 63 , 157 , 90 )、( 111 , 188 , 90 )、( 111 , 50 , 88 )。置信连接滤波器使用的参数:邻域范围是 2 ; 迭代器数目为5;和 f 值 为2.5( 跟前面的例子中一样 ) 。然后使VolView 来显示结果。

 1 #include "itkConfidenceConnectedImageFilter.h"
 2 #include "itkCastImageFilter.h"
 3 #include "itkCurvatureFlowImageFilter.h"
 4 #include "itkImageFileReader.h"
 5 #include "itkImageFileWriter.h"
 6  
 7 int main( int argc, char *argv[] )
 8 {
 9   //if( argc < 3 )
10   //  {
11   //  std::cerr << "Missing Parameters " << std::endl;
12   //  std::cerr << "Usage: " << argv[0];
13   //  std::cerr << " inputImage  outputImage " << std::endl;
14   //  return EXIT_FAILURE;
15   //  }
16  
17  
18   typedef   float           InternalPixelType;
19   const     unsigned int    Dimension = 3;
20   typedef itk::Image< InternalPixelType, Dimension >  InternalImageType;
21  
22   typedef unsigned char                            OutputPixelType;
23   typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
24  
25   typedef itk::CastImageFilter< InternalImageType, OutputImageType >
26     CastingFilterType;
27   CastingFilterType::Pointer caster = CastingFilterType::New();
28  
29  
30   typedef  itk::ImageFileReader< InternalImageType > ReaderType;
31   typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;
32  
33   ReaderType::Pointer reader = ReaderType::New();
34   WriterType::Pointer writer = WriterType::New();
35  
36   reader->SetFileName( "BrainProtonDensity3Slices.mha" );
37   writer->SetFileName( "BrainProtonDensity3Slices_3.mha" );
38  
39   typedef itk::CurvatureFlowImageFilter< InternalImageType, InternalImageType >
40     CurvatureFlowImageFilterType;
41   CurvatureFlowImageFilterType::Pointer smoothing =
42                          CurvatureFlowImageFilterType::New();
43  
44   typedef itk::ConfidenceConnectedImageFilter<InternalImageType, InternalImageType>
45     ConnectedFilterType;
46   ConnectedFilterType::Pointer confidenceConnected = ConnectedFilterType::New();
47  
48   smoothing->SetInput( reader->GetOutput() );
49   confidenceConnected->SetInput( smoothing->GetOutput() );
50   caster->SetInput( confidenceConnected->GetOutput() );
51   writer->SetInput( caster->GetOutput() );
52  
53   smoothing->SetNumberOfIterations( 2 );//
54   smoothing->SetTimeStep(0.05);//每步迭代时间
55  
56   confidenceConnected->SetMultiplier( 2.5 );//;设置乘法因子f 2.5  可调
57   confidenceConnected->SetNumberOfIterations( 5 );//设置迭代次数为5(迭代器数目)
58   confidenceConnected->SetInitialNeighborhoodRadius( 2 );//设置领域范围为2
59   confidenceConnected->SetReplaceValue( 255 );
60  
61   //设置种子点1
62   InternalImageType::IndexType index1;
63   index1[0] = 63;//X 轴
64   index1[1] = 67;//Y 轴
65   index1[2] = 1;//Z 轴 (第几个切片)
66   confidenceConnected->AddSeed(index1);
67  
68  /* InternalImageType::IndexType index1;
69   index1[0] = 118;
70   index1[1] = 133;
71   index1[2] = 92;
72   confidenceConnected->AddSeed( index1 );*/
73  
74   try
75     {
76     writer->Update();
77     }
78   catch( itk::ExceptionObject & excep )
79     {
80     std::cerr << "Exception caught !" << std::endl;
81     std::cerr << excep << std::endl;
82     return EXIT_FAILURE;
83     }
84  
85  
86   return EXIT_SUCCESS;
87 }

标签:typedef,InternalImageType,itk,置信,MHA,include,confidenceConnected,index1,ITK
From: https://www.cnblogs.com/ybqjymy/p/17634850.html

相关文章

  • ITK 实例8 孤立连接算法对脑部PNG图像进行二维分割
    1#include"itkIsolatedConnectedImageFilter.h"2#include"itkImage.h"3#include"itkCastImageFilter.h"4#include"itkCurvatureFlowImageFilter.h"5#include"itkImageFileReader.h"6#include"......
  • ITK 实例9 孤立连接算法对脑部MHA文件进行三维分割
    1#include"itkIsolatedConnectedImageFilter.h"2#include"itkImage.h"3#include"itkCastImageFilter.h"4#include"itkCurvatureFlowImageFilter.h"5#include"itkImageFileReader.h"6#include"......
  • ITK 实例3 PNG图像进行二维非线性映射
    1#include"itkImage.h"2#include"itkImageFileReader.h"3#include"itkImageFileWriter.h"4//非线性映射滤波器头文件5#include"itkSigmoidImageFilter.h"67intmain(intargc,char*argv[])8{9/*if(argc......
  • ITK 实例4 MHA格式文件进行三维非线性映射
    1#include"itkImage.h"2#include"itkImageFileReader.h"3#include"itkImageFileWriter.h"4//非线性映射滤波器头文件5#include"itkSigmoidImageFilter.h"6//注:非线性映射算法只能实现像素值(0-255)范围的输入输出映射。7intmain(intargc,cha......
  • ITK 实例5 PNG图像进行不带滤波的二维梯度强度提取
    图像梯度的强度广泛地应用在图像分析中,主要用来帮助检测对象轮廓和分离均匀区域。itk::GradientMagnitudeImageFilter使用一个简单的有限差分方式来计算图像中每个像素位置的梯度强度。例如:在二维情况下计算等同于将图像使用模块类型,如下所示:然后计算它们的平方和并计算和的......
  • ITK 实例6 PNG图像进行带滤波的二维梯度强度提取
    微分是对一个数字数据的不规则操作。实际中可以方便地定义一个执行微分的比例。在执行这样的滤波时使用一个高斯核被认为是最便捷的选择。通过选择一个特定的高斯标准差(σ),就可以选择一个相应的比例来去除通常被认为是噪声的高频部分。itk::GradientMagnitudeRecursiveG......
  • ITK 实例7 向量图像(将一个向量存储到一个图像像素中)
    1#include"itkVector.h"//向量类的头文件2#include"itkImage.h"34intmain(int,char*[])5{6/*向量类的使用是在基于空间中代表坐标和维数的类型之上进行模板化的。在此例中,向7量的长度和图像长度相匹配,但是并不是完全相同。我们可以用一个三维的向......
  • ITK 实例6 RGB图像像素色彩成分的访问
    1#include"itkImage.h"2#include"itkImageFileReader.h"3//为了使用itk::RGBPixel类,包含头文件4#include"itkRGBPixel.h"5//在ITK中如何表示RGB图像。6intmain(int,char*argv[])7{8//RGBPixeld类的使用是基于用来代表红、绿和蓝的像素......
  • ITK 实例8 从缓冲器中输入图像数据
    1#include"itkImage.h"2#include"itkImportImageFilter.h"//包含ImportImageFilter(图像像素数据导入缓冲器)类的头文件3#include"itkImageFileWriter.h"4//这个例子阐述了如何将数据输入到itk::Image类中。这在同其他软件系统相连时更加有5//用。许多......
  • ITK 实例1 ITK环境测试
    1#include"itkImage.h"//包含图像类的头文件2#include<iostream>34intmain()5{6//创建一个三维、像素是无符号短字符数据类型的图像7typedefitk::Image<unsignedshort,3>ImageType;8//调用New()操作创建图像并将结果分配到itk::......