Difference between revisions of "PTOptimizer"
Jump to navigation
Jump to search
m (5 revision(s)) |
m (Add PTOptimizer script copied from my web site.) |
||
Line 3: | Line 3: | ||
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 | + | The updated original example script with lots of comments is below. Copied from [http://photocreations.ca/panotools/Optimize.txt Jim Watters' page]. |
+ | <pre> | ||
+ | ############# 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 | ||
+ | # 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 | ||
+ | |||
+ | |||
+ | # 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.fh-furtwangen.de/~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: | ||
+ | # ----------------- | ||
+ | # 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 | ||
+ | # ---------------- | ||
+ | # Set mode for stitcher, not required | ||
+ | # | ||
+ | # g2.5 Set gamma value for internal computations (default 1.0) | ||
+ | # See <http://www.fh-furtwangen.de/~dersch/gamma/gamma.html> | ||
+ | # i2 Set interpolator, See <http://www.fh-furtwangen.de/~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 | ||
+ | # ---------------- | ||
+ | # 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. | ||
+ | </pre> | ||
[[Category:Software:Platform:Linux]] | [[Category:Software:Platform:Linux]] |
Revision as of 16:12, 24 September 2007
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.
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 # 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 # 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.fh-furtwangen.de/~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: # ----------------- # 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 # ---------------- # Set mode for stitcher, not required # # g2.5 Set gamma value for internal computations (default 1.0) # See <http://www.fh-furtwangen.de/~dersch/gamma/gamma.html> # i2 Set interpolator, See <http://www.fh-furtwangen.de/~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 # ---------------- # 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.