Proposals:IDL Interface
Background
Creating an Interface between ITK and IDL
The purpose of this effort is to make possible to
- Use ITK functionalities from IDL
- Use IDL functionalities from C++ programs that use ITK
Features
Functionality Wish List
Please help us craft the interface to make sure that it will be useful for your applications. Add to the list below your ideas on things that you will like to have available.
Filtering
- Smoothing filters
- Anisotropic diffusion
- Antialising
Image Segmentation
- Region Growing
- Level Sets
- Statistical Classification
Image Registration
- Multi-Modality
- 2D / 3D
IO
- DICOM Reading / Writing
Licensing
- Open Source
Using ITK from IDL
The main question to address here is the level of granularity at which ITK will be available from IDL. The main two options are
- Wrap ITK as we have done for other languages (Tcl, Python) by exposing most of the C++ classes
- Wrap ITK pipelines that are customized for specific problems (e.g. MRI-CT 3D registration, CT Segmentation)
In the first case, a multitude of ITK classes will be exposed in IDL. These classes will be exposed in such a way that they can both be used from the procedural IDL interface and their more object-oriented interface.
In the second case, the users community will identify specific needs for which we will put together ITK pipelines. These pipelines will be wrapped in the form of a single procedural call. This approach requires a lot more of manual crafting and fine tunning on the pipelines, and focuses more the specific applications for which ITK will provide useful functionalities in IDL.
Using IDL from ITK
In this interface, IDL data containers will be interfaced to ITK objects so that they can be passed to a pipeline in an application based on ITK. For example, a bridge for converting IDL images to ITK image and back could be put in place.
Time Frame
Although there are no hard deadlines defined for this effort, we anticipate that the activity will unfold during the following six months.
A rough schedule will include
- Gathering feedback (requirements, wish list) from the IDL and ITK communities
- Experimenting with interface options
- Proposing a design of the interface
- Implementing the interface
- Deploying continuous testing