In un articolo del 1911 che parlava di giornalismo e pubblicità e citando l'editore di giornali Tess Flanders, apparve la seguente espressione:
Usa una foto. Vale più di mille parole.
Una frase simile apparve anche in un annuncio del 1913 sui giornali della Piqua Auto Supply House:
Uno sguardo vale più di mille parole.
Non ho intenzione di approfondire la storia. Questa introduzione è stata solo per renderla un po 'divertente, e mostrare come le frasi ci danno un'indicazione dell'importanza delle immagini e di come possano davvero incorporare molte informazioni al loro interno. Sono sicuro che molti di noi lo capiscono, specialmente quando notiamo come un'immagine possa rimanere impressa nelle nostre menti più che solo del puro testo.
Non c'è dubbio che le immagini svolgono un ruolo importante nelle nostre comunicazioni, non solo immagini generali, ma anche foto specializzate come immagini mediche (ad es. MRI, Ultrasuoni, ecc.).
Possiamo ottenere foto tramite diversi dispositivi di acquisizione. Ad esempio, le immagini di melanoma (cancro della pelle) vengono recuperate utilizzando un dermatoscopio. Fotografiamo noi stessi o gli amici usando una fotocamera digitale o uno smartphone. A volte, tuttavia, notiamo alcuni problemi nelle nostre immagini, ad esempio la sfocatura, che potrebbe essere dovuta al dispositivo di acquisizione utilizzato.
Ma cosa fare in questo caso? Ti sono state inviate alcune immagini mediche da analizzare e non hai la possibilità di riprendere queste immagini. Anche se ripeti un'immagine, la risoluzione che vedi non cambierà, né altri problemi che dovrai affrontare. Elaborazione delle immagini entra in gioco in tali situazioni.
Mi è piaciuto come il termine elaborazione delle immagini è stato definito nei dizionari di Oxford:
L'analisi e la manipolazione di un'immagine digitalizzata, soprattutto al fine di migliorarne la qualità.
"Immagine digitalizzata" qui si riferisce al fatto che l'immagine è considerata digitale, questo è elaborato da un computer.
Ottenere il computer in questo gioco significa usare un linguaggio di programmazione. In questo tutorial ti mostrerò come utilizzare il linguaggio di programmazione Python per eseguire attività di elaborazione dell'immagine su un'immagine.
La libreria che useremo per svolgere i nostri compiti di elaborazione delle immagini è scikit-image
. Secondo la carta scikit-image: elaborazione delle immagini in Python:
scikit-image è una libreria per l'elaborazione di immagini che implementa algoritmi e utilità da utilizzare nelle applicazioni di ricerca, istruzione e industria. È rilasciato sotto la licenza open source Modified BSD liberale, fornisce un'API ben documentata nel linguaggio di programmazione Python ed è sviluppato da un team internazionale di collaboratori attivi.
La prima cosa che dobbiamo fare è installare scikit-image
. Le istruzioni per l'installazione della libreria sono disponibili nella pagina di download e in questo tutorial ti mostrerò come installare la libreria su una macchina Mac OS X, poiché questo è ciò che sto attualmente utilizzando per scrivere questo tutorial.
Come scikit-image
è una libreria esterna, la prima cosa che dobbiamo fare è installare quella libreria. Per questo, userò pip, che è (basato su Wikipedia):
Un sistema di gestione dei pacchetti usato per installare e gestire pacchetti software scritti in Python. Molti pacchetti possono essere trovati nel Python Package Index (PyPI).
È possibile seguire i passaggi indicati nella Guida dell'utente di Python Packaging per l'installazione seme
, ma se lo hai Python 2.7.9
e più in alto, o Python 3.4
e più in alto, l'hai già fatto seme
!
scikit-image
ora può essere semplicemente installato digitando il seguente comando (nel terminale di Mac OS X):
pip installa -U scikit-image
Ora abbiamo la libreria installata e pronta per un po 'di divertimento nell'elaborazione delle immagini!
L'immagine di prova che useremo in questo tutorial è baboon.png. Vai avanti e scaricalo, o semplicemente usa l'immagine che preferisci. L'immagine ha il seguente aspetto:
A volte abbiamo bisogno di conoscere le dimensioni di un'immagine (più su quella nella sezione filtro). Per verificare le dimensioni della nostra immagine, possiamo usare il guess_spatial_dimensions ()
metodo, come segue:
da skimage import io, color img = io.imread ('baboon.png') dimensions = color.guess_spatial_dimensions (img) dimensioni di stampa
L'output dello script sopra è 3
, il che significa che abbiamo un'immagine composta da tre dimensioni spaziali.
Dalla sezione precedente, abbiamo notato che la nostra immagine è un'immagine di matrice 3D (in formato RGBA con la forma (..., ..., 4)
). Come ho saputo che è in formato RGBA? Puoi semplicemente fare quanto segue:
import skimage.io as io da skimage.color import rgb2gray img = io.imread ('baboon.png') stampa img.shape
In questo caso, otterresti questo risultato: (512, 512, 4)
.
In questa sezione, vorremmo convertire l'immagine babbuino.png colorata originale in un'immagine 2D in scala di grigi (bianco e nero). Questo può essere fatto semplicemente usando il seguente script:
import skimage.io as io da skimage.color import rgb2gray img = io.imread ('baboon.png') img_grayscale = rgb2gray (img)
Andiamo avanti e salviamo la nuova immagine (scala di grigi) in un file. Questo può essere fatto usando il imsave ()
funzione, come segue (notare che la nuova immagine è nel file babbuino-gs.png
):
io.imsave ( 'babbuino-gs.png', img_grayscale)
Per controllare le dimensioni dell'immagine, possiamo usare lo script nella sezione precedente, nel qual caso otterresti 2
restituito. O puoi usare img_grayscale.shape
, quale risulta in 512x512
. Quindi, ora abbiamo un'immagine 2D.
Per mostrare la nuova immagine in scala di grigi, aggiungi quanto segue alla fine dello script:
show_grayscale = io.imshow (img_grayscale) io.show ()
Il risultato è simile a questo:
Nell'elaborazione delle immagini, filtraggio viene eseguito per apportare alcuni miglioramenti nell'immagine. In generale, il filtraggio comprende le seguenti operazioni: miglioramento del bordo, nitidezza e levigatura.
In questa sezione, ti mostrerò come applicare il filtro Sobel sulla nostra immagine e vedere come appare l'output dopo aver eseguito tale operazione. Userò l'esempio mostrato nella prima pagina del sito web di scikit-image, ma applicato sulla nostra immagine.
Lo script per applicare il filtro Sobel sulla nostra immagine ha il seguente aspetto:
da skimage import data, io, filters img = io.imread ('baboon.png') edges = filters.sobel (img) io.imshow (edges) io.show ()
Se esegui la sceneggiatura, hai notato problemi? Sì, non è stato possibile applicare l'operazione poiché l'immagine deve essere un'immagine 2D. Quindi, invece di usare baboon.png
, dobbiamo usare la nostra immagine 2D, babbuino-gs.png
. L'output di questa operazione è il seguente:
Esistono molte operazioni di elaborazione delle immagini e il scikit-image
La libreria Python ci fornisce molte operazioni interessanti che possiamo eseguire sulle nostre immagini. Puoi vedere più operazioni di elaborazione delle immagini usando questa libreria sul sito web di scikit-image.
Impara Python con la nostra guida completa al tutorial su Python, sia che tu stia appena iniziando o che sei un programmatore esperto che cerca di imparare nuove abilità.