OpenCV - Panoramica
OpenCV è una libreria multipiattaforma utilizzando la quale possiamo sviluppare in tempo reale computer vision applications. Si concentra principalmente sull'elaborazione delle immagini, l'acquisizione e l'analisi dei video, comprese funzionalità come il rilevamento del volto e il rilevamento di oggetti.
Iniziamo il capitolo definendo il termine "Computer Vision".
Visione computerizzata
La Computer Vision può essere definita come una disciplina che spiega come ricostruire, interrompere e comprendere una scena 3D dalle sue immagini 2D, in termini di proprietà della struttura presente nella scena. Si occupa di modellare e replicare la visione umana utilizzando software e hardware per computer.
La visione artificiale si sovrappone in modo significativo ai seguenti campi:
Image Processing - Si concentra sulla manipolazione delle immagini.
Pattern Recognition - Spiega varie tecniche per classificare i modelli.
Photogrammetry - Si occupa di ottenere misurazioni accurate dalle immagini.
Computer Vision vs elaborazione delle immagini
Image processingsi occupa della trasformazione da immagine a immagine. L'input e l'output dell'elaborazione delle immagini sono entrambi immagini.
Computer visionè la costruzione di descrizioni esplicite e significative di oggetti fisici a partire dalla loro immagine. Il risultato della visione artificiale è una descrizione o un'interpretazione delle strutture nella scena 3D.
Applicazioni della visione artificiale
Qui abbiamo elencato alcuni dei principali domini in cui è ampiamente utilizzato Visione artificiale.
Applicazione di robotica
Localizzazione: determina automaticamente la posizione del robot
Navigation
Evitamento degli ostacoli
Assemblaggio (piolo, saldatura, verniciatura)
Manipolazione (es. Manipolatore robotico PUMA)
Human Robot Interaction (HRI): robotica intelligente per interagire e servire le persone
Applicazione della medicina
- Classificazione e rilevamento (ad es. Classificazione di lesioni o cellule e rilevamento di tumori)
- Segmentazione 2D / 3D
- Ricostruzione 3D di organi umani (MRI o ultrasuoni)
- Chirurgia robotica guidata dalla vista
Applicazione di automazione industriale
- Ispezione industriale (rilevamento di difetti)
- Assembly
- Lettura del codice a barre e dell'etichetta della confezione
- Ordinamento degli oggetti
- Comprensione dei documenti (ad es. OCR)
Applicazione di sicurezza
Biometria (iride, impronte digitali, riconoscimento facciale)
Sorveglianza: rilevamento di determinate attività o comportamenti sospetti
Applicazione di trasporto
- Veicolo autonomo
- Sicurezza, ad es. Monitoraggio della vigilanza del conducente
Caratteristiche della libreria OpenCV
Utilizzando la libreria OpenCV, puoi:
Leggere e scrivere immagini
Cattura e salva video
Elabora immagini (filtra, trasforma)
Eseguire il rilevamento delle funzionalità
Rileva oggetti specifici come volti, occhi, automobili, nei video o nelle immagini.
Analizza il video, vale a dire stimare il movimento in esso, sottrarre lo sfondo e tracciare gli oggetti al suo interno.
OpenCV è stato originariamente sviluppato in C ++. Inoltre, sono stati forniti collegamenti Python e Java. OpenCV funziona su vari sistemi operativi come Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD, ecc.
Questo tutorial spiega i concetti di OpenCV con esempi che utilizzano i collegamenti Java.
Moduli libreria OpenCV
Di seguito sono riportati i principali moduli della libreria della libreria OpenCV.
Funzionalità di base
Questo modulo copre le strutture dati di base come Scalare, Punto, Intervallo, ecc., Che vengono utilizzate per creare applicazioni OpenCV. Oltre a questi, include anche l'array multidimensionaleMat, che viene utilizzato per memorizzare le immagini. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nomeorg.opencv.core.
Elaborazione delle immagini
Questo modulo copre varie operazioni di elaborazione delle immagini come il filtraggio delle immagini, le trasformazioni delle immagini geometriche, la conversione dello spazio colore, gli istogrammi, ecc. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nome org.opencv.imgproc.
video
Questo modulo copre i concetti di analisi video come la stima del movimento, la sottrazione dello sfondo e il tracciamento degli oggetti. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nomeorg.opencv.video.
Video I / O
Questo modulo spiega l'acquisizione di video e i codec video utilizzando la libreria OpenCV. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nomeorg.opencv.videoio.
calib3d
Questo modulo include algoritmi riguardanti algoritmi di geometria a vista multipla di base, calibrazione di telecamere singole e stereo, stima della posa degli oggetti, corrispondenza stereo ed elementi di ricostruzione 3D. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nomeorg.opencv.calib3d.
features2d
Questo modulo include i concetti di rilevamento e descrizione delle funzionalità. Nella libreria Java di OpenCV, questo modulo è incluso come pacchetto con il nomeorg.opencv.features2d.
Objdetect
Questo modulo include il rilevamento di oggetti e istanze delle classi predefinite come volti, occhi, tazze, persone, automobili, ecc. Nella libreria Java di OpenCV, questo modulo è incluso come un pacchetto con il nome org.opencv.objdetect.
Highgui
Questa è un'interfaccia facile da usare con semplici funzionalità dell'interfaccia utente. Nella libreria Java di OpenCV, le funzionalità di questo modulo sono incluse in due diversi pacchetti e cioè,org.opencv.imgcodecs e org.opencv.videoio.
Una breve storia di OpenCV
OpenCV era inizialmente un'iniziativa di ricerca Intel per consigliare applicazioni ad alta intensità di CPU. È stato lanciato ufficialmente nel 1999.
- Nel 2006 è stata rilasciata la sua prima versione principale, OpenCV 1.0.
- Nell'ottobre 2009 è stata rilasciata la seconda versione principale, OpenCV 2.
- Nell'agosto 2012, OpenCV è stata acquisita da un'organizzazione senza scopo di lucro OpenCV.org.