Jumping Jack Flash weblog

Studi su immagini a 360°

Posted in 360 by jumpjack on 5 maggio 2019

MPREMAP” (“Moving Panoramas REMAPper”) è un tool a linea di comando di Helmut Dersch che si appoggia alle librerie “Panorama Tools” o Panotools, dello stesso autore, ed è usato dal programma dome2rect per convertire sia immagini che video da formato fisheye (o sferico) a equirettangolare (o “lat/lon”), per visione su visori VR.

MANUALE: Link (versione Java)

Tipi di proiezioni “fisheye” (in base a quanto riportato nelle istruzioni degli script per MPREMAP); tra parentesi il codice con cui sono identificate in MPREMAP:

  • equidistant (F3/org)
  • fullframe (F3/dest)
  • circular (F5)
  • equisolid (F10)

“Circular” e “fullframe” sono esattamente la stessa proiezione, ma nella seconda viene presa solo una parte dell’immagine risultante, in modo che non ci siano zone nere nell’immagine finale:

circular risheye fullframe fishey (=cropping)

In sostanza il fullframe è un semplice “cropping” (ritaglio) di un’immagine fisheye completa.

Secondo questo sito (che elenca le formule trigonometriche delle varie proiezioni), i tipi possibili di proiezioni fisheye sono: (evidenziate quelle presenti anche in MPREMAP)

  • equidistant
  • stereographic
  • orthographic
  • equisolid
  • Rectilinear lens : R = f . tan (𝛩)   (proiezione “standard” delle macchine fotografiche)
  • Equidistant fisheye lens : R = f . 𝛩
  • Stereographic lens: R = 2f . tan ( 𝛩 / 2 )
  • Orthographic fisheye lens : R = f . sin (𝛩)
  • Equisolid fisheye lens : R = 2f . sin ( 𝛩 / 2 )
  • R = Radial position of a point on the image sensor
  • f = Focal length of the lens
  • 𝛩 = The angle between an object and the optical axis, expressed in radians

Le immagini qui sotto mostrano, tramite una griglia, qual è la distorsione prodotta dai vari tipi di fisheye, a partire da un’immagine equirettangolare totale, che cioè copre 360°x360°; il FOV di queste immagini è invece di 220°:

equirettangolare

Equirettangolare / lat-lon

 

equidistante

Equidistante

 

stereografica

Stereografico

 

ortografica

Ortografico

 

Equisolido

Equisolido

Sembrano a prima vista tutte identiche, ma in realtà la distorsione differisce leggermente dall’una all’altra; la più evidente è la distorsione ortografica, in cui i poli appaiono completamente schiacciati e quindi perpendicolari al piano dell’immagine, mentre nelle altre proiezioni i poli sono “spalmati” sul piano visuale, come evidenziato in questo esempio:

confronto
Questo vuol dire che in proiezione ortografica non si possono coprire più di 180°.

Questo grafico (fonte) mostra l’andamento del rapporto R/f al variare dell’angolo teta, evidenziando l’entità delle distorsioni ottiche nei vari casi:

grafico confronto proiezioni fisheye

Quest’immagine mostra chi sono R, f e teta:

fisheye schema

 

Paul Bourke distingue due famiglie di fisheye:  Hemispherical e Angular, facendo riferimento a come la sfera viene proiettata sul piano: se parallelamente, quindi con compressione crescente delle distanze man mano che si arriva a 90° rispetto allo zenith della camera, si hal’Hemispherical; se invece nell’immagine piatta la distanza tra due punti è sempre “uguale” all’angolo tra i due punti nell’immagine sferica, si parla di “angular”; nel primo caso il FOV massimo è 180°, nel secondo può arrivare a 360°.

Hemispherical fisheye (squeezed) Angular fisheye (constant distance)

 

Le proiezioni non-fisheye supportate da MPREMAP sono invece:

  • rectilinear (F0)
  • cylindrical (F1)
  • equirectagular/latlong (F2)
  • equirectagular (F4)

La proiezione usata dai visori VR è la equirectagular/latlong vista sopra, che riporto per comodità:

equirettangolare

Da notare che un’equirettangolare come questa rappresenta l’intera sfera 360°x360°; una foto scattata puntando la  telecamera verso l’alto con un FOV di 180° l’immagine apparirebbe così:

Manca cioè la semisfera che si trova sotto la telecamera. Notare che ogni quadratino è di 10°x10° di lato.

 


Dimensioni standard frame 35mm: 36mm x 24mm

Se il sensore è più piccolo di uno standard frame, inquadrerà una parte più piccola dell’immagine; questa parte più piccola verrebbe inquadrata in un fullframe, posta la camera alla stessa distanza dall’oggetto, se la lunghezza focale fosse più grande; il rapporto tra questa lunghezza focale più grande (Lf, full frame) e la lunghezza focale effettiva della macchina (Lr, ridotta) è il cosiddetto “moltiplicatore di lunghezza focale” (focal length multiplier):

FLM = Lf/Lr


 

Il fattore di ingrandimento m (magnification) è dato da:

m = (dimensioni immagine)÷(dimensioni oggetto)

Le dimensioni dell’immagine sono anche le dimensioni del sensore


La lunghezza focale si può calcolare come:

1/f = 1/u + 1/v

oppure

f = u÷(1+1/m)


Questo schema mostra come varia il FOV (angolo visuale) al variare della lunghezza focale, ma solo fino a FOV di 180°:

tabella-focal-length-angolo

 

Quest’altro schema (fonte – brevetto n.  3737214 by Mr. Shimizu, 5 giugno 1973) mostra lo spaccato di una lente fisheye con FOV di 220° (110×2), ottenuto tramite rifrazioni multiple:

Figure-22

La lunghezza focale indicata è di 6.3 mm

E’ possibile raggiungere addirittura i 270° (fonte – brevetto 3524697) :

fisheye270.jpg

La lunghezza focale in questo  caso è di 5.4 mm

 

Graficando le tre figure si può provare a ricavare per interpolazione la lunghezza focale per 235°:

grafico-LF-FOV.png

Conversione da immagini sferiche a equirettangolari per telecamere 360

Posted in VR360 by jumpjack on 1 gennaio 2017

In attesa che arrivi il regalo di Natale che mi sono fatto, cioè una telecamera a 360°x220°, sto investigando sui software disponibili per trasformare il suo output in qualcosa di utilizzabile col mio visore VR-3d, un VRBox di marca imprecisata.

vrbox camera360

Un “visore” come il VRbox in realtà non è altro che una versione più sofisticata del “Google Cardboard”.

googlecardboard-chiuso google-cardboard-aperto

Si tratta di un semplice pezzo di cartone che, opportunamente ripiegato permette di accogliere al suo interno un cellulare che, grazie ai suoi sensori interni (accelerometro e – indispensabile – giroscopio), è in grado di dare l’illusione di “immergersi dentro un’immagine”, perchè è possibile vedere l’immagine “tutta intorno”, come quando si va in un planetario a osservare le stelle proiettate sulla cupola.

vr-oooh

Nel caso del Google Cardboard, del VRbox o di altri visori,  la “cupola” è virtuale, ricreata digitalmente dal cellulare a partire da un’immagine in proiezione equirettangolare (cioè, in termini meno tecnici, una “sfera spianata”).

Il risultato è il seguente:

http://www.dichitoarchitetto.it/rendering-navigabili/#piazza_polignano

In questo caso l’immagine è navigabile col mouse; nel caso del VRbox, è navigabile muovendo la testa di qua e di là.

Per realizzare in modo completo questo effetto servirebbe una fotocamera in grado di riprendere l’intera sfera di 4pigreco steradianti, ma si possono anche usare due fotocamere contrapposte con campo visivo di 360°x180°; rimando però all’altra mia pagina per i dettagli. Qui voglio invece riportare un elenco di siti e software trovati per realizzare le cosiddette “foto a 360°” o “foto immersive” (idem dicasi per i video).

E il 3d?

E’ anche possibile aggiungere la terza dimensione a queste immagini e video. Servono però due fotocamere…

E non devono essere montate contrapposte, ma affiancate, guardanti nella stessa direzione. Il video risultante dovrà essere composto da due video, uno che occupa la metà superiore e uno quella inferiore dello schermo; entrambi i video dovranno essere in proiezione equirettangolare; caricandoli su youtube, e poi visualizzandoli su un cellulare, dovrebbero mandare automaticamente il cellulare in “modalità cardboard”, se è dotato di giroscopio; questo tipo di video però non offrirà una panoramica completa di 360° orizzontali, ma solo di 220°; considerando che il campo visivo di ogni occhio è di circa 90° contando anche la visione periferica, dovrebbe dare una certa possibilità di muovere la testa a destra e a sinistra.

Sto ancora investigando la cosa…

Teoria

Software

Forum

Librerie per programmatori

 

 

Download software XDV360 per Windows per visualizzare sul PC le foto a 360°: LINK