[Insight-users] Incremental Updates
Luis Ibanez
luis.ibanez@kitware.com
Fri, 21 Mar 2003 14:43:35 -0500
Hi Ron,
1) We are using vtkVideoSource succesfully in
another project in order to feed video data
into ITK. (using the VTKImageToImage adaptor).
That should work ok for you. Just keep in mind
that the pipeline is driven by demand,
and not by pushing data. So your
application has to have a loop requesting
images every X secons (or milliseconds)
in order to update the pipeline.
2) I would suggest to preallocate the full 3D
image that you expect to fill up. That is,
set the number of Z slices to the expected
US images to be captured. And progresively
copy data from your video source into the
correspondig slice of the 3D data set.
3) I'm affraid that the pipeline will not be
easy to use for just computing the incremental
changes. Every filter in the pipeline will
assume that the 3D image is an entirely new
data set.
The only option is if your processing is
done on each slice independently.... but
this will put you in the old approach of
doing 3D segmentation by stacking 2D
segmentations.
4) In practice it depends on what type of filters
do you want to apply.
For example, you could manage to run a
Region growing algrithm only on the region where
the new slice(s) were added, and keeping previos
segmentged regions...
It will require some coding... but it should be
feasible.
5) Do you want this segmentation to work in real
time ?
That is, as each new slice arrive, do you need
to get the segmentation updated before the next
video image gets there ?
6) One option that comes to mind is to segment
every slice using 2D level sets. For example
GeodesicActiveContours. then use the final
level set of slice N as the initial level set
for slice N+1. Since level sets are robust
to topological splits and merges, they would
probaly do the right thing when going through
vascular branch points in the artery.
I'm assuming that you move the US probe along
the axis of the artery, so each indivicual image
shows the artery as an almost circular object....
is this the case ?
Regards,
Luis
----------------------------------------------------
Ron Inbar wrote:
> Hi Luis,
>
>
>>Could you describe more details about the filter you
>>have in mind?
>
>
> Yes. I was thinking about using a frame-grabber to incrementally build a
> volume from acquired video frames, and I'd like to see the results of the
> segmentation on the fly. To be more specific, I want to segment
> intra-vascular ultrasound (IVUS) images of a coronary artery.
>
> I saw that VTK has a class called vtkVideoSource (with several
> hardware-specific subclasses) that is supposed to do just that, but I didn't
> exactly understand how it fits into the pipeline framework.
>
>
>>I'm assuming that by 'adding' you mean something
>>like concatenating image regions, not cumulating
>>values in the same initialy defined image region.
>
>
> Yes, exactly.
>
>
>>This can be done at the application level by using
>>events and observers, but cannot be done using the
>>current built-in pipeline mechanisms.
>
>
> I'm aware of that, and I don't see any particular problem with implementing
> it at the application level.
>
> What I'm concerned about is efficiency: I don't want to process the existing
> data over and over again as new data are concatenated to the region;
> instead, I would like each filter to use the data in its current
> BufferedRegion as it computes the new, larger output. The problem with this
> requirement, as far as I see, is that generally when a filter is asked to
> update its output it has no knowledge about the nature of the change in its
> input; it can't tell, for example, whether it was re-wired to a new source
> altogether, or whether new data were simply concatenated to the existing
> data, as is the case in my application. That's why I said I'm willing to
> write my own filters: I could make these filters take a "hint" from the
> application programmer, telling them that the input was just extended. If
> they don't receive this hint, they would just re-compute everything from
> scratch, but if they do, they will try to avoid redundant re-computation.
>
> If you can think of a way to achieve the same effect using existing ITK
> components, it would be of great assistance.
>
> Sincerely,
>
> Ron
>
>
> This e-mail message has been sent by MediGuide
> and is for the use of the intended recipients only.
> The message may contain privileged or confidential information .
> If you are not the intended recipient you are hereby notified that any use,
> distribution or copying of this communication is strictly prohibited,
> and you are requested to delete the e-mail and any attachments
> and notify the sender immediately.
>