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:
- 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.
- 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.
- 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.
Solutions:
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