[Insight-developers] behavior of imagetoimagefilters

Lorensen, William E (Research) lorensen@crd.ge.com
Wed, 10 Apr 2002 23:38:36 -0400


Damion,
I just tried your CoreAtomImageTest. I added another Update on the filter. It only executed once.
You'll have to check the next element down in the pipeline.

There is a helper class in Testing/BasicFilters/itkFilterWatcher.h

It will setup the Start/End and Progress methods for a filter. It does a PrintSelf on Start and End.
It also reports the execution time.

Here's how you use it:
#include "itkFilterWatcher.h"
FilterWatcher filterWatch(yourFilterName);

I find it much easier to use this than explicitly creating the required events.

Bill

-----Original Message-----
From: Damion Shelton [mailto:dmshelto@andrew.cmu.edu]
Sent: Wednesday, April 10, 2002 11:14 PM
To: insight-developers@public.kitware.com
Subject: [Insight-developers] behavior of imagetoimagefilters


Hi,

I've run into an interesting/frustrating problem, and I'm hoping that I'm 
just misunderstanding how the pipeline is supposed to be used.

For background, I've written a program that does the following:

1) Load a meta image file (from Luis's brainweb data)

2) Find core atoms in this data - the code is very similar to the core atom 
test

3) Convert the core atoms to VTK unstructured grid points

4) Display the points, along with the image, in VTK

I'm using FLTK to provide a basic interface to interact with pipeline. 
There are several callbacks linked to Fl_Value_Input boxes to change 
parameters of the itkBloxBoundaryPointToCoreAtomImageFilter object in the 
pipeline, and an update button that calls the Update() method of the above 
filter. As long as I don't hit the update button, everything works as 
expected.

As I understand the pipeline, calls to the various Set() commands in the 
filter cause a modified flag to be set in the filter, ensuring that the 
output is updated when the Update() call propogates through the pipeline. 
Additionally, pipeline members that have not be modified are not 
re-executed.

This doesn't seem to be happening, though. First off, the initial execution 
of the pipeline, including all of the preliminary filtering + core atom 
detection takes approximately 20 seconds. After changing the filter 
parameters slightly (not enough to affect actual execution time), updating 
the filter requires more than a minute - again, if I'm understanding things 
right, the filtering done at the beginning should not be happening again, 
so the execution time, if anything, should be less.

In addition, without modifying any filter parameters, calling Update() on 
the filter seems to be causing the filter to execute (at least, something 
is happening). I'm not sure why this is happening, since intuitively 
"updating" something that hasn't changed shouldn't require any 
re-computation.

Any ideas what's going on? There may be a problem in 
itkBloxBoundaryPointToCoreAtomImageFilter, but I'm at a loss. It works fine 
when executed the first time.... perhaps I'm missing an important step 
though? Has anyone seen behavior like this with other filters?

Thanks,
-Damion-
_______________________________________________
Insight-developers mailing list
Insight-developers@public.kitware.com
http://public.kitware.com/mailman/listinfo/insight-developers