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

Esperimenti di stereofotogrammetria da immagini fisheye

Posted in varie by jumpjack on 20 luglio 2018

Programmi di conversione fisheye da provare:

Teoria:

http://michel.thoby.free.fr/Fisheye_history_short/Projections/Various_lens_projection.html

 

Programmi di stereofotogrammetria:

  • VisualSFM
  • Insight3d
  • Regard3d
  • 3dF Zephyr

 

 


Conversione da Fisheye a Equirectangular per visione a 360 tramite Cardboarddi immagine creata con telecamera panoramica a 235° tipo questa (in sostituzione di software XDV360, che schiaccia troppo le immagini a 235° perchè forse predisposto solo per 180°) .

Script in linguaggio “PTstitcher“, chiamato da script batch dome2rect in pacchetto dome2rect:

o f5 v235 r180 y0 p90
p f4 w4096 h2048 v360
m i2


Sorgente (4096×4096):

  • Formato circular fisheye
  • FOV=235°
  • Rotazione orizzontale di 180° (=capovolta)
  • “Picchiata” di 90° rispetto allo Zenit (quindi altezza 0°)

Desintazione:

  • Formato equirectagular
  • FOV=360°
  • Larghzza 4096
  • Altezza 2048


Parametri:
#####################
# ‘o’ = Source Image Attributes
#
# ‘o’ Attributes:
# f0 = projection mode 0 = rectilinear
# f3 = projection mode 3 = equidistant fisheye
# f4 = projection mode 4 = equirectagular
# f5 = projection mode 5 = circular fisheye
# f10 = projection mode 10 = equisolid fisheye

# r-10 = roll the image -10 degrees (left)
# y22 = yaw the image 22 degrees
# p45 = pitch the image 45 degrees

#####################
# ‘p’ = Destination Image Attributes
#
# ‘p’ Attributes:
# C0,960,420,960 = Crop Dimensions left,right,top,bottom
# f0 = projection mode 0 = rectilinear
# f1 = projection mode 1 = cylindrical
# f2 = projection mode 2 = equirectagular/latlong
# f3 = projection mode 3 = fullframe fisheye

# w1920 = destination width 1920 px
# h1080 = destination height 1080 px
# v90 = horizontal field of view = 90 degrees


	

La rivoluzione delle telecamere economiche a 360°

Posted in Uncategorized by jumpjack on 22 dicembre 2016

Quest’anno (2016) stanno comparendo sul mercato molte telecamere “a 360°”, anche economiche, che possono essere divise in tre famiglie: quelle a obiettivo singolo,  quelle a obiettivo doppio, e quelle a obiettivo multiplo.

Quelle a obiettivo doppio permettono di effettuare foto che coprono 360° sia in orizzontale che in verticale, arrivando di fatto a “4 pigreco steradianti“, cioè una sfera completa; ne è un esempio la Samsung Gear 360:

Quelle a obiettivo multiplo riescono anch’ esse a coprire l’intera sfera, ma lo fanno in modo più raffinato, perchè ogni telecamera deve coprire uno spicchio più piccolo, quindi ai bordi dell’immagine c’è meno distorsione, e al momento di incollarle tutte insieme si nota meno la “cucitura”:

Sia quelle che a obiettivo doppio che multiplo sono molto costose, ma stanno ora uscendo anche quelle a obiettivo singolo:

Per forza di cose non possono coprire 360 gradi sia in orizzontale che in verticale; le migliori arrivano a 230° su uno dei due assi, ma le più arrivano a 220°, e alcune solo a 190°.

L’utilizzo di questi dispositivi non è molto chiaro agli utenti, a giudicare dai video dimostrativi su youtube, che mostrano video ripresi facendo puntare queste telecamere ORIZZONTALMENTE; l’assurdo risultato è ovviamente una inutile foto (o video) enormemente distorta!

Il vero utilizzo per cui sono pensate queste telecamere è sui droni; o meglio, SOTTO i droni: montata sotto a un drone che vola a qualche metro di altezza, una di queste telecamere riprenderà tutto ciò che c’è sotto al drone e intorno al drone, fino a un’altezza di 15-25°sopra l’orizzonte (230-180 diviso 2); al di sopra di quest’altezza…. beh, ci sono solo cielo ed eliche! Quindi è del tutto inutile andare oltre!

Il problema è che, quando si vanno a rivedere queste immagini e filmati, NON si guarda la versione “raw”, che sarebbe sferica e distorta, ma si osserva solo un piccolo spicchio, e si sposta la visuale usando un dito o l’accelerometro di un visore o di un cellulare.

Questo spicchio è alto forse 1/2 o addirittura 1/4 dell’intera immagine; se  è 1/2 (verifiche in corso…) 1/3 dell’immagine intera,  quindi affinchè l’immagine risultante sia FullHD (1080 linee) , l’immagine 360° totale deve avere almeno 3240 linee, cioè essere più di una 4k! Se però lo spicchio occupa solo 1/4 dell’immagine, servirà addirittura un 8k!

Alcune di queste telecamere economiche si “spacciano” per HD…. ma se ad essere HD1080 è il filmato grezzo, significa che lo spicchio avrà una risoluzione MASSIMA di 1080/3=360 linee 540 linee (se 1/2), o addirittura 270! (se 1/4)

Quindi occhio alle specifiche!

Per info su 2k, 4k e 8k:

https://jumpjack.wordpress.com/2015/03/03/ultrahd-4k-8k-qual-e-la-distanza-minima-a-cui-vanno-osservate-queste-supertv/

Tabella delle risoluzioni:

  • 2MP =  1920 x 1080 = FullHD
  • 2.3MP = 2048 x 1150 = 2K
  • 5 MP = 2560 x 1920
  • 6MP = 3032 x 2008
  • 8MP =  3840 x 2160 = 4K
  • 10MP = 3888 × 2592
  • 12MP = 4256 × 2848
  • 12.8MP = 4368 × 2912
  • 14MP = 4536 × 3024
  • 16.7MP = 4992 × 3328
  • 32MP = 7680 x 4320 = 8K

Dividendo per 3 si ottiene la risoluzione dell’immagine sul visore:

  • 2MP = 360 linee
  • 2.3MP = 2K = 383 linee
    • 576 linee = TV SD
  • 5MP = 640 linee
  • 6MP = 670 linee
    • 720 linee = HD Ready
  • 8 MP = 4K = 816  linee
  • 10 MP = 864 linee
  • 12 MP = 949 linee
  • 12.8 MP = 970 linee
  • 14 MP = 1008 linee
    • 1080 linee = FullHD
  • 16.7 MP = 1109 linee
  • 32 MP = 8K = 1440 linee

Bisogna poi considerare che il visore sta a 5-6 cm dal naso se usato in modalità VR, quindi la risoluzione deve essere “molto alta”: serve almeno un HD-Ready per non vedere troppo i pixel, ma ovviamente un FullHD è meglio.

Diciamo quindi che queste telecamere economiche con solo 220° verticali e una risoluzione di 8MP sono validissime per filmati 360° da osservare tenendo il cell in mano e girandosi intorno; più che sufficienti se si vuole usare il cell come visore VR.

La figura qui sotto mostra il campo visivo di una videocamera a “360° parziali” puntata verso il basso:

campo-visivo-360

cam360.png

Questa pagina illustra egregiamente e con quantità di dettagli tecnici come un’immagine grandangolare (“fisheye”) viene convertita in un’immagine piatta: http://paulbourke.net/dome/fish2/

Ad esempio, una videocamera in grado di riprendere un angolo di soli 180°, cioè solo metà sfera, proiettata in piano darà solo mezzo panorama:

spherical0

Proiettata:

spherical1

Le due bande nere laterali costituiscono i 180° mancanti. Se la telecamera è puntata orizzontalmente, tutta la metà di paesaggio dietro alla telecamera mancherà; se è puntata verso l’alto, la copertura orizzontale sarà a 360°, cioè completa, ma non scenderà sotto l’orizzonte:

fisheyesample3.jpg

fishpano3

Se però la telecamera copre un angolo superiore a 180°, è puntata verso il basso ed è montata sotto a un drone, riprenderà tutto il paesaggio utile, escludendo solo cielo ed eliche. Purtroppo sul sito non è disponibile una foto del genere..

Quest’altra figura mostra che porzione di un video 360° è effettivamente osservabile con un visore, che può essere ruotato in modo da “scorrere” l’intera immagine o fotogramma, che è una proiezine equirettangolare:

video360

Il rettangolo giallo grande evidenzia il campo visivo dello schermo del cellulare utilizzato come visore VR; i rettangolini gialli mostrano che l’altezza del rettangolo grande entra 3 volte in quella del video completo, che è visibile qui: https://www.youtube.com/watch?v=cURLeVE9SiU ; è realizzato con una CAM360 della LG, che ha copertura completa della sfera (360×360,  o 4pigreco steradianti), ma anche le telecamere “parziali” creano video di una sfera totale, solo che lasciano una striscia nera nella sezione mancante.


Modelli disponibili su Amazon.it (in ordine casuale):

Flylinktech – 64,00 euro

Consegnabile in punto di ritiro

  • 180° o 220°, non chiaro
  • CMOS (=no vibrazioni “jello” su drone)
  • Foto 12 MP –> 949 linee in VR
  • Video 1920 * 1080 –> 360 linee in VR

Boblov – 96,00 euro

No punto di ritiro

  • 220°
  • Foto = ??
  • Video 4k –> 816 linee in VR
  • 481 grammi

Boblov 4k – 133,00 euro

No punto di ritiro

  • 220°
  • CMOS (=no vibrazioni “jello” su drone)
  • Foto 16Mpixel –> 1100 linee
  • 499 grammi

niceEshop – 83,00 euro

No punto di ritiro

  • 220°
  • CMOS = ??
  • Foto  16MP –> 1100 linee
  • Video 2.7 k, interpolato a 4k (?!?) –> 400 linee, 816 interpolate?
  • Peso = ? grammi

Campark – 130,00 euro

No punto di ritiro

  • 235°
  • CMOS (=no vibrazioni “jello” su drone)
  • Foto 16MP –> 1100 linee
  • Video 3k 2448 linee –> 816 linee in VR
  • 100 grammi

Andoer V1 – 90,00 euro

Consegnabile in punto di ritiro

  • 220°
  • CMOS = ??
  • Foto 16MP –> 1100 linee in VR
  • Video =??
  • 481 grammi

Topjoy – 94,00 euro

No punto di ritiro

  • 220°
  • CMOS (=no vibrazioni “jello” su drone)
  • Foto 16MP –> 1100 linee in VR
  • Video =4k –>816 linee in VR
  • 499 grammi

Lente fisheye 198° per cellulare  – 24,00 euro

Ovviamente serve un cellulare in grado di registrare almeno in 2K.

 


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

 

Tagged with: , , , , , , ,