Table of Contents

Fotocamera e input estesi

Questo articolo introduce il modello di fotocamera, i parametri e alcuni punti di attenzione per le fotocamere fisiche, nonché l'estensione dell'input tramite fotocamere personalizzate.

camera

Frame di input

Il frame di input (Input Frame) è l'unità di dati di base in AR, che rappresenta tutte le informazioni rilevanti catturate da una fotocamera o altra fonte dati in un singolo frame. Un frame di input contiene solitamente:

  • Dati immagine grezzi (camera image)
  • Parametri della fotocamera (ad esempio i parametri intrinseci)
  • Timestamp
  • Matrice di trasformazione della fotocamera nelle coordinate mondiali
  • Stato di tracciamento (tracking status)

Queste informazioni forniscono il contesto spaziale e temporale necessario agli algoritmi AR per localizzazione, tracciamento, rendering, ecc.

Fotocamera fisica

Le fotocamere utilizzate attualmente sui dispositivi elettronici sono generalmente composte da più lenti e specchi. Tuttavia, per costruire un modello di fotocamera non si utilizza solitamente la struttura ottica reale, ma modelli semplificati.

Modello di fotocamera stenopeica

pinhole camera

Questo è il modello più semplice comunemente utilizzato, dove la luce passa attraverso un piccolo foro formando un'immagine ruotata di 180 gradi. Tuttavia, i dati emessi dalla fotocamera capovolgono l'immagine. Sono necessari sei parametri per descrivere questo modello: larghezza e altezza in pixel \(w, h\), lunghezza focale in pixel \(f_x, f_y\), posizione del punto principale in pixel \(c_x, c_y\). Si può notare che quando le dimensioni in pixel vengono ridimensionate, anche la lunghezza focale e la posizione del punto principale vengono scalate di conseguenza, mantenendo invariata la posizione dell'immagine.

Modello di fotocamera OpenCV

Alcune fotocamere presentano distorsione radiale e tangenziale significativa. Il modello di fotocamera OpenCV aggiunge parametri di ordine superiore al modello stenopeico per descrivere queste distorsioni. La distorsione radiale utilizza \(k_1, k_2, k_3, \cdots\), mentre quella tangenziale utilizza \(p_1, p_2\).

Nota

Alcuni tracker non supportano il modello di fotocamera OpenCV.

Modello di fotocamera fish-eye OpenCV

Le fotocamere fish-eye comprimono contenuti ad ampio angolo visivo in un'area di imaging più piccola tramite proiezione prospettica. Il modello di fotocamera fish-eye OpenCV non applica correzioni della distorsione e utilizza \(k_1, k_2, k_3, k_4, \cdots\) oltre ai 6 parametri del modello stenopeico.

Nota

Alcuni tracker non supportano il modello di fotocamera fish-eye OpenCV.

fisheye camera

Orientamento della fotocamera e dell'immagine

Sugli smartphone, quando tenuti orizzontalmente (ruotati di 90 gradi in senso antiorario dalla presa verticale normale) e con lo schermo in orientamento orizzontale, l'immagine emessa dalla fotocamera posteriore viene visualizzata sullo schermo nella stessa direzione della scena reale. Cambiare solo l'orientamento di visualizzazione dello schermo senza modificarne la posizione fisica non altera l'orientamento dell'immagine emessa dalla fotocamera fisica. Quando il dispositivo è tenuto verticalmente normalmente e lo schermo è in orientamento verticale, l'immagine della fotocamera posteriore deve essere ruotata di 90 gradi in senso orario per corrispondere alla scena reale. Quando l'orientamento di visualizzazione dello schermo cambia, il rendering dell'immagine della fotocamera richiede una rotazione compensativa inversa per corrispondere alla scena reale.

L'orientamento della fotocamera e dell'immagine sono generalmente definiti rispetto all'orientamento naturale del dispositivo:

  • Smartphone

    • Android

      Android definisce un orientamento naturale corrispondente alla presa verticale normale; anche l'unità di misura inerziale (IMU) utilizza questo orientamento come riferimento. La rotazione dell'immagine emessa dalla fotocamera rispetto a questa direzione è ottenibile come parametro.

    • iOS

      Su iOS, sebbene non esplicitamente definito, l'unità di misura inerziale utilizza lo stesso riferimento di Android.

  • Tablet

    L'orientamento naturale dei tablet può essere orizzontale o verticale come sugli smartphone.

  • Occhiali

    L'orientamento naturale degli occhiali è solitamente orizzontale.

Durante il rendering dell'immagine della fotocamera, vengono considerati sia l'orientamento della fotocamera che quello dello schermo.

Tipi di fotocamera e capovolgimento

Gli smartphone hanno generalmente fotocamere posteriori e frontali. L'immagine emessa dalla fotocamera frontale deve essere capovolta orizzontalmente prima di essere visualizzata sullo schermo, simulando uno specchio. Senza questo capovolgimento, l'immagine apparirebbe innaturale.

Estensione dell'input

EasyAR supporta l'estensione dell'input tramite fotocamere personalizzate. Queste consentono di acquisire frame di input da fonti esterne e trasmetterli al sistema AR per l'utilizzo da parte dei tracker. È possibile implementare autonomamente l'acquisizione dei dati immagine per una fotocamera personalizzata.

Linee guida specifiche per piattaforma

L'utilizzo di fotocamere ed estensioni di input è strettamente legato alla piattaforma. Fare riferimento alle seguenti linee guida in base alla piattaforma target: