[Insight-users] using itkStreamingImageFilter with python

Jon Moody jonathan at molecularimaging.com
Tue Mar 1 11:29:39 EST 2005


Hi,

I'm trying to downsample a large CT file (4.5 GB) which is too large to
reside in memory, by combining itkStreamingImageFilter with a single
level of itkRecursiveMultiResolutionPyramidImageFilter and a shrink
factor 2.

Since I want to do it in Python, I wrapped itkStreamingImageFilter and
itkImageRegionMultidimensionalSplitter.  The python script (see below)
works for small image files, but for a big CT file (4.5 GB), it quits
with "MetaImage: Read: Cannot open data file" or "nrrdRead: trouble
reading NRRD file; file too large" (I tried both MetaImage and NrrdIO
input file formats).

I couldn't find many examples of using itkStreamingImageFilter (just a
couple of tests in Testing/Code/BasicFilters).  Is there a way to get
this script to work?

#
# using itk to down sample a large uCT image
#

from InsightToolkit import *

from sys import argv

inFile          = argv[1]
outFile         = argv[2]
numberOfStreams = int(argv[3])

reader = itkImageFileReaderSS3_New()
writer = itkImageFileWriterUS3_New()

reader.SetFileName( inFile )
writer.SetFileName( outFile )

inputCast  = itkCastImageFilterSS3F3_New()
filter  = itkRecursiveMultiResolutionPyramidImageFilterF3F3_New()
outputCast = itkRescaleIntensityImageFilterF3US3_New()

outputCast.SetOutputMinimum(      0  )
outputCast.SetOutputMaximum(  65535  )

numberOfLevels     = 1
shrinkFactor       = 2

filter.SetNumberOfLevels( numberOfLevels )
filter.SetStartingShrinkFactors( shrinkFactor )

inputCast.SetInput( reader.GetOutput() )
filter.SetInput(  inputCast.GetOutput() )

stream = itkStreamingImageFilterF3F3_New()
splitter = itkImageRegionMultidimensionalSplitter3_New()
stream.SetInput(  filter.GetOutput(0)  )
stream.SetNumberOfStreamDivisions( numberOfStreams )
stream.SetRegionSplitter( splitter.GetPointer() )
outputCast.SetInput( stream.GetOutput() )

writer.SetInput(      outputCast.GetOutput()  )

writer.Update()


--

Thanks,

Jon






More information about the Insight-users mailing list