After finding a C# .NET Library for Image Processing (and more) last night. I had decided to try it out.
.NET Library and source - http://www.aforgenet.com/framework/
Image Processing Lab built with the library - http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx
It was very quick and easy to convert between bitmap and save files in C#. Quick example of flow of the test program made.
|
GUI once opened |
|
Open Image - Normal File Dialog |
|
Binarize by threshold |
|
Filter blobs less than a desired size. |
|
Detect the blobs by color. |
|
Label the blobs' bounding box and show the area the blob has imposed on the original image. |
This is looks really encouraging. How does it work on a selection of different images?
ReplyDeleteI'm not sure what you're next step is, but here are some other things worth trying:
- background area marquee selection: user interaction to automatically pick binarize threshold
- user interaction to "split" diatoms that are stuck together or merged with junk
- user interaction to fine tune blobs by removing as junk or adding ones that were missed (something fast using direct manipulation, like crossing them our with a swipe, or lasso circling to add)
- automated way to outline individual diatoms (fill in central area using morphological operations, then generate the polygon perimeter. May also be able to use the convex hull of blob points if we assume all diatoms are convex .. they seem to be)
- write the functions to generate the statistics (maybe do it in a nice OO way to other statistics may be added on as subclasses)
- automated way to compare your segmentation and statistical results with Andrew's. Maybe a toggle to show diatom information you found and Andrews at the same time overlaid in some nice way