Week 3

Create an application using ImageVision operators

To see if we can use the ImageVision library with its operators, we had to develope an application. The application is written in C++ on IRIX 6.3.
The application is splitted into three source files plus a header and a make file. [Download (TGZ, 4kB)]

There is not much to say about the Makefile. It simply compiles the three object files and links all together to get the application view_test.
The header file contains includes which were used by all sources, global constants and prototypes.
The file view_main.cc contains the main() function. In main() we open an image file (name is taken from command line), set up the viewer window and process the X11 events to call the IL operators. After receiving the quit message we cleanly close the viewer and free the display.
The file view_ilop.cc contains the IL operator calls only. It uses getValue() from view_tool.cc to prompt the user for arguments of the respective operator.
The file view_tool.cc contains support functions for main() and the operator calls. There is a function to save the current view to a file "viewer.sgi": saveImage(). Another one prepares and sets the window title (and cleanly frees the old one): updateTitle(). The third is the above mentioned getValue(). It prompts for a float value on stdin. If it gets nonsense it returns the default value. helpOut() simply prints out a keymap. Finally allocCMem() allocates a specified amount of memory from the system and clears it.

... some problems appeared ...

Main Perceptions:

  1. The images doesn't contain desired data only. That means bones of the cervical spine, the features of which we had to discover. But they contain lots of noises, that would mean potential trouble to the feature extraction of the cervical spine shown by the image.
  2. The desired data in the image generally weren't enough contrasting to the rest of the image data. Of course increasing the contrast or sharpen the needed structures intensifies the noises in the image too.
  3. Trying to get rid of these noises generally takes lots of essential information from the image. Especially Threshholding and HistScaling removed some structures that were needed to recreate some general features of the alignment of the cervical spine.

While trying the functions of the library we found the fourier transformation and related functions. The lack of knowing its effect on images was bridged by trying.
An interresting effect appeared after applying a gauss filter algorithm after fourier transformation on an image. The reversed gauss filtered image showed the relevant parts of the images a little seperated from the other parts.
To find these effect we wrote another application, even in C++ and on IRIX6.3.
This application is splitted into 3 source files and a Makefile [Download (TGZ,5.5kB)]

The Makefile does the same as the one for the application above. Compiling the object files and linking them together.
For the Viewer of this application I had to write my own class. That was necessary to provide the application with some more function in its viewer. The related files are myViewer.h and myViewer.cc.
The file View.cc contains the main() function. main() opens an image, given to the programm via command line, sets up the viewer and process the X11 events to call some operations. The quit message results in closing the viewer and free the display. The related header file is View.h. It includes the prototype for some functions necessary especialy for this application.
The file myfunc.cc contains the functions, the prototypes of which are given in View.h and myfunc.h. Additionally myfunc.h contains the includes needed by myfunc.cc.

Functions in myfunc.cc are:
saveImage() saves the specified image with the given name and extension.
getValue() is a copy of the function of the application view_test, see above.
int save_window() saves the actual windows context as an image in TIF format. The image will be saved numerated. It returns the number that follows the used one.
save_param() saves the set of parameters that were used to produce the actual displayed images. The set will be saved numerated with the given number.
save_imgs() saves a number of last added images. The images will be saved numerated with the given number.
The programm produces a set of images with a related set of parameters that should help to optimize the used values to get best results. For Example it produced these sets of parameters and images.

[startpage] [project part 1] [project part 2] [week 1] [week 2] [week 3] [week 4] [week 5] [week 6] [week 7] [week 8] [week 9] [week 10] [week 11] [References]

Because english is not the native language of the authors, we apologize for any inconvenience.

© 1998 by Matthias Kraft & Gesine Schröter;
EMail to: M.Kraft@fhtw-berlin.de & g.schroeter@fhtw-berlin.de
Last changed: Sunday, 08-Feb-2009 12:42:19 CET