64,639
社区成员
发帖
与我相关
我的任务
分享
#include "itkImage.h"
#include "itkImageSeriesReader.h"
#include "itkImageFileWriter.h"
#include "itkNumericSeriesFileNames.h"
#include "itkGDCMImageIO.h"
#include <Windows.h>
#include "itkShiftScaleImageFilter.h"
#include "itkHessianRecursiveGaussianImageFilter.h"
#include "itkHessian3DToVesselnessMeasureImageFilter.h"
void main()
{
typedef unsigned short PixelType ;
const unsigned int Dimension = 3;
typedef itk::Image<PixelType , Dimension> ImageType ;
typedef itk::ImageSeriesReader<ImageType> ReaderType ;
//there still some parameters can be set
typedef itk::NumericSeriesFileNames NameGeneratorType ;
NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
nameGenerator->SetSeriesFormat("C:\\Users\\zhq\\Desktop\\data\\SNAP_CR\\E403434298\\E403434298S1901I%3d.dcm");
nameGenerator->SetStartIndex(301);
nameGenerator->SetEndIndex(343);
nameGenerator->SetIncrementIndex(1);
ReaderType::Pointer reader = ReaderType::New();
reader->SetImageIO(itk::GDCMImageIO::New());
reader->SetFileNames(nameGenerator->GetFileNames());
reader->Update();
std::cout<<"reader updata"<<std::endl;
typedef itk::Image<double,3> doubleImageType ;
typedef itk::ShiftScaleImageFilter<ImageType,doubleImageType> ShiftFilter ;
ShiftFilter::Pointer filter = ShiftFilter::New();
filter->SetInput(reader->GetOutput());
filter->Update();
std::cout<<"filter updata"<<std::endl ;
typedef itk::HessianRecursiveGaussianImageFilter<doubleImageType> HessianFilterType;
HessianFilterType::Pointer hessianFilter = HessianFilterType::New();
hessianFilter->SetInput(filter->GetOutput());
hessianFilter->Update();
std::cout<<"hessian Filter"<<std::endl ;
//if read 45 files , there is a error
typedef itk::Hessian3DToVesselnessMeasureImageFilter<float> VesselMeasureFilterType ;
VesselMeasureFilterType::Pointer vesselFilter = VesselMeasureFilterType::New();
vesselFilter->SetInput(hessianFilter->GetOutput());
vesselFilter->Update();
std::cout<<"vesselFilter update"<<std::endl;
typedef itk::ImageFileWriter< itk::Image<float,3> > WriterType ;
WriterType::Pointer writer = WriterType::New();
writer->SetInput(vesselFilter->GetOutput());
writer->SetFileName("C:\\Users\\zhq\\Desktop\\mydata.vtk");
writer->Update();
std::cout<<"writer updata"<<std::endl ;
system("pause");
}