Computer 4 dummy

Informatica facile a portata di tutti

Matploitlib – Le immagini

In questo capitolo sulla libreria Matploitlib vediamo come utilizzare le funzioni base su come gestire ed analizzare le immagini attraverso l’uso degli array.

Se ci pensate bene una immagine non è altro un insieme di punti (pixel) disposti su due assi (x, y) definiti da un colore. Diventa quindi facile immaginare la possibilità di rappresentare un immagine come una matrice.

file train.csv

Per prima cosa vediamo come recuperare il data-set che utilizzeremo per i nostri esempi scaricandolo da questo Link: https://www.kaggle.com/c/digit-recognizer nella sezione data cerchiamo il file train.csv

Il file è di circa 73 Mb, ed e contiene i dati relativi ad una immagine di 28 x 28 pixel per un totale di 784 pixel.
Una volta scaricato possiamo procedere ad importarlo nel nostro progetto di esempio.

Import file csv

import pandas as pd

df = pd.read_csv("C:\\temp\\train.csv")

con il comando shape possiamo visualizzarne le dimensioni:

df.shape
Out[4]: (42000, 785)

Vediamo quindi che il file è composto da 42000 campioni suddivisi in 785 colonne dove la prima di queste è l’etichetta della colonna.
Ora lo inseriamo in una matrice:

M = df.as_matrix()

A questo punto facciamo un esempio prendendo i valori del primo campione (la prima riga) ad esclusione della prima colonna (Intestazione)

im = M[0,1:]
print im.shape

Il risultato sarà (784,) il che significa che la matrice im è composta da una singola riga e 784 colonne.

Ora se volessimo rappresentare la matrice come in immagine dovremmo ri scalarla in una matrice composta da 28 righe e 28 colonne quindi un immagine da 28 x 28 pixel.

im = im.reshape(28, 28)
print im.shape

Il risultato è una matrice 28 X 28 come ci aspettavamo.

Visualizzazione immagine

Per visualizzarla basta semplicemente utilizzare la funzione di Matpltlib imshow().

plt.imshow(im)

Scala di grigi

Se ora volessimo visualizzare l’immagine non a colori ma su una scala di grigi dove il valore 0 corrisponde al nero ed il 255 al bianco la procedura è la seguente:

plt.imshow(im, cmap='gray')

Negativo dell’immagine

Come ultima funzione vediamo come fare il negativo dell’immagine in modo da visualizzare lo sfondo bianco ed il tratto in nero.

plt.imshow(255 - im, cmap='gray')

Se volete visualizzare gli altri caratteri contenuti nel file di dataset basta modificare la riga 18 del file in python mettendo al posto dello 0 un valore compreso tra 0 e 41999


Il file completo è disponibile su GitHub a questo link:

04 – Matplotlib – Le immagini.py