[Insight-developers] Origin information for slices.

Miller, James V (Research) millerjv@crd.ge.com
Thu, 24 Oct 2002 11:13:30 -0400


ITK doesn't handle a MxNx1 3D image terribly well.  For any neighborhood
based filter, every pixel ends up being a boundary condition. Other filters
assume that there will be more than one slice in order to calculate derivatives
in Z.

It probably makes sense to be able to record where a sub-image is relative to 
a higher dimensional space: for a volume you may want to know what volume it is
in a time series?,  for a 1D image you may want to know that row it corresponded to, ...

This is tricky because a 1D image may be a row or a column of a 2D image, etc.

To date, we have been working on the premise that these issues are best handled
at the application level.  We could keep a "higher dimensional" origin and spacing
to supplement the current origin and spacing to indicate where this subimage is 
in a larger image. I don't think we can use increase the size of the origin and 
spacing because you need to know what dimensions are used by the current image

For instance, a 1D image that is a column from a 2D image would need different parts
of the origin and spacing as a 1D image that is a row of a 2D image.

Jim




> -----Original Message-----
> From: Mark Foskey [mailto:mark_foskey@unc.edu]
> Sent: Thursday, October 24, 2002 10:39 AM
> To: insight-developers
> Subject: [Insight-developers] Origin information for slices.
> 
> 
> In an ITK image, the origin has the same dimensionality as the image. 
> If, as is often the case, the image is a 2D slice of a 3D 
> volume, then 
> that really doesn't make sense.  We especially need the third 
> coordinate 
> if we intend to reconstruct 3D image from a collection of slices.
> 
> One possibility is to insist that slices be loaded as M x N x 1 3D 
> images.  Are there any appreciable disadvantages to that?  
> Will we ever 
> want to run a 2D filter on a slice, but simultaneously have 
> information 
> about where that slice lies in a volume?
> 
> Otherwise, we need a sensible way for m_Origin to have a different 
> number of entries than the dimensionality of the image.  And 
> we need to 
> include the possibility of higher dimensional images too.  We 
> might have 
> a 3D or 2D slice of a movie.  Perhaps the easiest approach is 
> to store 
> the origin as a std::vector<double>  and let there be a 
> GetOriginDimensions() method that returns m_Origin.size().
> 
> What do people think?
> 
> -- 
> Mark Foskey    (919) 843-5436   Computer-Aided Diagnosis and 
> Display Lab
> mark_foskey@unc.edu             Department of Radiology, CB 7515, UNC
> http://www.cs.unc.edu/~foskey   Chapel Hill, NC  27599-7515
> 
> _______________________________________________
> Insight-developers mailing list
> Insight-developers@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-developers
>