[Insight-developers] Questions about ROI implementation

Stephen R. Aylward aylward@unc.edu
Tue, 22 Apr 2003 18:34:21 -0400


What you are discussing sounds much like spatialObjects.

1) There is an IsInside boolean function for each object as well as for 
composite objects.   Similarly, a function exists to return the bounding 
box of an object or a composite object.

2) To view segmentations simultaneously, one major issue is maintaining 
transforms between them.   That was the motivation for spatial objects - 
they existing within physical coordinates - they are independent 
(although they have knowledge of) the data from which they were 
recorded.   So, if different resolution scans are acquired 
simultaneously, a spatialObject defined using one dataset still can be 
directly applied to the dataset at the other resolution since physical 
space is maintained.

We're happy to work with you on this.  Sounds quite related.

Thanks,
Stephen

kent williams wrote:
> Well, we have 2 problems  -- the specific one, which is reading in our
> alread-existing ROI files, which are essentially closed or open loops in
> reference to a particular brain scan, and the general one.  Generally what
> we need to know is this:
> 
> Is a particular point inside or outside the ROI?
> What is the volume of the ROI?
> Visualization of the ROI, in conjunction with the corresponding brain scan.
> Manual creation and editing of the ROIis.
> Deriving ROIs from some combination of ITK processes.
> 
> Tomorrow (monday) we'll be having an internal meeting to try and decide what
> our departmental requirements will be, and then I'll consult around the ITK
> developers to try and satisfy those specific requirements and still
> implement something generally useful.
> 
> ----- Original Message -----
> From: "Stephen R. Aylward" <aylward@unc.edu>
> To: "Julien Jomier" <jjomier@cs.unc.edu>; <norman-k-williams@uiowa.edu>
> Sent: Saturday, April 19, 2003 10:55 AM
> Subject: Re: [Insight-developers] Questions about ROI implementation
> 
> 
> 
>>Hi,
>>
>>One point, ROIs should probably be as independent of any specific
>>spatialObject derivation as possible.   While the one you describe is
>>well implemented as a blob spatial object, I think other derived types
>>of spatial objects may be ultimately useful.
>>
>>I am back in town and have email access.   Let me know if I can help,
>>
>>Stephen
>>
>>Julien Jomier wrote:
>>
>>>Hi Kent,
>>>
>>>I think BlobSpatialObject is what you need.
>>>A BlobSpatialObject consists of a list of points that describe the
>>
> boundary
> 
>>>of the blob.
>>>Adding and removing points should be easy (just adding/removing from the
>>>internal STL list).
>>>You can take a look at itkBlobSpatialObjectTest.cxx in the testing
>>>directory.
>>>One suggestion, I'll keep the slice-by-slice-ROI as a 3D Blob.
>>>
>>>Regarding your second point, you can read/write BlobSpatialObjects by
>>
> using
> 
>>>the itkSpatialObjectReader/Writer
>>>in Insight/Utilities/MetaIO/SpatialObject. If you need to add more
>>
> features
> 
>>>to BlobSpatialObject, i.e deriving this class, you may have to create a
>>
> new
> 
>>>MetaXXX and MetaXXXConverter.
>>>
>>>Let me know if I can help with this.
>>>
>>>Julien
>>>
>>>
>>>
>>>>-----Original Message-----
>>>>From: insight-developers-admin@public.kitware.com
>>>>[mailto:insight-developers-admin@public.kitware.com] On
>>>>Behalf Of Kent Williams
>>>>Sent: Wednesday, April 09, 2003 4:29 PM
>>>>To: Insight Developers List
>>>>Subject: [Insight-developers] Questions about ROI implementation
>>>>
>>>>
>>>>I'm supposed to implement an ROI (Region of Interest) type in
>>>>ITK.  ROIs  are
>>>>used in Brains2 to outline brain features, and are most often
>>>>manually
>>>>traced, slice by slice, then combined to define a solid.  So
>>>>basically they
>>>>are a list of 2D points in a slice.
>>>>
>>>>I have 2 basic questions about implementing ROIs:
>>>>
>>>>1. I'll derive them from itk::SpatialObject, but is there a
>>>>subclass of
>>>>itk::SpatialObject that would be more apropos?  Looking through the
>>>>documentation and source code, I'm not picking up many clues.
>>>>It looks like
>>>>it's straightforward to read in the ROI file, create
>>>>itk:SpatialObjectPoint
>>>>objects and add them as children.
>>>>
>>>>It also looks as though deriving from a 2D BlobSpatialObject
>>>>would be close;
>>>>the main behavior we need to add for our purposes is a way to
>>>>add and remove
>>>>points, for interactive tracing.
>>>>
>>>>2. Is there any class I should inherit from for reading and
>>>>writing a file of
>>>>our ROI files? I know about ImageIO but I'm not seeing any
>>>>similar framework
>>>>for reading and writing spatial objects.  Should there be
>>>>such a framework?
>>>>
>>>>_______________________________________________
>>>>Insight-developers mailing list Insight-developers@public.kitware.com
>>>>http://public.kitware.com/mailman/listinfo/insight-developers
>>>>
>>>
>>>
>>>_______________________________________________
>>>Insight-developers mailing list
>>>Insight-developers@public.kitware.com
>>>http://public.kitware.com/mailman/listinfo/insight-developers
>>
>>
>>--
>>===============================================
>>Dr. Stephen R. Aylward
>>Assistant Professor of Radiology
>>Adjunct Assistant Professor of Computer Science
>>http://caddlab.rad.unc.edu
>>aylward@unc.edu
>>(919) 966-9695
>>
>>
> 
> 


-- 
===============================================
Dr. Stephen R. Aylward
Assistant Professor of Radiology
Adjunct Assistant Professor of Computer Science
http://caddlab.rad.unc.edu
aylward@unc.edu
(919) 966-9695