parametric data, we have opted for a dataflow solu-
tion. In our ITKBoard model, we deem this appropri-
ate because we are already using a dataflow model
for image data, and because it avoids some of the
problems mentioned above in treating parameters as
global variables. First, with a visual dataflow lan-
guage, there is no need to provide global names for
the dataflow parameters; second, the dataflow connec-
tions make apparent any dependencies between pa-
rameters, and who is responsible for setting the data
values, by distinguishing between input and output
parameters—more on this soon; third, with a com-
posite model, it is a relatively simple matter to choose
which internal parameters to expose at the composite
level, with external inputs mapping to internal inputs,
and internal outputs mapping to external outputs.
Perhaps the most interesting design choice in ITK-
Board has been to opt for a data-driven propagation
scheme for data parameters. Given that ITK already
supports a demand-driven model of computation for
image data, why not instead just go with the flow,
and make the update of parameters demand-driven as
well? There are three main reasons for making pa-
rameter updates data-driven.
The first reason is implementation biased—it is
simpler to extend ITK with a data-driven propagation
scheme for parameter updates. Whenever a parameter
is updated, we simply ensure that any downstream de-
pendants are immediately notified of the change, and
correspondingly updated. This mechanism works for
output parameters of a filter as well. Normally when
an ITK filter completes its (demand-driven) compu-
tation of its output image, the downstream filters are
notified of completion, so they may proceed with any
pending computation. In ITKBoard, our implemen-
tation simply catches this notification event, and up-
dates downstream parameters with the new output pa-
rameter values which can be gotten from the underly-
ing ITK filter, before proceeding with the interrupted
demand-driven computation downstream. If, alterna-
tively, we implemented demand-driven parameter up-
date, we would have to track when output parame-
ters are out-of-date, and this would presumably be
delegated to the ITK mechanism which is based on
checking whether the output images are out-of-date;
whatever the implementation trick used, the demand-
driven approach implies that requests for parame-
ter updates will trigger (potentially expensive) image
processing computations. With the data-driven ap-
proach, (cheap) parameter updates are propagated im-
mediately, and never trigger image processing with-
out a separate request for an up-to-date image.
The second reason for adopting the data-driven
scheme for parameter propagation is more user fo-
cused. Our scheme implies that all image process-
ing computations are driven by requests for up-to-date
images, and nothing else. These requests are propa-
gated upstream, and the state of computation is solely
determined by the current validity of image data and
the current thread of incomplete requests. In partic-
ular, a dependency of an input parameter on an up-
stream filter’s output parameter will not trigger com-
putation for the upstream filter, even if that filter is not
up-to-date.
The third reason for not applying the demand-
driven scheme to parametric data is to allow a richer
class of models, while still avoiding recursion caused
by cycles between image data and parameter depen-
dencies. In a standard demand-driven model, down-
stream output parameters cannot connect to upstream
filters without causing a feedback loop. By separat-
ing the image demands from the data-driven param-
eter updating mechanism, ITKBoard can handle such
dependencies. So, ITKBoard allows cyclic dependen-
cies that involve at least one image and one parame-
ter data dependency. ITKBoard does not allow cy-
cles of image dataflow, or of parameter dataflow; only
mixed cycles are allowed. ITKBoard provides built-in
support for iterative filters, so image feedback is not
needed for expressing repetitive processing.
Because the user interface gives visual cues about
which data is not up-to-date, and where parameter de-
pendencies lie, it is a simple matter for a user to ex-
plicitly request that an output parameter for a partic-
ular filter be brought up-to-date by requesting an up-
dated view of the output image for that filter. The
rationale for this is to give the user better control over
which parts of the model are actually re-computed
after changes are made, thereby avoiding potentially
expensive but unnecessary image processing. For
biomedical experimenters, we decided this finer gran-
ularity of control over where image processing occurs
was a worthwhile feature.
Input parameters can be set in a number of ways.
Unconnected parameters have a default value. Input
parameter pins are positioned along the top of the fil-
ter icon, and outputs at the bottom. Connections can
be made from either input or output pins to other in-
put pins. When a connection is made between two
input parameters, the downstream input parameter is
overridden by the value of the upstream input. For all
parameter connections, whenever the upstream value
is updated, the connected downstream value is corre-
spondingly updated. Users may directly override the
current value of an input parameter associated with a
filter; in this case, any downstream dependants will
be updated, but upstream parameters will retain their
old value—again, this gives experimenters some ex-
ITKBOARD: A VISUAL DATAFLOW LANGUAGE FOR BIOMEDICAL IMAGE PROCESSING
17