# 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.

Tratto e tradotto da "http://wiki.panotools.org/PTOptimizer"