Sei il visitatore numero 24542
Nel secondo articolo della serie abbiamo illustrato le tecniche per eseguire uno Stitch con PTGui 5.5, tralasciando però un paio di aspetti che sono argomento di questo articolo di approfondimento: tratteremo i Control Points t1 e t2, l'utilizzo avanzato dell'Optimizer ed infine la creazione di panoramiche utilizzando le varie strutture "Layers" disponibili. Aggiornamento Marzo 2008: Inserite alcune note su PTgui 7 ed una illustrazione riferita all'Optimizer di PTgui 6 (nel paragrafo "Control Points t1 e t2")
PTGui 5.7 Prima di inziare, vorrei presentare alcune novità introdotte nell'ultima versione di PTGUi, la 5.7 rilasciata il 3 Marzo 2006: Sono state inoltre effettuate una serie di correzioni al codice, percui ritengo consigliabile l'upgrade anche a coloro non fossero interessati alle novità sopra menzionate.
Control Points t1 e t2 Fino ad oggi abbiamo discusso solamente dei Control Points che PTGui indica come "Normal", ovvero le coppie di riferimenti che servono all'Optimizer per giuntare correttamente gli scatti appartenenti ad uno Stitch. Esistono tuttavia altri due tipi di Control Points: i "t1" (Linea verticale) e i "t2" (Linea orizzontale), che possono essere utilizzati per allineare correttamente uno Sticth e per eseguire correzioni prospettiche sulle immagini, siano esse Stitch oppure scatti singoli. In elenco troviamo anche una categoria "t3" (Linea) che era supportata dalle Panotools ma non è attualmente supportata da PTGui.
Per comprendere quali sono le potenzialità dei CP t1 e t2, esaminiamo il caso di una singola immagine che ritrae un particolare della facciata della chiesa di S.Miniato a Monte, Firenze.
Al fine di rendere evidente la correzione prospettica, l'immagine è stata volutamente ripresa da un punto non ottimale. L'obiettivo che ci poniamo è quello di ricostruire una vista "corretta" del mosaico, come se fosse stato ripreso dal punto ottimale, ovvero da posizione frontale e in asse. Per eseguire questa operazione, PTGui ci offre strumenti estremamente potenti come i Control Points t1 e t2 abbinati all'Optimizer. Si tratta in pratica di indicare a PTGui una serie di linee rette che definiscono assi orizzontali e/o verticali della scena inquadrata: questi dati forniranno indicazioni circa i parametri di ripresa Yaw/Pitch/Roll che, assieme al dato dell'angolo di ripresa dell'ottica utilizzata, consentiranno di effettuare una perfetta correzione prospettica. Seguiamo dunque passo per passo le operazioni da eseguire. Si apre un nuovo progetto PTGui in modalità avanzata (Advanced), si passa al pannello "Source images" e si apre l'immagine da correggere (col tasto Add), che nel nostro caso è in formato TIFF:
La versione 5.7 di PTGui riconosce automaticamente i dati di scatto estraendoli dai dati EXIF presenti nel file TIFF. Occorre comunque controllare ogni volta la correttezza di questi dati prima di procedere. A questo punto si passa direttamente al pannello "Control Points":
I punti di riferimento immessi non definiscono -come detto- i punti di corrispondenza tra le immagini, bensì delle rette che nella realtà sono disposte verticalmente oppure orizzontalmente. La facciata della chiesa di S.Miniato a Monte ci aiuta molto in questa operazione, data la presenza di geometrie molto ben definite. Come si vede, PTGui apre due finestre (anche se l'immagine è unica) e i punti di riferimento sono inseriti uno per ciascuna immagine. Il CP1 ad esempio, definisce una linea orizzontale il cui estremi sono indicati nelle due finestre. La stessa cosa accade per i CP2 ,5 e 6 (orizzontali) e per i CP3 e 4 (verticali). Nel pannello "Panorama settings" si deve solamente impostare la proiezione rettilineare (Rectilinear -flat).
Nella modalità avanzata dell'Optimizer è possibile selezionare in maniera individuale quali sono i parametri da ottimizzare in automatico e quali non devono essere ottimizzati, mantenendo così il valore assegnato per default. Per quanto riguarda i parametri di puntamento della fotocamera (Yaw,Pitch,Roll) ho scelto di ottimizzarli tutti, in quanto durante lo scatto la fotocamera era ruotata su tutti e tre gli assi (in particolare era rivolta verso sinistra, verso l'alto e leggermente ruotata). Se fossi stato certo di aver posizionato la fotocamera perfettamente in bolla, non avrei ottimizzato i parametri relativi, ovvero avrei mantenuto Roll=0 e Pitch=0. Infatti tutti i parametri assumono il valore iniziale di zero. Nella lista "Use control points of" bisogna specificare quali control points si vogliono utilizzare: normalmente si utilizzano i control points presenti in tutte le immagini del progetto e dunque si spuntano tutte le caselle. Nel nostro caso abbiamo spuntato "Image 0" che è la prima e unica immagine presente. Nella lista "Lens parameters" bisogna invece indicare quali parametri relativi all'obiettivo utilizzato dovranno essere ottimizzati. Il principio è sempre lo stesso: i parametri dei quali conosciamo con certezza il valore non li faremo ottimizzare, mentre quelli incerti e/o sconosciuti li faremo ricavare in automatico a PTGui spuntando la casella corrispondente. Nel caso specifico ho selezionato solo "b", che specifica il valore di distorsione barilotto/cuscinetto dell'obiettivo usato (Nikon AI-P 45mm f/2.8), che al momento era sconosciuto. I valori "a" e "c" normalmente si possono considerare zero, dunque ho scelto di non ottimizzarli. Per quanto riguarda "Field of View" (angolo di campo) ho preferito mantenere i valori impostati manualmente in precedenza, così come ho fatto per i valori di decentramento "Shift" che inizialmente si possono considerare uguali a zero. I valori di "Shear" non hanno alcun significato nelle immagini riprese con fotocamere digitali, dunque non devono essere ottimizzati. Prima di verificare il risultato dell'ottimizzazione, rispondo ad una quesito che probabilmente vi sarete posti: dato che l'Optimizer permette di controllare i parametri relativi al puntamento della fotocamera e quelli relativi all'obiettivo utilizzato, perchè non selezionarli sempre tutti? A questo punto è possibile avviare l'ottimizzazione, cliccando su "Run Optimizer":
I risultati numerici dell'ottimizzazione sembrano molto buoni (addirittura PTGui sottolinea "troppo buoni per essere veri"!), ma è buona norma verificare il lavoro svolto aprendo il "Panorama Editor" (Ctrl+E). Se il risultato finale ci soddisfa, si procede alla creazione dello Stitch finale, selezionando il metodo di interpolazione "Lanczos", per garantire la miglior qualità del risultato.
Nella sequenza di immagini sopra riportata è riassunto l'intero percorso di correzione della prospettiva. Partendo da sinistra, abbiamo: - a. il ritaglio della zona interessata dell'immagine originale Il risultato, dal punto di vista prettamente geometrico, è da ritenersi eccellente. Le linee verticali ed orizzontali sono state ricostruite molto bene, ed anche la distorsione appare sotto controllo, segno evidente che l'Optimizer aveva a disposizione riferimenti t1/t2 sufficienti e ben distribuiti.
Le immagini si presentano nella stessa sequenza dell'esempio di S.Miniato. La misura del quadretto è di 20,7x30,5cm con un rapporto tra i lati pari a 1,475, mentre sulllo Stitch finale ho misurato 1616x1078 pixel, con un rapporto di 1,499. Tenuto conto delle inevitabili imprecisioni di inserimento dei control points e delle tolleranze di calcolo, il risultato è da ritenersi molto soddisfacente, con un errore di poco superiore al 1,5%. Tuttavia il calcolo di quest'ultimo progetto non ha prodotto buoni risultati affinchè non ho inserito in modo manuale l'esatto valore di "b" dell'ottica in uso (-0,0058, nel pannello "lens settings") per poi ottimizzare escludendo "b".
Prima di concludere con questo argomento, vediamo in quali altre situazioni possono essere utili i controlli t1 e t2. Resta il fatto che PTGui non potrà soddisfare completamente le condizioni richieste se durante i calcoli troverà "condizioni impossibili", ovvero indicazioni di CP t1 e t2 non compatibili tra loro oppure CP normali (di giunzione) che forniscono geometrie incompatibili con i CP t1 e t2 . La misura con la quale la condizione fissata da un CP è stata rispettata (sia esso normale o t1/t2) si può dedurre dal valore Distance (distanza) riportato nella "Control point table": più alto è il valore di Distance, minore è il rispetto della la condizione.
Uscita in formato "Blended and Layers": modifica delle transizioni. Come sappiamo, una volta completata la preparazione di uno Stitch, si procede alla creazione dell'immagine finale agendo sul pannello "Create Panorama".
Questa struttura del file grafico di uscita si rivela estremamente utile sia nel caso in cui i fotogrammi non si sovrappongono perfettamente (scatti eseguiti a mano libera), sia quando nella scena ci sono elementi in movimento. Qui di seguito ho riportato uno Stitch composto da tre fotogrammi che utilizzerò come esempio e, di fianco, la relativa struttura dei livelli costruita da PTGui: Come si vede, ciascun layer ha una propria maschera di livello. Il livello più basso, quello che contiene lo Stitch, ha una maschera che rende visibile l'intera immagine, fatte salve le aree dove non esistono informazioni. I livelli sovrastanti contengono le singole immagini che coprirebbero l'immagine finale, ma le maschere di livello sono completamente nere e dunque rendono di fatto invisibili questi livelli. Lo Stitch è stato eseguito a mano libera, dunque le singole immagini non sono perfettamente giuntabili, in particolar modo nei soggetti più vicini. Il Blender ha generato un panorama nel quale questi errori sono stati mascherati il più possibile, ma è evidente che oltre una certa soglia i difetti di giunzione divengono visibili. Utilizzando l'uscita "Blended panorama only" questi possibili errori di giunzione vanno cercati scrutando con attenzione l'intera immagine, operazione scomoda e stancante.
b. = Stesso particolare, versione reale registrata nello scatto centrale (Image 1)
Si agisce molto semplicemente: - si riattiva la maschera di livello di "Image 1" (con Shift+Click) Qui di seguito è evidenziato l'effetto della correzione, mostrando la situazione iniziale e finale della maschera di livello, della linea di transizione e dell'immagine risultante:
b. = Situazione finale dopo l'intervento sulla maschera di livello di "Image 1" con lo strumento "Gomma" Il risultato è evidente: lo spostamento della transizione in un'area senza geometrie riconoscibili ha praticamente risolto il problema. L'artefatto è stato riposizionato in una zona dell'immagine dove l'occhio non ha riferimenti precisi per identificarlo.
Uscita in formato "Blended and Layers": gestione degli elementi in movimento. L'uscita "Blended and Layers" può essere utile anche per gestire Stitch in cui vi sono elementi in movimento, come ad esempio uno Stitch di una piazza affollata. Se una persona viene ripresa due volte in due fotogrammi distinti dello Stitch, esistono solamente due possibili scelte: lasciare che la persona appaia due volte (talvolta la cosa non è così evidente) oppure cercare di clonarla con il "Timbro Clone" di Photoshop. In questi casi conviene innanzitutto selezionare l'uscita "Blended and Layers" e creare lo Stitch disattivando l'opzione "Color correct layers", facendo però attenzione a correggere la tonalità degli scatti originali, con particolare attenzione alla vignettatura dell'obiettivo utilizzato: scattando in RAW, è ad esempio possibile agire sull'apposito comando di Adobe Camera RAW, nel pannello "Lens". A titolo di esempio, realizzeremo lo Stitch dei due seguenti fotogrammi scattati a mano libera (anche se ovviamente il caso costituirebbe una situazione reale solo in presenza di altri soggetti in movimento presenti nell'inquadratura):
Lo Stitch creato dal Blender di PTGui con le due immagini è il seguente:
Apparentemente il solo problema da risolvere è la prevista duplicazione e parziale sovrapposizione dei soggetti in movimento, ma analizzando l'immagine più da vicino scopriamo altri artefatti:
b. = Stesso particolare, versione reale registrata nello scatto di sinistra (Image 0)
Notiamo innanzitutto che il Blender ha appiattito i toni degli abiti sia della ragazza che del ragazzo, probabilmente perchè il software cerca di omogeneizzare le tonalità dei due scatti anche laddove le immagini contengono informazioni completamente diverse tra loro. Grazie al fatto di aver scelto l'uscita "Blended and Layers", tutti e tre i problemi sono risolvibili utilizzando con astuzia lo strumento "Gomma" di Photoshop. Vediamo come:
b. = Situazione finale dopo la correzione della maschera di livello di "Image 0" con lo strumento "Gomma"
Ecco lo Stitch definitivo:
Un'ultima osservazione: risulta evidente l'importanza di prevedere aree di sovrapposizione ampie al momento dello scatto. Se per gli Sticth classici una sovrapposizione media del 20-30% può andar bene, quando siamo in presenza di soggetti in movimento è bene aumentare la sovrapposizione anche fino al 50%. In questo modo realizzeremo più scatti ma avremo la possibilità di gestire molto meglio le transizioni.
L'usicta in formato "Individual Layers only" è la terza opportunità prevista per la creazione dello Stitch finale, molto probabilmente quella meno utilizzata in assoluto. Il motivo di ciò risiede nel fatto che il file di uscita così creato conterrà solamente i livelli dei singoli fotogrammi, con le immagini opportunamente trasformate ma senza l'intervento del Blender: Come si vede non esiste una gestione efficace delle transizioni, dunque i passaggi da un fotogramma all'altro risultano bruschi e molto evidenti. L'unico modo per rendere accettabile lo Stitch è quello di "addolcire" le transizioni, agendo con un pennello morbido sui contorni delle maschere di livello. Il pennello potrà assumere dimensioni più ampie nelle zone a basso dettaglio (come il cielo), mentre nelle zone con dettaglio converrà limitarne la dimensione, in modo da evitare la creazione di transizioni troppo morbide che danno normalmente luogo a perdite di definizione. L'uso di questa struttura può avere senso nella realizzazione di Stitch con molti elementi in movimento, dove pro e contro del Blender tendono ad equivalersi, tanto da far preferire una gestione completamente manuale delle transizioni.
Siamo giunti al termine. Nel prossimo articolo tratteremo le riprese con profondità di campo estesa tramite l'utilizzo di PTGui. |