Take the 2-minute tour ×
Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. It's 100% free, no registration required.

I was wondering which is the best language for image processing? I know MATLAB has a good library and user community for it. I havent checked it out, its there for python as well.

What is the most efficient language for this?

share|improve this question

2 Answers 2

It's not only about programming language but library you are using. I can think of the following:

MATLAB - image processing capabilities are quite ok, but for more advanced and real time processing you would need some low-level stuff. Additionally it does not offer very good portability.

Mathematica - good for prototyping and quick visualization, but that is all in my humble opinion.

OpenCV - I think this is most popular library in IP community. Great capabilities (GPU computing, Machine Learning module, GUI - what else do you need?) , fast, and still under development (so minor bugs are being removed very quickly). Regarding community - it's big! Mainly for C/C++ programming, but also Python (probably suits you).

JAI - Java Advanced Imaging - only if you like Java. Personally I do not like it.

ImageMagick - you can use it with many programming languages, check the API.

CxImage - good if you want to create something better than MS Paint and with some functionality of the Photoshop.

CImg - obviously to be used with C++, but OpenCV is still better.

PIL - Python specific library with lot's of functionality. If you like it then you can take a closer look.

SimpleCV - basically it is OpenCV python binding with some tweaks. Very easy to use and quite efficient.

scikit-image - also Python library, but in my opinion worse than SimpleCV (although my friend would not agree to that). One advantage is that they included DAISY features extractor - quite useful if you need dense features.

GIL - part of Boost, but less functional that OpenCV. Although if you like and use Boost then for some basic functionality it should be ok.

ResIL - continuation of DevIL project. Major advantage is operating on many file formats, including some game files.

Obviously there is plenty more Image Processing libraries, but these are ones I had contact with. So if you want to start with something, then choose OpenCV (preferably with C++ framework) - you will not regret! On the other hand, if your programming skills are not strong, then you might want to think about using Python based libraries - really easy to learn and set-up.

share|improve this answer

If you want to roll your own algorithms or code, then include OpenCL, as many image processing kernels are "embarrassingly parallel".

Or, on Big Iron, Fortran still beats most other languages at numeric vector performance.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.