CALIBRARE UNA LIM
SISTEMA OPERATIVO: LINUX
Una LIM (lavagna interattiva multimediale) è una superficie interattiva su cui è possibile scrivere, disegnare, allegare immagini, visualizzare testi, riprodurre video o animazioni. È spesso costituita da uno schermo touch screen dove si può scrivere utilizzando una speciale penna, e da un proiettore per visualizzare l'immagine. Poiché spesso il proiettore non è allineato con lo schermo, occorre calibrare il dispositivo per poterlo utilizzare efficacemente.

Procediamo con ordine. Supponiamo di visualizzare due cerchi con centro in (x₁;y₁) e (x₂;y₂). Clicchiamo al centro dei cerchi, ma (a causa dello sfasamento tra lo schermo e il proiettore che vi invia l'immagine) il click viene rilevato rispettivamente alle posizioni (x'₁;y'₁) e (x'₂;y'₂).

Il sistema corregge la posizione del click utilizzando la regola seguente:

⎡ c₁₁ c₁₂ c₁₃ ⎤   ⎡ x'/width  ⎤   ⎡ x/width  ⎤
⎜ c₂₁ c₂₂ c₂₃ ⎥ · ⎜ y'/height ⎥ = ⎜ y/height ⎥
,
⎣ c₃₁ c₃₂ c₃₃ ⎦   ⎣    1      ⎦   ⎣    1     ⎦


dove width e height danno, in pixel, larghezza e altezza della risoluzione dello schermo.

In altre parole, i valori della seconda e terza matrice devono essere compresi tra 0 e 1: per esempio, 0,5 indicherà un valore a metà dello schermo. Al contrario di quanto affermato dal wiki di Ubuntu, non avrebbe senso utilizzare valori come 400 o 197, che corrisponderebbero a punti esterni allo schermo.

La matrice

⎡ c₁₁ c₁₂ c₁₃ ⎤
⎜ c₂₁ c₂₂ c₂₃ ⎥
⎣ c₃₁ c₃₂ c₃₃ ⎦


viene chiamata matrice di trasformazione delle coordinate (Coordinate Transformation Matrix).

Nel seguito utilizzeremo sempre la matrice

⎡ c₀ 0  c₁ ⎤
⎜ 0  c₂ c₃ ⎥
,
⎣ 0  0  1  ⎦


per cui avremo

⎡ c₀ 0  c₁ ⎤   ⎡ x'/width  ⎤   ⎡ x/width  ⎤
⎜ 0  c₂ c₃ ⎥ · ⎜ y'/height ⎥ = ⎜ y/height ⎥
.
⎣ 0  0  1  ⎦   ⎣    1      ⎦   ⎣    1     ⎦


Ricordando la regola per la moltiplicazione delle matrici:

x/width=c₀·(x'/width)+0·(y'/height)+c₁·1
y/height=0·(x'/width)+c₂·(y'/height)+c₃·1
1=0·(x'/width)+0·(y'/height)+1·1
,

ovvero, limitandoci alle prime due equazioni (la terza è sempre verificata):

x/width=c₀x'/width+c₁
y/height=c₂y'/height+c₃
.

Moltiplichiamo entrambi i membri della prima equazione per width:

x=c₀x'+c₁·width.

In particolare, sostituendo le x relative ai due click otteniamo

x₂=c₀x'₂+c₁·width

per il secondo click e

x₁=c₀x'₁+c₁·width

per il primo.

Sottraiamo membro a membro:

x₂-x₁=c₀(x'₂-x'₁).

Dividiamo i due membri per x'₂-x'₁ e scambiamo il primo membro con il secondo:

c₀=(x₂-x₁)/(x'₂-x'₁).

Ora, per calcolare c₁, ricordiamo che

x₁=c₀x'₁+c₁·width.

Portiamo a primo membro c₀x'₁ e scambiamo il primo membro con il secondo:

c₁·width=x₁-c₀x'₁.

Dividiamo i due membri per width

c₁=(x₁-c₀x'₁)/width.

Procedendo analogamente per le ordinate, utilizzando l'equazione

y/height=c₂y'/height+c₃,

si ottiene:

c₂=(y₂-y₁)/(y'₂-y'₁)
c₃=(y₁-c₂·y'₁)/height
.


Riepilogando,

c₀=(x₂-x₁)/(x'₂-x'₁)
c₁=(x₁-c₀·x'₁)/width
c₂=(y₂-y₁)/(y'₂-y'₁)
c₃=(y₁-c₂·y'₁)/height
.

Se avete calcolato il valore di c₀, c₁, c₂ e c₃ non vi rimane altro che eseguire da terminale il comando

xinput set-prop "$DEVICE_NAME" --type=float "Coordinate Transformation Matrix" c₀ 0 c₁ 0 c₂ c₃ 0 0 1,

dove al posto di $DEVICE_NAME dovete inserire il nome del dispositivo da calibrare, come riportato da

xinput list

Vi è venuto il mal di testa? Non avete idea di come applicare il tutto? Niente paura: in questo caso potete installare il programma calibrateTouchScreen, disponibile in versione rpm per Fedora, che vi aiuterà a calibrare il dispositivo mediante una comoda interfaccia grafica, senza dover fare nessun calcolo.
Ritorna all’indice del software