[vtkusers] vtkImageImport Segfault

Amy Squillacote amy.squillacote at kitware.com
Tue May 31 10:29:59 EDT 2005


Did you try using the SetHeaderSize method in vtkImageReader2 (the 
superclass of vtkImageReader)?  I know it isn't just specifying a number of 
bytes to read, but using that and the SetDataExtent method (also in 
vtkImageReader) should do the right thing.

- Amy

At 10:15 AM 5/31/2005, Randall Hand wrote:
>Ok, I'm looking at this now (computers are finally back online :) ), and I 
>can't figure out how to set the raw number of bytes to read.  I see 
>SetDataVOI, but nothing to "bypass" that and specify a number of bytes.
>
>On 5/27/05, Mathieu Malaterre 
><<mailto:mathieu.malaterre at kitware.com>mathieu.malaterre at kitware.com> wrote:
>Randall,
>
>         Hum I believe you can read those bytes but never use it... Could you
>try to read 3,840,384,800 bytes + 4 but set properly the dimension. If
>you are lucky enough no test is done to check consistency of datasize
>and dimension of data.
>
>My 2 cents,
>Mathieu
>
>Randall Hand wrote:
> > Well, I have an addition 4 bytes at the end of the file to skip as
> > well.. I suppose I could postprocess & write a new file without these
> > final 4 bytes, but that's gonna be pretty wasteful of disk space.  Is
> > there a way to skip them?
> >
> >
> >
> > On 5/27/05, *Mathieu Malaterre* 
> <<mailto:mathieu.malaterre at kitware.com>mathieu.malaterre at kitware.com
> > <mailto: mathieu.malaterre at kitware.com>> wrote:
> >
> >     Randall,
> >
> >             Could you instead give vtkImageReader a try. Just specify
> >     the lenght of
> >     data you want to read: 3,840,384,800 bytes. By default vtkImageReader
> >     start reading from the end. Thefore you are garantee to skip a
> >     header if
> >     any (4 bytes in your case apparently).
> >
> >     HTH
> >     Mathieu
> >
> >     Randall Hand wrote:
> >      > I'm attempting to load a simple "Brick of Bytes (BoB)" format
> >     file into
> >      > VTK.  It is 2191x2191x800 unsigned chars (3,840,384,800 bytes).
> >     With 4
> >      > bytes at the beginning that I have to skip (Gotta love fortran).  My
> >      > code is like the following:
> >      >
> >      >     if (stat(argv[1], &file_info) == -1) {
> >      >         perror("Unable to stat file!\n\t");
> >      >         return -1;
> >      >     }
> >      >     fptr = fopen(argv[1], "r");
> >      >     if ((data = (char*)malloc(file_info.st_size)) == NULL) {
> >      >         perror("Unable to allocate memory!\n\t");
> >      >         return -1;
> >      >     }
> >      >     dataptr = data;
> >      >     fread(dataptr, 1, 4, fptr);
> >      >     dataptr += 4;
> >      >     printf("\n\n");
> >      >     for(int i=0; i<xdim; i++) {
> >      >         fread(dataptr, ydim,zdim,  fptr);
> >      >         dataptr += (ydim * zdim);
> >      >     }
> >      >
> >      >     vtkImageImport *import = vtkImageImport::New();
> >      >     import->AddObserver(vtkCommand::ProgressEvent, progress);
> >      >     import->SetDataScalarTypeToUnsignedChar();
> >      >     import->SetNumberOfScalarComponents(1);
> >      >     import->SetWholeExtent(1, xdim-1,
> >      >                            1, ydim-1,
> >      >                            1, zdim-1);
> >      >     import->SetDataExtentToWholeExtent();
> >      >     import->SetImportVoidPointer(data + skip);
> >      >
> >      >     vtkDataSetWriter *writer = vtkDataSetWriter::New();
> >      >     writer->SetInput(import->GetOutput());
> >      >     writer->SetFileName("resulting.vtk");
> >      >     writer->Write();
> >      >
> >      >
> >      > When I run this, however, the output VTK file only contains the
> >     following:
> >      > # vtk DataFile Version 3.0
> >      > vtk output
> >      > ASCII
> >      > DATASET STRUCTURED_POINTS
> >      > DIMENSIONS 2191 2191 800
> >      > SPACING 1 1 1
> >      > ORIGIN 1 1 1
> >      >
> >      > No data is actually written to the file.  When I try to connect
> >     this to
> >      > a rendering pipeline or start querying the resulting vtkDataSet for
> >      > properties (Scalar ranges, number of points, etc) I get strange
> >     results
> >      > and eventually I get Segfault/Core dumps.  Often times the 
> number of
> >      > points listed comes out as a large negative number, instead of the
> >      > 3.8bil that it should be.
> >      >
> >      > A stack trace of the core dumps only reveals this:
> >      >
> >      > [8:50:48am]% dbx imageimport
> >      > dbx version 7.3.4 (86441_Nov11 MR) Nov 11 2002 11:31:55
> >      > Core from signal SIGSEGV: Segmentation violation
> >      > (dbx) where
> >      >
> >      > Thread 0x10000
> >      >  >  0 vtkDataArrayTemplate<unsigned
> >     char>::ComputeScalarRange(int)(this
> >      > = 0xf4eb83c0, comp = 0)
> >      >
> > 
> ["/viz/home/rhand/src/ezViz/Utilities/VTK/Common/vtkDataArrayTemplate.txx":644,
> >      > 0x85f2758]
> >      > (dbx)
> >      > (dbx) quit
> >      >
> >      >
> >      >
> >      > --
> >      > Randall Hand
> >      > <http://www.yeraze.com>http://www.yeraze.com
> >      >
> >      >
> >      >
> > 
> ------------------------------------------------------------------------
> >      >
> >      > _______________________________________________
> >      > This is the private VTK discussion list.
> >      > Please keep messages on-topic. Check the FAQ at:
> >     <http://www.vtk.org/Wiki/VTK_FAQ>http://www.vtk.org/Wiki/VTK_FAQ
> >      > Follow this link to subscribe/unsubscribe:
> >      > 
> <http://www.vtk.org/mailman/listinfo/vtkusers>http://www.vtk.org/mailman/listinfo/vtkusers 
>
> >
> >
> >
> >
> > --
> > Randall Hand
> > <http://www.yeraze.com>http://www.yeraze.com <http://www.yeraze.com>
>
>
>
>
>--
>Randall Hand
><http://www.yeraze.com>http://www.yeraze.com
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at: 
>http://www.vtk.org/Wiki/VTK_FAQ
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20050531/868faba2/attachment.htm>


More information about the vtkusers mailing list