In un clima di caldo torrido e zanzare, in cui tutti parlano dei mondiali e io dovrei preparare la mia tesi di laurea, ho deciso invece di scrivere un articolo per parlarvi del mouse ottico.

Tutti credono di sapere come funziona il mouse ottico e la risposta più gettonata è: «con un laser!». Che poi è la stessa risposta alle domande “Come si tolgono i nei?”, “Come si cura la miopia?”, “Come funziona un lettore CD?” e tante altre.

Col laser!

In realtà, la stragrande maggioranza dei mouse ottici non usa un laser, ma un semplice LED rosso.

Il fatto che i puntatori laser venduti sulle bancarelle siano rossi, dello stesso colore della maggioranza dei mouse, assieme alla parola ottico nel nome del mouse, ha probabilmente creato quest’ambiguità.

In realtà ci sono alcuni mouse che utilizzano un laser, ma soltanto come semplice fonte di luce.

 

 

 

La Telecamera

Il componente centrale attorno a cui è costruito l’intero sistema di puntamento è una semplice telecamera. Tutti i sistemi di puntamento ottici utilizzano infatti una telecamera per registrare immagini della superficie su cui li muoviamo, e misurano lo spostamento da un’immagine ad un’altra per capire in che direzione stiamo muovendo il puntatore.

Essendo la superficie sottostante il mouse buia, il LED colorato serve ad illuminarla, per permettere di acquisirne le immagini.

Se questa storia non dovesse convincervi, a questo indirizzo potete trovare l’esperimento di un simpatico hacker, che ha realizzato un software per estrarre le immagini registrate dal suo mouse.

 

mouse

 

640px-Captured_infrared_light_from_a_laser_mouse[1]Molti mouse ottici sono però invisibili, come funzionano?

Sebbene siano invisibili ai nostri occhi, risultano estremamente luminosi al sensore utilizzato dal mouse, che funzionerà probabilmente nello spettro dell’infrarosso.

Se avete un mouse del genere, provate a puntarlo verso la webcam del vostro computer o la telecamera del vostro smartphone:

in genere le telecamere digitali sono in grado di registrare parte dello spettro infrarosso, e vi permetteranno di osservare la luce invisibile del vostro mouse.

 

 

 

L’Algoritmo

Ricapitolando,

il mouse ottico registra immagini della superficie su cui è posto e le confronta per calcolare lo spostamento.
Addentriamoci nel funzionamento dell’algoritmo.

Sebbene questa spiegazione possa essere sufficiente, siamo dei nerd, e vogliamo sapere nel dettaglio come funzionano le cose. E allora addentriamoci nel funzionamento dell’algoritmo.

roughnessLe immagini riprese sono molto piccole, una quindicina di pixel per lato ognuna, ma contengono minuscoli dettagli e imperfezioni della superficie su cui è posto il mouse. Sebbene tutte le superfici sembrino lisce, osservate nel dettaglio sono fortemente disomogenee.

Immaginiamo di muovere il mouse e scattare fotografie della superficie: le immagini acquisite vengono elaborate per coppie, ogni coppia viene utilizzata per calcolare uno spostamento.

La tecnica utilizzata per calcolare lo spostamento tra due immagini è nota come correlazione incrociata

Ogni immagine può essere associata ad una matrice di numeri, i cui valori che vanno da 0 ad 1 rappresentano l’intensità del colore (le immagini sono acquisite in scala di grigi).

Se immaginiamo di sovrapporre due immagini consecutive, shiftate in modo casuale, la correlazione incrociata è la somma totale dei prodotti delle due immagini.

Detto a parole suona difficile, le formule le hanno inventate per un motivo :D

ccf

Dove Φ è appunto la correlazione, ed n rappresentano lo spostamento orizzontale e verticale, in pixel.

Anche la formula potrà sembrarvi difficile, ma il concetto è molto semplice: moltiplicate ogni pixel dell’immagine A per i pixel dell’immagine B shiftata, e sommate tutti i prodotti. Otterrete il valore della correlazione.

La funzione di correlazione viene valutata per tutti i possibili spostamenti relativi tra le due immagini.

Quando le immagini sono perfettamente sovrapposte, la correlazione raggiunge un picco

Per spiegare meglio il concetto, ho realizzato questa animazione:

correlation_fast_retail

La coppia di immagini a sinistra rappresenta l’acquisizione del mouse a due istanti successivi.

Queste immagini vengono sovrapposte in tutti i modi possibili, per ogni spostamento si valuta il valore della correlazione e infine si ottiene una mappa. Il valore di picco, ossia il massimo su questa mappa, rappresenta lo spostamento più probabile tra le due immagini.

 

 

Osservazioni

Più grandi sono le immagini, maggiori sono gli spostamenti possibili e più lento è il processo, ed è per questo che le immagini acquisite sono così piccole.

sensor

 

Se le immagini fossero perfettamente uguali, ad esempio se utilizzate il mouse su una superficie di vetro, la correlazione assumerebbe il suo valore massimo al centro, ossia per uno spostamento nullo. Ed è per questo che il vostro cursore non si muove quando usate il mouse su superfici troppo lisce.

L’utilizzo del laser permette di risolvere il problema delle superfici lisce grazie all’elevatissimo contrasto generato.

L’utilizzo del laser, al posto di un semplice LED, come fonte di illuminazione, permette di risolvere il problema delle superfici lisce grazie all’elevatissimo contrasto generato.

Risulta anche chiaro adesso il motivo per cui il mouse non funziona più quando lo solleviamo leggermente dalla scrivania: la lente utilizzata per acquisire le immagini è costruita per focalizzare i dettagli della superficie quando il mouse è poggiato su di essa.

Se solleviamo il mouse le immagini risulteranno sfocate, prive di dettagli, e la correlazione fallirà miseramente.