# Digital Image Processing Framework

i'm looking for a free/opensource solution for digital image processing with reasonable performances processing quite large images (e.g. actual smartphones have resolutions of 8-10Mpx) and being ready for fast-prototyping/research.

• Octave would be a good solution as it provides a lot of statistical and matrix manipulation tools. However octave is too slow when running nested loops and the provided image package is too slow when displaying images.
• Octave + MIJ would be a better solution but actually seems unusable and unstable because of slowness and because of the different datatype handling needs.
• OpenCV has excellent performances but it's not really handy for fast prototyping because i actually would need something like a scripting language (no compilation, online code/variable modification and so on...) and some tools (like octave has) for plotting functions, graphs, histograms and make statistical calculations.

Any advise? Thank you very much

• OpenCV from python: opencv.willowgarage.com/documentation/python. See also wiki.python.org/moin/NumericAndScientific/Plotting Jun 8 '13 at 17:28
• Also, Octave (which is similar to MATLAB) can perform better if you structure your code differently. Instead of using loops, which are interpreted and slow, if you can express your algorithm using vector or matrix operations, you can obtain much better performance. Jun 9 '13 at 15:30
• "However octave is too slow when running nested loops" That's because it's exactly what you're not supposed to do. Jun 10 '13 at 1:57
• I made the experience that octave and image processing doesn't work well enough to be in competition with proprietary software and/or OpenCV. Give python and openCV a try. Aug 26 '13 at 12:02

My first and second choices are Python and IDL, not necessarily in any order.

Python is popular with scientists, engineers and artists, well-known, on all platforms, free and open. You need Numpy and PIL (Python Imaging Library). Python is more and more commonly used in many places where Matlab used to rule.

IDL from IIT-VIS (I think it's a different name now) is similar to Matlab and the like, but nicer syntax for multidimensional arrays. Very popular with astronomers, geologists, and various others. It has flaws. IDL costs  but luckily there's a free version named Fawlty Language. It's not open source, but is free (last time I checked.) I don't have the link handy, but google it. There's also GDL which is a Gnu attempt to create an IDL-compatible interpreter, but last time I tried it, it wasn't so good.

I don't like Octave because it's clumsy for three dimensional and higher arrays. Images are only 2D, but I often need to process a stack of them, and also may have RGB or other types of channels.