PTStitcher


Prefazione

PTStitcher è una delle applicazioni principali dei Panorama tools, assieme a PTOptimizer e ai plugin dei Panorama Tools.

Per assemblare un panorama probabilmente non si avrà a che fare spesso direttamente con PTStitcher, dato che l'operazione di creazione degli script è effettuata quasi completamente dalle varie interfacce grafiche e da alcuni strumenti come PanoCube.

In ogni caso, si potrebbe presentare l'occasione in cui è necessario scrivere o almeno capire gli script, o avviare direttamente PTStitcher (per esempio per effettuare delle elaborazioni in serie).

Aggiornamenti

Il codice sorgente di PTStitcher non è mai stato reso pubblico, quindi non è possibile effettuare dei cambiamenti a certe funzioni. Ma, dato che la maggior parte delle sue funzionalità, sono disponibili anche nella libreria pano12, PTStitcher beneficia di ogni aggiornamento di questa libreria centrale.

PTStitcher è disponibile con ogni distribuzione dei panotools su uno dei mirror disponibili. Per poter utilizzare le nuove funzionalità, è necessaria una copia recente della libreria pano12. Sono state rese disponibili le versioni binarie solamente per win32, i386 Linux e mac classic, quindi non è possibile utilizzarlo su sistemi OS X o a 64bit.

Esiste un sostituto di PTStitcher a codice aperto denominato nona nel progetto hugin, che fornisce la maggior parte (ma non tutte) le funzioni offerte da PTStitcher. Un'altra alternativa a codice aperto, è PTmender, che è parte del progetto pano12 su sourceforge.

Introduzione

PTStitcher è comandato tramite script; questi sono scritti in puro formato testuale e sono modificabili con un qualsiasi editor di testo (es: notepad su Windows).

Vengono elaborati riga per riga; ogni riga inizia con un carattere speciale (sensibile alle differenza tra maiuscole e minuscole) che indica il significato del contenuto del resto della linea. Tutti gli altri caratteri posti all'inizio di una riga, vengono ignorati e la linea è considerata come un semplice commento.

Caratteristiche

La maggior parte delle caratteristiche offerte da PTStitcher sono facilmente accessibili dalle più diffuse interfacce grafiche (vedere più in alto), ma alcune no.

Accessibile da interfaccia grafica

PTStitcher è in grado di assemblare:

Le applicazioni di PTStitcher vanno oltre la semplice unione di panorami; può anche essere utilizzato per:

  • rimappare le immagini tra due diverse proiezioni;
  • estrarre o inserire le immagini rettilineari da un panorama sferico o cilindrico;
  • rimappare un panorama sferico in modo che il nadir e lo zenit siano modificabili;
  • per rimpicciolire o ingrandire delle immagini avvalendosi di interpolatori di alta qualità;
  • per correggere la distorsione della prospettiva.

Accessibile attraverso script o altri strumenti

PTStitcher può essere utilizzato da solo o in abbinamento ad altri strumenti (senza interfaccia grafica):

  • con uno strumento che separa i canali di colore (ImageMagick) permette di correggere l'aberrazione cromatica.
  • assemblando 6 facce del cubo in un'immagine panoramica equirettangolare; questo può essere fatto utilizzando un'interfaccia grafica, ma è più comodo farlo utilizzando uno script, un file di elaborazione in serie o PanoCube Plus.

Esempio di Script

Qui sotto è riportato l'esempio originale aggiornato dello script di esempio commentato. È stato copiato dalla pagina di Jim Watters

#############           Esempio di script                  ##########################
#                       per utilizzare PTStitcher
#
#
# Solo le righe che iniziano con le lettere "p", "o", "i", o "m" vengono elaborate, 
# quindi è possibile aggiungere al file dei commenti e delle informazioni personalizzate utilizzando 
# un qualsiasi altro carattere di inizio riga.  
# Il carattere "*" (asterisco) all'inizio di una riga, indica la fine del file di script.

# Lo script di assemblatura deve contenere:
# una riga "p" che descrive l'immagine di output (es: panorama);
# una riga "o" per ogni immagine di input;
# una riga "i" opzionale per ogni immagine di input;
# una riga "m" opzionale che permette di specificare le modalità di ottimizzazione;
# la riga "C" opzionale che permette il morphing dei punti di controllo.

Opzioni della riga "p"

# Opzioni della riga "p"
# w1000        larghezza in pixel
# h600         altezza in pixel (predefinita = larghezza/2)
# f0           formato della proiezione,
#                  0 - rettilineare (per la stampa e la visualizzazione)
#                  1 - cilindrica (per la stampa e per i file QTVR)
#                  2 - equirettangolare (per i panorami sferici): impostazione predefinita
#                  3 - fullframe fisheye
# v360         campo inquadrato orizzontale del panorama (predefinito: 360)
# nPICT        formato del file del panorama:
#                  PICT          file pict per Mac, file bmp per Windows (predefinito)
#                  PSD           file di Photoshop a livello singolo; sono supportati i 48 bit
#                  PNG           formato png; sono supportati i 48 bit
#                  TIFF          formato tiff; sono supportati i 48 bit
#                  PSD_mask      file di Photoshop, un'immagine per livello
#                                  + maschera di forma e; maschera di ritaglio frangiata al centro della sovrapposizione
#                  PSD_nomask    file di Photoshop, un'immagine per livello
#                  TIFF_mask     formato tiff, multi file, un'immagine per file; sono supportati i 48 bit
#                                  livello alfa con maschera di ritaglio frangiata al centro della sovrapposizione
#                  TIFF_m        formato tiff, multi file, un'immagine per file; sono supportati i 48 bit
#                                  livello alfa con maschera di ritaglio non frangiata al bordo dell'immagine
#                                  + maschera di forma e; maschera di ritaglio non frangiata al bordo dell'immagine
#                  JPEG          immagine panoramica in formato jpeg. Utilizzare con l'opzione f1
#                                  per i panorami IBM Hotmedia.
#                  PAN           SmoothMove movie. Usare solamente con f2.
#                  IVR           LivePicture IVR movie
#                                  cilindrico (formato f1) o sferico (formato f2)
#                  IVR_java      LivePicture Java Panorama,
#                                  cilindrico (formato f1) o sferico (formato f2)
#                  VRML          nodo di sfondo VRML, usare solamente con f2 per i panorami, o con oggetti
#                                  VRML-object per PTStereo
#                  QTVR          Apple QTVR-panomovie; da utilizzare esclusivamente con f1
#                  3DMF          3DMF-object (PTStereo).
#
# n"QTVR w400 h300 c1"           opzioni aggiuntive di visualizzazione in una stringa racchiusa da virgolette con formato
#              sono riconosciute le seguenti opzioni:
#                  w(larghezza) e h(altezza) della finestra di visualizzazione (solo per i QTVR su sistemi Mac)
#                  c(codec: 0-JPEG, 1-Cinepak, 2-Sorenson) (solo per i QTVR su Mac)
#                  q(qualità del codec):
#                     0-alta, 1-normale, 2-bassa    QTVR su Mac
#                     0-100(massima)           per gli altri formati jpeg (PAN, IVR, IVR_java, VRML)
#                  g  jpeg progressivo (0-no, 1-sì) (PAN, IVR, IVR_java, VRML)
#                     JPEG ottimizzato (0-attivato(predefinito), 2-disabilitato), (3-progressivo con ottimizzazione abilitata)
#                  p  angolo di pan iniziale ( QTVR su Mac, VRML, IVR)
#                  v  campo inquadrato (QTVR, VRML, IVR)
#                  Molte altre opzioni possono essere impostate modificando lo script per il visualizzatore
# u10          larghezza della frangia per assemblare tutte le immagini. default: 10
# k1           tenta di correggere colore e luminosità, utilizzando il numero dell'immagine come ancora
# b1           tenta di effettuare la correzione della luminosità senza alterare il colore, utilizzando il numero dell'immagine come ancora
# d1           tenta di effettuare la correzione del colore senza alterare la luminosità, utilizzando il numero dell'immagine come ancora
#                  Non utilizzare più di uno fra k, d, b; è un metodo nuovo di correzione.

p w800 nPSD_mask

Opzioni della riga "i"

# La riga "i" è opzionale e descrive le immagini di partenza
# nName        nome dell'immagine di input.
#                  opzione scavalcabile associando dei parametri da linea di comando a PTStitcher

i n"photo1.jpg"

Opzioni della riga "o"

# Le righe "o" descrivono le immagini di input. È necessaria una linea per immagine.
# L'altezza e la larghezza dell'immagine vengono ottenute dall'immagine stessa
# f0           formato della proiezione:
#                  0 - rettilineare (lenti comuni)
#                  1 - panoramica (fotocamere a scansione come la Noblex)
#                  2 - fisheye circolare
#                  3 - fullframe fisheye
#                  4 - PSphere, equirettangolare
# v82          campo inquadrato orizzontale dell'immagine (necessario)
# y0           angolo di imbardata (necessario)
# p43          angolo di inclinazione (necessario)
# r0           angolo di rollio (necessario)
# a,b,c        coefficienti di correzione dell'obiettivo (opzionale)
#                  (consultare http://www.fh-furtwangen.de/~dersch/barrel/barrel.html)
# d,e          spostamento iniziale dell'obiettivo in pixel (default d0 e0, opzionale).
#                  utile per correggere gli spostamenti dal centro dell'immagine
#                  d - spostamento orizzontale
#                  e - spostamento verticale
# g,t          spostamento iniziale dell'obiettivo. Utile per rimuovere piccoli disallineamenti della
#                  linea di scansione relativamente al supporto (pellicola)
#                  g - spostamento orizzontale
#                  t - spostamento verticale
# +buf         (obsoleto, -buf e +buf vengono ignorati quando si assembla)
#                  carica e unisce le immagini con buffer
# -buf         (obsoleto, -buf e +buf sono vengono ignorati quando si assembla)
#                  salva i risultati nel buffer. La prima riga "o" dovrebbe contenere
#                  un comando "-buf", l'ultima riga un comando "+buf"
#                  e tutte le altre righe sia "+buf" che "-buf"
#                  Eccezione: rimuovere tutti i comandi "buf" quando si creano dei file di
#                  Photoshop per preservare le immagini originali.
# u10          (obsoleto, usato globalmente nelle righe "p") larghezza della frangia per l'assemblatura. default:10
# S100,600,100,800   Selezione (l, r, t, b). Solo i pixel all'interno del rettangolo verranno utilizzati per la conversione.
#                       La dimensione dell'immagine originale verrà utilizzata per calcolare tutti i parametri
#                       (es: il campo inquadrato si riferisce all'immagine originale).
#                       La selezione può essere al di fuori della dimensione dell'immagine.
# C100,600,100,800   Ritaglio (l ,r, t , b).  Solo i pixel all'interno del rettangolo verranno utilizzati per la conversione.
#                       La dimensione dell'immagine ritagliata verrà utilizzata per calcolare tutti i parametri
#                       (es: il campo inquadrato si riferisce alla porzione di immagine ritagliata).
# m20          (obsoleto, utilizzare S e; C) ignora una cornice larga 20 pixels. default: 0
# mx100        (obsoleto, utilizzare S e; C) ritaglia al rettangolo più luminoso con una dimensione di 100x200;
# my200        (obsoleto, utilizzare S e; C) utilizzato solo per le immagini fisheye circolari (f2)
# s0           (obsoleto, ignorato, sempre sfumato) indica la posizione della cucitura tra il buffer e l'immagine:
#                  0- al centro della sovrapposizione ("sfumatura" ,default)
#                  1- al bordo dell'immagine ('paste').
# o            (lettera minuscola). Morph-to-fit utilizzando i punti di controllo.
# k0           (obsoleto, utilizza la correzione della riga "p" ancora utilizzata dal plugin)
#                  tenta di correggere colore e luminosità quando fonde l'immagine e il buffer, valori possibili:
#                  0 - nessuna correzione (default);
#                  1 - cambia immagine;
#                  2 - cambia buffer;
#                  3 - cambia entrambe
#                  questa caratteristica non funziona molto bene!

o f2 r0   p0    y0     v183    a0 b-0.1 c0  S100,600,100,800
o f2 r0   p0    y180   v183    a0 b-0.1 c0  S100,600,100,800

Opzioni della riga "m"

# Opzioni della riga "m"
# ----------------
# Imposta la modalità di assemblatura, non richiesto
#
# g2.5         imposta il valore della gamma per le operazioni interne (default 1,0)
#                  See <http://www.fh-furtwangen.de/~dersch/gamma/gamma.html>
# i2           Imposta l'interpolatore. Vedere <http://www.fh-furtwangen.de/~dersch/interpolator/interpolator.html>
#                uno tra:
#                   0 - poly3 (default)
#                   1 - spline16,
#                   2 - spline36,
#                   3 - sinc256,
#                   4 - spline64,
#                   5 - bilinear,
#                   6 - nearest neighbor,
#                   7 - sinc1024
#              \/ filtri antialiasing \/ vedere <http://www.pano2qtvr.com/dll_patch/>
#                   8 - Box
#                   9 - Bartlett/Triangle
#                   10 - Hermite
#                   11 - Hanning
#                   12 - Hamming
#                   13 - Blackmann
#                   14 - Gaussian 1/sqrt(2)
#                   15 - Gaussian 1/2
#                   16 - Quadardic
#                   17 - Cubic
#                   18 - Catmull-Rom
#                   19 - Mitchell
#                   20 - Lanczos2
#                   21 - Lanczos3
#                   22 - Blackman/Bessel
#                   23 - Blackman/sinc
#                   
# f0               Richiama la Faster Transformation, richiamata anche creando un file denominato "pano12_opt.txt" 
#                   nella stessa cartella del progetto con all'interno la riga FAST_TRANSFORM

m g1.5 i6 f0

Opzioni della riga "z"

# Opzioni della riga "z"
# ----------------
# Profondità di campo estesa, non richiesta
#
# Determina automaticamente, per ogni punto in un'immagine, quale tra numerose immagini sovrapposte 
# ha la messa a fuoco migliore. Le maschere sono generate in modo da rivelare le parti con messo a 
# fuoco migliore, di ogni immagine. La creazione delle frange deve essere abilitata. Usato con il formato di file
# PSD_mask o TIFF_mask permette di modificare la maschera o con i formati di file appiattiti permette di ottenere
# un risultato finale appiattito. Non funziona se sono richiamate la correzione del colore o della luminosità.
#
# m2           tipo di maschera
#                m0 maschera a contorno definito, mutualmente esclusiva
#                m1 maschera a contorno definito, pila di maschere nidificate
#                m2 maschere fuse, pila di maschere nidificate (default e; fortemente raccomandato)
#                   (questa opzione include una computazione di levigatura che sembra aiutare molto)
# fN           dimensione della finestra di stima della messa a fuoco, N = metà larghezza della finestra.
#                Il valore raccomandato è pari a 0,5% della larghezza dell'immagine, per esempio 4 pixel per un'immagine a 800 pixel.
#                La quantità di calcoli per la stima della messa a fuoco aumenta proporzionalmente a N^2.  Default f4.
# sN           dimensione della finestra di levigatura, N = metà larghezza della finestra.
#                 Il valore raccomandato è pari a 0,5% della larghezza dell'immagine, per esempio 4 pixel per un'immagine a 800 pixel.
#                 La quantità di calcoli per la levigatura aumenta proporzionalmente a N^2.  Default f4.

z m2 f4 s4

Opzioni della riga "C"

# righe "C"
# ----------------
# Righe di morphing del punto di controllo
# Una linea per punto
# Creta automaticamente dall'ottimizzatore
#
# i0           immagine
# x363.726     posizione x iniziale del punto
# y125.738     posizione y iniziale del punto
# X363.838     posizione x modificata del punto
# Y125.618     posizione y modificata del punto

C i0  x363.726 y125.738 X363.838 Y125.618

*
Tutto ciò che si trova dopo il carattere "*" (asterisco) è ignorato.
Tratto e tradotto da "http://wiki.panotools.org/PTStitcher"