Camere ed estensioni di input
Questo articolo presenta il modello di camera, i parametri e altre note d'uso per le camere fisiche, oltre al modo di estendere l'input usando una custom camera.

Input frame
Un input frame è un'unità dati fondamentale in AR. Rappresenta tutte le informazioni correlate di un frame catturato da una camera o da un'altra sorgente dati. Un input frame di solito contiene:
- Dati immagine raw (camera image)
- Parametri della camera (come intrinsics)
- Timestamp
- Matrice transform della camera in coordinate mondo
- Tracking status
Queste informazioni forniscono agli algoritmi AR i dati di contesto spazio-temporale necessari per localization, tracking, rendering e altre attività.
Camera fisica
Le camere attualmente usate nei dispositivi elettronici sono solitamente composte da più lenti e specchi. Tuttavia, in genere non si usano strutture ottiche reali per costruire il modello di camera, ma modelli semplificati.
Modello di camera pinhole

Questo è il modello più semplice comunemente usato. La luce passa attraverso un piccolo foro e forma un'immagine ruotata di 180 gradi, ma i dati di output della camera raddrizzano l'immagine. Sono necessari sei parametri per descrivere questo modello: larghezza e altezza in pixel \(w, h\), focal length in pixel \(f_x, f_y\) e posizioni in pixel del principal point \(c_x, c_y\). Si può notare che, se larghezza e altezza in pixel vengono scalate, anche focal length e posizioni del principal point vengono scalate di conseguenza, mantenendo invariata la posizione dell'immagine.
Modello di camera OpenCV
Alcune camere presentano una significativa radial distortion e tangential distortion. Il modello di camera OpenCV aggiunge parametri di ordine superiore al modello pinhole per descrivere radial distortion e tangential distortion. La radial distortion è descritta da \(k_1, k_2, k_3, \cdots\). La tangential distortion è descritta da \(p_1, p_2\).
Nota
Alcuni trackers non supportano il modello di camera OpenCV.
Modello di camera fisheye OpenCV
Una camera fisheye usa perspective projection per comprimere contenuti con ampio angolo di visione in un'area di imaging più piccola. Il modello di camera fisheye OpenCV non include distortion correction. Basandosi sui sei parametri del modello pinhole, usa \(k_1, k_2, k_3, k_4, \cdots\) per la descrizione.
Nota
Alcuni trackers non supportano il modello di camera fisheye OpenCV.

Orientamento della camera e orientamento dell'immagine
Sui telefoni, quando il telefono viene tenuto di solito in orizzontale (ruotato di 90 gradi in senso antiorario dalla normale presa verticale) e anche l'orientamento di visualizzazione dello schermo è orizzontale, l'immagine prodotta dalla camera posteriore viene visualizzata sullo schermo nella stessa direzione della scena reale. Cambiare solo l'orientamento di visualizzazione dello schermo senza cambiare l'orientamento fisico dello schermo non cambia l'orientamento dell'immagine prodotta dalla camera fisica. Quando il telefono viene tenuto normalmente in verticale e anche l'orientamento di visualizzazione dello schermo è verticale normale, l'immagine prodotta dalla camera posteriore deve essere ruotata di 90 gradi in senso orario prima di essere visualizzata sullo schermo per corrispondere alla scena reale. Quando l'orientamento di visualizzazione dello schermo ruota, il rendering dell'immagine della camera richiede una compensazione di rotazione inversa per corrispondere alla scena reale.
Orientamento della camera e orientamento dell'immagine sono di solito definiti rispetto alla natural orientation del dispositivo:
Telefono
Android
Android definisce una natural orientation, cioè la direzione in cui il telefono viene normalmente tenuto in verticale. Anche l'inertial measurement unit (IMU) usa questa direzione come riferimento. L'angolo di rotazione dell'immagine di output della camera rispetto a questa direzione può essere ottenuto come parametro della camera.
iOS
Su iOS, anche se la natural orientation non è definita esplicitamente, l'inertial measurement unit usa lo stesso riferimento di Android.
Tablet
Alcuni tablet hanno natural orientation orizzontale, altri sono come i telefoni e usano l'orientamento verticale normale.
Occhiali
La natural orientation degli occhiali è di solito orizzontale.
Durante il rendering dell'immagine della camera, orientamento della camera e orientamento dello schermo vengono combinati per il rendering.
Tipo di camera e camera flip
I telefoni generalmente hanno una camera posteriore e una camera frontale. L'immagine prodotta dalla camera frontale deve essere ribaltata orizzontalmente prima di essere visualizzata sullo schermo per simulare uno specchio. Senza ribaltamento orizzontale, il risultato appare molto innaturale.
Estensione dell'input
EasyAR supporta l'estensione dell'input usando una custom camera. Una custom camera può ottenere input frames da sorgenti esterne e trasmetterli al sistema AR per l'uso da parte dei trackers. L'acquisizione dei dati immagine per la custom camera può essere implementata autonomamente.
Guide specifiche per piattaforma
L'uso di camere ed estensioni di input è strettamente legato alla piattaforma. Fare riferimento alle seguenti guide per lo sviluppo in base alla piattaforma target: