Da Lenna a Instagram: Matematica e Image Processing. Complementi e codici.

On December 28, 2016

Inseriamo in questo post il materiale e i tutorial complementari dell'articolo "Da Lenna a Instagram: Matematica e Image Processing" di Davide Passaro, pubblicato sul numero di 4/2016 della rivista Archimede (scaricabile (a pagamento) da qui) .

In questo articolo si illustrano delle proposte di percorsi didattici che coinvolgano l'Image Processing ovvero l'analisi di immagine che, come è noto, è un ambito in cui negli ultimi anni si è fatto grande utilizzo di strumenti e algoritmi matematici via via più avanzati.

A livello di scuola superiore, ovviamente, l'obiettivo realistico può essere quello di far conoscere questo campo e di far realizzare agli studenti semplici programmi di analisi di immagine.

In particolare nell'articolo si propongono due possibili esempi:

  • Analisi di immagine applicata alle immagini da satellite e al calcolo della NDVI (normalized difference vegetation index) che è un valore collegato alla tipologia di vegetazione presente nei dati satellitari
  • Simulare i filtri di Instagram ovvero cercare di realizzare semplicissimi algoritmi che si avvicinino a realizzare gli effetti visivi dei filtri disponibili sulla App Instagram.

Per realizzare il tutto consigliamo l'utilizzo del linguaggio Python (di questo linguaggio abbiamo già parlato  qui).

Python offre diverse librerie adatte alla modifica di immagini. In particolare:

La seconda è probabilmente consigliata per un uso più "avanzato". La prima usata in abbinata con la libreria scipy (https://www.scipy.org/) sviluppata proprio per il calcolo scientifico in ambiente python, offre soluzioni forse più semplici per un utiizzatore neofita.

Nell'esempio di codice riportato nella figura qui di seguito si vede come è semplice:

  • Aprire una immagine (in questo caso "monobanda").
  • Convertire l'immagine in una matrice da passare alle funzioni della libreria scipy.
  • Realizzare semplici operazioni come il calcolo del valore medio, o applicare una soglia ad una immagine.
  • Mostrare a schermo e salvere l'immagine ottenuta.

Questo codice può essere facilmente riutilizzato inserendo in input (come proposto nell'articolo) l'immagine NDVI per semplici considerazione sulla tipologia di vegetazione e la presenza di zone urbane.

esempio_codice_python_lenna

In questo tutorial si spiega come ottenere con python la NDVI a partire da immagini da satellite: https://github.com/ceholden/open-geo-tutorial/blob/master/Python/chapters/chapter_0_introduction.ipynb

Didatticamente, una volta che si è ottenuta una immagina con la NDVI si possono far sperimentare agli studenti le diverse soglie dato che questo indice di vegetazione è, pixel per pixel, un numero compreso fra 0 e 1.

Per quanto riguarda la proposta dei filtri di Instagram, l'idea si basa sul proporre  agli studenti unalatte coffe approccio di "reverse engineering" ovvero di provare a ottenere qualcosa di simile ai filtri instagram studiandone i loro effetti su immagini note. In realtà per facilitare le cose esiste già una libreria python che fa tutto questo:  https://pypi.python.org/pypi/instagram-filters/0.1

Con questa libreria si possono simulare, infatti, i seguenti filtri:

  • Gotham
  • Kelvin
  • Lomo
  • Nashville
  • Toaster

Ovviamente questo codice può essere utilizzato per offrire delle idee agli studenti  e far realizzare loro dei filtri "instagram-like".

Link utili:

Davide Passaro

Leave a Reply

Your email address will not be published. Required fields are marked *

this site uses the awesome footnotes Plugin