Jumping Jack Flash weblog

360 test

Posted in 360 by jumpjack on 11 ottobre 2019

WordPress dispone di una specifica “tag” per pubblicarer foto panoramiche a 360°:

Senza questa tag, l’immagine a 360 appare semplicemente “spianata” in formato equirettangolare:


Projection: Equirectangular (2)
FOV: 360 x 180
Ev: 6,54

Usando invece l’apposita tag:

Il visualizzatore è un po’ rudimentale perchè non consente di zoomare.

Se si ha una fotocamera in grado di scattare solo una foto singola fisheye, che non copre 360°x360° ma qualcosa in meno (tipo 360°x200° o 360°x235°), per incollare insieme due foto emisferiche scattate in direzioni opposte si può usare il SW “Hugin”, seguendo questa procedura:

  1. Go into the View → Advanced (or Expert) mode.
  2. Click the Add Images… button to load the stitched panorama.
  3. Set the Lens type to Equirectangular and the HFOV to 360.

    This will load your 360×180 as a 360×180.

  4. Go into the GL preview window.
  5. Use the Move/Drag tab to change the viewpoint.

    Dragging horizontally changes yaw, dragging vertically changes pitch, right-dragging changes roll.

  6. Use the Projection tab to select a different projection.

    Watch your FoV setting, since not all projections play nice with 360.

  7. Use the Crop tab to set the crop.
  8. Once everything looks the way you want it to, save the Hugin project (.pto) file, and go to the Stitcher tab, select the file output format and size you want, and click the Stitch! button to create your new panorama.
Tagged with: , , ,

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