<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.panotools.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.panotools.org/index.php?title=Panotools_internals&amp;feed=atom&amp;action=history</id>
		<title>Panotools internals - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;action=history"/>
		<updated>2013-05-22T05:07:57Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=10952&amp;oldid=prev</id>
		<title>Erik Krause: /* Details */ typos</title>
		<link rel="alternate" type="text/html" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=10952&amp;oldid=prev"/>
				<updated>2009-01-15T21:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Details: &lt;/span&gt; typos&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:52, 15 January 2009&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Originally panotools do a very exact remapping where for any result pixel the source pixel position is calculated individually. This is highly accurate but relatively slow. In August 2004 [[Fulvio Senore]] published a version of panotools with '''Fast Transform''', which speeds up remapping greatly but is slightly less accurate. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Originally panotools do a very exact remapping where for any result pixel the source pixel position is calculated individually. This is highly accurate but relatively slow. In August 2004 [[Fulvio Senore]] published a version of panotools with '''Fast Transform''', which speeds up remapping greatly but is slightly less accurate. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For normal and even for high quality panorama work you won't see any difference. However, for any purpose that involves &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;no&lt;/del&gt;-overlapping images, like cubeface extraction for a [[Cubic Projection|cubic viewer]] it is not recommended to use '''Fast Transform''' since it might cause tiny empty areas along the border, especially in the corners. This empty areas f.e. show up as small black dots in the corner of cubefaces.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For normal and even for high quality panorama work you won't see any difference. However, for any purpose that involves &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;non&lt;/ins&gt;-overlapping images, like cubeface extraction for a [[Cubic Projection|cubic viewer]] it is not recommended to use '''Fast Transform''' since it might cause tiny empty areas along the border, especially in the corners. This empty areas f.e. show up as small black dots in the corner of cubefaces.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Shift and Shear ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Shift and Shear ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition to the correction the common geometric lens errors - for barrel-, pincushion or wavy distortion - panotools can optimize and correct for two additional mapping errors during stitching: Shift and shear. Although both sound somehow similar they refer to very different effects.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition to the correction the common geometric lens errors - for &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;barrel &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;distortion|barrel]]&lt;/ins&gt;-, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[pincushion distortion|&lt;/ins&gt;pincushion&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;or &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;wavy distortion&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;- panotools can optimize and correct for two additional mapping errors during stitching: Shift and shear. Although both sound somehow similar they refer to very different effects.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Shift''' corrects for a misplacement of the lens relative to the sensor. In this case the center of the image - which is where the [[optical axis]] hits the sensor - is not in the center of the sensor. This can also be cause by a mispositioned [[#Crop|C-type crop]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Shift''' corrects for a misplacement of the lens relative to the sensor. In this case the center of the image - which is where the [[optical axis]] hits the sensor - is not in the center of the sensor. This can also be cause by a mispositioned [[#Crop|C-type crop]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Shear''' corrects for a geometric error caused by a scanner or scanning camera, where one side of the image is moved parallel to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;oposite &lt;/del&gt;side, such that the image forms a parallelogram. This is never the case for a digitally shot image.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''Shear''' corrects for a geometric error caused by a scanner or scanning camera, where one side of the image is moved parallel to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;opposite &lt;/ins&gt;side, such that the image forms a parallelogram. This is never the case for a digitally shot image.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Line control points ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Line control points ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition to normal control points that mark identical features, panotools &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;know &lt;/del&gt;three types of line control points. These are [[horizontal control points]], [[vertical control points]] and [[straight line control points]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition to normal control points that mark identical features, panotools &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;knows &lt;/ins&gt;three types of line control points. These are [[horizontal control points]], [[vertical control points]] and [[straight line control points]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;As the names say these control point types can be used to mark features which panotools optimizer should try to make either horizontal, vertical or straight '''in the result image'''. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;As the names say these control point types can be used to mark features which panotools optimizer should try to make either horizontal, vertical or straight '''in the result image'''. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 135:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 135:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* it is not absolutely necessary to optimize all source images for individual [[#Shift_and_Shear|shift]] values. However, it is recommended to do it, since manual cropping might introduce some minor positional errors.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* it is not absolutely necessary to optimize all source images for individual [[#Shift_and_Shear|shift]] values. However, it is recommended to do it, since manual cropping might introduce some minor positional errors.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[PTGui]] uses this crop type by default.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;--[[User:Erik Krause|Erik Krause]] 23:50, 6 November 2007 (CET)&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;small&amp;gt;--[[User:Erik Krause|Erik Krause]] 23:50, 6 November 2007 (CET)&amp;lt;/small&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Tutorial:Specialised]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Tutorial:Specialised]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Erik Krause</name></author>	</entry>

	<entry>
		<id>http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=10666&amp;oldid=prev</id>
		<title>Erik Krause: /* Line control points */ typo</title>
		<link rel="alternate" type="text/html" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=10666&amp;oldid=prev"/>
				<updated>2008-07-13T19:15:40Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Line control points: &lt;/span&gt; typo&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:15, 13 July 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Rectilinear Projection|Rectilinear]]''' As the name suggests, all kinds of straight lines keep their properties. Horizontal and vertical ones that run parallel to the sensor plane stay horizontal and vertical and straight ones stay straight no matter what their direction is. Lines that run away from or towards the camera suffer from perspective distortion. This can be corrected using vertical and/or horizontal control points. See [[Perspective correction]] for details.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Rectilinear Projection|Rectilinear]]''' As the name suggests, all kinds of straight lines keep their properties. Horizontal and vertical ones that run parallel to the sensor plane stay horizontal and vertical and straight ones stay straight no matter what their direction is. Lines that run away from or towards the camera suffer from perspective distortion. This can be corrected using vertical and/or horizontal control points. See [[Perspective correction]] for details.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Cylindrical]]''' and '''[[Equirectangular]]''' All vertical lines stay vertical in these projections, but only the horizon itself stays horizontal. Same as a rectilinear image a cylindrical pano can be shot with the camera tilted up or down (with &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;persective &lt;/del&gt;distortion in the source image). However, in the resulting cylindrical or equirect if the horizon is straight, all verticals will be vertical (perspective corrected) again. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Hence both vertical and horizontal control points can be used to level a panorama. Careful consideration is recommended, since there are cases where they won't yield the desired effect because of the three-dimensional nature of these projections. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Since all lines but the horizon and vertical lines get bent in a cylindrical or equirect, straight line control points can only be used for respective features.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Cylindrical]]''' and '''[[Equirectangular]]''' All vertical lines stay vertical in these projections, but only the horizon itself stays horizontal. Same as a rectilinear image a cylindrical pano can be shot with the camera tilted up or down (with &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;perspective &lt;/ins&gt;distortion in the source image). However, in the resulting cylindrical or equirect if the horizon is straight, all verticals will be vertical (perspective corrected) again. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Hence both vertical and horizontal control points can be used to level a panorama. Careful consideration is recommended, since there are cases where they won't yield the desired effect because of the three-dimensional nature of these projections. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Since all lines but the horizon and vertical lines get bent in a cylindrical or equirect, straight line control points can only be used for respective features.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Fisheye]]''' Only lines going through the image center stay straight in this (rarely used) output projection.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* '''[[Fisheye]]''' Only lines going through the image center stay straight in this (rarely used) output projection.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Erik Krause</name></author>	</entry>

	<entry>
		<id>http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=9652&amp;oldid=prev</id>
		<title>Erik Krause: /* Image formats */ mentioned greyscale images</title>
		<link rel="alternate" type="text/html" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=9652&amp;oldid=prev"/>
				<updated>2007-12-10T22:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Image formats: &lt;/span&gt; mentioned greyscale images&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:20, 10 December 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Image formats ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Image formats ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Panorama tools are designed to work with RGB (plus an optional alpha channel) image data. Neither greyscale nor images with other color channels are supported.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Since the [[Panorama Tools Plugins]] work from within an imaging application (f.e. Photoshop, The Gimp, Paint Shop Pro) they support any image file format the respective application supports. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Since the [[Panorama Tools Plugins]] work from within an imaging application (f.e. Photoshop, The Gimp, Paint Shop Pro) they support any image file format the respective application supports. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 37:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For details see [[Full 16 bit workflow]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For details see [[Full 16 bit workflow]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Besides the major image formats PTStitcher used to write a number of specialised formats for panorama players. For details see the sample [[PTStitcher#Example_Script|PTStitcher script]]. Most of this formats are obsolete now, since the players aren't available any more. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Besides the major image formats PTStitcher used to write a number of specialised formats for panorama players. For details see the sample [[PTStitcher#Example_Script|PTStitcher script]]. Most of this formats are obsolete now, since the players aren't available any more.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Image [[projections]] ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Image [[projections]] ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Erik Krause</name></author>	</entry>

	<entry>
		<id>http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=9268&amp;oldid=prev</id>
		<title>Erik Krause: New page on some panotools internals</title>
		<link rel="alternate" type="text/html" href="http://wiki.panotools.org/index.php?title=Panotools_internals&amp;diff=9268&amp;oldid=prev"/>
				<updated>2007-11-06T22:50:00Z</updated>
		
		<summary type="html">&lt;p&gt;New page on some panotools internals&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Intro ==&lt;br /&gt;
With the [[GUI front-ends|GUIs]] panorama creation has become fairly easy. However, if you want to achieve special things or need to do something the GUIs don't support it should be necessary to know how panotools works internally.&lt;br /&gt;
&lt;br /&gt;
== Image formats ==&lt;br /&gt;
Since the [[Panorama Tools Plugins]] work from within an imaging application (f.e. Photoshop, The Gimp, Paint Shop Pro) they support any image file format the respective application supports. &lt;br /&gt;
&lt;br /&gt;
The [[GUI front-ends|GUIs]] all try to support the major formats. [[PTStitcher]] used to support some other formats like [[BMP]] on Windows or [[PICT]] on Mac. These formats are a bit outdated nowadays. Since the PTStitcher source code was not available there are several replacements, like [[nona]], [[PTMender]], [[PTGui]] internal stitcher.  &lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
* [[JPEG|JPG]]: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 8 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 16 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 32 bit: nona, PTGui&lt;br /&gt;
* [[PNG]] 8 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[PNG]] 16 bit: PTGui&lt;br /&gt;
* [[EXR]]: nona, PTGui&lt;br /&gt;
* [[HDR]]: nona, PTGui&lt;br /&gt;
&lt;br /&gt;
=== Write ===&lt;br /&gt;
* [[JPEG|JPG]]: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 8 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 16 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[TIFF]] 32 bit: nona, PTGui&lt;br /&gt;
* [[PNG]] 8 bit: PTStitcher, PTMender, nona, PTGui&lt;br /&gt;
* [[PNG]] 16 bit: PTGui&lt;br /&gt;
* [[PSD]] 8 bit single or multi layer: PTStitcher, PTGui&lt;br /&gt;
* [[PSD]] 16 bit single layer: PTStitcher, PTGui&lt;br /&gt;
* [[PSD]] 16 bit multi layer: PTGui&lt;br /&gt;
* [[PSB]] 8, 16 or 32 bit single or multi layer: PTGui&lt;br /&gt;
* [[EXR]]: nona, PTGui&lt;br /&gt;
* [[HDR]]: nona, PTGui&lt;br /&gt;
* cylindrical [[QTVR]]: PTStitcher&lt;br /&gt;
* cubic [[QTVR]]: PTGui&lt;br /&gt;
&lt;br /&gt;
TIFF files can contain an [[Alpha channel| Alpha Mask]] which is either the shape mask of the remapped image or the clip mask with feather at the overlap center. PSD or PSB files can be single or multi layer, the layered ones contain either one remapped image per layer with shape mask or optionally an additional feathered clip mask per layer.&lt;br /&gt;
&lt;br /&gt;
For details see [[Full 16 bit workflow]].&lt;br /&gt;
&lt;br /&gt;
Besides the major image formats PTStitcher used to write a number of specialised formats for panorama players. For details see the sample [[PTStitcher#Example_Script|PTStitcher script]]. Most of this formats are obsolete now, since the players aren't available any more. &lt;br /&gt;
&lt;br /&gt;
== Image [[projections]] ==&lt;br /&gt;
Both the [[Panorama Tools Plugins|plugins]] and [[PTStitcher]] can remap from almost any projection a camera can deliver to a growing number of different output projections. &lt;br /&gt;
&lt;br /&gt;
Both input and output can be &lt;br /&gt;
* [[Equirectangular Projection|equirectangular]] (scanning roundshot camera with fisheye)&lt;br /&gt;
* [[Cylindrical Projection|cylindrical]] (scanning roundshot camera with rectilinear lens)&lt;br /&gt;
* circular and full frame [[Fisheye Projection|fisheye]]&lt;br /&gt;
* [[Rectilinear Projection|rectilinear]] &lt;br /&gt;
* [[Cubic Projection|cubic]] can be input or output using a script&lt;br /&gt;
&lt;br /&gt;
Most recently there where some interesting projections added for output only. See [[Projections#Stereographic projection|Stereographic projection]] and below and [[Hugin Stitcher tab#Panorama|Hugin Stitcher tab]].&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
Originally the Panotools consisted of some Java based helper applications (details see [[Panorama tools applications|PT applications]], the [[Panorama Tools Plugins|plugins]] and two command line programs: [[PTOptimizer]] and [[PTStitcher]], which are the basis of panoramic image assembly. They are controlled by [[#Scripts|scripts]] as follows:&lt;br /&gt;
&lt;br /&gt;
# A script containing information about the input images, control points linking the images and the intended output format is passed to PTOptimizer. &lt;br /&gt;
# The optimizer tries to determine the images positions (without actually looking at the images) such that the mean error between corresponding control points is minimal. &lt;br /&gt;
# The image positions are written back in the script file.&lt;br /&gt;
# The script can now be passed to PTStitcher.&lt;br /&gt;
# The images are remapped by PTStitcher.&lt;br /&gt;
# Eventually they are assembled into a layered document.&lt;br /&gt;
# The result is written to disk.&lt;br /&gt;
&lt;br /&gt;
The [[GUI front-ends|GUIs]] follow this workflow but try to hide most of the hardships from the user.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
The scripts are read on a line by line basis. Each line starts with a control character which determines what the following values mean. The syntax for a PTOptimizer and a PTStitcher script is slightly different. See [[PTOptimizer]] and [[PTStitcher]] for details.&lt;br /&gt;
&lt;br /&gt;
Some of the [[GUI front-ends|GUIs]] use and extend the script syntax to store project data. &lt;br /&gt;
&lt;br /&gt;
=== Optimization ===&lt;br /&gt;
[[PTOptimizer]] is a mere wrapper for the optimizer function in the panotools library. This function consists of highly specialised algorithms that are able to optimize all of the parameters together - if there are enough control points and they are well distributed.&lt;br /&gt;
&lt;br /&gt;
=== Remapping ===&lt;br /&gt;
Panotools does all necessary remappings in one step, thus avoiding several [[interpolation]] steps which always decrease image quality. Remapping is done directly to the output projection, including all chosen corrections like&lt;br /&gt;
* image center [[#Shift_and_Shear|shift]]&lt;br /&gt;
* image [[#Shift_and_Shear|shear]]&lt;br /&gt;
* fisheye correction&lt;br /&gt;
* lens distortion&lt;br /&gt;
* perspective&lt;br /&gt;
&lt;br /&gt;
=== Blending ===&lt;br /&gt;
Panotools itself does only a very simple blending. A seam line is calculated through the middle of the overlap region and a feather (a transparency gradient) with adjustable width is applied to that seam. This feather can be stored as a part of the [[Alpha channel| Alpha Mask]] in a TIFF file or as a layer mask in a PSD file.&lt;br /&gt;
&lt;br /&gt;
More advanced blending using multiresolution splines is available by using external programs like [[enblend]], [[smartblend]] or internally in PTGui. Both enblend (version 3 and higher) and smartblend do a seam line optimisation in order to avoid [[ghosts]].&lt;br /&gt;
&lt;br /&gt;
=== HDR ===&lt;br /&gt;
Original panotools was limited to 16 bit (integer) per channel images. Newer developments enhanced panotools in order to be able to process 16 and 32 bit floating point images. Both [[hugin]] and [[PTGui]] frontends as well as the [[nona]] command line application have the ability to assemble images with different exposures into a single High Dynamic Range panorama. &lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
=== Remapping ===&lt;br /&gt;
Originally panotools do a very exact remapping where for any result pixel the source pixel position is calculated individually. This is highly accurate but relatively slow. In August 2004 [[Fulvio Senore]] published a version of panotools with '''Fast Transform''', which speeds up remapping greatly but is slightly less accurate. &lt;br /&gt;
&lt;br /&gt;
For normal and even for high quality panorama work you won't see any difference. However, for any purpose that involves no-overlapping images, like cubeface extraction for a [[Cubic Projection|cubic viewer]] it is not recommended to use '''Fast Transform''' since it might cause tiny empty areas along the border, especially in the corners. This empty areas f.e. show up as small black dots in the corner of cubefaces.&lt;br /&gt;
&lt;br /&gt;
=== Shift and Shear ===&lt;br /&gt;
In addition to the correction the common geometric lens errors - for barrel-, pincushion or wavy distortion - panotools can optimize and correct for two additional mapping errors during stitching: Shift and shear. Although both sound somehow similar they refer to very different effects.&lt;br /&gt;
&lt;br /&gt;
* '''Shift''' corrects for a misplacement of the lens relative to the sensor. In this case the center of the image - which is where the [[optical axis]] hits the sensor - is not in the center of the sensor. This can also be cause by a mispositioned [[#Crop|C-type crop]].&lt;br /&gt;
&lt;br /&gt;
* '''Shear''' corrects for a geometric error caused by a scanner or scanning camera, where one side of the image is moved parallel to the oposite side, such that the image forms a parallelogram. This is never the case for a digitally shot image.&lt;br /&gt;
&lt;br /&gt;
=== Line control points ===&lt;br /&gt;
In addition to normal control points that mark identical features, panotools know three types of line control points. These are [[horizontal control points]], [[vertical control points]] and [[straight line control points]].&lt;br /&gt;
&lt;br /&gt;
As the names say these control point types can be used to mark features which panotools optimizer should try to make either horizontal, vertical or straight '''in the result image'''. &lt;br /&gt;
&lt;br /&gt;
Horizontal and vertical control points are used pairwise just as normal control points, but must be placed on a feature apart from each other (in order to define a line). &lt;br /&gt;
&lt;br /&gt;
[[Straight line control points]] are used with at minimum two pairs. More pairs are possible. Those are very useful to calibrate lenses for lens distortion. For a tutorial see [http://www.erik-krause.de/verzeichnung/distort_en.htm]&lt;br /&gt;
&lt;br /&gt;
Depending on the output [[projection]] horizontal, vertical or straight lines in reality or in the source images are bent in the result image and hence not can be used&lt;br /&gt;
&lt;br /&gt;
* '''[[Rectilinear Projection|Rectilinear]]''' As the name suggests, all kinds of straight lines keep their properties. Horizontal and vertical ones that run parallel to the sensor plane stay horizontal and vertical and straight ones stay straight no matter what their direction is. Lines that run away from or towards the camera suffer from perspective distortion. This can be corrected using vertical and/or horizontal control points. See [[Perspective correction]] for details.&lt;br /&gt;
&lt;br /&gt;
* '''[[Cylindrical]]''' and '''[[Equirectangular]]''' All vertical lines stay vertical in these projections, but only the horizon itself stays horizontal. Same as a rectilinear image a cylindrical pano can be shot with the camera tilted up or down (with persective distortion in the source image). However, in the resulting cylindrical or equirect if the horizon is straight, all verticals will be vertical (perspective corrected) again. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Hence both vertical and horizontal control points can be used to level a panorama. Careful consideration is recommended, since there are cases where they won't yield the desired effect because of the three-dimensional nature of these projections. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Since all lines but the horizon and vertical lines get bent in a cylindrical or equirect, straight line control points can only be used for respective features.&lt;br /&gt;
&lt;br /&gt;
* '''[[Fisheye]]''' Only lines going through the image center stay straight in this (rarely used) output projection.&lt;br /&gt;
&lt;br /&gt;
=== Cropping ===&lt;br /&gt;
Cropping here refers to a definition of a rectangular or circular region in source images which is actually used. Panotools supports two cropping modes, called '''Selection''' and '''Crop'''. Both croppings are defined by the left, right, top and bottom coordinates in pixel values with the top left corner as coordinate origin. Cropping is defined in the o-line of the [[PTStitcher]] script.&lt;br /&gt;
&lt;br /&gt;
==== Selection ====&lt;br /&gt;
The character S preceds the actual coordinates. Only pixels from the respective area are taken, however, all other image parameters, especially [[Lens correction model|Lens correction]] and [[Field of View|FoV]] refer to the complete image. This implies: &lt;br /&gt;
* any source image can use a different sized crop area without the need to allow FoV and Lens parameters to be optimized for each image individually. &lt;br /&gt;
* any source image needs to be optimized for individual [[#Shift_and_Shear|shift]] values, if the crop area is not equal sized and positioned for all source images.&lt;br /&gt;
&lt;br /&gt;
[[hugin]] uses this crop type by default.&lt;br /&gt;
&lt;br /&gt;
==== Crop ====&lt;br /&gt;
The character C preceds the actual coordinates. Only pixels from the respective area are taken and all other image parameters, especially [[Lens correction model|Lens correction]] and [[Field of View|FoV]] refer to the cropped area. This implies: &lt;br /&gt;
* all source image must use the same sized (but not positioned) crop area if FoV and Lens parameters should not be optimized for each image individually. &lt;br /&gt;
* it is not absolutely necessary to optimize all source images for individual [[#Shift_and_Shear|shift]] values. However, it is recommended to do it, since manual cropping might introduce some minor positional errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;--[[User:Erik Krause|Erik Krause]] 23:50, 6 November 2007 (CET)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial:Specialised]]&lt;/div&gt;</summary>
		<author><name>Erik Krause</name></author>	</entry>

	</feed>