PTOptimizer

PTOptimizer è stato creato originariamente da Helmut Dersch come parte dei Panorama Tools; si tratta di un semplice programma di contorno delle routine di ottimizzazione dei punti di controllo presenti nelle librerie pano12.

Il codice sorgente dell'originale PTOptimizer non è mai stato rilasciato, comunque la ricostruzione è stata piuttosto semplice e una versione multi piattaforma è ora inclusa nella libreria pano12 disponibile su Sourceforge.

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

#############           Esempio di script                  ##########################
#                       per utilizzare PTOptimizer
#
#
# Vengono elaborate solamente le righe che iniziano con "p", "v", "i", o "m".
# Utilizzando qualsiasi altro carattere all'inizio della riga, è possibile inserire
# dei commenti.
# Non iniziare una riga con !, dato che è utilizzato dagli script e dal plugin di aggiustamento.
# il carattere "*" (asterisco) indica la fine del file di script.

# Lo script deve contenere:
# una riga "p" che descrive l'immagine di output (es: panorama)
# una riga "i" per ogni immagine di input
# una o più righe "v" che elencano le variabili da ottimizzare
# la riga "m" è opzionale e permette di specificare la modalità di ottimizzazione
# una riga "c" per ogni coppia di punti di controllo


# 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. Use only with 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
# -buf         sopprime i comandi di buffer nello script di assemblatura generato da PTOptimizer.
#                  (i comandi del buffer sono ora obsoleti; -buf e +buf nelle righe "i" sono ignorati al are
#                  momento dell'assemblatura). Questa opzione dovrebbe essere aggiunta se si intende modificare 
#                  l'immagine panoramica finale: ad esempio per i due formati PSD.
# a0.0 b1.0 c0.04  Opzione per creare immagini multiple in PTInterpolate e PTMorpher.
#                      a indica il valore iniziale,
#                      b valore finale
#                      c incremento. 0 è l'immagine di sinistra, 1 l'immagine di destra.
#                      Il comando interpola/morph due immagini e crea 25 immagini intermedie.
# 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 -buf


# Le righe "i" descrivono le immagini di partenza. È necessaria una riga per ogni immagine
# I parametri non necessari per l'ottimizzazione ma richiesti per l'assemblatura, possono essere
# impostati da qui; l'ottimizzatore li aggiungerà automaticamente alle righe "o"
# ----------------
# 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
#                  8 - Ortografica. È permessa solamente in PTStereo e per la prima
#                                   immagine; indica una mappa o un piano del terreno.
# w600         larghezza in pixel
# h1000        altezza in pixel
# v82          campo inquadrato orizzontale dell'immagine (richiesto, ma ignorato per f8)
# y0           angolo di imbardata (necessario)
# p43          angolo di inclinazione (necessario)
# r0           angolo di rollio (necessario)
# a,b,c        coefficienti iniziali di correzione dell'obiettivo (predefiniti a0, b0, c0 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
#                  tra la linea di scansione in relazione al supporto
#                  g - spostamento orizzontale
#                  t - spostamento verticale
# u10          (obsoleto, utilizzato globalmente nella riga p) specifica la larghezza delle frange 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).
# 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 pixel. 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!
# X10          coordinate assolute della posizione della fotocamera, usato solo per PTStereo
# Y200         se la fotocamera è allineata (imbardata = inclinazione = rollio = 0,0),
# Z-13.5       X è la coordinata verso destra, Y quella verticale verso l'alto e
#              -Z è quella diretta come lo sguardo.
# nNome        nome dell'immagine (ignorato da PTOptimizer, utilizzato da PTStitcher)
#
#      I parametri di diverse immagini possono essere collegati utilizzando il carattere "="
#      seguito dal numero dell'immagine partendo da 0.
#      Per esempio "v=0" imposta il valore del campo inquadrato orizzontale pari a quello
#      dell'immagine con numero 0. Questa caratteristica si applica per le variabili
#      v, a, b, c, (r, p, y facendo attenzione) d, e, g e t


i f2 r0      p0    y0     v183    a0 b-0.1 c0  mx400 my400 
i f2 r-0.5   p1    y182   v=0     a0 b-0.1 c0  mx400 my400 


# Opzioni della riga "v":
# -----------------
# NOTA: la riga "v" deve venire dopo le righe "i".
# Le variabili di ottimizzazione sono elencate con il numero d'immagine partendo da 0.
# Sono consentite più righe "v".
#
# y0           Ottimizza l'imbardata dell'immagine 0
# p1           Ottimizza l'inclinazione dell'immagine 1
# r2           Ottimizza il rollio dell'immagine 2
# v0           Ottimizza il campo inquadrato dell'immagine 0
# a2           Ottimizza il parametro "a" di correzione dell'obiettivo per l'immagine 2
#                  anche "b" e "c" possono essere ottimizzati allo stesso modo.
# X1           Ottimizza la coordinata x dell'immagine 1, solo per PTStereo
# Y2           Ottimizza la coordinata y dell'immagine 2, solo per PTStereo
# Z6           Ottimizza la coordinata z dell'immagine 6, solo per PTStereo
#
#      Se un'immagine ha un parametro collegato a quello di un'altra immagine, è sufficiente ottimizzare
#        solamente la principale.

v v0 r0 p0 r1 p1 y1

#
# Opzioni della riga "m"
# ----------------
# Imposta la modalità di assemblatura, non richiesta (opzionale)
#
# g2.5         Imposta il valore della gamma per le computazioni interne (default 1,0)
#                  See <http://www.fh-furtwangen.de/~dersch/gamma/gamma.html>
# i2           impostazione dell'interpolatore; vedere <http://www.fh-furtwangen.de/~dersch/interpolator/interpolator.html>
#                scelte possibili:
#                   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
#
# p0           Crea il panorama dopo l'ottimizzazione dei punti di controllo
#                  0 no(default), 1 sì

m g1.5 i6


#
# righe "c" 
# ----------------
# Righe del punto di controllo
# Una riga per coppia di punti
# a relativo a una coppia di punti per immagine e per variabile da ottimizzare.
# Più sono le variabili da ottimizzare, maggiore è il numero di punti di controllo necessari.
#
# n0           prima immagine
# N1           seconda immagine
# x1066.5       posizione x del punto della prima immagine
# y844.333      posizione y del punto della prima immagine
# X239.52       posizione x del punto della seconda immagine
# Y804.64       posizione y del punto della seconda immagine
# t0           tipo di punto di controllo (opzionale)
#                  0 - normale (default)
#                  1 - ottimizza solo orizzontalmente
#                  2 - ottimizza solo verticalmente
#                  3+ (tutti gli altri numeri) - linea retta




*
Tutto quello che segue il simbolo "*" (asterisco) viene ignorato.