Trasformazioni tra immagini e Look Up Table

Figura 1.8: Trasformazione diretta e inversa tra immagini.

Image fig_lut

Essendo un argomento abbastanza delicato che potrebbe portare alcune ambiguità conviene dedicare una sezione a come in pratica vengono applicate le trasformazioni tra immagini.

Sia $f$ una generica trasformazione biettiva

\begin{displaymath}
f : \mathbb{R}^{2} \to \mathbb{R}^{2}
\end{displaymath} (1.87)

tale che trasformi il punto $(u,v)^{\top}$ appartenente all'immagine sorgente nel punto $(u',v')^{\top}$ dell'immagine destinazione, ovvero
\begin{displaymath}
(u',v')^{\top} = f(u,v)
\end{displaymath} (1.88)

Questa trasformazione verrà chiamata Forward Warping.

Essendo le immagini non continue ma quantizzate in pixel, la trasformazione $f$ non è usabile direttamente nelle applicazioni reali perché potrebbe sia lasciare dei buchi nella seconda immagine sia proiettare più volte lo stesso punto della prima. Per queste ragioni quando un immagine viene processata, si lavora sempre con la trasformazione inversa $f^{-1}$ che, per ogni punto dell'immagine destinazione $(u',v')^{\top}$, restituisce il punto dell'immagine sorgente $(u,v)$ da cui estrarre il colore, ovvero:

\begin{displaymath}
(u,v)^{\top} = f^{-1}(u',v')
\end{displaymath} (1.89)

Questa trasformazione verrà indicata con Inverse Warping.

È chiaro che anche l'immagine sorgente è composta da pixel, ma la conoscenza del punto $(u,v)^{\top}$ permette in maniera molto semplice l'utilizzo di tecniche, quali l'interpolazione lineare, per ricavare il valore del pixel.

Se la funzione $f^{-1}$ è molto complicata e si vuole applicare la medesima trasformazione a più immagini, per risparmiare tempo computazionale si può creare una Look Up Table (LUT) di elementi $(u,v)^{\top}$ grande come l'immagine destinazione dove memorizzare per ogni elemento il risultato della trasformazione (1.89).

Paolo medici
2025-03-12