[vtkusers] Loading a large dataset (with vtkImageReader2 and vtkImageCast)

arturex arturo_caissut at tiscali.it
Sat Jan 22 08:30:26 EST 2011


Hi all,

I have some problems managing a large set of raw pics, exactly 4759 
512x512 images.
Since I couldn't load the whole set with vtkImageReader2 (an ugly crash 
would happen) I decided to read the set 100 pics at a time, and then 
recombine the datase by a vtkImageCast filter. The question is, how can 
I set vtkImageCast filter in order to rebuild the volume represented by 
the dataset I am referring into? Is it a better way to do it (I'm 
working in Java, this is why I chose vtkImageCast to obtain an unsigned 
short image)?

What I had in mind was something like this:


vtkImageReader2 reader = new vtkImageReader2();

        reader.SetDataByteOrderToLittleEndian();
        reader.SetFilePrefix(PATH_TO_LARGE_DATASET + filePrefix);
        reader.SetFilePattern("%s%d.raw");
        reader.SetDataSpacing(0.45703125, 0.45703125, 0.6); //Or some values
depending on the set

        vtkImageCast img = new vtkImageCast();
        vtkImageData image = new vtkImageData();
        img.SetInputConnection(reader.GetOutputPort());
        img.SetOutputScalarTypeToUnsignedShort();
        img.SetOutput(image);

        int numberOf100Subsets = (int) NumberOfImages / 100;
        int numberOfLeftSlices = (int) NumberOfImages % 100;

        double origin[] = new double[3];


        if (numberOf100Subsets > 1) {
            for (int i = 1; i < numberOf100Subsets + 1; i++) {
                reader.SetDataExtent(0, 511, 0, 511, 100 * (i - 1) + 1, 100
* i);
                reader.Update();
                if (i == 1) {
                    origin = reader.GetDataOrigin();
                }
                System.out.println(100 * i + " images loaded");
                img.GetOutput().SetOrigin(reader.GetOutput().GetOrigin());
// Maybe this is wrong?
            }

            reader.SetDataExtent(0, 511, 0, 511, (100 * numberOf100Subsets +
1), 100 * NumberOf100Subsets + numberOfLeftSlices);
            reader.Update();
            System.out.println(100 * numberOf100Subsets + numberOfLeftSlices
+ " images loaded");
        } else {
            reader.SetDataExtent(0, 511, 0, 511, 1, NumberOfImages);
            reader.Update();
        }


-- 
View this message in context: http://vtk.1045678.n5.nabble.com/Loading-a-large-dataset-with-vtkImageReader2-and-vtkImageCast-tp3352813p3352813.html
Sent from the VTK - Users mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110122/e4b66039/attachment.htm>


More information about the vtkusers mailing list