📄 itkanalyzeimageiotest.cxx
字号:
RPIindex[i] = localindex[i];
RPIsize[i] = localdims[i];
}
typename ImageType::RegionType RPIregion;
RPIregion.SetSize( RPIsize );
RPIregion.SetIndex( RPIindex );
itk::ImageRegionIterator<ImageType > RPIiterator(img,RPIregion);
while(!RPIiterator.IsAtEnd())
{
RPIiterator.Set( RPIiterator.Get() + ANTERIOR );
++RPIiterator;
}
}
if(Dimension > 2)
{ //Fill in superior half
typename ImageType::IndexType RPIindex; //= {{0,0,5}};
typename ImageType::SizeType RPIsize; //= {{10,10,5}};
unsigned localInd[] = { 0,0,5 };
unsigned localSize[] = { 10,10,5 };
for(unsigned i = 0; i < Dimension; i++)
{
RPIindex[i] = localInd[i];
RPIsize[i] = localSize[i];
}
typename ImageType::RegionType RPIregion;
RPIregion.SetSize( RPIsize );
RPIregion.SetIndex( RPIindex );
itk::ImageRegionIterator<ImageType > RPIiterator(img,RPIregion);
while(!RPIiterator.IsAtEnd())
{
RPIiterator.Set( RPIiterator.Get() + SUPERIOR );
++RPIiterator;
}
}
typedef itk::ImageFileWriter< ImageType > ImageWriterType;
typename ImageWriterType::Pointer ImageWriterPointer =
ImageWriterType::New();
//Set the output filename
ImageWriterPointer->SetFileName(filename);
//Attach input image to the writer.
ImageWriterPointer->SetInput( img );
//Determine file type and instantiate appropriate ImageIO class if not
//explicitly stated with SetImageIO, then write to disk.
try {
ImageWriterPointer->Write();
}
catch ( itk::ExceptionObject & ex )
{
std::string message;
message = "Problem found while writing image ";
message += filename;
message += "\n";
message += ex.GetLocation();
message += "\n";
message += ex.GetDescription();
std::cerr << message << std::endl;
//--// Remove(filename);
return EXIT_FAILURE;
}
//typedef itk::ImageFileReader< ImageType > ImageReaderType ;
typename ImageType::Pointer input;
typename itk::ImageFileReader<ImageType>::Pointer imageReader =
itk::ImageFileReader<ImageType>::New();
try
{
imageReader->SetFileName(filename) ;
imageReader->Update() ;
input = imageReader->GetOutput() ;
}
catch (itk::ExceptionObject &e)
{
e.Print(std::cerr) ;
//--// Remove(filename);
return EXIT_FAILURE;
}
//--// Remove(filename);
return EXIT_SUCCESS;
}
//template int MakeImage<char>();
int itkAnalyzeImageIOTest(int ac, char* av[])
{
int rval = 0;
//Have two loops through the code, the first one
//reads and writes with the legacy AnalyzeIO, and
//the second reads a writes with the NiftiIO mechanism.
for(int loops=0;loops<2;loops++)
{
std::string AugmentName="NoneGiven";
if(loops==1)
{
itk::ObjectFactoryBase::UnRegisterAllFactories();
itk::AnalyzeImageIOFactory::RegisterOneFactory();
//itk::AnalyzeImageIOFactory::Pointer myAnalyzeIOFactory = itk::AnalyzeImageIOFactory::New();
//itk::ObjectFactoryBase::UnRegisterFactory(myAnalyzeIOFactory.GetPointer());
AugmentName="Analyze";
}
else
{
itk::ObjectFactoryBase::UnRegisterAllFactories();
itk::NiftiImageIOFactory::RegisterOneFactory();
//itk::NiftiImageIOFactory::Pointer myNiftiIOFactory = itk::NiftiImageIOFactory::New();
//itk::ObjectFactoryBase::UnRegisterFactory(myNiftiIOFactory.GetPointer());
AugmentName="Nifti";
}
//
// first argument is passing in the writable directory to do all testing
if(ac > 1) {
char *testdir = *++av;
--ac;
itksys::SystemTools::ChangeDirectory(testdir);
}
if(ac > 1) //This is a mechanism for reading unsigned char images for testing.
{
typedef itk::Image<unsigned char, 3> ImageType ;
ImageType::Pointer input;
itk::ImageFileReader<ImageType>::Pointer imageReader =
itk::ImageFileReader<ImageType>::New();
for(int imagenameindex=1; imagenameindex < ac; imagenameindex++)
{
//std::cout << "Attempting to read " << av[imagenameindex] << std::endl;
try
{
imageReader->SetFileName(av[imagenameindex]) ;
imageReader->Update() ;
input=imageReader->GetOutput() ;
}
catch (itk::ExceptionObject &e)
{
e.Print(std::cerr) ;
rval = 1;
}
}
}
else //This is the mechanism for doing internal testing of all data types.
{
int cur_return;
cur_return = MakeImage<char,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type char" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<unsigned char,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type unsigned char" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<short,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type short" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<unsigned short,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type unsigned short" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<int,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type int" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<float,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type float" << std::endl;
rval += cur_return;
}
// awaiting a double precision byte swapper
cur_return = MakeImage<double,3>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type double" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<char,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type char" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<unsigned char,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type unsigned char" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<short,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type short" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<unsigned short,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type unsigned short" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<int,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type int" << std::endl;
rval += cur_return;
}
cur_return = MakeImage<float,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type float" << std::endl;
rval += cur_return;
}
// awaiting a double precision byte swapper
cur_return = MakeImage<double,2>(AugmentName);
if(cur_return != 0)
{
std::cerr << "Error writing Analyze file type double" << std::endl;
rval += cur_return;
}
rval += TestByteSwap(AugmentName);
}
}
return rval;
}
int itkAnalyzeImageIOTest2(int ac, char* av[])
{
//
// first argument is passing in the writable directory to do all testing
if(ac > 1) {
char *testdir = *++av;
--ac;
itksys::SystemTools::ChangeDirectory(testdir);
}
if(ac != 3)
return EXIT_FAILURE;
char *arg1 = av[1];
char *arg2 = av[2];
int test_success = 0;
typedef itk::Image<signed short, 3> ImageType ;
typedef ImageType::Pointer ImagePointer ;
typedef itk::ImageFileReader< ImageType > ImageReaderType ;
itk::AnalyzeImageIO::Pointer io = itk::AnalyzeImageIO::New();
ImageReaderType::Pointer imageReader = ImageReaderType::New();
ImagePointer input;
try
{
imageReader->SetImageIO(io);
imageReader->SetFileName(arg2);
imageReader->Update();
input = imageReader->GetOutput();
}
catch (itk::ExceptionObject &)
{
test_success = 1;
}
if(strcmp(arg1, "true") == 0)
{
return test_success;
}
else
{
return !test_success;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -