Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by James Matthews, posted on March 01, 2002

Image Description, by James Matthews

Something different for the IOTD. Here is a screenshot for my upcoming program, Image Analysis Explorer Pro. It is the successor to Image Analysis Explorer and has a lot more features such as:
  • Infinitely quicker than Iae (close to 1000% sometimes!)
  • Convolution and rank based filtering
  • Floyd-steinberg dither, greyscale conversion, inversion.
  • Histogram, thresholding.
  • FFT/IFFT (hopefully, yet unimplemented).
  • Sobel and Canny edge detectors
  • Region of Interest support
  • Opens JPG, GIF and bitmap files (Iae was limited to bmp)
  • Unlimited size of file (Iae was limited to 640x480).
  • Existing filters implemented in Iae.
  • Here you have (from the top-left, clockwise):
  • Original image, with a histogram displayed for a region of it.
  • Floyd-Steinberg dithered image, with a mean filter applied to a region.
  • Greyscale image with a mean filter applied on an 11x11 neighbourhood.
  • Sobel edge detector inverted for clarity.
  • You can look at the existing Iae here:

    The new version should be out within the next week or two, I still need to implement a few features and really optimize the rank filters. As with all Generation5 stuff, the complete source code will be released, although you'll need the Micrsoft Vision SDK to compile it.

    Comments and suggestions welcome!!

    - James Matthews

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

    March 01, 2002, 09:30 AM

    cool. nice work


    March 01, 2002, 09:52 AM

    what the hell is the Vision SDK?

    JP Bridges

    March 01, 2002, 10:00 AM

    Looks good.

    Is it just something you've done just for fun, or is it geared to any particular practical application.



    March 01, 2002, 10:06 AM

    Thats really neat, the bottom left pic looks really nice.

    Ive been doing some basic image processing for a while now, but have struggled to find decent information on how to create certain effects/filters etc, hence my stuff is limited to basic edge/emboss crap.

    Where did you learn this stuff?


    March 01, 2002, 10:10 AM

    have you tried the IPL before (Image Processing Library from Intel) ?
    i think there are some rank filters already implemented, anyway it's quite fast.


    March 01, 2002, 10:19 AM

    By "Region of Interest support" do you mean allowing different areas of the image to have differing compression ratios?

    I know that the new JPEG 2K standard supports this, but what existing formats do? Does JPEG?

    Anyway, cool. G5 stuff is generally pretty clean & cool.



    March 01, 2002, 10:59 AM

    Also interested in the region of interest support.
    What do you mean by unlimited filesize?
    What kind of images have you tested? Some >200MB?

    James Matthews

    March 01, 2002, 11:14 AM

    Just to answer the existing comments/questions:

    - Vision SDK is something Microsoft put together...take a look on the Microsoft Research site. Sorry, don't have the URL handy.

    - Yeah, IaePro is for fun sorta...its a Generation5 demonstration program so I'm writing it for that purpose, but I don't intend it to be a functional image processing program like Photoshop or PSP.

    - Yeah, I've heard of the IPL, but I wanted to implement all the stuff myself. The aim of IaePro is to provide people with a usable programm with source code they can look at. I didn't want to use third-party software because I might not be able to explain the code.

    - Most of this stuff was learnt through a course I took recently and also from this book. There is quite a bit of decent information about the internet, but most of it misses out the basics. There is a little bit up on Generation5, see here.

    - Region of interest simply means the filters can be applied to a particular area of the image, nothing as fancy as compression ratios :) For example, the histogram in the picture is generated from the selected region of the T/L picture.

    - When I said unlimited file size, I simply meant that it isn't restricted to 640x480 like the original Iae. I've not tested it with pictures larger than 1280x1024, but I'm sure as long as you have the patience and your computer has the memory, it'll complete the processing eventually. :)




    March 01, 2002, 11:41 AM

    Aye, thats a Canny edge detectah!


    March 01, 2002, 11:45 AM


    Ian Romanick

    March 01, 2002, 01:19 PM

    IIRC, the original baseline JPEG does not support ROI encoding. However, there is some of extension to change per block quantization scale. That is, it allows you to say, take the quantization matrix for this block and multiply all the values by 2^n before using it. I seem to recall reading a paper once upon a time about using this and some image processing to generate perceptually lossless JPEGs that had varying quantization per-block.

    I can't seem to find the reference right now. If I come across it in the next couple days, I'll post a link. It's pretty interesting stuff.

    Ian Romanick

    March 01, 2002, 03:01 PM

    Here's the one related reference that I could find, but it's not the one I really wanted. Meh..


    March 01, 2002, 04:13 PM bling...

    James, why don't you incorporate DevIL?

    It will add to the coolness factor of your app :)

    Good job all round.


    March 03, 2002, 03:43 PM

    Has the Vision API gotten better than when it first came out? The original didn't really seem to have much to do with vision... more like basic image processing.



    March 10, 2002, 02:01 PM

    I noticed that you were interested adding FFT/IFFT to your program.

    I did this on my own a while back... Implimenting FFT's well is an art. The FFTW library has it's source code availible and will get you started pretty quick. (Though I prefer the Intel SPL since it has all the other functions I might need)

    If you are only planning on implimenting the FFT/IFFT for viewing and not allowing the removal of sinusoidal noise etc. then make sure to allow for both a lin and log scale view as they both have thier uses.

    Another piece of advice I have for you is that if you want the FFT/IFFT stuff to allow the removal of content and be useful you will have to store the images with more than 8 bits per channel otherwise when you go to invert the transform after editing out frequecies you don't want you will end up with a poor representation of your original image.
    (I supose you could simply look at an area of interest and do both transforms when you commit but I did not have that kind of functionality. :)

    Looks like you are well on your way.

    PS: Do you have any plans to allow for the deconvolution of an image based on another image (containing a point spread function or image) ?

    This thread contains 15 messages.
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.