PDA

View Full Version : [C/C++] librerie gestione immagini


Freaxxx
18-02-2011, 20:58
gradirei consigli e pareri su librerie, interfacciabili con il C o il C++ che possano gestire immagini, per gestione delle immagini intendo:
- funzioni di base come ridimensionamento, gestione di curve e livelli, rotazioni, exif, etc etc
- funzioni avanzate come accelerazione grafica via OpenGL o riconoscimento facciale

inoltre gradirei che la libreria fosse cross-platform e portabile anche su dispositivi mobili.

andrebbe bene anche se non avesse proprio tutte le funzioni avanzate, ma almeno deve avere funzioni basilari utili e interessanti, la portabilità tra le varie piattaforme e sistemi è però fondamentale.

PS
inutile dire che la licenza deve essere il più flessibile possibile e la libreria gratuita

tomminno
18-02-2011, 23:28
OpenCV mi pare quella che più si avvicina a quello che chiedi. Non so però se possa rispondere a tutte le tue esigenze, ma è open source (licenza BSD) è l'ideale per elaborazioni di image recognition. Però non ho idea di cosa tu intenda di preciso con "gestione di curve e livelli", che sembrano tanto funzionalità tipiche dei programmi di elaborazione di immagini.

Freaxxx
19-02-2011, 04:37
OpenCV mi pare quella che più si avvicina a quello che chiedi. Non so però se possa rispondere a tutte le tue esigenze, ma è open source (licenza BSD) è l'ideale per elaborazioni di image recognition. Però non ho idea di cosa tu intenda di preciso con "gestione di curve e livelli", che sembrano tanto funzionalità tipiche dei programmi di elaborazione di immagini.

ad esempio vorrei poter sfruttare tipiche operazioni che si fanno sui livelli e sulle curve, del tipo, ottimizzare i livelli in base a punti di bianco o nero, ridurre i vari singoli livelli di colore, operare un cross-processing con le curve, etc etc.

di OpenCV non mi è chiaro se sia accelerata o meno e se il fatto che sia un progetto Intel nasconda un simpatico tranello per altre piattaforme come le AMD oppure sia realmente cross-platform.

attualmente, credo che l'unico framework realmente accelerato sia OpenCL, OpenGL accelera solo la fase di rendering di una immagine, che è una cosa molto utile però vorrei sperimentare qualcosa di potenzialmente più promettente per quanto riguarda l'imaging e mi sembra che, appunto, OpenCL sia l'unica soluzione, anche se non propone allo stato attuale nessuna libreria per l'imaging se non bindings ad altri eventuali linguaggi.

tomminno
19-02-2011, 10:11
attualmente, credo che l'unico framework realmente accelerato sia OpenCL, OpenGL accelera solo la fase di rendering di una immagine, che è una cosa molto utile però vorrei sperimentare qualcosa di potenzialmente più promettente per quanto riguarda l'imaging e mi sembra che, appunto, OpenCL sia l'unica soluzione, anche se non propone allo stato attuale nessuna libreria per l'imaging se non bindings ad altri eventuali linguaggi.

Ma vuoi una libreria per il 2d o il 3d? Parli di face recognition, operazione per cui OpenCV è utilissima in quanto è una libreria che racchiude algoritmi di elaborazione di immagini, si trovano anche esempi di motion detection su filmati.
L'accelerazione hardware si pone su un altro livello e potrebbe essere usata per accelerare i calcoli di OpenCV. Ma tra l'accelerazione e la funzionalità io prima sceglierei la funzionalità, altrimenti cosa acceleri?
E poi sei sicuro che per le tue esigenze ti serva per forza l'accelerazione hardware?

Freaxxx
19-02-2011, 19:41
Ma vuoi una libreria per il 2d o il 3d? Parli di face recognition, operazione per cui OpenCV è utilissima in quanto è una libreria che racchiude algoritmi di elaborazione di immagini, si trovano anche esempi di motion detection su filmati.
L'accelerazione hardware si pone su un altro livello e potrebbe essere usata per accelerare i calcoli di OpenCV. Ma tra l'accelerazione e la funzionalità io prima sceglierei la funzionalità, altrimenti cosa acceleri?
E poi sei sicuro che per le tue esigenze ti serva per forza l'accelerazione hardware?

che c'entra il 3D?

i miei dubbi su OpenCV riguardano il fatto che per quanto riguarda le sperimentazioni scientifiche nel mondo dell'imaging non credo che ci sia di meglio, ma per quanto la mera elaborazione e modifica di una immagine non saprei, ad esempio manca di supporto all'EXIF e ai millemila formati di immagine, ad esempio l'OpenCV non sembra poter supportare le Tiff, non parliamo neanche dei vari RAW in giro.

in realtà tutte le librerie sono brave e belle a supportare jpg e bmp, ma appena si entra in discorsi un po' più avanzati come EXIF e immagini RAW e immagini vettoriali tutte mancano di tutto o di qualcosa di importante.

se devo inventarmi un algoritmo basato su calcoli infinitesimali e integrali, ok, uso OpenCV, ma per il resto? l'immagine in se con cosa la elaboro?