[vtk-developers] How to contribute a change to vtkMetaImageReader ?

Karthik Krishnan karthik.krishnan at kitware.com
Wed Jun 2 12:06:46 EDT 2010


On Tue, Jun 1, 2010 at 1:52 PM, José Felipe Vargas Casadiego <
vargascasadiego at gmail.com> wrote:

> Hello,
>
> I'll try to be clearer, but I'm under the impression that what I did is
> exactly what you fear.
>
> I don't use the MetaIO/Utilities "Read" method but rather an untouched copy
> of the read methods contained in vtkImageReader, which allow to take a
> volume of interest out of a big file without having to load it up into
> memory. So in a way yes, I bypassed the Utilities/MetaIO library's read
> methods...
>
> I'm sending as an attachement the code (name's been changed), maybe you'd
> like to take a look. In any case I'm under the impression that in order to
> be able to propose this sort of modification to vtk, I'd have to modify the
> Utilities/MetaIO library. Would that be the case ?
>

Thanks Jose:

I was hoping however that you'd have used the ROI API in MetaIO, already
available for streaming, instead of bypassing the library and adding your
own seek calls. The methods in question were added last year to the metaio
library by Brad Lowecamp.

-------
$ git log Utilities/vtkmetaio/metaImage.h

    r775 aylward | 2009-02-15 T 23:53:42.473895Z
    ENH: Enhancements to ROI/streaming provided by Brad Lowekamp at NLM
-------

Specifically the API ReadROI(..) should be used. Something like

  this->MetaImagePtr.ReadROI( indexMin, indexMax,
                             this->FileName, true, data->GetScalarPointer(),
m_SubSamplingFactor))

This is already employed in ITK's meta image reader to support streaming
Read/Write. VTK's reader/writer is still a bit behind.

You would compute indexMin and indexMax from the requested region. That way,
no API need be added to the class. From a user's standpoint, code would look
like :

  vtkMetaImageReader *r = vtkMetaImageReader::New();
  r->SetFileName( "foo.mha" );
  r->GetOutput()->SetExtent( roiExtent );
  r->Update();

I would encourage you to take a look at itkMetaImageIO.cxx (
http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/IO/itkMetaImageIO.cxx?annotate=1.106&root=Insight)
to see how we invoke the needed methods in the MetaIO library.

If you send us such a patch, we could add it to vtkMetaImageReader directly.


Thanks
--
karthik


> Thanks.
>
>
> 2010/5/31 Karthik Krishnan <karthik.krishnan at kitware.com>
>
> On Mon, May 31, 2010 at 6:20 PM, José Felipe Vargas Casadiego <
>> vargascasadiego at gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I needed to read .mhd files and be able to take volumes of interest out
>>> of them. With vtkMetaImageReader I could read these files and with
>>> vtkImageReader I could obtain the volumes of interest (VOIs) at the expense
>>> of having to manually configure the reader. Hence I decided to combine the
>>> functionality of both in a new reader, 'till now simply called
>>> vtkMyMetaImageReader, inheriting from vtkImageReader2. With it it's possible
>>> to automatically read a .mhd file and then read subvolumes of it.
>>>
>>> I'd like to know if it'd be possible to add this to vtk. I've checked the
>>> website and I wasn't able to find a proper procedure to do it.
>>
>>
>> Jose:
>>
>> Thanks.
>>
>> If you are looking for an image based file format in VTK that already
>> supports Streaming Input, please take a look at vtkXMLImageDataReader.
>>
>> The API is
>>   vtiReader->GetOutput()->SetExtent( requestedExtent );
>>   vtiReader->Update();
>>
>> ----
>>
>> Could you please send us the patch.
>>
>> Have you added the functionality to the MetaIO (third party) library
>> itself ?
>>
>> It sounds from your email (please correct me if I'm wrong), that you've
>> bypassed the Utilities/MetaIO library's read methods. Do you merely use them
>> to read in the header and then read in the bulk data using your own
>> file-seek methods. If so, it would be very hard for us to support that. The
>> MetaImage library allows one to store the image in a variety of ways (as
>> lists of 2D stacks, compressed with zlib, simple raw), and having the API
>> work for only one case may not be possible.
>>
>>
>> Thanks
>> --
>> karthik
>>
>>
>
>
> --
> The era of procrastination, of half-measures, of soothing and baffling
> expedients, of delays, is coming to its close. In its place we are entering
> a period of consequences
> -Winston Churchill
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtk-developers/attachments/20100602/6ae9942a/attachment.htm>


More information about the vtk-developers mailing list