Course Home
Administration
Syllabus
References
Lecture Notes
Readings
Assignments
Projects
Resources


Comments? Idea?























































































































































































































































































































































A Generic image diffusion system

Final project by

Alexander Shapiro

shapiraa@cs.bgu.ac.il


Introduction

The goal of this project is developing interactive system that will allow a plug&play type of mechanisms
for image diffusion with built in input and output features for convenient production of results.
Implementation of several classical diffusion techniques. The system has to be written in Matlab.
"Plug&play type of mechanisms" means, no techniques for image processing will be hardcoded, but instead
modules system will be used, thus allowing users to add additional image processing functions to the program.

Approach and Method

First I needed to construct the framework - graphical user interface for loading and showing the images.
Then I needed to implement some basic image manipulations - enlarge/reduce, pan and restore original size
and position of the image. After I have a working framework, it is time to think about adding diffusion tools.
The project requires that Matlab will be used to code the entire system. So the diffusion function have to be
a Matlab's function. Because extrnal Matlab function are m-files, I needed a mechanism to discover such functions
and to attach them to the framework. So I've desided that every function that will be loaded as module has to be
prefixed with "mod_" string and has to include some configuration comment lines in its body. After all these are
done, I had to implement two diffusion functions and attach them as modules to the system.

Results



Using Matlab's built-in GUI constructor, I've created the simple interface.
Then added the logic behind the graphics, so it was possible to load images of different formats
and save them. Also I've coded the zoom, pan and reset action - allowing the desired image manipulations
Next, I've added the modules selection and processing panel:



Then I've created some sample function (m-file) and converted it to system module by giving it right name
and adding the configuration lines:



Now, when I had the module, I've attachet it to the framework:



To test the functionality of the system I needed the real diffusion modules. So I've implemented two diffusion
functions - Gaussian diffusion (linear, not preserving edges) and Anisotropic diffusion (non-linear, preserving edges)
that is based on the article written by Perona and Malik in 1990.
This is two images - left was diffused by Gaussian and right by Anisotropic diffusion



Both images are processed by appropriate modules, that were attached to the system.

Conclusions

The goal of the project is achieved - we have fully functional framework with graphical user interface
and plug&play modules for image manipulation and processing. The system architecture allows very simple
addition of new diffusion modules or conversion of existing Matlab's functions to the module's format.
Also two diffusion modules are implemented - Gaussian diffusion and Anisotropic diffusion.

Additional Information

References