ILController

DESCRIPTION

This is the ImageVision Library (IL) controller module. It is not intended to be used in isolation but rather as an alternate executable for a user-defined IL chain.

An IL chain is a tiled image processing operation that exists in a single UNIX process (compared to the multiple processes that Explorer maps typically use). An IL chain uses a pull model of execution that only processes the image tiles necessary to compute the output; if only a small part of the image is to be displayed, the IL chain can perform significantly less work than the equivalent Explorer map. Independent of the output size, an IL chain may use a fraction of the temporary storage of an Explorer map, as it processes images in tiles, rather than creating temporary storage the size of each image.

Because the IL execution model and temporary storage allocation are radically different than the corresponding Explorer mechanisms, an Explorer map must undergo special conversion to execute as an IL chain. The ILController module is written to process operations in any IL chain, as well as to handle the interface between Explorer and the IL chain. All that is left is for you to specify the contents of your IL chain so it may execute within the ILController.

The following are the necessary steps to create an IL chain that uses the ILController module:

1) Create a map using the relevant IL related modules. These include most *Img modules from the Explorer Librarian (but note that despite its name, ZoomImg is not an IL module), as well as any module(s) you write based on the ImageVision library. Pfuncs are not allowed between modules in an IL chain.

2) Select the modules to be combined into an IL chain. No non-IL modules should be selected.

3) Group the selected modules, promote the necessary input, parameter, and output ports, and edit the group's control panel as desired. Note that the input and output port names of the modules must not be changed during grouping.

4) Save the group as a map file, for instance foo.map. If the X resource Explorer.saveImagingProcess is True, a corresponding module resource file foo.mres is created in addition to the foo.map file. If the X resource Explorer.saveImagingProcess is False, you will be prompted as to whether to 'Proceed to save as an imaging process?' Clicking on OK will save the corresponding module resource file foo.mres.

This new module is the IL chain using the ILController executable. If you do not see the popup and you have Explorer.saveImagingProcess set to False, or equivalently if no module resource file is written for the IL chain, then you have included a non-IL module in the chain. Check your ILModules.config file (see point 6 below).

To suppress the dialog: if the X resource Explorer.saveImagingProcess is True and if the X resource Explorer.saveImagingDialog is False, the mres will be created without a dialog prompt.

5) Launch the module resource file just created (with suffix .mres) into the map editor and the IL chain will be executed using the pull model of the IL in a single process. You can check that the IL chain was invoked by using the shell command ps -ef and looking for the name of the IL chain module.

If you wish to incorporate into an IL chain any module other than the standard Explorer IL modules, you must take additional steps, as follows:

6) Edit one of the IL configuration files to add the name(s) of your new IL module(s). You may edit either the global configuration file $EXPLORERHOME/lib/ILModules.config, or the local file ~/ILModules.config in your home directory. Add a single line for each module giving the module's name (no filename suffix or spaces allowed). Only modules based on the IL may be added.

7) Edit the file userOper.C in the ILController source code distributed with Explorer. Follow the instructions there on adding a new operator. Make sure to add the setInput_* and setParam_* input functions related to input ports and parameter values. These functions define the names of the input ports in the IL chain. The output port name "Img Out" is assumed.

8) Build a new ILController module and install it into the default search path of the Explorer session you are running. See the Module Writer's Guide for more information on building and installing a module.

9) After following steps 6-9, proceed with steps 1-5 above.

INPUTS

Port: Dummy Input
Type: Lattice
Constraints: 1..3-D.

WIDGETS

OUTPUTS

Port: Dummy Output
Type: Lattice
Constraints: 1..3-D.

Port: Dummy Output2
Type: Pick

PROBLEMS

This module does not work in isolation. Only modules related to the ImageVision Library can be incorporated into an IL chain using the ILController.

At the moment, the .mres and .map files of the user-defined IL chain must reside in the same directory.

Parameter functions (pfuncs) and parameter-to-parameter wiring within the grouped modules are ignored in forming the IL chain. You will be warned with a popup if such a feature is being omitted from your IL chain.

Port names must be matched exactly. Each IL operator (including the ones you define in your userOper.C file) has pre-specified input and output port names. These names must be the same ones used in the IL chain. The only acceptable output name is "Img Out" which implies that there is no way to make an IL chain with two output ports.

SEE ALSO

The grouping chapter of the User Guide and all the ImageVision Library related modules (ends with Img)
[ Documentation Home ]
© The Numerical Algorithms Group Ltd, Oxford UK. 1996