[Insight-users] Working with big dataset.
Yansen
d9999 at poczta.onet.pl
Thu Mar 13 07:12:04 EDT 2014
Hello.
I try to write program that can handle huge files. My data are saved in raw
file. My first step into ITK was try to write program that can basically
copy data from one file to another. Basically I success - if data files are
small and can fit into memory ("small.raw"). But the reason I wish to use
ITK is not small files but large ones (i typically got 100GB input file and
my computer got only 8 GB memory). Anyone can drive me to some complete
example how to do this? Example below fail with 12BG file. I read many
samples and try witch regions and StreamingImageFilter without success.
Best regard
Yansen
#include "itk\itkImageFileReader.h"
#include "itk\itkImageFileWriter.h"
#include "itk\itkImage.h"
#include "itk\itkRawImageIO.h"
#include "itk\itkPNGImageIO.h"
#include "itk\itkRegionOfInterestImageFilter.h"
#include "itk\itkStreamingImageFilter.h"
int main( int argc, char ** argv )
{
//input file
typedef unsigned char InputDataType;
typedef itk::Image< InputDataType, 3 > InputImageType;
itk::RawImageIO< InputDataType, 3 >::Pointer inputRAW = itk::RawImageIO<
InputDataType, 3 >::New();
itk::ImageFileReader< itk::Image<InputDataType, 3 >>::Pointer reader =
itk::ImageFileReader< itk::Image<InputDataType, 3 >>::New();
//inputRAW->SetFileName("e:\\vol_and_raws\\small.raw");
inputRAW->SetFileName("e:\\vol_and_raws\\big.raw");
inputRAW->SetFileTypeToBinary();
inputRAW->SetHeaderSize(0);
inputRAW->SetFileDimensionality(3);
//inputRAW->SetDimensions( 0, 571 );
//inputRAW->SetDimensions( 1, 571 );
//inputRAW->SetDimensions( 2, 426 );
inputRAW->SetDimensions( 0, 2283 );
inputRAW->SetDimensions( 1, 2284 );
inputRAW->SetDimensions( 2, 2304 );
inputRAW->SetPixelType(itk::ImageIOBase::SCALAR);
inputRAW->SetNumberOfComponents(1);
reader->SetFileName(inputRAW->GetFileName());
reader->SetImageIO(inputRAW);
reader->UpdateOutputInformation();
//output file
typedef unsigned char OutputDataType;
typedef itk::Image< OutputDataType, 3 > OutputImageType;
itk::RawImageIO< OutputDataType, 3 >::Pointer outputRAW = itk::RawImageIO<
OutputDataType, 3 >::New();
itk::ImageFileWriter< itk::Image<OutputDataType, 3 >>::Pointer writer =
itk::ImageFileWriter< itk::Image<OutputDataType, 3 >>::New();
outputRAW->SetFileName("e:\\vol_and_raws\\big_wr.vol");
outputRAW->SetFileTypeToBinary();
outputRAW->SetHeaderSize(0);
outputRAW->SetFileDimensionality(3);
//outputRAW->SetDimensions( 0, 571 );
//outputRAW->SetDimensions( 1, 571 );
//outputRAW->SetDimensions( 2, 426 );
outputRAW->SetDimensions( 0, 2283 );
outputRAW->SetDimensions( 1, 2284 );
outputRAW->SetDimensions( 2, 2304 );
outputRAW->SetPixelType(itk::ImageIOBase::SCALAR);
outputRAW->SetNumberOfComponents(1);
writer->SetFileName(outputRAW->GetFileName());
writer->SetImageIO(outputRAW);
writer->UpdateOutputInformation();
writer->SetInput(reader->GetOutput());
writer->SetNumberOfStreamDivisions( 300 );
system("PAUSE");
try
{
writer->Update();
}
catch( itk::ExceptionObject & err )
{
std::cerr << "ExceptionObject caught !" << std::endl;
std::cerr << err << std::endl;
return EXIT_FAILURE;
}
system("PAUSE");
return EXIT_SUCCESS;
}
--
View this message in context: http://itk-users.7.n7.nabble.com/Working-with-big-dataset-tp33564.html
Sent from the ITK - Users mailing list archive at Nabble.com.
More information about the Insight-users
mailing list