首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ITK用Hessian3DToVesselnessMeasureImageFilter分割出有关问题

2013-08-16 
ITK用Hessian3DToVesselnessMeasureImageFilter分割出问题代码如下:先是用ITK读进去一些dicom的图片,然后

ITK用Hessian3DToVesselnessMeasureImageFilter分割出问题
代码如下:
先是用ITK读进去一些dicom的图片,然后用Hessian3DToVesselnessMeasureImageFilter分割出血管来,程序本身没有太大的问题。
但是,本来我是想读进去100张图片的,但是,每次只能读43张左右,也就是说,从301开始,到343,这样的话,代码可以运行,结果也还好,但是,如果是从301到344的话,那么就会报错,报错如下:
ITK用Hessian3DToVesselnessMeasureImageFilter分割出有关问题
而且每次都是红色的那段报错,求大侠帮帮忙!

#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");
}



不会这个,帮顶,等大神

热点排行