13

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 ?

glmxndr
  • 45,516
  • 29
  • 93
  • 118
  • What type of functions do you want to do? How full-featured of a library do you need? – James Black Sep 13 '09 at 19:58
  • @James, my own needs are pretty small for the moment, but let's have this question be as wide as possible. At least, being able to filter with an arbitrary kernel is a must for any decent image processing library. I guess things like FFT or geometrical transformations are also part of the basics. – glmxndr Sep 13 '09 at 20:11

9 Answers9

12

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.

UPDATE

OpenCV now has C++ and Python APIs. I have been using OpenCV C++ for 3 weeks now, the API is way better than C API. OpenCV is more stable, and community has grown. And there are lots of ready to use advanced algorithms in OpenCV. It is worth considering.

Max Tither
  • 159
  • 1
  • 1
  • 8
nimcap
  • 10,062
  • 15
  • 61
  • 69
6

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
  • 4,200
  • 2
  • 24
  • 23
4

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
  • 7,436
  • 1
  • 21
  • 21
3

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).

Niki
  • 15,662
  • 5
  • 48
  • 74
2

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

Vereb
  • 14,388
  • 2
  • 28
  • 30
2

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

Jubal
  • 8,357
  • 5
  • 29
  • 30
2

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
  • 183
  • 2
  • 9
2

Fastest and most professional image processing library (and complete SDK) is HALCON. (www.mvtec.com) It is not open source but fully supports C#, C++, C, VB.Net etc...

Sagar Patel
  • 864
  • 1
  • 11
  • 22
Mustafa Sari
  • 1
  • 1
  • 2
0

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

D_K
  • 1,410
  • 12
  • 35