Corso di Visione e Percezione Docente Domenico D. Bloisi ...

74
Processamento delle immagini UNIVERSITÀ DEGLI STUDI DELLA BASILICATA Docente Domenico D. Bloisi Corso di Visione e Percezione

Transcript of Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Page 1: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Processamentodelle immagini

UNIVERSITÀ DEGLI STUDI

DELLA BASILICATA

DocenteDomenico D. Bloisi

Corso di Visione e Percezione

Page 2: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Professore AssociatoDipartimento di Matematica, Informaticaed EconomiaUniversità degli studi della Basilicata http://web.unibas.it/bloisi

• SPQR Robot Soccer TeamDipartimento di Informatica, Automaticae Gestionale Università degli studi di Roma “La Sapienza” http://spqr.diag.uniroma1.it

Domenico Daniele Bloisi

Page 3: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• UNIBAS WOLVES is the robot soccer team of the University of Basilicata. Established in 2019, it is focussed on developing software for NAO soccer robots participating in RoboCup competitions.

https://sites.google.com/unibas.it/wolvesUNIBAS Wolves

• UNIBAS WOLVES team is twinned with SPQR Team at Sapienza University of Rome.

Page 4: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Home page del corso:https://web.unibas.it/bloisi/corsi/visione-e-percezione.html

• Docente: Domenico Daniele Bloisi

• Periodo: II semestre marzo 2022 – giugno 2022

- Martedì dalle 15:00 alle 17:00 (Aula Copernico)- Mercoledì dalle 8:30 alle 10:30 (Aula Copernico)

Informazioni sul corso

Page 5: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Durante il periodo delle lezioni:Mercoledì dalle 11:00 alle 12:30 Edificio 3D, II piano, stanza 15Si invitano gli studenti a controllare regolarmente la bacheca degli avvisi per eventuali variazioni

• Al di fuori del periodo delle lezioni:da concordare con il docente tramite email

Per prenotare un appuntamento inviareuna email a

[email protected]

Ricevimento

Page 6: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Introduzione al linguaggio Python• Elaborazione delle immagini con Python• Percezione 2D – OpenCV• Introduzione al Deep Learning• ROS• Il paradigma publisher

and subscriber• Simulatori• Percezione 3D - PCL

Programma – Visione e Percezione

Page 7: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Una immagine digitale è una matrice di pixel• Il termine pixel deriva da picture element

Immagine Digitale

• Il pixel contiene l’informazione relativa alla rappresentazione della realtà che è stata catturata tramite uno scanner, una macchina fotografica o un frame grabber (per i video)

opencv.org

Page 8: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• Per poter elaborare il contenuto di una immagine, avremo bisogno di caricarla in memoria per poter accedere ai suoi elementi e modificarli.

• Una volta terminate le modifiche, potremmo voler salvare l’immagine modificata su disco.

• Per poter processare le immagini utilizzeremo delle librerie esterne.

Processamento delle immagini

Page 9: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• NumPy è una libreria per il calcolo scientifico in Python

• NumPy è inclusa in Google Colab e viene rilasciatasotto la BSD license

• La utilizzeremo principalmente per la gestione degliarray N-dimensionali e per la definizione di nuovi tipi di dato

La libreria NumPy

http://www.numpy.org/

Page 10: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Array in NumPy

• Un array in NumPy è una griglia di valori, tutti dellostesso tipo

• Gli array sono indicizzati

• La classe array in NumPy è chiamata ndarray. Per creare un ndarray viene utilizzata la funzione array()

Page 11: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Array in NumPy

3

1

2

a

Page 12: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Array multidimensionali

3

1 2

4

b

Page 13: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Rank e shape in NumPy

• In NumPy le dimensioni di un array sono chiamateaxes

• Il numero di axes è chiamato rank. Il rank (che è memorizzato nella variabile ndim) rappresenta la dimensione dell’array

• La shape è una tupla di interi che fornisce la lunghezzadell’array lungo ogni dimensione

Page 14: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Rank e shape

3

1

2

a

Rank: 1Shape: (3,)

Rank: 2Shape: (2, 3)

Si usa (3,) per indicare che sitratta di una tuplacon un solo elemento, diversada (3) che è ilnumero 3

4

1 2

5

b

6

3

Page 15: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Funzioni per inizializzare array

0.

0.

0.

z

1.

1.

1.

o

Page 16: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Funzioni per inizializzare arraye

f

0.

1. 0.

1.

0.

0.

0. 0. 1.

2

2

2numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)Return a new array of given shape and type, filled with fill_value.

Page 17: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Valori (pseudo)random

Page 18: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Slicing mono-dimensionalea

4

1

2

5

3

a[2:4]

4

3

a[2:]

4

5

3

a[:2]1

2

a[:]

4

1

2

5

3

a[:-1]

4

1

2

3

Page 19: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Slicing bi-dimensionaleb

41 2

5

3

6 7 8

109 11 12

b[1:,2:]

1 2

5 6

7 8

109

11 12

b[:,:2]

range è una funzione python built-in che crea una lista di interi

Page 20: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Indexing

1 2

3 4

65

a

Page 21: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Boolean indexing

1 2

3 4

65

b

Page 22: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Tipi di dato in Numpy

Page 23: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Tipi di dato in Numpy vs. C

https://www.numpy.org/devdocs/user/basics.types.html

Page 24: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Operazioni con gli array

Page 25: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

ValueError

Page 26: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Sottrazione

Page 27: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Divisione (elemento per elemento)

Page 28: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Moltiplicazione (elemento per elemento)

Page 29: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Prodotto scalare

Page 30: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Trasposta

Page 31: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Broadcasting

1 2 34 5 67 8 9

1 2 34 5 6

A X B

1 2 3

A.X + Bbroadcast

Page 32: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Broadcasting

𝐵1 𝐵2𝐵0+

𝐵1 𝐵2𝐵0

A.X + B

broadcast

𝐴0,0𝐴0,1

𝐴0,2

𝐴1,0𝐴1,1

𝐴1,2.

𝑋0,0𝑋0,1

𝑋0,2

𝑋1,0𝑋1,1

𝑋1,2

𝑋2,0𝑋2,1

𝑋2,2

Page 33: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Broadcasting

1 2 34 5 67 8 9

1 2 34 5 6

A

X

30 36 4266 81 96

XX

A.X + BX

X X X

Page 34: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Broadcasting

B

1 2 3

+

A.X + B

broadcast

30 36 4266 81 96

31 38 4567 83 99

1 2 31 2 3

Page 35: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Broadcasting

Page 36: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Matplotlib

https://matplotlib.org/

Matplotlib è una libreria Python per il plotting in 2D

Con matplotlib è possibile generare grafici, istogrammi, spettri, diagrammi a barre, grafici di dispersione e altroancora usando una interfaccia tipo MATLAB

Page 37: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

plot

https://matplotlib.org/users/pyplot_tutorial.html

Page 38: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Visualizzare una immagine con matplotlib

Page 39: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Modifica dell’immagine

Page 40: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Modifica dell’immagine

Page 41: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Grid on

Page 42: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Axis off

Page 43: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Evitare la stampa a video

Page 44: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Salvare l’immagine

Page 45: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Pillow

Pillow è una libreria open source per aprire, elaborare e salvare immagini derivata dalla Python Imaging Library (PIL)

Homepage: https://python-pillow.org/Source code: https://github.com/python-pillow/PillowDocumentation: https://pillow.readthedocs.io/

Page 46: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Aprire l’immagine con Pillow

Page 47: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Immagini: occupazione di memoria

L’occupazione di memoria è data dal prodotto tra la dimensione dell’immagine e la profondità di colore del singolo pixel

Occupazione = (Dimensione) x (Profondità di colore)

Esempio:Una immagine a colori (RGB) 640x480 occupa in memoria 9830400 bit pari a circa 1.23 MB

Page 48: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Compressione

Per diminuire la dimensione di una immagine in memoria è possibile utilizzare degli opportuni metodi di compressione

Page 49: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Tipi di Compressione

La compressione può essere "lossless" o "lossy"

• Compressione "lossless": reversibileAd esempio, file PNG e file ZIP

• Compressione "lossy": ricostruzione approssimata, dove maggiore è il rapporto di compressione, maggiore è l’erroreAd esempio, file JPEG e file MP3

Page 50: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Formato BMP

https://docs.microsoft.com/en-us/windows/desktop/gdi/bitmap-storage

• Il formato BMP (bitmap) è stato sviluppato da Microsoft per la gestione dei file in Windows

• Si tratta di un formato piuttosto datato (anni 90) che permette di salvare immagini in grayscale e a colori

• Viene usato di solito per salvare immagini senza compressione (lossless)

Page 51: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Formato PNG

Il formato PNG (Portable Network Graphics) utilizza un algoritmo di compressione lossless che permette di preservare dettagli e sfumature di colore nell’immagine

http://www.libpng.org/pub/png/

Page 52: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Compressione lossy

L’ occhio umano è meno sensibile alle ALTE frequenze spaziali:

• Se l’ampiezza di una componente ad ALTA frequenza cade sotto una certa soglia, l’occhio umano NON LA RILEVA

La quantizzazione può essere meno accurata alle alte frequenze

Possono essere utilizzati meno bit

Page 53: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Discrete Cosine TransformLa DCT trasforma una matrice bi-dimensionale di pixel in una matrice equivalente di "spatial frequency components"

Immagine tratta da M. Moewe “Media Compression Techniques”

Page 54: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

• L’immagine viene divisa in blocchi 8x8• Si applica la 2D Fourier Discrete Cosine Transform (FDCT)• I componenti ad alta frequenza spaziale vengono quantizzati

più grossolanamente• I dati risultanti dalla quantizzazione vengono compressi con un

meccanismo senza perdita di informazione

8x8 pixelblocks

FDCTFrequency Dependent quantization

Zig-zag scan

Huffman encoding

JPEG syntax generator

Quantization Table

output

Compressione JPEG

Immagine tratta da M. Moewe “Media Compression Techniques”

Page 55: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

128 128 128 128 128 128 128 128

118 111 112 117 120 123 123 122

125 121 115 111 119 119 118 117

120 121 113 113 125 124 115 108

120 120 116 119 124 120 115 110

117 113 111 122 120 110 116 119

109 113 111 122 120 110 116 119

111 121 124 118 115 121 117 113

-80 4 -6 6 2 -2 -2 0

24 -8 8 12 0 0 0 2

10 -4 0 -12 -4 4 4 -2

8 0 -2 -6 10 4 -2 0

18 4 -4 6 -8 -4 0 0

-2 8 6 -4 0 -2 0 0

12 0 6 0 0 0 -2 -2

0 8 0 -4 -2 0 0 0

16 11 10 16 24 40 51 61

12 12 14 19 26 58 60 55

14 13 16 24 40 57 69 56

14 17 22 29 51 87 80 62

18 22 37 56 68 109 103 77

24 35 55 64 81 104 113 92

49 64 78 87 103 121 120 101

72 92 95 98 112 100 103 99

-5 0 0 0 0 0 0 0

2 -1 1 1 0 0 0 0

1 0 0 -1 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

Quantization Matrix to divide by

Spatial domain

Quantized spatial frequency values

Quantizzazione in frequenzaFrequency domain

Immagine tratta da M. Moewe“Media Compression Techniques”

Page 56: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

-5 0 0 0 0 0 0 0

2 -1 1 1 0 0 0 0

1 0 0 -1 0 0 0 0

1 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

• Si usa un percorso a zig-zag per scansionare le frequenze spaziali

• Le alte frequenze valgono quasi sempre zero

• La Huffman encoding è usata per immagazzinare con compressionelossless i valori

Usando la codifica di Huffman i valori

0,2,1,-1,0,0,1,0,1,1,0,0,1,0,0,0,-1,0,0,… 0

vengono memorizzati come

(1,2),(0,1),(0,-1),(2,1),(1,1),(0,1),(0,1),(2,1),(3,1),EOB

Scanning e Huffman Encoding

Immagine tratta da M. Moewe “Media Compression Techniques”

Page 57: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

500KB image, minimum compression 40KB image, half compression 11KB image, max compression

Vari livelli di compressione JPEG

Page 58: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Uncompressed image (roughness between pixels still visible)

Half compression, blurring & halos around sharp edges

Max compression, 8-pixel blocks apparent, large distortion in high-frequency areas

Perdita di dettagli

Page 59: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Immagini in Jpeg con Pillow

compressionartifacts

Page 60: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Cambiare Jpeg quality

Page 61: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

How to read an image from url

Page 62: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Trasformazioni

• Rotating• Flipping• Resizing• Cropping

Page 63: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Rotate

Page 64: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

FlipPillow (PIL) provides• flip() to flip the image upside down (vertically)• mirror() to flip the left and right (horizontally)

Page 65: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

SPL realistic black and white ball

Page 66: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Resize

Page 67: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Crop(left, upper, right, lower)-tuple

roi

Page 68: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Region of interest (ROI)

Page 69: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Esercizio 1

Realizzare una immagine come quella in figura utilizzando le librerie NumPy, Matplotlib e Pillow

256

512

64

64

Page 70: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Esercizio 1: soluzione

Page 71: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Esercizio 2

Utilizzare le librerie NumPy, Matplotlib e Pillow per effettuare il cropping dell’immagine https://web.unibas.it/bloisi/corsi/images/nao-v6-spqr.jpg

Page 72: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Esercizio 3

Utilizzare le librerie NumPy, Matplotlib e Pillow per effettuare la rotazione di 30° dell’immaginehttps://web.unibas.it/bloisi/corsi/images/nao-v6-spqr.jpg

Page 73: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Esercizio 4

Realizzare una immagine come quella in figura utilizzando le librerie NumPy, Matplotlib e Pillow

256

512

64

64

64

64

Page 74: Corso di Visione e Percezione Docente Domenico D. Bloisi ...

Processamentodelle immagini

UNIVERSITÀ DEGLI STUDI

DELLA BASILICATA

DocenteDomenico D. Bloisi

Corso di Visione e Percezione