From Earlham Cluster Department
I have been considering two possible image handling frameworks for the software portion of my project: ImageMagick and ImageJ. Both seem to have very well documented APIs and modular structures. I have installed ImageMagick from source in my home directory on quark, and I have ImageJ on my own machine. (My machine has an old version of ImageMagick on it as it turns out.) I will be trying-out these two frameworks to see which one best fits my project.
- Is oriented towards batch processing
- Can be used with many languages through different APIs
- Could be faster than ImageJ
- Does not seem to have as many scientific analysis modules as ImageJ
- Has many analysis plugins that are very much like the kinds of things that I will need to be doing
- I have played with this program a little and it has some interesting transforms
- Plugin code can be moved across platforms easily
- Is completely in Java, a language that I don't know
- Is not oriented towards batch processing as much as ImageMagick
- Emailed the authors of the paper that I will be basing my project on to see if they can provide me with the code of their system for the software portion of the project.
- Created my project page.
- Read some on papers for my topic.
- Read some more about wavelets.
- Decided to use ImageMagick as the framework for my project. This will likely entail adding my own RGB to HSV (required by the wavelet algorithm) algorithm since it is unclear whether ImageMagick can provide HSV pixel access and modification.
- Started reading about the the general ImageMagick architecture and the C++ ImageMagick API, Magick++.
- Found a number of RGB to HSV and HSV to RGB algorithms including C source code.
- Some such algorithms are:
- I have not yet compared them to see if they agree on the process.
- Did more reading about the Magick++ API.
- Started implementing a color conversion function for HSV-RGB and RGB-HSV.
- Started making a flowchart and class description of the implementation.
- Got a volunteer to translate my source code request into Japanese.
- Today, I finished rereading and making a model of the system that I will hopefully be basing my project on. There is good news and bad news.
- The bad news is that there are some parts of the system that are not well described by the paper that will make it very difficult to implement. These parts include how each wavelet decomposition gives four results rather than one and how the clustering algorithm uses the feedback that it gets from the "Cluster Dispensation Value" algorithm that is supposed to keep the number of regions found in an image reasonable.
- The good news is that in my careful reading, I found that the signatures that are produced by this system seem to lend themselves to some interesting manipulations such as taking the high-frequency (detail) portions of one signature and putting it together with the low-frequency (general shapes) portions of another signature to make a signature of a composite object. This separation of the frequency levels would also allow different kinds of combinations of signature of similar objects, favoring either detail or overall shapes.
- This morning, Mikio sent out the Japanese translation of my code request. No word back yet.
- I decided to implement a partial version of the image matching system since it seems unlikely that I will be able to build off of an existing system. My partial implementation will not have any region separation and will use the simple Harr wavelet decomposition. It will however do a hierarchical decomposition that will produce a multi-part signature from which one can separate detail from overall shape.
- Today I implemented my HSV color class.
- Tried to make a test program to get some image transforms working but was unable to get the program to link against the Imagemagick dynamic libraries.
- Spent the rest of the day trying to get ImageMagick working.
- Wasted the entire day trying to get ImageMagick to work and link to programs.
- Tried building ImageMagick from source with little luck.
- Had the idea that one could generalize signatures by modifying the wavelet decomposition algorithm to get adjacent pixel values from two different images (images that are to be generalized), thus averaging the images together. I have no idea if this would actually work. This would still have to be extended to combine/generalize an arbitrary number of images.
- Started the paper.
- Wrote an outline for my presentation.
- Started diagrams for my presentation.
- Got the Magick++ package at least partially working by patching a fink install with parts complied from source.
- Got the color space conversions partially working.
- Wrote out the standard wavelet decomposition algorithm in C++ with reference to Magick++ but didn't get it to compile yet. (Some annoyance with pointer dereferencing.)