{"componentChunkName":"component---src-templates-blogposting-js","path":"/blog/hugin_tute","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"date\": \"2009-05-11T19:12:40.912Z\",\n  \"updated\": \"2009-05-11T19:12:40.912Z\",\n  \"type\": \"BlogPosting\",\n  \"title\": \"How to make stitched panoramas with Hugin\",\n  \"entityId\": \"04c4d350-f940-11e6-8d52-ffa6c436feb5\",\n  \"revisionId\": \"04c4d351-f940-11e6-8d52-ffa6c436feb5\",\n  \"revisionNum\": 1,\n  \"tags\": {\n    \"arts.meta.techniques\": [{\n      \"@id\": \"stitching\",\n      \"objClass\": \"tag\"\n    }],\n    \"plain\": [{\n      \"@id\": \"hugin\",\n      \"objClass\": \"tag\"\n    }]\n  },\n  \"sidebar\": \"I've found that the liberating feeling of knowing that it's more likely to stitch than to not stitch has caused me to be more ambitious.\\n\\nFor example, earlier I'd take a few shots in a single strip. Now I take usually two or three strips and often up to 40 individual frames. And I'll include the foreground.\\n\\nI've got some super-ambitious projects in mind, but I think it'll work best if I coax a few certain somebodies who are known to have posed in fishnets for pancakes in the past over.\",\n  \"description\": \"I'm unsatisfied with the present set of tutorials out there about how to make panoramas, so I thought I'd write my own.  Most of the tutorials were written using many of the assumptions that old software enforced upon you.  Modern stitching software is leaps and bounds above that and Hugin has become very modern very recently...      \",\n  \"srcImages\": [\"arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile\", \"arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile\", \"arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile\", \"arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"I\\u2019m unsatisfied with the present set of tutorials out there about how to make panoramas, so I thought I\\u2019d write my own. Most of the tutorials were written using many of the assumptions that old software enforced upon you. Modern stitching software is leaps and bounds above that and Hugin has become very modern very recently.\"), mdx(\"p\", null, \"I am writing this assuming you have a decent camera (point-and-shoot cameras are perfectly OK) and are running \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://hugin.sourceforge.net/\"\n  }, \"Hugin 0.7\"), \". Hugin is free and you probably already have a camera.\"), mdx(\"h2\", null, \"Composing a panorama\"), mdx(\"p\", null, \"Shooting panoramas is pretty much like shooting a super-wide-angle lens. It\\u2019s actually 50 times trickier than you think. See, if you shoot with anything in the \\u201Cnormal\\u201D range, you\\u2019ll invariably end up wishing that you could squeeeeze just a little more of the scene in. When you actually get that super-wide-angle lens or start stitching panoramas, you rapidly discover that if you can squeeze in those extra bits, all you get is something that\\u2019s totally boring.\"), mdx(\"p\", null, \"The trick to a panorama is to effectively communicate the idea of \", \"*\", \"being\", \"*\", \" there.\"), mdx(\"p\", null, \"So if there are two points of interest that you\\u2019d like to show, maybe it\\u2019s better to take two shots and compose each of those shots correctly.\"), mdx(\"p\", null, \"Also, don\\u2019t constrain yourself to taking a horizontal panorama. Some of my best panoramas have been wide expansive rectangular views or vertical panoramas.\"), mdx(\"h2\", null, \"Shooting a panorama\"), mdx(\"p\", null, \"This has become much easier, so much so that you can handhold the camera and get decent results. You don\\u2019t need the panorama mode in your camera. In fact, it gets in the way.\"), mdx(\"p\", null, \"There are a few things that you can do that will make the whole process run more smoothly.\"), mdx(\"p\", null, \"First, you don\\u2019t want anything to change unless you want it to. So you want to fix your exposure, focusing distance, white balance and pretty much anything else at the start. This is what the \\u201CPanoramic\\u201D mode is designed to do, but I find that it gets in the way more often than not.\"), mdx(\"p\", null, \"Second, it is important that you turn the camera as close as possible to the no-paralax point, often called the \\u201Cnodal point\\u201D. I\\u2019ve found that you can get away most of the time without being perfect, but if you are way off, things in the foreground aren\\u2019t going to line up very well.\"), mdx(\"p\", null, \"Third, it is important that you capture the scene in an orderly fashion. You don\\u2019t need to shoot in a grid or a row; the software is smarter than that. You don\\u2019t need to make sure the camera is perfectly level; as long as you can level the image later, it\\u2019s OK. But you don\\u2019t want to shoot the perfect panorama and then discover that you\\u2019ve got a big blot in the center where you didn\\u2019t take any pictures.\"), mdx(\"p\", null, \"Also, you usually do want to shoot with the camera on the side (\\u201Cportrait orientation\\u201D) because the narrower edges are usually sharper with less optical aberrations.\"), mdx(\"p\", null, \"Fourth, you want to get a decent amount of overlap. The ideal, I think, is such that if you didn\\u2019t notice that somebody walked into your frame, you can delete that single image without leaving an empty section in your image. You also want to make sure that you capture beyond what you want to have in the finished picture, to leave room for cropping and slop. This also makes the process of aligning the frames easier, plus most lenses have better image quality towards the center.\"), mdx(\"p\", null, \"Fifth, you want to make sure you record more than enough of the scene. What you will rapidly find is that once you\\u2019ve tilted and captured and tiled the scene, you can easily risk getting totally jagged edges\\u2026 and especially jagged edges in places that you really don\\u2019t want them. It\\u2019s better to take extra shots along the side to make sure that you can crop it properly.\"), mdx(\"p\", null, \"Now, let\\u2019s say that you are shooting a complete panorama, pivoting around the scene. A lot of the tricks you would otherwise use to ensure the scene is properly exposed (flash, graduated neutral density filter, polarizer) simply don\\u2019t work. There are a few ways to make this work better, so if you want, you can take bracketed shots up and down the exposure scale. Hugin will merge them.\"), mdx(\"p\", null, \"I can and have taken a perfectly good panorama with the camera in my hand. Don\\u2019t be scared or think you need specialized gear!\"), mdx(\"h2\", null, \"Loading the images\"), mdx(\"p\", null, \"Now, collect all of the pictures you took and launch Hugin. On my setup, I just drag the icons onto the Hugin window and it does the rest.\"), mdx(\"p\", null, \"If you are shooting RAW, there\\u2019s extra steps, but none of my cameras shoot RAW.\"), mdx(\"h2\", null, \"Generating control points\"), mdx(props.imgs.Img1, {\n    width: \"640px\"\n  }), mdx(\"p\", null, \"There\\u2019s a few sub-steps here that Hugin can take care of for you. I\\u2019m a little pickier, so I\\u2019m going to lead you through them.\"), mdx(\"p\", null, \"The first step along the process of stitching a panorama is generating a set of \\u201Ccontrol points\\u201D where a control point represents the same spot in the physical world in a pair of images. Hugin comes with Autopano-SIFT. This means that it will generate control points for you.\"), mdx(\"p\", null, \"The second step is taking those matched control points and generating an approximate solution.\"), mdx(\"p\", null, \"Thus, generally first thing I do after I\\u2019ve got the images loaded is letting Autopano work on the image and pick a bunch of points and then make a rough go at the panorama. From the \\u201CAssistant\\u201D tab, I just hit the \\u201CAlign\\u201D button.\"), mdx(\"p\", null, \"You may see clear discontinuities. If it\\u2019s just that there\\u2019s a line where it\\u2019s darker on one side, that\\u2019s going to be fixed by the blending. If it\\u2019s a line where the horizon went jagged, that means that there are some points that are all mixed up.\"), mdx(\"p\", null, \"You can also see in the \\u201CAssistant\\u201D tab how well of a match the software thinks it got.\"), mdx(\"h2\", null, \"Fixing up the stitch\"), mdx(props.imgs.Img2, {\n    width: \"640px\"\n  }), mdx(\"p\", null, \"Now, Autopano-SIFT is perfectly able to generate hideously wrong control points. Thus, the next thing I\\u2019ll do is open up the \\u201CControl Points\\u201D window and sort it by distance and then check by hand the control points with a high distance.\"), mdx(\"p\", null, \"Then I switch to the \\u201CControl Points\\u201D tab and examine the pictures in order, making sure that there are plenty of control points. If I see a section of the image that doesn\\u2019t have many control points, I\\u2019ll pick out a significant feature in the scene to make a control point out of.\"), mdx(\"p\", null, \"This is where being orderly with your shooting comes in handy. If the even shots are aimed low and the odd shots are aimed high, I can go through both the high/low pairs and the left/right pairs quickly. This is also where having more overlap comes in handy, because that means that it\\u2019ll be that much easier for the software to match things up.\"), mdx(\"p\", null, \"After I\\u2019ve deleted bad control points and added new control points, I\\u2019ll run it through the optimizer again.\"), mdx(\"p\", null, \"Usually I\\u2019ll check the preview and maybe see if one image needs to be rejected. I\\u2019ll also mess around with the composition and type of projection while I\\u2019m at it.\"), mdx(\"h2\", null, \"Exposure\"), mdx(\"p\", null, \"Now, remember how I said earlier that you can bracket? Well, let\\u2019s say you fed in a bracketed set of images to the stitcher. In the process of generating and matching control points, the bracketed images are going to already be aligned.\"), mdx(\"p\", null, \"You can go to the \\u201CExposure\\u201D tab and have it figure out a model for the exposure.\"), mdx(\"p\", null, \"There are two ways to go from here. The first is to create an HDR scene. The lighting is extracted from the bracketed shots and used to generate a single merged image with high dynamic range. From there, you can use a HDR program to map it to the visual space.\"), mdx(\"p\", null, \"I don\\u2019t like HDR. It\\u2019s great for nasty garish-looking scenes.\"), mdx(\"p\", null, \"There\\u2019s a second way to do this. You can have the software \\u201Cenfuse\\u201D the scene. See, unlike HDR, it doesn\\u2019t actually generate a single merged image. It starts with exposure layers and then generates a weighting to blend the different exposure layers to a final image such that the blown-out or blocked-up sections of the image are not included but the evenly-exposed sections are while preserving the shadows and highlights. Thus, you end up with something that\\u2019s a lot more realistic looking.\"), mdx(\"p\", null, \"Finally, even if you haven\\u2019t taken bracketed exposures, you can still equalize the exposure, which means it will bring up the exposure of the shadowy sections.\"), mdx(\"h2\", null, \"Stitch\"), mdx(props.imgs.Img3, {\n    width: \"640px\"\n  }), mdx(\"p\", null, \"Once you\\u2019ve made all of the adjustments, go into the final tab and set your stitching parameters. Here\\u2019s where you can tell Hugin to do a HDR or Enfused panorama.\"), mdx(\"p\", null, \"You can also have the software preserve some of the intermediate steps such that you can fix things up in Photoshop.\"), mdx(\"p\", null, \"Finally, it\\u2019s also a good idea to save your stitching project. This means that if you get partway through editing the image and discover something is not quite right, you can go back and adjust the stitching.\"), mdx(\"a\", {\n    href: \"/blog/panorama_more/stevens_creek_full_360/\"\n  }, mdx(props.imgs.Img4, {\n    width: \"640px\"\n  })));\n}\n;\nMDXContent.isMDXComponent = true;","id":"dc4d69cb-4cce-55cc-aa26-6c52db7da56e","fields":{"sidebar":"<p>I've found that the liberating feeling of knowing that it's more likely to stitch than to not stitch has caused me to be more ambitious.</p>\n<p>For example, earlier I'd take a few shots in a single strip. Now I take usually two or three strips and often up to 40 individual frames. And I'll include the foreground.</p>\n<p>I've got some super-ambitious projects in mind, but I think it'll work best if I coax a few certain somebodies who are known to have posed in fishnets for pancakes in the past over.</p>\n"},"frontmatter":{"date":"May 11, 2009","title":"How to make stitched panoramas with Hugin","type":"BlogPosting","description":"I'm unsatisfied with the present set of tutorials out there about how to make panoramas, so I thought I'd write my own.  Most of the tutorials were written using many of the assumptions that old software enforced upon you.  Modern stitching software is leaps and bounds above that and Hugin has become very modern very recently...      ","sidebar":"I've found that the liberating feeling of knowing that it's more likely to stitch than to not stitch has caused me to be more ambitious.\n\nFor example, earlier I'd take a few shots in a single strip. Now I take usually two or three strips and often up to 40 individual frames. And I'll include the foreground.\n\nI've got some super-ambitious projects in mind, but I think it'll work best if I coax a few certain somebodies who are known to have posed in fishnets for pancakes in the past over."},"srcImages":[{"id":"cb11f243-e464-5323-b604-6c5c1a5b0236","key":"7e0c207d7f47e858686ea8d3394b434f","maxSize":727,"size":78712,"srcSet":"/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_t.jpg 100w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_m.jpg 240w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_n.jpg 320w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_w.jpg 400w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f.jpg 500w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_z.jpg 640w","srcPath":"arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile","width":727,"height":478,"sqSrcSet":"/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_s.jpg 75w,\n/b2/arts.blog.hugin_tute.pic_1-05cc5841-f940-11e6-8d52-ffa6c436feb5-infile_7e0c207d7f47e858686ea8d3394b434f_q.jpg 150w"},{"id":"309ab049-eace-540e-b130-1291fdc1305f","key":"b8859f1d625422cd9131e394f16063f3","maxSize":1576,"size":399874,"srcSet":"/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_t.jpg 100w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_m.jpg 240w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_n.jpg 320w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_w.jpg 400w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3.jpg 500w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_z.jpg 640w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_c.jpg 800w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_b.jpg 1024w","srcPath":"arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile","width":1576,"height":678,"sqSrcSet":"/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_s.jpg 75w,\n/b2/arts.blog.hugin_tute.pic_2-0a9d4141-f940-11e6-8d52-ffa6c436feb5-infile_b8859f1d625422cd9131e394f16063f3_q.jpg 150w"},{"id":"cba5106c-6827-56e9-8edd-455c99b94dfe","key":"afe58f67216ea962668bfde4ee822a8b","maxSize":828,"size":90007,"srcSet":"/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_t.jpg 100w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_m.jpg 240w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_n.jpg 320w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_w.jpg 400w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b.jpg 500w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_z.jpg 640w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_c.jpg 800w","srcPath":"arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile","width":828,"height":562,"sqSrcSet":"/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_s.jpg 75w,\n/b2/arts.blog.hugin_tute.pic_3-05c07161-f940-11e6-8d52-ffa6c436feb5-infile_afe58f67216ea962668bfde4ee822a8b_q.jpg 150w"},{"id":"db3f1daf-cfe5-52c0-8fd9-80cb72db26cc","key":"132295784aba7dfe9d110ac90acf0ab9","maxSize":5955,"size":2102047,"srcSet":"/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_t.jpg 100w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_m.jpg 240w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_n.jpg 320w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_w.jpg 400w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9.jpg 500w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_z.jpg 640w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_c.jpg 800w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_b.jpg 1024w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_h.jpg 1600w","srcPath":"arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile","width":5955,"height":1400,"sqSrcSet":"/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_s.jpg 75w,\n/b2/arts.blog.panorama_more.stevens_creek_full_360-0a966371-f940-11e6-8d52-ffa6c436feb5-infile_132295784aba7dfe9d110ac90acf0ab9_q.jpg 150w"}],"excerpt":"I'm unsatisfied with the present set of tutorials out there about how to make panoramas, so I thought I'd write my own. Most of the tutorials were written using many of the assumptions that old software enforced upon you. Modern stitching software is leaps and bounds above that and Hugin has become…"}},"pageContext":{"id":"dc4d69cb-4cce-55cc-aa26-6c52db7da56e","parent":"/blog","name":"hugin_tute","depth":2,"title":"How to make stitched panoramas with Hugin","type":"BlogPosting","date":"2009-05-11T19:12:40.912Z","hidden":null,"breadcrumbs":[{"url":"/"},{"name":"blog","url":"/blog"},{"name":"How to make stitched panoramas with Hugin","url":"/blog/hugin_tute"}],"excerpt":"I'm unsatisfied with the present set of tutorials out there about how to make panoramas, so I thought I'd write my own.  Most of the tutorials were written using many of the assumptions that old software enforced upon you.  Modern stitching software is leaps and bounds above that and Hugin has become very modern very recently...      ","updated":"2009-05-11T19:12:40.912Z"}},"staticQueryHashes":["1062461325","1937434333","2193146810","2240196328","3649515864","815954065"]}