2009-09-13 4 views
12

Recentemente sono tornato all'elaborazione delle immagini. La maggior parte di ciò che usavo in precedenza era Matlab. Mi piacerebbe passare a un linguaggio più conveniente e aperto.Librerie di elaborazione immagini

Dopo aver usato la libreria Python PIL e compreso con acerbo che aveva, built-in, solo i filtri 3x3 e 5x5, ho deciso di chiedere qui se qualcuno sa di buone librerie di elaborazione delle immagini.

Quali sono le librerie di elaborazione immagini esistenti (qualsiasi lingua)? Sono veloci/maturi/ancora in fase iniziale?

+0

Che tipo di funzioni si desidera eseguire? Quanto è completa la funzionalità di una biblioteca? –

+0

@James, le mie esigenze personali sono piuttosto piccole per il momento, ma facciamo in modo che questa domanda sia la più ampia possibile. Almeno, essere in grado di filtrare con un kernel arbitrario è un must per qualsiasi libreria di elaborazione delle immagini decente. Immagino che cose come la FFT o le trasformazioni geometriche facciano parte delle basi. – glmxndr

risposta

4

Scopri il pitone Scipy library. È una libreria di manipolazione di array n-dimensionale veloce in python, open source. Ha tutti gli strumenti di elaborazione delle immagini di base:

Non ha tutte le funzioni più avanzate di immagine di Matlab Processing Toolbox. Tuttavia, come suggerito da Vereb, molti di questi possono essere trovati in ITK (disponibile anche in Python).

Come te, volevo scappare da MATLAB ad un linguaggio dinamico come Python. E come te, sono stato deluso da PIL, quando ho capito che era solo un ImageMagick in python. Avrai comunque bisogno di usare il PIL per leggere/scrivere immagini.

Per ottenere un Matlab-come esperienza di elaborazione delle immagini con Python ottenere Numpy/Scipy, Matplotlib e Spyder. Tutto questo e altro è comodamente confezionato in Python(X,Y) solo per Windows.

12

OpenCV è molto veloce e maturo in C. Il lato negativo è che non è orientato agli oggetti, che non è uno dei criteri che presumo. Sono incluse molte funzionalità come l'analisi dei componenti collegati.

JAI (Java Advanced Imaging) è veloce e molto maturo ed è anche orientato agli oggetti. Potrebbe richiedere un po 'di riscaldamento con questa libreria. Ma potente e gestibile.

Se stai pensando di fare qualche ricerca accademica o prototipazione per OpenCV, se il tuo obiettivo è sviluppare un software commerciale o su larga scala, consiglio JAI.

UPDATE

OpenCV ha ora C++ e le API di Python. Ho usato OpenCV C++ per 3 settimane, l'API è decisamente migliore dell'API C. OpenCV è più stabile e la community è cresciuta. E ci sono molti algoritmi avanzati pronti per l'uso in OpenCV. Vale la pena considerare.

6

Sono sorpreso che nessuno menzionasse ImageMagick. È una libreria di elaborazione di immagini open source molto popolare e ha legature praticamente per qualsiasi lingua.

+0

ImageMagick è anche MOLTO lento in molte attività. – unixman83

3

Intel Performance Primitives è molto veloce e molto maturo. La maggior parte delle funzionalità è di basso livello, che vanno da filtri lineari, operazioni aritmetiche, FFT, wavelet, trasformazioni geometriche (...), ma contiene anche alcuni algoritmi di alto livello, ad es. per reintegro o segmentazione. È estremamente veloce e ben documentato. Lo raccomanderei sicuramente per lo sviluppo commerciale (non sono sicuro che ci siano licenze open source).

2

Come qualcuno ha menzionato, è possibile utilizzare ITK, che potrebbe essere utilizzato con VTK come toolkit di visualizzazione. L'unico problema che si troverà è che non sono molto facili da costruire se si usano i loro wrapper python (e ancora più difficile se si tenta di creare il progetto open source di terze parti wrapITK).

Ma si potrebbe usare Python (x, y), che viene fornito con tutti questi strumenti (e molto altro) in esecuzione out-of-the-box e in pitone: http://www.pythonxy.com

Speranza che aiuta.

2

La libreria di elaborazione delle immagini più veloce e professionale (e l'SDK completo) è HALCON. (www.mvtec.com) Non è open source ma supporta pienamente C#, C++, C, VB.Net ecc ...