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.