opencv android - dmi.unict.it 13 - open cv.pdf · –riconoscimento di forme e colori –realtà...

29
OpenCV Android Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14 Cantarella Danilo

Upload: vuongkien

Post on 17-Feb-2019

239 views

Category:

Documents


0 download

TRANSCRIPT

OpenCV Android

Università degli Studi di CataniaCorso di Laurea Magistrale in Informatica

Multimedia 2013/14

Cantarella Danilo

Introduzione• OpenCV (Open Source Computer Vision Library) è una

libreria disponibile per Windows, Linux, Mac OS, Android e iOS

• Dispone di interfacce in C++, C, Python e Java• L’obiettivo è quello di offrire un supporto per

applicazioni che hanno lo scopo di trasformare in tempo reale immagini e video

2OpenCV Android

Applicazioni• Alcuni esempi:

– Interazione uomo-macchina– Motion tracking– Riconoscimento di forme e colori– Realtà aumentata– Identificazione di oggetti– Matching di immagini– Camera calibration

3OpenCV Android

Installazione (1)• Per sviluppare con la versione Android della libreria, è

possibile integrare il tutto con Eclipse• Scaricare l’SDK Android dall’indirizzo

https://developer.android.com/sdk/ e installarlo seguendo il tutorial disponibile all’indirizzo http://developer.android.com/sdk/installing/

• Scaricare la versione Android delle librerie OpenCV da http://opencv.org/

4OpenCV Android

Installazione (2)• Importare su Eclipse la libreria scaricata seguendo il

tutorial presente all’indirizzo http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html

• Provare i progetti di esempio disponibili insieme alla libreria

5OpenCV Android

Nozioni di base Android• In Android ogni oggetto disegnato a schermo

rappresentata una view• Una singola schermata dell’applicazione rappresenta

un’activity, che corrisponde quindi ad un’azione che l’utente può compiere

• Le activity comunicano tra di loro attraverso dei messaggi chiamati intent, che rappresenta dunque l’azione compiuta

• AndroidManifest.xml cuore dell’applicazione

6OpenCV Android

Nozioni di base OpenCV• In OpenCV le immagini sono rappresentate attraverso

una struttura di tipo Mat• Funzione Mat onCameraFrame(Mat aInputFrame) per

l’elaborazione in tempo reale dei frame prodotti dalla camera del dispositivo

• API Java -> http://docs.opencv.org/java/

7OpenCV Android

Creazione progetto• Per creare un progetto Android su Eclipse bisogna

fare New -> Project, scegliere Android Application Project e seguire la procedura guidata

• Per poter utilizzare anche la libreria OpenCV, dalle proprietà del progetto, sulla scheda Android, bisogna aggiungere la reference alla libreria OpenCV precedentemente importata su Eclipse

8OpenCV Android

Struttura OpenCV• OpenCV ha una struttura a moduli:

– Core– Imgproc– Highgui– Calib3d– Features2d– Objdetect– Video– Gpu

9OpenCV Android

Modulo core• Fornisce le strutture base per la manipolazione delle

immagini a livello del singolo pixel• Permette operazioni come:

– L’acquisizione e la memorizzazione di immagini– Regolazione contrasto e luminosità– Operazioni bit a bit sulle matrici– Disegnare oggetti (punti, forme geometriche) sulle

matrici

10OpenCV Android

Modulo imgproc• Fornisce le funzioni per il processing delle immagini.

Esempi:– Smoothing di immagini– Operazioni morfologiche– Binarizzazione– Creazione di filtri personalizzati– Edge detector– Trasformazioni affini– Calcolo degli istogrammi

11OpenCV Android

Modulo highgui• Fornisce gli strumenti per effettuare operazioni di

I/O su immagini• Permette l’acquisizione, la creazione e la modifica

(come ad esempio la compressione) di video • Permette di interfacciarsi con l’utente

12OpenCV Android

Progetto realizzato (1)• Applicazione Android – Activity principale

13OpenCV Android

Progetto realizzato (2)• Applicazione Android – Activity della camera

14OpenCV Android

Progetto realizzato (3)• Struttura dell’applicazione:

– Activity principale costituita da 4 linear layout orizzontali dove sono presenti i bottoni per richiamare le varie funzioni disponibili

– Activity della camera che gestisce attraverso degli switch tutte le funzionalità presenti

– Opzioni di personalizzazione disponibili per ogni funzione

15OpenCV Android

Progetto realizzato (4)• Funzioni implementate:

1. Algoritmo di Canny2. Operatore di Sobel3. Thresholding4. Operazioni morfologiche5. Visualizzazione canali RGB6. Detect del colore nello spazio HSV7. Riconoscimento di forme geometriche

16OpenCV Android

Algoritmo di Canny• Funzione Canny del modulo imgproc

• Frame della camera in input• Possibilità di modificare i valori delle due soglie di

thresholding• Soglie di default settate rispettivamente a 100 e 200

17OpenCV Android

Operatore di Sobel• Funzione Sobel del modulo imgproc

• Possibilità di cercare solo i lati orizzontali, solo quelli verticali oppure entrambi (opzione selezionata inizialmente)

18OpenCV Android

Thresholding (1)• Funzione threshold del modulo imgproc

• Possibilità di modificare la soglia di thresholding attraverso il tasto opzioni (soglia di thresholding settata di default a 100)

19OpenCV Android

Thresholding (2)• Ulteriore modalità di thresholding (selezionabile dal

tasto opzioni) disponibile attraverso la funzione adaptiveThreshold del modulo imgproc

• In questo caso la soglia di thresholding viene determinata automaticamente in base al contenuto dell’immagine corrente

• Uso di un filtro mediano per ridurre il rumore

20OpenCV Android

Operazioni morfologiche (1)

21OpenCV Android

Operazioni morfologiche (2)• Funzione getStructuringElement di imgproc per la

creazione dell’elemento strutturante (rettangolo, croce o ellisse)

• Operazioni morfologiche implementate:– Erosione: funzione erode di imgproc– Dilatazione: funzione dilate di imgproc– Chiusura e apertura: funzione morphoLogyEx di imgproc

• Possibilità tramite il tasto opzioni di modificare la grandezza dell’elemento strutturante (settata di default a 5x5)

22OpenCV Android

Canali RGB• Funzione extractChannel del modulo core

• Funzione alternativa split del modulo core che però presenta problemi di saturazione della memoria

• Scelta del canale da visualizzare tramite il tasto opzioni (canale rosso visualizzato inizialmente)

23OpenCV Android

Detect del colore HSV (1)

24OpenCV Android

Detect del colore HSV (2)• Funzione cvtColor del modulo imgproc per convertire

l’immagine nello spazio HSV• Funzione inRange del modulo core per il detect del

colore (rosso, verde o blu)

• Tonalità espressa in 180°• Doppio range per il rosso• Singolo per verde e blu

25OpenCV Android

Riconoscimento di forme (1)

• Ricerca dei contorni dell’immagine filtrata attraverso l’applicazione di Canny

26OpenCV Android

Riconoscimento di forme (2)

• Filtraggio dei contorni troppo piccoli• Ricerca dei migliori poligoni che approssimano i

contorni trovati 27OpenCV Android

Riconoscimento di forme (3)• Funzione findContours del modulo imgproc per trovare

i contorni in base ad una determinata approssimazione• Funzione approxPolyDP del modulo imgproc per

determinate il miglior poligono per ogni contorno trovato

• Ricerca di poligoni che approssimano meglio quadrilateri, pentagoni, esagoni, ettagoni ed ottagoni

• I cerchi vengono approssimati con 8 lati• Funzione drawContours del modulo core per disegnare

sul frame originale i poligoni riconosciuti28OpenCV Android

Link utili• Eclipse: http://www.eclipse.org/• OpenCV: http://opencv.org/• SDK Android: https://developer.android.com/sdk/• API OpenCV: http://docs.opencv.org/java/• API Android: http://developer.android.com/reference/classes.html

• Tutorial: http://docs.opencv.org/doc/tutorials/tutorials.html

29OpenCV Android