views:

448

answers:

8

I recently came back to image processing. Most of what I used previously was Matlab. I'd like to switch to a more convenient and open language.

After having used Python library PIL and bitterly understood it had, built-in, only 3x3 and 5x5 filter kernels, I decided to ask here if someone knows of good image processing libraries.

What are the existing image processing libraries (any language) ? Are they fast / mature / still in early phase ?

+2  A: 

As far as I know ITK is used for medical imaging:
http://www.itk.org

Vereb
+2  A: 

OpenCV has python bindings http://opencv.willowgarage.com - like Vereb mentioned, ITK is also top notch.

jskaggz
And openCV will use IPP if it's installed
Martin Beckett
+8  A: 

OpenCV is a very fast and mature one in C. The bad side is it is not object oriented, which is not one of your criterias I presume. Lots of functionality like connected component analysis are included.

JAI (Java Advanced Imaging) is fast and very mature and it is also object oriented. It may take a little bit to warm up with this library. But powerful and manageable.

If you are planning to make some academic research or prototyping go for OpenCV, if your aim is to develop a commercial or a large scale software, I recommend JAI.

nimcap
+7  A: 

I'm surprised no one mentioned ImageMagick. It is a very popular open source image processing library and they have bindings for practically any language.

maayank
+2  A: 

Intel Performance Primitives is very fast and very mature. Most of the functionality is low-level, ranging from linear filters, arithmetic operations, FFT, wavelets, geometric transforms (...), but it also contains a few high-level algorithms e.g. for inpainting or segmentation. It's extremely fast, and well documented. I would definitely recommend it for commercial development (not sure if there are open-source licenses).

nikie
+3  A: 

Check out the python Scipy library. It's an open source fast n-dimensional array manipulation library in python. It has all the basic image processing tools:

It doesn't have all the more advanced functions of Matlab's Image Processing Toolbox. However, as Vereb suggested, a lot of those can be found in ITK (also available in python flavor).

Like you I wanted to get away from matlab to a dynamic language like python. And like you, I was disappointed by PIL, when I realized it was just an ImageMagick in python. You'll still need to use PIL for reading/writing images.

To get a Matlab-like image processing experience with python get Numpy/Scipy, Matplotlib and Spyder. All of which and more is conveniently packaged in Python(X,Y) for windows only.

Ivan
A: 

GDAL serves as a mature proxy for different image formats. Bindings for several languages, including Python

D_K
A: 

As somebody has mentioned, you could use ITK, which could be used with VTK as a visualization toolkit. The only problem you will find is they are not very easy to build if you are going to use their python wrappers (and even more difficult if you try to build the third-party open source project wrapITK).

But you could use python(x,y), which comes with all these tools (and a lot more) running out-of-the-box and in python: http://www.pythonxy.com

Hope it helps.

neverbot