Codifica di elaborazione delle immagini


12

Mi chiedevo quale sia la lingua migliore per l'elaborazione delle immagini? So che MATLAB ha una buona biblioteca e comunità di utenti per questo. Non ho verificato, è lì anche per Python.

Qual è la lingua più efficiente per questo?

Risposte:


12

Non si tratta solo del linguaggio di programmazione ma della libreria che stai utilizzando. Posso pensare a quanto segue:

MATLAB - le capacità di elaborazione delle immagini sono abbastanza buone, ma per l'elaborazione più avanzata e in tempo reale avresti bisogno di alcune cose di basso livello. Inoltre, non offre un'ottima portabilità.

Mathematica - buono per la prototipazione e la visualizzazione rapida, ma questo è tutto secondo la mia modesta opinione.

OpenCV - Penso che questa sia la libreria più popolare nella comunità IP. Grandi capacità ( elaborazione GPU, modulo di Machine Learning, GUI - cos'altro ti serve? ), Veloce e ancora in fase di sviluppo (quindi i bug minori vengono rimossi molto rapidamente). Per quanto riguarda la comunità, è grande! Principalmente per la programmazione C / C ++, ma anche Python (probabilmente adatto a te).

JAI - Java Advanced Imaging - solo se si come Java. Personalmente, non mi piace.

ImageMagick : puoi usarlo con molti linguaggi di programmazione, controlla l' API .

CxImage - buono se vuoi creare qualcosa di meglio di MS Paint e con alcune funzionalità di Photoshop.

CImg - ovviamente da usare con C ++, ma OpenCV è ancora migliore.

PIL - Libreria specifica per Python con molte funzionalità. Se ti piace, puoi dare un'occhiata più da vicino.

SimpleCV - fondamentalmente si tratta di un legame in pitone OpenCV con alcune modifiche. Molto facile da usare e abbastanza efficiente.

scikit-image - anche libreria Python, ma a mio avviso peggio di SimpleCV (anche se il mio amico non sarebbe d'accordo). Un vantaggio è che hanno incluso l'estrattore di funzioni DAISY, molto utile se hai bisogno di funzionalità dense.

GIL - parte di Boost , ma meno funzionale di OpenCV. Anche se se ti piace e usi Boost, per alcune funzionalità di base dovrebbe essere ok.

ResIL - seguito delprogetto DevIL . Un grande vantaggio è operare su molti formati di file, inclusi alcuni file di gioco.

ROSA - originariamente scritto in C ++. Di recente l'ho provato ed è stato molto piacevole lavorare con. Grande integrazione con Python e veloce in C. incorporato Oltre a ciò hanno un sacco di simpatici algoritmi.

Ovviamente, ci sono molte più librerie di elaborazione delle immagini, ma queste sono quelle con cui ho avuto contatti. Quindi, se vuoi iniziare con qualcosa, scegli OpenCV (preferibilmente con il framework C ++) - non te ne pentirai! D'altra parte, se le tue capacità di programmazione non sono forti, allora potresti voler pensare all'utilizzo delle librerie basate su Python - davvero facili da imparare e configurare.


2

MATLAB è la lingua migliore per l'apprendimento dell'elaborazione delle immagini. (è la mia opinione)

È semplice da imparare, indipendente dall'hardware, più flessibile di qualsiasi linguaggio compilato, forse più efficiente dei linguaggi di script (grazie alle sue intrinseche DLL ottimizzate per l'elaborazione del segnale a livello di macchina), ha un buon supporto accademico e ingegneristico.

C / C ++ è il linguaggio migliore per creare applicazioni autonome di elaborazione delle immagini. Sotto la tua suite di IDE puoi generare il codice nativo che è il più efficiente. E gli IDE per C ++ offrono migliori funzionalità di debug a livello di macchina.

Vengono utilizzati anche alcuni linguaggi di script. Sono effettivamente flessibili, portatili, anche considerevolmente efficienti, tuttavia il debug potrebbe non essere facile a livelli bassi.

Anche le nuove capacità di elaborazione della GPU di CUDA, OpenCL ecc. Aumentano sensibilmente i throughput computazionali. (Tuttavia, sono più difficili da apprendere poiché è necessario essere consapevoli dell'architettura hardware della pipeline della GPU sottostante per sfruttare tutti gli incrementi di efficienza)


-1

Se vuoi inserire i tuoi algoritmi o codice, includi OpenCL, poiché molti kernel di elaborazione delle immagini sono "imbarazzantemente paralleli".

Oppure, su Big Iron, Fortran batte ancora la maggior parte delle altre lingue con prestazioni numeriche vettoriali.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.