Difference between revisions of "PTOptimizer"

From PanoTools.org Wiki
Jump to: navigation, search
(added link to sample script)
(Pointed to new mirror)
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''PTOptimizer''' was originally created by [[Helmut Dersch]] as part of [[Panorama Tools]], it is a simple wrapper program around optimization routines present in the [[pano12]] library.
+
{{Glossary|Panorama tools image position and correction parameters optimizer. Script driven.}}'''PTOptimizer''' was originally created by [[Helmut Dersch]] as part of [[Panorama Tools]], it is a simple wrapper program around [[control points|control point]] optimization routines present in the [[pano12]] library.
  
 
Source code for the original '''PTOptimizer''' was never released, however reconstruction was quite straightforward and a multi-platform version is now included with the [[pano12]] library available at [http://panotools.sf.net/ Sourceforge].
 
Source code for the original '''PTOptimizer''' was never released, however reconstruction was quite straightforward and a multi-platform version is now included with the [[pano12]] library available at [http://panotools.sf.net/ Sourceforge].
  
The updated original example script with lots of comments is found at [http://photocreations.ca/panotools/Optimize.txt Jim Watter's page]
+
== Example Script ==
 +
The updated original example script with lots of comments is below.  Copied from [http://photocreations.ca/panotools/Optimize.txt Jim Watters' page].
 +
#############          Example Script                  ##########################
 +
#                      to run PTOptimizer
 +
#
 +
#
 +
# Only lines starting with 'p', 'v', 'i', or 'm' are read.
 +
# So you can add comments and info as you like by using
 +
# other line starting characters. 
 +
# Do not start a line with !, it is used by adjust plugin and scripts.
 +
# the * character indicated the end of the script file.
 +
 
 +
# The script must contain:
 +
# one 'p'- line describing the output image (eg Panorama)
 +
# one 'i'-line for each input image
 +
# one or several 'v'- lines listing the variables to be optimized.
 +
# the 'm'-line is optional and allows you to specify modes for the optimization.
 +
# one 'c'-line for each pair of control points
 +
=== p-line options ===
 +
# 'p'-line options
 +
# w1000        width in pixels
 +
# h600        height in pixels (default: width/2)
 +
# f0            projection format,
 +
#                  0 - rectilinear (for printing and viewing)
 +
#                  1 - Cylindrical (for Printing and QTVR)
 +
#                  2 - Equirectangular ( for Spherical panos), default
 +
#                  3 - full-frame fisheye
 +
# v360        horizontal field of view of panorama (default 360)
 +
# nPICT        Panorama file format, one of:
 +
#                  PICT          pict-file on macs, bmp-file on win (default)
 +
#                  PSD          single layer Photoshop file, 48bits supported
 +
#                  PNG          png-format, 48bits supported
 +
#                  TIFF          tiff-format, 48bits supported
 +
#                  PSD_mask      Photoshop file, one image per layer
 +
#                                  + shape mask & feathered clip mask at overlap center
 +
#                  PSD_nomask    Photoshop file, one image per layer,
 +
#                  TIFF_mask    tiff-format, multi-file, one image per file, 48bit supported
 +
#                                  alpha layer with feathered clip mask at overlap center
 +
#                  TIFF_m        tiff-format, multi-file, one image per file, 48bit supported
 +
#                                  alpha layer with non-feathered clip mask at image border
 +
#                                  + shape mask & non-feathered clip mask at image border
 +
#                  JPEG          Panoramic image in jpeg-format. Use with f1
 +
#                                  for IBM Hotmedia panoramas.
 +
#                  PAN          SmoothMove movie. Use only with f2.
 +
#                  IVR          LivePicture IVR movie
 +
#                                  cylindrical (format f1) or spherical (format f2)
 +
#                  IVR_java      LivePicture Java Panorama,
 +
#                                  cylindrical (format f1) or spherical (format f2)
 +
#                  VRML          VRML background node, use only with f2 for panoramas, or
 +
#                                  VRML-object for PTStereo
 +
#                  QTVR          Apple QTVR-panomovie. Use only with f1
 +
#                  3DMF          3DMF-object (PTStereo).
 +
# n"QTVR w400 h300 c1"          additional viewer options in a quoted string together with format
 +
#              the following options are recognized:
 +
#                  w(width) and h(height) of viewer window (only QTVR on Macs)
 +
#                  c(codec: 0-JPEG, 1-Cinepak, 2-Sorenson) (only QTVR on Macs)
 +
#                  q(codec quality):
 +
#                    0-high,1-normal,2-low    QTVR on Macs
 +
#                    0-100(highest)          on other jpeg-formats (PAN, IVR, IVR_java, VRML)
 +
#                  g  progressive jpeg (0-no, 1-yes) (PAN, IVR, IVR_java, VRML)
 +
#                    Optimized JPEG (0-on(default), 2-disabled), (3-progressive with optimized disabled)
 +
#                  p  initial pan angle ( QTVR on Macs, VRML, IVR)
 +
#                  v  field of view (QTVR, VRML, IVR)
 +
#                  Many more options can be set by editing the viewer scripts
 +
# -buf        suppress buffer commands in the stitcher script generated by PTOptimizer.
 +
#                  (buffer commands are now obsolete, -buf and +buf on i lines are now
 +
#                  ignored when stitching) This option should be set if you wish
 +
#                  to edit the final panoramic image, eg for the two PSD formats.
 +
# a0.0 b1.0 c0.04  Options to create multiple images in PTInterpolate and PTMorpher.
 +
#                      a denotes starting value,
 +
#                      b end value
 +
#                      c increment. 0 is left, 1 is right image.
 +
#                      The above command interpolates/morphs two images and
 +
#                      creates 25 intermediate frames.
 +
# u10          width of feather for stitching all images. default:10
 +
# k1          attempt color & brightness correction using image number as anchor
 +
# b1          attempt brightness correction with no color change using image number as anchor
 +
# d1          attempt color correction with no brightness change using image number as anchor
 +
#                  Do not use more than one of k, d, b.This is new method of correcting
 +
 
 +
 
 +
p w800 nPSD_mask -buf
 +
 
 +
=== i-lines ===
 +
# The 'i' lines describe input images. One line per image is required
 +
# unneeded paramiters for optimizing but needed for stitching can be
 +
# set here and the optimizer will automaticaly add them to the o lines
 +
# ----------------
 +
# f0          projection format,
 +
#                              0 - rectilinear (normal lenses)
 +
#                              1 - Panoramic (Scanning cameras like Noblex)
 +
#                              2 - Circular fisheye
 +
#                              3 - full-frame fisheye
 +
#                              4 - PSphere (equirectangular)
 +
#                              8 - Orthographic. This is only allowed in PTStereo and
 +
#                                      for the first image. This indicates a map or ground plan.
 +
# w600        width in pixels
 +
# h1000        height in pixels
 +
# v82          horizontal field of view of image (required, but ignored for f8)
 +
# y0          initial yaw angle (required)
 +
# p43          initial pitch angle (required)
 +
# r0          initial roll angle (required)
 +
# a,b,c        initial lens correction coefficients (defaults a0 b0 c0, optional)
 +
#                  (see http://www.panotools.org/dersch/barrel/barrel.html)
 +
# d,e          initial lens offset in pixels(defaults d0 e0, optional).
 +
#                  Used to correct for offset from center of image
 +
#                  d - horizontal offset,
 +
#                  e - vertical offset
 +
# g,t          initial lens shear.  Use to remove slight misalignment
 +
#                  of the line scanner relative to the film transport
 +
#                  g - horizontal shear
 +
#                  t - vertical shear
 +
# u10          (obsolete, globally used on p line) specify width of feather for stitching. default:10
 +
# S100,600,100,800  Selection(l,r,t,b), Only pixels inside the rectangle will be used for conversion.
 +
#                      Original image size is used for all image parameters
 +
#                      (e.g. field-of-view) refer to the original image.
 +
# C100,600,100,800  Crop(l,r,t,b), Only pixels inside the rectangle will be used for conversion.
 +
#                      Cropped image size is used for all image parameters
 +
#                      (e.g. field-of-view) refer to the cropped part of the image.
 +
# m20          (obsolete, use S & C) ignore a frame 20 pixels wide. default: 0
 +
# mx100        (obsolete, use S & C) crop to brightest rectangle with size 100x200;
 +
# my200        (obsolete, use S & C) used only for circular fisheye images (f2)
 +
# s0          (obsolete, ignored, always blend) specify placement of seam between buffer and image:
 +
#                  0-middle of overlap('blend' ,default)
 +
#                  1- at edge of image ('paste').
 +
# o            (the small letter). Morph-to-fit using control points.
 +
# k0          (obsolete, use p line correction still used with plugin)
 +
#                  attempt color/brightness correction when merging image and buffer, one of:
 +
#                  0 - no correction(default);
 +
#                  1 - change image;
 +
#                  2 - change buffer;
 +
#                  3 - change both
 +
#                  this feature does not work very well!
 +
# X10          World coordinates of camera position, only used for PTStereo
 +
# Y200        If the camera is aligned (yaw = pitch = roll = 0.0),
 +
# Z-13.5      X is coordinate to the right, Y vertically up and
 +
#              -Z is forward viewing direction.
 +
# nName        Name of image (ignored by PTOptimizer used in PTStitcher)
 +
#
 +
#      Parameters in different images can be linked using '='
 +
#      followed by the image number starting with 0.
 +
#      Example 'v=0' sets horizontal field of view as in
 +
#      image number 0. This feature works for the variables
 +
#      v, a, b, c, (r, p, y with caution) d, e, g, and 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
 +
=== v-line options ===
 +
# 'v'-line options:
 +
# -----------------
 +
# Please note: the 'v'-line must come after the the 'i'-lines.
 +
# Optimization variables are listed together with the image number
 +
# starting at 0. There can be several v-lines.
 +
#
 +
# y0          Optimize yaw in image 0
 +
# p1          Optimize pitch in image 1
 +
# r2          Optimize roll in image 2
 +
# v0          Optimize field of view in image 0
 +
# a2          Optimize lens correction parameter 'a' in image 2
 +
#                  b and c can be equally optimized.
 +
# X1          Optimize x-coordinate of image 1, only for PTStereo
 +
# Y2          Optimize y-coordinate of image 2, only for PTStereo
 +
# Z6          Optimize z-coordinate of image 6, only for PTStereo
 +
#
 +
#      If a image has a parameter linked to another image only
 +
#      need to optimize the master.
 +
 
 +
v v0 r0 p0 r1 p1 y1
 +
=== m-line options ===
 +
# 'm'-line options
 +
# ----------------
 +
# Set mode for stitcher, not required
 +
#
 +
# g2.5        Set gamma value for internal computations (default 1.0)
 +
#                  See <http://www.panotools.org/dersch/gamma/gamma.html>
 +
# i2          Set interpolator, See <http://www.panotools.org/dersch/interpolator/interpolator.html>
 +
#                one of:
 +
#                  0 - poly3 (default)
 +
#                  1 - spline16,
 +
#                  2 - spline36,
 +
#                  3 - sinc256,
 +
#                  4 - spline64,
 +
#                  5 - bilinear,
 +
#                  6 - nearest neighbor,
 +
#                  7 - sinc1024
 +
#              \/ antialiasing filters \/ See <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          Create panorama after optimizing control points
 +
#                  0 no(default), 1 yes
 +
 
 +
m g1.5 i6
 +
=== c-lines ===
 +
#
 +
# 'c' lines
 +
# ----------------
 +
# Control point lines
 +
# One line per point pair
 +
# about one pair of points per image per variable being optimized.
 +
# The more variables being optimized the more control points needed.
 +
#
 +
# n0          first image
 +
# N1          second image
 +
# x1066.5      first image x point position
 +
# y844.333      first image y point position
 +
# X239.52      second image x point position
 +
# Y804.64      second image y point position
 +
# t0          type of control point (optional)
 +
#                  0 - normal (default)
 +
#                  1 - optimize horizontally only
 +
#                  2 - optimize vertically only
 +
#                  3+ (all other numbers) - straight line
 +
 
 +
 
 +
 
 +
 
 +
*
 +
Every thing after * is ignored.
  
 
[[Category:Software:Platform:Linux]]
 
[[Category:Software:Platform:Linux]]
 
[[Category:Software:Platform:Windows]]
 
[[Category:Software:Platform:Windows]]
 
[[Category:Software:Platform:Mac OS X]]
 
[[Category:Software:Platform:Mac OS X]]
 +
[[Category:Glossary]]

Latest revision as of 07:55, 22 May 2011

PTOptimizer was originally created by Helmut Dersch as part of Panorama Tools, it is a simple wrapper program around control point optimization routines present in the pano12 library.

Source code for the original PTOptimizer was never released, however reconstruction was quite straightforward and a multi-platform version is now included with the pano12 library available at Sourceforge.

Example Script

The updated original example script with lots of comments is below. Copied from Jim Watters' page.

#############           Example Script                  ##########################
#                       to run PTOptimizer
#
#
# Only lines starting with 'p', 'v', 'i', or 'm' are read.
# So you can add comments and info as you like by using 
# other line starting characters.  
# Do not start a line with !, it is used by adjust plugin and scripts.
# the * character indicated the end of the script file.
# The script must contain:
# one 'p'- line describing the output image (eg Panorama)
# one 'i'-line for each input image
# one or several 'v'- lines listing the variables to be optimized.
# the 'm'-line is optional and allows you to specify modes for the optimization.
# one 'c'-line for each pair of control points

p-line options

# 'p'-line options
# w1000        width in pixels
# h600         height in pixels (default: width/2)
# f0            projection format,
#                  0 - rectilinear (for printing and viewing)
#                  1 - Cylindrical (for Printing and QTVR)
#                  2 - Equirectangular ( for Spherical panos), default
#                  3 - full-frame fisheye
# v360         horizontal field of view of panorama (default 360)
# nPICT        Panorama file format, one of:
#                  PICT          pict-file on macs, bmp-file on win (default)
#                  PSD           single layer Photoshop file, 48bits supported
#                  PNG           png-format, 48bits supported
#                  TIFF          tiff-format, 48bits supported
#                  PSD_mask      Photoshop file, one image per layer
#                                  + shape mask & feathered clip mask at overlap center
#                  PSD_nomask    Photoshop file, one image per layer,
#                  TIFF_mask     tiff-format, multi-file, one image per file, 48bit supported
#                                  alpha layer with feathered clip mask at overlap center
#                  TIFF_m        tiff-format, multi-file, one image per file, 48bit supported
#                                  alpha layer with non-feathered clip mask at image border
#                                  + shape mask & non-feathered clip mask at image border
#                  JPEG          Panoramic image in jpeg-format. Use with f1
#                                  for IBM Hotmedia panoramas.
#                  PAN           SmoothMove movie. Use only with f2.
#                  IVR           LivePicture IVR movie
#                                  cylindrical (format f1) or spherical (format f2)
#                  IVR_java      LivePicture Java Panorama,
#                                  cylindrical (format f1) or spherical (format f2)
#                  VRML          VRML background node, use only with f2 for panoramas, or
#                                  VRML-object for PTStereo
#                  QTVR          Apple QTVR-panomovie. Use only with f1
#                  3DMF          3DMF-object (PTStereo).
# n"QTVR w400 h300 c1"           additional viewer options in a quoted string together with format
#              the following options are recognized:
#                  w(width) and h(height) of viewer window (only QTVR on Macs)
#                  c(codec: 0-JPEG, 1-Cinepak, 2-Sorenson) (only QTVR on Macs)
#                  q(codec quality):
#                     0-high,1-normal,2-low    QTVR on Macs
#                     0-100(highest)           on other jpeg-formats (PAN, IVR, IVR_java, VRML)
#                  g  progressive jpeg (0-no, 1-yes) (PAN, IVR, IVR_java, VRML)
#                     Optimized JPEG (0-on(default), 2-disabled), (3-progressive with optimized disabled)
#                  p  initial pan angle ( QTVR on Macs, VRML, IVR)
#                  v  field of view (QTVR, VRML, IVR)
#                  Many more options can be set by editing the viewer scripts
# -buf         suppress buffer commands in the stitcher script generated by PTOptimizer.
#                  (buffer commands are now obsolete, -buf and +buf on i lines are now
#                  ignored when stitching) This option should be set if you wish
#                  to edit the final panoramic image, eg for the two PSD formats.
# a0.0 b1.0 c0.04  Options to create multiple images in PTInterpolate and PTMorpher.
#                      a denotes starting value,
#                      b end value
#                      c increment. 0 is left, 1 is right image.
#                      The above command interpolates/morphs two images and
#                      creates 25 intermediate frames.
# u10          width of feather for stitching all images. default:10
# k1           attempt color & brightness correction using image number as anchor
# b1           attempt brightness correction with no color change using image number as anchor
# d1           attempt color correction with no brightness change using image number as anchor
#                  Do not use more than one of k, d, b.This is new method of correcting


p w800 nPSD_mask -buf

i-lines

# The 'i' lines describe input images. One line per image is required
# unneeded paramiters for optimizing but needed for stitching can be 
# set here and the optimizer will automaticaly add them to the o lines
# ----------------
# f0           projection format,
#                               0 - rectilinear (normal lenses)
#                               1 - Panoramic (Scanning cameras like Noblex)
#                               2 - Circular fisheye
#                               3 - full-frame fisheye
#                               4 - PSphere (equirectangular)
#                               8 - Orthographic. This is only allowed in PTStereo and
#                                      for the first image. This indicates a map or ground plan.
# w600         width in pixels
# h1000        height in pixels
# v82          horizontal field of view of image (required, but ignored for f8)
# y0           initial yaw angle (required)
# p43          initial pitch angle (required)
# r0           initial roll angle (required)
# a,b,c        initial lens correction coefficients (defaults a0 b0 c0, optional)
#                  (see http://www.panotools.org/dersch/barrel/barrel.html)
# d,e          initial lens offset in pixels(defaults d0 e0, optional).
#                  Used to correct for offset from center of image
#                  d - horizontal offset,
#                  e - vertical offset
# g,t          initial lens shear.  Use to remove slight misalignment
#                  of the line scanner relative to the film transport
#                  g - horizontal shear
#                  t - vertical shear
# u10          (obsolete, globally used on p line) specify width of feather for stitching. default:10
# S100,600,100,800   Selection(l,r,t,b), Only pixels inside the rectangle will be used for conversion.
#                       Original image size is used for all image parameters
#                       (e.g. field-of-view) refer to the original image.
# C100,600,100,800   Crop(l,r,t,b), Only pixels inside the rectangle will be used for conversion.
#                       Cropped image size is used for all image parameters
#                       (e.g. field-of-view) refer to the cropped part of the image.
# m20          (obsolete, use S & C) ignore a frame 20 pixels wide. default: 0
# mx100        (obsolete, use S & C) crop to brightest rectangle with size 100x200;
# my200        (obsolete, use S & C) used only for circular fisheye images (f2)
# s0           (obsolete, ignored, always blend) specify placement of seam between buffer and image:
#                   0-middle of overlap('blend' ,default)
#                   1- at edge of image ('paste').
# o            (the small letter). Morph-to-fit using control points.
# k0           (obsolete, use p line correction still used with plugin)
#                  attempt color/brightness correction when merging image and buffer, one of:
#                  0 - no correction(default);
#                  1 - change image;
#                  2 - change buffer;
#                  3 - change both
#                  this feature does not work very well!
# X10          World coordinates of camera position, only used for PTStereo
# Y200         If the camera is aligned (yaw = pitch = roll = 0.0),
# Z-13.5       X is coordinate to the right, Y vertically up and
#              -Z is forward viewing direction.
# nName        Name of image (ignored by PTOptimizer used in PTStitcher)
#
#      Parameters in different images can be linked using '='
#      followed by the image number starting with 0.
#      Example 'v=0' sets horizontal field of view as in
#      image number 0. This feature works for the variables
#      v, a, b, c, (r, p, y with caution) d, e, g, and 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 

v-line options

# 'v'-line options:
# -----------------
# Please note: the 'v'-line must come after the the 'i'-lines.
# Optimization variables are listed together with the image number
# starting at 0. There can be several v-lines.
#
# y0           Optimize yaw in image 0
# p1           Optimize pitch in image 1
# r2           Optimize roll in image 2
# v0           Optimize field of view in image 0
# a2           Optimize lens correction parameter 'a' in image 2
#                  b and c can be equally optimized.
# X1           Optimize x-coordinate of image 1, only for PTStereo
# Y2           Optimize y-coordinate of image 2, only for PTStereo
# Z6           Optimize z-coordinate of image 6, only for PTStereo
#
#      If a image has a parameter linked to another image only
#      need to optimize the master.
v v0 r0 p0 r1 p1 y1

m-line options

# 'm'-line options
# ----------------
# Set mode for stitcher, not required
#
# g2.5         Set gamma value for internal computations (default 1.0)
#                  See <http://www.panotools.org/dersch/gamma/gamma.html>
# i2           Set interpolator, See <http://www.panotools.org/dersch/interpolator/interpolator.html>
#                one of:
#                   0 - poly3 (default)
#                   1 - spline16,
#                   2 - spline36,
#                   3 - sinc256,
#                   4 - spline64,
#                   5 - bilinear,
#                   6 - nearest neighbor,
#                   7 - sinc1024
#              \/ antialiasing filters \/ See <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           Create panorama after optimizing control points
#                  0 no(default), 1 yes
m g1.5 i6

c-lines

#
# 'c' lines
# ----------------
# Control point lines
# One line per point pair
# about one pair of points per image per variable being optimized.
# The more variables being optimized the more control points needed.
#
# n0           first image
# N1           second image
# x1066.5       first image x point position
# y844.333      first image y point position
# X239.52       second image x point position
# Y804.64       second image y point position
# t0           type of control point (optional)
#                  0 - normal (default)
#                  1 - optimize horizontally only
#                  2 - optimize vertically only
#                  3+ (all other numbers) - straight line



*
Every thing after * is ignored.