tag:blogger.com,1999:blog-9082583081866676282024-03-17T20:03:40.199-07:00Advanced Geographic ResearchStudying environmental geography with fun remote sensing tools.James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.comBlogger40125tag:blogger.com,1999:blog-908258308186667628.post-91350827843157469812017-10-16T09:01:00.001-07:002017-10-16T09:02:04.838-07:00Filtering LiDAR data by height above groundFor this tutorial we will be using CloudCompare (version 2.8, <a href="http://cloudcompare.org/">cloudcompare.org</a>)<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOo-c5VEjgiEotyHF6lW5V5FkoRU0p2Pkmo6HKaE0MXdJMfy7uqpxo2aLH3w5jgCAMGWwCtoWFPz7FdEjk7CVkOwyLdHjXUSS33n88aggUXPimEPBTfQT5EM-FTc3Y_cCi1EaQMUXBPiE/s1600/cc_C2M_2sub.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="761" data-original-width="1264" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOo-c5VEjgiEotyHF6lW5V5FkoRU0p2Pkmo6HKaE0MXdJMfy7uqpxo2aLH3w5jgCAMGWwCtoWFPz7FdEjk7CVkOwyLdHjXUSS33n88aggUXPimEPBTfQT5EM-FTc3Y_cCi1EaQMUXBPiE/s320/cc_C2M_2sub.png" width="320" /></a>Lidar point clouds normally come with elevations above sea level (or some other datum), which is <br />
extremely useful. However, we can convert the Z-values into a height above the ground as way to add another layer of data so that we can measure things like average tree heights, examine building heights., or (one thing I do a lot) filter the points to so that we only see points in a specific height range above the ground. This last application is what we'll be covered here and it's really useful to examine river channels below dense vegetation.<br />
<br />
<a name='more'></a><br />
<ol>
<li>In CloudCompare, load your LAS file. Except the defaults for the popup's that come.</li>
<li>If your point cloud has a lot of extraneous data (outside your area of interest), now is a good time to use the "Cross Section" or "Segment" tools to trim down the points to just the area you need. I usually leave a little around the edges. <a href="https://1.bp.blogspot.com/-6smLPN_KwLs/WeTEYDZH-tI/AAAAAAAAZv0/uf5kq2u4l68VhhO3CFMgeW5E08fRYGYpgCLcBGAs/s1600/cc_X_section.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="32" data-original-width="31" src="https://1.bp.blogspot.com/-6smLPN_KwLs/WeTEYDZH-tI/AAAAAAAAZv0/uf5kq2u4l68VhhO3CFMgeW5E08fRYGYpgCLcBGAs/s1600/cc_X_section.png" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCw96r52sCnwitdy369HgNjpOE3kOovW_VfDSI_P7WSQRXsfiFgpLfdckjQkN5Be866hKy4iiFDXg-4fmN4nuifr4NBiocAic4hBE8dxHBFsgeaTfFSwdEvYKZ10-vLiLmSGID4z3xUE4/s1600/cc_Segment.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="30" data-original-width="31" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCw96r52sCnwitdy369HgNjpOE3kOovW_VfDSI_P7WSQRXsfiFgpLfdckjQkN5Be866hKy4iiFDXg-4fmN4nuifr4NBiocAic4hBE8dxHBFsgeaTfFSwdEvYKZ10-vLiLmSGID4z3xUE4/s1600/cc_Segment.png" /></a>
</li>
<li><div class="separator" style="clear: both; text-align: left;">
For your segmented point cloud, we'll do a couple of steps to establish the ground surface.</div>
</li>
<ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-w9yp2fMLLGk/WeTFrvT9B7I/AAAAAAAAZv8/4J5U8OtM2qg5B9c1knW3GK8g_UcwL6kNACLcBGAs/s1600/cc_LAS_fields_class.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="216" data-original-width="336" height="204" src="https://3.bp.blogspot.com/-w9yp2fMLLGk/WeTFrvT9B7I/AAAAAAAAZv8/4J5U8OtM2qg5B9c1knW3GK8g_UcwL6kNACLcBGAs/s320/cc_LAS_fields_class.png" width="320" /></a></div>
<li>Switch the "Active Scalar Field" in the Properties sidebar to Classification</li>
<br />
<li>Using the "Filter Points By Value" tool, we'll extract the points with a classification values of 2 (the default ground classification) <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZCdHbHAhUbPtCSMmm0yqK188Plx1_9KsqZclPA1KVQFVJd4DPlZDfcNKQGo8gS4PgKRbjqFv6KaDIEZpX3QRmTLtfErJnfYxmPIMeq9yrxPwP5yhEvLmCQwZhYe8qItSJt9b22C2GfSs/s1600/cc_Min_max.png" imageanchor="1" style="margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="32" data-original-width="35" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZCdHbHAhUbPtCSMmm0yqK188Plx1_9KsqZclPA1KVQFVJd4DPlZDfcNKQGo8gS4PgKRbjqFv6KaDIEZpX3QRmTLtfErJnfYxmPIMeq9yrxPwP5yhEvLmCQwZhYe8qItSJt9b22C2GfSs/s1600/cc_Min_max.png" /></a></li>
<ul>
<li>The Range is 2.0 - 2.0</li>
<li>Use the Export option to create a new point cloud</li>
<ul>
</ul>
</ul>
<li>Next we will create a mesh surface from the ground points.</li>
<ul>
<li>Select the ground points in the DB Tree sidebar</li>
<li>In the "Edit" menu, select Mesh > Delaunay 2.5D (XY Plane)</li>
<li>Max edge length can be left at 0</li>
<li>Click OK to create the mesh</li>
<ul>
</ul>
</ul>
</ul>
<br />
<li>Next we'll calculate the distance from the ground mesh to the points, which gives us height above the ground.</li>
<ul>
<li>In the DB Tree select both the ground mesh and the segmented point cloud (using Control-Click on Windows to select multiple items)</li>
<li>Activate the "Calculate Cloud/Mesh Distance" tool in the toolbar <a href="https://2.bp.blogspot.com/-0lM72VDN0l8/WeTI8lAY-fI/AAAAAAAAZwI/b7xY_CcbqC4F-em9sBME4sri9Riv8gUpQCLcBGAs/s1600/cc_point2mesh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="30" data-original-width="27" src="https://2.bp.blogspot.com/-0lM72VDN0l8/WeTI8lAY-fI/AAAAAAAAZwI/b7xY_CcbqC4F-em9sBME4sri9Riv8gUpQCLcBGAs/s1600/cc_point2mesh.png" /></a></li>
<li>Leave the defaults and click "Compute" (This will take a little time...)</li>
<ul>
</ul>
</ul>
<br />
<li>Now we have a new attribute on our segmented point cloud, available in the "Active Scalar Field" dropdown in the Properties sidebar - "C2M signed distances"<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQOC2vJ3U4N_dksLkrIOXxhd5LpUPLmRfHQI2fYhUQsBvnQvcUOuolC10ZDXoIVCvzRyH1MN-XNOr9umr1E10Iy-u5y7GsBPsgT3s8XZE37jR46trNFkgSFwi7vUwKFMuzooeHXF8OXJ0/s1600/cc_elev.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="884" data-original-width="1306" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQOC2vJ3U4N_dksLkrIOXxhd5LpUPLmRfHQI2fYhUQsBvnQvcUOuolC10ZDXoIVCvzRyH1MN-XNOr9umr1E10Iy-u5y7GsBPsgT3s8XZE37jR46trNFkgSFwi7vUwKFMuzooeHXF8OXJ0/s200/cc_elev.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Colored by Elevation (Above Sea Level)</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-wqALR9YiysA/WeTLv0iZH2I/AAAAAAAAZwY/rVMTOUDeSeI-8PLl4kSw8p9xQVBrsaIGACLcBGAs/s1600/cc_C2M.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="884" data-original-width="1306" height="135" src="https://2.bp.blogspot.com/-wqALR9YiysA/WeTLv0iZH2I/AAAAAAAAZwY/rVMTOUDeSeI-8PLl4kSw8p9xQVBrsaIGACLcBGAs/s200/cc_C2M.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Colored by Height Above Ground</td></tr>
</tbody></table>
</li>
<ul>
<li>In the property sidebar, you can adjust the color ramp, and usually you'll need to adjust the bottom saturation value to zero.</li>
<ul>
</ul>
</ul>
<br />
<li>There are two ways to filter the data at this point: "Filter Points By Value" or using temporary adjustments.</li>
</ol>
<ul><ul>
<li>Temporary adjustments can be made in the "SF Display Params" section of the Properties sidebar.</li>
<ul>
<li>First thing to do is click on the Parameters tab and uncheck the "show NaN..." option. This will make points outside the range disappear.</li>
<li>Back on the "Display Ranges" tab, you can adjust the displayed range using the circle markers on the graph display. You can also enter specific values in the two text boxes at the top.</li>
<li>I usually change the saturation values to match the displayed range too. This ensures that your color ramp is maximized for the displayed data.</li>
</ul>
<li>To extract a specific range, use the "Filter Points By Value" tool like we did above and enter the upper and lower values you wish to extract.</li>
<li>As you zoom in and out to navigate, it will be necessary to define the rotation point of the point cloud (otherwise you'll go mad trying to keep things in view).</li>
<ul>
<li>Click on the "Pick rotation Center" tool on the toolbar (Cross hair icon)</li>
<li>Click on a point in the middle of the area you want to look at.</li>
<li>As you move around you can do this as many times as you need to.</li>
</ul>
<li>Another thing to do is increase the default point size, hover your mouse upper-left of the 3D view to increase or decrease the point size. </li>
<li>One more helpful tool is the "Eye Dome Lighting" filter on the tool bar, this simulates a hillshade-like shading on the points.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</li>
<ul>
</ul>
</ul>
</ul>
<ol>
</ol>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp5bv7arYVz2BzNzu3sfE29f96UCe-xZIl3X-VhT8zFwiHYVoG-LSVo5JhkZX1OsICO2Qbh1lTg-m60B4Jfkt_kp4WD0qcn5N1XreSGQam0Y801fz0mXvj2ze7R_b0rhfiqQR-d9ADybI/s1600/cc_C2M_2all.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" data-original-height="886" data-original-width="1221" height="464" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp5bv7arYVz2BzNzu3sfE29f96UCe-xZIl3X-VhT8zFwiHYVoG-LSVo5JhkZX1OsICO2Qbh1lTg-m60B4Jfkt_kp4WD0qcn5N1XreSGQam0Y801fz0mXvj2ze7R_b0rhfiqQR-d9ADybI/s640/cc_C2M_2all.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">All points - height above the ground</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-EcwovotwBfM/WeTVstNVXPI/AAAAAAAAZws/VntbONuNu_Yn_Dld-1R0uxQh8g7GQWqcwCLcBGAs/s1600/cc_C2M_2trim.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="886" data-original-width="1221" height="464" src="https://3.bp.blogspot.com/-EcwovotwBfM/WeTVstNVXPI/AAAAAAAAZws/VntbONuNu_Yn_Dld-1R0uxQh8g7GQWqcwCLcBGAs/s640/cc_C2M_2trim.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Filtered points - 10 feet above the ground</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com9tag:blogger.com,1999:blog-908258308186667628.post-83602529458462518352017-06-28T05:14:00.002-07:002017-06-28T05:21:33.733-07:00New Job!!!This summer I'll be transitioning away from Dartmouth to a tenure-track position in the Geography Department at the University of Northern Iowa.<br />
<br />
I've updated my contact info on my <a href="http://adv-geo-research.blogspot.com/p/about-me.html" target="_blank">About Me</a> page.James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com4tag:blogger.com,1999:blog-908258308186667628.post-88204955855621472702016-10-04T06:19:00.001-07:002016-10-04T06:20:16.575-07:00New Articles<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ5MJVUgygeC1rTUD1P5rKtDqPWTVxqK5oyYWS5ILD85IDUvxZ5v4SV0rS5fCBiXrEjY7TDAqEiDmCjcKmZdHACyKpBHqw0OoBrPye0gV-TCbdauqD87K8gpG8u6X2wyhEe8I6MmskFzk/s1600/cover.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ5MJVUgygeC1rTUD1P5rKtDqPWTVxqK5oyYWS5ILD85IDUvxZ5v4SV0rS5fCBiXrEjY7TDAqEiDmCjcKmZdHACyKpBHqw0OoBrPye0gV-TCbdauqD87K8gpG8u6X2wyhEe8I6MmskFzk/s1600/cover.gif" /></a>Here are two recent articles that I was working on over the summer, both in Earth Surface Processes and Landforms. Enjoy!<br />
<br />
Dietrich, J. T. (2016) Bathymetric Structure from Motion: Extracting shallow stream bathymetry from multi-view stereo photogrammetry. Earth Surface Processes and Landforms, doi: 10.1002/esp.4060.<br />
<a href="http://onlinelibrary.wiley.com/doi/10.1002/esp.4060/abstract">http://onlinelibrary.wiley.com/doi/10.1002/esp.4060/abstract</a><br />
<br />
Carbonneau, P. E., and Dietrich, J. T. (2016) Cost-effective non-metric photogrammetry from consumer-grade sUAS: implications for direct georeferencing of structure from motion photogrammetry. Earth Surface Processes and Landforms, doi: 10.1002/esp.4012.<br />
<a href="http://onlinelibrary.wiley.com/wol1/doi/10.1002/esp.4012/abstract">http://onlinelibrary.wiley.com/wol1/doi/10.1002/esp.4012/abstract</a><br />
<br />
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com2tag:blogger.com,1999:blog-908258308186667628.post-69309941070340890712016-08-26T06:07:00.002-07:002016-10-18T11:57:19.981-07:00New Off Nadir Resolution CalculatorA quick update, I uploaded a new Python off-nadir resolution calculator to my GitHub:<br />
<a href="https://www.blogger.com/goog_996423219"><br /></a>
<a href="https://github.com/geojames/py_offNadir_Res">https://github.com/geojames/py_offNadir_Res</a><br />
<br />
<a href="https://1.bp.blogspot.com/-D9mklWtN_-0/VcpTz15kA1I/AAAAAAAAObs/FlwFS7lKt2otREd3lquq9TCscFk2MROKACPcB/s1600/nadir_vs_oblique.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="292" src="https://1.bp.blogspot.com/-D9mklWtN_-0/VcpTz15kA1I/AAAAAAAAObs/FlwFS7lKt2otREd3lquq9TCscFk2MROKACPcB/s320/nadir_vs_oblique.png" width="320" /></a>It only works for low-oblique images (theoretically it would also work for nadir images if you set the pitch of the camera to zero). It calculates the pixel resolutions for the near field (closest to the camera), mid field (at the principal point), and the far field (furthest for the camera). It will also tell you the area that each image covers.<br />
<br />
If your interested in how it works head over to the GitHub repository.James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com3tag:blogger.com,1999:blog-908258308186667628.post-35151632931086615052016-01-12T10:20:00.000-08:002016-01-12T10:39:20.254-08:00Amethyst Brook Dam Removal<div class="separator" style="clear: both; text-align: left;">
Some footage from last week's dam removal on a stream that we (Dartmouth) have been doing extensive monitoring on in West-central Massachusetts (near Amherst).</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ZvS3sirIFLQ" width="560"></iframe></div>
<br />
More photos of the site post-removal are here: <a href="https://goo.gl/photos/xxTxe34HzTcnPozr8" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 12.8px;" target="_blank">https://goo.gl/photos/<wbr></wbr>xxTxe34HzTcnPozr8</a> <i>(some are thanks to Alex Hackman of Mass. Fish and Game)</i><br />
<br />
<a name='more'></a>The project has been led by the Massachusetts Depatment of Fish and Game - Division of Ecological Restoration (<a href="http://www.mass.gov/eea/agencies/dfg/der/">http://www.mass.gov/eea/agencies/dfg/der/</a>)<br />
<div>
<br /></div>
<div>
A good background video on the dam that came out: <a href="https://youtu.be/3NwAMDGA5ZE">https://youtu.be/3NwAMDGA5ZE</a><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/3NwAMDGA5ZE/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/3NwAMDGA5ZE?feature=player_embedded" width="320"></iframe></div>
<br /></div>
<div>
<br /></div>
<div>
In addition to the video we also collected still imagery for SfM, and here are some preliminary results:</div>
<div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivIZhJeVJMCAUoQjoeNXIaPhwT-CTi2j4NQtweTBybZyZWZCVbF5eRSzSy7qiY6NvSUyJ9iggNRoaUJ1lG_zPCjFbMqWbGwbKwlR_XsB_u7QpqCD471bOKea9ikAX6XggokT7fjNZm068/s1600/Pelham_1RGBpoints.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="331" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivIZhJeVJMCAUoQjoeNXIaPhwT-CTi2j4NQtweTBybZyZWZCVbF5eRSzSy7qiY6NvSUyJ9iggNRoaUJ1lG_zPCjFbMqWbGwbKwlR_XsB_u7QpqCD471bOKea9ikAX6XggokT7fjNZm068/s640/Pelham_1RGBpoints.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">RGB Point Cloud</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGnW8ry9TKdb6TfGy55Rw9kgP-fug6YkvSBwvwt1rlu_buQbdw7m5COYJnQ1QnR0l1bQPrHkHyDxi9DBKBdu_sGtU02VtExkQs2oCHAnNRNEFxIYxJISO1KIHZ1hYz7irgqb5vgWt14Ro/s1600/Pelham_2ELEVpoints.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="331" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGnW8ry9TKdb6TfGy55Rw9kgP-fug6YkvSBwvwt1rlu_buQbdw7m5COYJnQ1QnR0l1bQPrHkHyDxi9DBKBdu_sGtU02VtExkQs2oCHAnNRNEFxIYxJISO1KIHZ1hYz7irgqb5vgWt14Ro/s640/Pelham_2ELEVpoints.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Elevation Point Cloud</td></tr>
</tbody></table>
<br /></div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-29392646871702983992015-12-04T12:44:00.000-08:002015-12-04T12:52:52.464-08:00GIS Change Detection MathI do a lot of topographic\geomorphic change detection, mostly with raster digital elevation models but I've also started getting into point cloud differencing too. It's simple subtraction, but the way you do your subtraction can make a big difference in how you interpret the data. I've had several students ask about this, so I thought a short write up was in order. The examples here are topographic (erosion and deposition), but the concepts apply to any raster-based change detection (i.e. land use/land cover change).<br />
<br />
<a name='more'></a><br />
Conventions:<br />
<ul>
<li>T<sub>1</sub> = Time 1 (usually the older dataset)</li>
<li>T<sub>2</sub> = Time 2 (you guessed it...the newer data)</li>
<li>We'll use blue to represent negative numbers and red to represent positive numbers</li>
<ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYQee5vFu4FRyVmVanD3APLPo0yOoLvQp-4uZ0wZfzDRqelDIW15Chyphenhyphen5TR4Bgff4uwZcjj3uHw9lp_rIfXxulGABpD1uOThFsNHKyyTy9kjrj8BKTUZSG8IcGGNUZsqkEqzXU7_5v37A/s1600/legend.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYQee5vFu4FRyVmVanD3APLPo0yOoLvQp-4uZ0wZfzDRqelDIW15Chyphenhyphen5TR4Bgff4uwZcjj3uHw9lp_rIfXxulGABpD1uOThFsNHKyyTy9kjrj8BKTUZSG8IcGGNUZsqkEqzXU7_5v37A/s200/legend.png" width="100" /></a>
<li><i>Some people have strong feelings about what colors represent which end of the number line, but we can discuss that at another time...</i></li>
</ul>
</ul>
<i><br /></i>
<br />
<h3>
Change = T<sub>2</sub> - T<sub>1</sub></h3>
<div>
This is the most common way to do topographic change detection (hint - use this one if you're unsure). It works out nicely that decreases in elevation (erosion) are calculated as a negative numbers and increases in elevation (deposition) are calculated as positive numbers.<br />
In the ArcGIS Python Console:<br />
<pre><code>from arcpy.sa import *
diff = Raster("Time2.tif") - Raster("Time1.tif")
</code></pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-f78sYBBGfmQ/VmH1NkX6D3I/AAAAAAAAQV0/1rXnJFNG_Do/s1600/Change_T2minusT1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="145" src="http://4.bp.blogspot.com/-f78sYBBGfmQ/VmH1NkX6D3I/AAAAAAAAQV0/1rXnJFNG_Do/s400/Change_T2minusT1.png" width="400" /></a></div>
<div>
<br /></div>
<h3>
Change = T<sub>1</sub> - T<sub>2</sub></h3>
<div>
By switching the times, we also switch the signs. Positive numbers switch to represent decreases in elevation (erosion) and negative numbers represent increases in elevation (deposition). There are probably good reasons to use this type of change calculation, but I can't think of any off the top of my head...I'll do this by accident sometimes and get really confused.<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-a-aSU_Om0ic/VmH72qNKv4I/AAAAAAAAQW0/h2S8sKV-Dk8/s1600/Change_T1minusT2.png" imageanchor="1"><img border="0" height="145" src="http://4.bp.blogspot.com/-a-aSU_Om0ic/VmH72qNKv4I/AAAAAAAAQW0/h2S8sKV-Dk8/s400/Change_T1minusT2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-87174161260407301662015-08-18T12:46:00.000-07:002015-08-18T13:23:43.492-07:00Calculating Spatial Resolutions for Aerial ImageryI've often needed to calculate/predict the spatial resolution for aerial imagery collections that I do (the life of a remote sensing researcher). I wrote a Matlab script for some <a href="http://adv-geo-research.blogspot.com/2013/09/helicopter-aerial-photography.html" target="_blank">helicopter aerial photography</a> as part of my dissertation research. But, I needed a more streamlined script for some of my current work with UAVs. So, here is a brand new <a href="https://github.com/geojames/imageResolution" target="_blank">Python script to do all the calculations for me</a> (and you).<br />
<br />
<a name='more'></a>Download from GiHub: <a href="https://github.com/geojames/imageResolution" target="_blank">https://github.com/geojames/imageResolution</a><br />
<br />
The script has a few limitations...<br />
<ol>
<li>It's only for nadir (downward-facing) imagery. Once you get away from nadir (low or high oblique) pixel resolutions change with the depth of field (i.e. the pixels close to the camera have a higher spatial resolution than the pixels far away). That being said, this script can be used to get a ballpark estimate for low-oblique imagery.</li>
<li>It only works for standard cameras, and will not work for super wide angle lens (e.g. GoPros or the wide angle lenses on the early DJI Phantom platforms). As a rule-of-thumb, the horizontal field of view for your camera should be 70 degrees or less.</li>
<li>Obligatory disclaimer...The calculations are basic trigonometric functions that do not take into account other variables like lens distortion. Given the wide range of potential cameras the calculated values should be treated as estimates and not as absolute truth.</li>
</ol>
For reference, here is the the classic diagram from every remote sensing textbook on nadir vs. oblique imagery.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizfO1IpDPKcidINIASaVnxWHgTqxsmF8S8htI76kcNMTEIjRN7FFJwngrOQBTAjzX7K89gNVAlpWZH7_CmI5lY1oJDMnZA-wcq-1W4ywupsQa4xHpf1tqVM6ED24RJWLPH03uB8AI51wM/s1600/nadir_vs_oblique.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="331" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizfO1IpDPKcidINIASaVnxWHgTqxsmF8S8htI76kcNMTEIjRN7FFJwngrOQBTAjzX7K89gNVAlpWZH7_CmI5lY1oJDMnZA-wcq-1W4ywupsQa4xHpf1tqVM6ED24RJWLPH03uB8AI51wM/s400/nadir_vs_oblique.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
You will need a couple pieces of information about your camera/lens<br />
<br />
<ol>
<li>The number of pixels on the sensor in the X (horizontal) and Y (vertical) directions, which you can get from the properties of an image taken with your camera.</li>
<li>The horizontal and vertical fields of view (FOV angles) for your camera. These are usually in the manufacturer's specifications for the camera/lens. If you're unsure, scour the web the answer is out there. If you only have the diagonal FOV you can do some right-angle trig with the aspect ratio of the sensor to estimate the horz. and vert. FOV values.</li>
</ol>
<br />
<u>Useage: </u><br />
Run this script from the command line or an editor. Enter the values for each prompt. The calculations in this script are unit independent, but all linear distance values (e.g. resolutions or flying heights) need to be in the same units (feet, meters, whatever you like...).<br />
<br />
<br />
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-71486746832112431522015-07-30T11:08:00.000-07:002015-07-30T11:12:29.469-07:00Strapping a NIR Camera onto the Inspire 1<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-nIRg4EXp5DQ/VbpZK4hkbbI/AAAAAAAAOSA/t0lW57vwtuA/s1600/IMG_20150729_094626.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://2.bp.blogspot.com/-nIRg4EXp5DQ/VbpZK4hkbbI/AAAAAAAAOSA/t0lW57vwtuA/s200/IMG_20150729_094626.jpg" width="147" /></a></div>
I finally went and did it...strapped my near-infrared camera (NIR) onto our DJI Inspire 1. Here are some of the results from this quick test flight.<br />
<br />
For those unfamiliar with NIR imaging, in Geography we primarily use the near-infrared portion of the spectrum to help us measure a multitude of things just beyond the visible portion of the electromagnetic spectrum. Some of the primary uses for NIR imaging are to measure vegetation types, vegetation health, and help differentiate different landuse/landcover types. Here's a <a href="http://missionscience.nasa.gov/ems/08_nearinfraredwaves.html" target="_blank">NASA link to more information on NIR</a> and another on the <a href="http://earthobservatory.nasa.gov/Features/MeasuringVegetation/measuring_vegetation_2.php" target="_blank">Normalized Difference Vegetation Index (results below)</a>.<br />
<br />
<a name='more'></a><br />
The NIR camera is a Canon Powershot A4000IS that I converted myself by removing the IR cut filter from in front of the sensor (definitely not an operation for the faint hearted). To only allow IR light into the camera I use an IR pass filter (<a href="http://www.bhphotovideo.com/c/product/102760-REG/LEE_Filters_87P_4x4_Infra_Red_87.html" target="_blank">Lee #87</a>) placed over the lens. The result is a grayscale image the represents the intensity of NIR light in the scene. The details of the camera will be the subject of a future post.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-zhalFbY8OGE/Vbpegm-f_qI/AAAAAAAAOSQ/PIgZLT554WU/s1600/IMG_0247.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://1.bp.blogspot.com/-zhalFbY8OGE/Vbpegm-f_qI/AAAAAAAAOSQ/PIgZLT554WU/s400/IMG_0247.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sample NIR image, lighter colors indicate more NIR light</td></tr>
</tbody></table>
Mounting the camera in the Inspire 1 only required a small piece of adhesive-backed foam and a couple velcro straps. I put the foam on the underside of the battery compartment to protect the camera. I placed the velcro straps through the battery compartment and then around the lens and simply cinched the camera down. The camera has CHDK installed and an intervalometer script triggered the camera to take photos every 4 seconds.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTVZdWVMFC60UzAtR2jt3Clq8KYyA5QMLTveLk166xFCEZKLdRP6Htm9W-yfjzP3nFf8theWDraVQAsbOgPtcq23NvbQici3vE-47Ng3WXpJWns3dIeQSmm-tbuw0HyUS8nT99IO9hNoI/s1600/IMG_20150729_094705.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTVZdWVMFC60UzAtR2jt3Clq8KYyA5QMLTveLk166xFCEZKLdRP6Htm9W-yfjzP3nFf8theWDraVQAsbOgPtcq23NvbQici3vE-47Ng3WXpJWns3dIeQSmm-tbuw0HyUS8nT99IO9hNoI/s200/IMG_20150729_094705.jpg" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6iv2PbSktbrNBgGbixfTbUni9vmIwSkQEbFBLcpsa9IKJBSTK8gfysXoiJXJgU7_h4c9hxIA1HeEOndfvaBGzM7HXkB-k9QYRBj9bZFXDO9J6n7yWLs1IORCImHn7gQ4kvC2H4RWwavQ/s1600/IMG_20150729_094634.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6iv2PbSktbrNBgGbixfTbUni9vmIwSkQEbFBLcpsa9IKJBSTK8gfysXoiJXJgU7_h4c9hxIA1HeEOndfvaBGzM7HXkB-k9QYRBj9bZFXDO9J6n7yWLs1IORCImHn7gQ4kvC2H4RWwavQ/s200/IMG_20150729_094634.jpg" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKsOTBd5p924MYkeRgew9HTqD8-hlY05o0T7hNgIhJHT2OuxM2KeVhmwLtpEjyfAEqNzKaZscBb0kd8i_FZyFFuiaa4RqT8y7NHdR_tPoxqyRAHdT1WGIaX6FtT7KDTBq9fjuHUPfHF2E/s1600/IMG_20150729_094626.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKsOTBd5p924MYkeRgew9HTqD8-hlY05o0T7hNgIhJHT2OuxM2KeVhmwLtpEjyfAEqNzKaZscBb0kd8i_FZyFFuiaa4RqT8y7NHdR_tPoxqyRAHdT1WGIaX6FtT7KDTBq9fjuHUPfHF2E/s200/IMG_20150729_094626.jpg" /></a> <a href="http://4.bp.blogspot.com/-IJ3E22QsoEM/VbphAckfZyI/AAAAAAAAOS0/2YdmxMuGTy4/s1600/IMG_20150729_094602.jpg" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-IJ3E22QsoEM/VbphAckfZyI/AAAAAAAAOS0/2YdmxMuGTy4/s200/IMG_20150729_094602.jpg" /></a><br />
<br />
Here is a sample some sample images from the Inspire 1's camera and the NIR camera from roughly the same spot:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Qn1DY94vgE_yw9ajWsKiU5N2QRG4chUgtkHQctkB1KSt6UOvcKM5Y_Vvmk-tGPY0mEUKUnP4W-7uzKfLPXPLyIIujIq_Gof9d_k4K0eZ31N7-sy-eCApveZBmgZQCkeA_npVOSzPXVI/s1600/IMG_0359.JPG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Qn1DY94vgE_yw9ajWsKiU5N2QRG4chUgtkHQctkB1KSt6UOvcKM5Y_Vvmk-tGPY0mEUKUnP4W-7uzKfLPXPLyIIujIq_Gof9d_k4K0eZ31N7-sy-eCApveZBmgZQCkeA_npVOSzPXVI/s320/IMG_0359.JPG" /></a> <a href="http://4.bp.blogspot.com/-ac6ETf8Xj84/VbphQCbejfI/AAAAAAAAOTI/TDOXTU1Oapo/s1600/DJI_0202.JPG" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-ac6ETf8Xj84/VbphQCbejfI/AAAAAAAAOTI/TDOXTU1Oapo/s320/DJI_0202.JPG" /></a></div>
<br />
To get the images from the two cameras to align properly, I processed multiple photos from each camera through Agisoft Photoscan to produce orthorectified image mosaics. I then stacked the individual orthophotos to produce a 4-band multi-spectral image. The series below: 3D views from Photoscan (Natural Color and NIR), the Natural Color ortho (from the Inspire 1's camera), the NIR ortho (from the Canon), a false color composite (NIR - Red - Green), and the calculated NDVI.<br />
Click on the images below to bring up the full size images.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-RlHiNL3pGuo/VbpmUnBLrqI/AAAAAAAAOT4/-XzZTPHPJv8/s1600/ps_3DnatColor.png" imageanchor="1"><img border="0" src="http://1.bp.blogspot.com/-RlHiNL3pGuo/VbpmUnBLrqI/AAAAAAAAOT4/-XzZTPHPJv8/s320/ps_3DnatColor.png" width="300" /></a> <a href="http://2.bp.blogspot.com/-3MR2Oq9-hLQ/VbpmUoQzDzI/AAAAAAAAOT0/9Ak5tDLAZns/s1600/ps_3DNIR.png" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-3MR2Oq9-hLQ/VbpmUoQzDzI/AAAAAAAAOT0/9Ak5tDLAZns/s320/ps_3DNIR.png" width="300" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVOOfGhd913Idqq2LobOhySspU_7uSoGE1zUcEQoHUjU5SSp77-3Or9GlCPvRwKRRX-mHBSlgZaXpQzUPqeq-OzDuEufARkBP5bSkPGNiZddOUivmIFnh5dXjsRjMlQlfWf-skX-m0t70/s1600/ps_01natcolor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVOOfGhd913Idqq2LobOhySspU_7uSoGE1zUcEQoHUjU5SSp77-3Or9GlCPvRwKRRX-mHBSlgZaXpQzUPqeq-OzDuEufARkBP5bSkPGNiZddOUivmIFnh5dXjsRjMlQlfWf-skX-m0t70/s400/ps_01natcolor.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih7pKLG0d8eWPuurAnFEBt1_F9ky_JbXZmi80CqIA3qSIcqrBjfsxHF3l3KhjJcpVGSiiMCcwTk5O1zxUxenhfw4qVrNdObMmWYge7QQP-lCXtB_r-YUNA_ErgsyoAVC525Tx6mn7ePGg/s1600/ps_02NIR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih7pKLG0d8eWPuurAnFEBt1_F9ky_JbXZmi80CqIA3qSIcqrBjfsxHF3l3KhjJcpVGSiiMCcwTk5O1zxUxenhfw4qVrNdObMmWYge7QQP-lCXtB_r-YUNA_ErgsyoAVC525Tx6mn7ePGg/s400/ps_02NIR.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0BrOGLybDL18TEwJDQoiNZMWmuaXihLbzWH1jedgfDuJ2VRGwt3kMxp0tYx7ab-4qBQrxOMcAUIsSBj4yHaTdEwgDnzWT6kjPo3Y17saGKdVn99Iq0JzODYIqBAy6hGgUOlG3NXxZYHo/s1600/ps_03falsecolor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0BrOGLybDL18TEwJDQoiNZMWmuaXihLbzWH1jedgfDuJ2VRGwt3kMxp0tYx7ab-4qBQrxOMcAUIsSBj4yHaTdEwgDnzWT6kjPo3Y17saGKdVn99Iq0JzODYIqBAy6hGgUOlG3NXxZYHo/s400/ps_03falsecolor.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-5R5laRqXWP4/VbpigrqpGxI/AAAAAAAAOTo/RYh-j0r9Kpg/s1600/ps_04NDVI.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="http://1.bp.blogspot.com/-5R5laRqXWP4/VbpigrqpGxI/AAAAAAAAOTo/RYh-j0r9Kpg/s400/ps_04NDVI.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com3tag:blogger.com,1999:blog-908258308186667628.post-87622399035691776762015-06-24T12:04:00.002-07:002015-07-17T11:32:41.294-07:00Agisoft Photoscan Crash Course (updated for version 1.1.6)Finally, time for an update…this time to Photoscan Professional 1.1.6. In this tutorial, I am going to fly through the basics of getting a Photoscan project up and running without getting to deep into the details. If you are interested in the details of specific tools, I will refer you to the official documentation (<a href="http://www.agisoft.com/downloads/user-manuals/">Agisoft Photocan User Manuals</a>).<br />
<br />
The instructions for the previous <a href="http://adv-geo-research.blogspot.com/2014/03/agisoft-photoscan-crash-course-v-102.html">version 1.0 are still here</a>…<br />
I also have discussions on <a href="http://adv-geo-research.blogspot.com/2013/10/cameras-for-sfm.html">cameras</a> and <a href="http://adv-geo-research.blogspot.com/2014/02/camera-geometries-for-structure-from.html">camera geometry</a>.<br />
<br />
<a name='more'></a><br />
<br />
Jump to a section:<br />
<b><a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#photoprep">Photo Prep</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#geotag">Geotagging</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#align">Photo Alignment</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#georef">Georeferencing</a> |
<a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#optimize">Optimize the alignment</a><br />
<a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#builddense">Building Dense Point Cloud</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#pc_edit">Point Cloud Editing</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#align_bb">Aligning the Bounding Box</a> |
<a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#mesh">Build Mesh</a><br />
<a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#build_tex">Build Texture</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#export_pc">Exporting Point Clouds</a> | <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html#export_dem">Exporting DEMs / Orthophotos</a></b><o:p></o:p><br />
<br />
<a href="https://www.blogger.com/null" name="photoprep"></a>
<br />
<h3>
Photo Prep</h3>
Eliminate any blurry, out of focus, or random photos from your photoset<br />
<ul>
<li>I like to do this step by hand, just to ensure that everything looks OK</li>
<li>Photoscan also has a tool, “Estimate Image Quality”, which can take some of the guesswork out of large datasets.
<ul>
<li>Load your photos, select all of them, right-click on one and choose “Estimate Image Quality”.</li>
<li>Switch to the ‘Detail’ view in the Photo pane to see the quality score from 0 to 1. I have found that images with scores less than 0.6 are good candidates for removal (the documentation says less than 0.5).<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/--JyzWrEF8Mg/VYM-pUnVGqI/AAAAAAAANjE/VgwTrYwskuY/s1600/est_image_quality.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="140" src="http://1.bp.blogspot.com/--JyzWrEF8Mg/VYM-pUnVGqI/AAAAAAAANjE/VgwTrYwskuY/s320/est_image_quality.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Getting the Details view</td></tr>
</tbody></table>
</li>
<li>Removing photos is a bit of a double-edged sword. If you do not remove poor photos, you risk getting incorrect alignments and by removing photos, you risk not getting a complete alignment. The hope is that your photoset has sufficient overlap to mitigate the effects of a few missing photos.</li>
</ul>
</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="geotag"></a>
<br />
<h3>
Geotagging</h3>
If you have geotagged photos (from a camera with automatic geotagging or from a UAV/UAS)<br />
<ul>
<li>If you have a synced GPS track for you photos, use a program like <a href="http://www.geosetter.de/en/">GeoSetter</a> to geotag your photos before processing.</li>
<li>With geotagged photos, the coordinates are usually Lat/Long (in degrees); use the convert tool in the “Reference” pane to convert to UTM (or your coordinate system of choice).</li>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-FbcaonHl67w/VYM-zUy5EbI/AAAAAAAANjM/mQR9bTivfF0/s1600/Convert_latLong.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-FbcaonHl67w/VYM-zUy5EbI/AAAAAAAANjM/mQR9bTivfF0/s1600/Convert_latLong.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Coordinate conversion in Photoscan</td></tr>
</tbody></table>
<li>Never use geotagged photos as the sole source of georeferencing information. The error in consumer grade GPS units (handheld, in-camera, or UAS) is not sufficient for anything more than helping with photo alignment.</li>
</ul>
<ul>
</ul>
<br />
<a href="https://www.blogger.com/null" name="align"></a>
<br />
<h3>
Photo Alignment</h3>
<em>This step generates the initial alignment parameters for the photos and a sparse point cloud</em><br />
<em>Load your photos</em><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-h7VEieh49xo/VYM_GvjoZcI/AAAAAAAANjU/YflQGUTPq2M/s1600/Add_photos.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-h7VEieh49xo/VYM_GvjoZcI/AAAAAAAANjU/YflQGUTPq2M/s1600/Add_photos.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Add photos</td></tr>
</tbody></table>
<ul>
<li>Use the ‘Add Photos’ button on the top of the Workspace pane, through the menu option in the ‘Workflow’ menu, or by right-clicking in the Photos pane</li>
</ul>
Align your Photos<br />
<ul>
<li>On the top menu bar: Workflow > Align Photos</li>
<li>Alignment parameters:
<ul>
<li>Accuracy:
<ul>
<li>High: is best for smaller photosets</li>
<li> Medium: is best for larger photosets</li>
</ul>
</li>
</ul>
</li>
<li>Pair Selection
<ul>
<li>Disabled: default, works for most datasets</li>
<li>Generic: I use this one if I am having trouble getting photos to align</li>
<li>Reference: If your photos are geotagged, this will use the GPS positions to speed up processing.</li>
<li>Advanced:
<ul>
<li>Key Point Limit: 40,000 is default. Smaller numbers of key points can speed up processing, but you run the risk of not having enough points to align photos.</li>
<li>Tie Point Limit: 1000 – 2000 is recommended. This is one parameter to play with if you are having alignment issues. You can even take it down to zero to have no limit.</li>
<li>Constrain features by mask: If you have created masks on your photos, use this option to limit the point search to just the areas you selected.</li>
</ul>
</li>
</ul>
</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmt7TzvG1MSkhDAghJ-4iEV1rbzc5YYWhHuublQzaP6VSYCD79V6erHqP63zPiy5hR7li_T_mnEo_uRgAfZm57hDho7Bb06uE3IxZgXZs5Ej8EceVV7V70O_TDAa02v-pzHRyKWc92q2E/s1600/align_param.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmt7TzvG1MSkhDAghJ-4iEV1rbzc5YYWhHuublQzaP6VSYCD79V6erHqP63zPiy5hR7li_T_mnEo_uRgAfZm57hDho7Bb06uE3IxZgXZs5Ej8EceVV7V70O_TDAa02v-pzHRyKWc92q2E/s320/align_param.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Alignment options</td></tr>
</tbody></table>
Fixing misaligned/unaligned photos
<br />
<ul>
<li>After the initial pass of photo alignment, there may be photos that are misaligned or unaligned. You can force the program to try again, usually this works (but not always).
<ul>
<li>Select all of the photos that are causing trouble, right-click and select “Reset Alignment”</li>
<li>Right-click again, select “Align Selected Cameras”<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fSJ0SXP0FWY/VYrs5guwQGI/AAAAAAAANnA/IEwUS4aAYgY/s1600/fix_alignment.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-fSJ0SXP0FWY/VYrs5guwQGI/AAAAAAAANnA/IEwUS4aAYgY/s1600/fix_alignment.png" /></a></div>
</li>
<li>If that does not work, select a smaller batch of problem photos and try again working in small batches.</li>
<li>A last ditch solution for problem photos is to add temporary markers in the images to help force Photoscan to match the misaligned photos
<ul>
<li>You will need start with least two aligned images that overlap with the misaligned photo(s) </li>
<li>Open the aligned photos and find features that are in both images and right-click on the aligned image and select ‘Create Marker’ to place a temporary marker in the image. Do that for 3-4 features.
<ul>
<li>Once you have created a marker in one image, switch to the second aligned image and use the ‘Place Marker’ option in the right-click menu.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Open the misaligned image and place the markers on the features.</li>
<li>Then you can select the misaligned photo(s) and run ‘Align Selected Cameras’ again.</li>
<li>You can continue the process for all the misaligned images</li>
<li>** If the markers do not seem to be helping (one-by-one), you can try to realign all the images. Either by selecting all your photos and selecting “Reset Alignment” then “Align Selected Cameras” OR by running the Align Photos tool again. MAKE A COPY OF YOUR PROJECT BEFORE YOU DO ANYTING DRASTIC LIKE THIS.</li>
<li>If none of that works, there is not a whole lot you can do but disable or exclude the photos that will not align.</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="georef"></a>
<br />
<h3>
Georeferencing</h3>
Prep and import your ground control point (GCP) data<br />
<ul>
<li>Double-check your projection and vertical datum.
<ul>
<li>Photoscan has a converter, however I like to do any conversions outside of Photoscan in<div style="text-align: left;">
</div>
a fun little program called<a href="http://vdatum.noaa.gov/"> VDatum</a> from NOAA/NGS</li>
<li>Load your data points into Excel and delete all but the NAME, LAT(Northing), LONG(Easting), and ELEV fields to simplify things.
</li>
<li>Save as a text file (tab delimited)<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmaej2H2_mbWSCOhTrILhxMt88QH1N-BlvdkP8i1OV0xSQC4L6CEGxp-9eH9hp7CFAKB7nH0O7diFORNfPLU-bPZxftyHobC_PcAclbVf8yFQ7N-f11_L6XIswhLL2VMlA3SAW6i8UdY/s1600/GCP_format2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmaej2H2_mbWSCOhTrILhxMt88QH1N-BlvdkP8i1OV0xSQC4L6CEGxp-9eH9hp7CFAKB7nH0O7diFORNfPLU-bPZxftyHobC_PcAclbVf8yFQ7N-f11_L6XIswhLL2VMlA3SAW6i8UdY/s320/GCP_format2.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">GCP format in plain text file</td></tr>
</tbody></table>
</li>
<li>Use the Import tool in the Reference pane,
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-usLAxarJYPw/VYruk1BI_6I/AAAAAAAANng/pe0MKHKy1MQ/s1600/GCP_import.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-usLAxarJYPw/VYruk1BI_6I/AAAAAAAANng/pe0MKHKy1MQ/s1600/GCP_import.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Importing GCPs</td></tr>
</tbody></table>
<ul>
<li>Set the coordinate system, delimiter, and choose which columns go to which values</li>
<li>Double-check the preview pane at the bottom of the window to make sure your coordinate are going to the right place (be careful…some GPS outputs are <em>Y,X,Z</em> instead of <em>X,Y,Z</em>).</li>
<li>It will complain that it “Can’t find match…” , click “Yes to all” to import all of the points in the file</li>
<li>If you import a larger file, you should delete any points that are not present in the photoset.</li>
</ul>
</li>
</ul>
</li>
</ul>
If you used geotagged photos select all of the photos in the Cameras section of the Reference pane and click the checkbox to “uncheck” all of the geotagged photos.<br />
<ul>
<li>If you do not do this, Photoscan will try to use both the geotagged images and the in photo GCPs to georeference. This can lead to some interesting results as the software tries to reconcile the less accurate GPS data with coordinates that are more accurate.<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-wheKeptoxa4/VYrt6YJofQI/AAAAAAAANnY/PO90Uf70EDg/s1600/geotag_unchecked.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-wheKeptoxa4/VYrt6YJofQI/AAAAAAAANnY/PO90Uf70EDg/s1600/geotag_unchecked.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Unchecking geotagged photos</td></tr>
</tbody></table>
</li>
</ul>
Placing the GCP markers<br />
<ul>
<li>Find the first photo with a ground control point</li>
<li>Double-click the photo to open it, zoom in on the control point, right-click on the center of the control point marker, select “Place Marker” and select the appropriate marker.<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL5_SKCi0mHsBhqZRDB0QpKsftW87SZ9uRuM36dNv3FZgio9Sx_dUPQt53ethxwbswOZ68Q8VrXdCa0UCuBtrip7h-GxFM6u_kdcJ7GkYH_DRT_My9PW-m3OBZEoraJutGibw3hYGqupM/s1600/gcp_place.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL5_SKCi0mHsBhqZRDB0QpKsftW87SZ9uRuM36dNv3FZgio9Sx_dUPQt53ethxwbswOZ68Q8VrXdCa0UCuBtrip7h-GxFM6u_kdcJ7GkYH_DRT_My9PW-m3OBZEoraJutGibw3hYGqupM/s1600/gcp_place.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">GCP marker placement</td></tr>
</tbody></table>
</li>
<li>Find the next photo with the same GCP as the first, set the marker.
<ul>
<li>Once you have a marker placed in two photos the software starts to guess where they should be in other photos.</li>
<li>Right-click on the marker you have been working on, select “Filter Photos by Marker”. This will show just the photos that the marker is in.</li>
<li>Go through all of the photos and place the markers.
<ul>
<li>** You can easily get to the next/previous photo using the PageUp/PageDown keys on your keyboard</li>
</ul>
</li>
</ul>
</li>
<ul>
<li>If a photo has a marker flag in it, but the GCP is not visible (obscured):
<ul>
<li>You can leave it as a gray flag and it will not be used, or</li>
<li>You can right-click on it and “Remove Marker”</li>
</ul>
</li>
</ul>
<li>In the photos pane, select “Reset Filter” to get back to the full photoset.</li>
<ul>
<li><div class="separator" style="clear: both; text-align: center;">
</div>
</li>
<li>Repeat the above steps for the next two GCPs</li>
<li>After you have three GCP markers set, you can “Update” the georeferencing in the ground control pane<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="http://4.bp.blogspot.com/-0BV0J8HTddU/VYrwFt04S1I/AAAAAAAANn4/gUNDkyD_jiw/s1600/GCP_update.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-0BV0J8HTddU/VYrwFt04S1I/AAAAAAAANn4/gUNDkyD_jiw/s1600/GCP_update.png" /></a></td></tr>
<tr><td class="tr-caption">Updating the georeferencing</td></tr>
</tbody></table>
</li>
<li>This will roughly georeference the model and make finding the remaining GCPs easier</li>
<ul>
<li>If your first three points are close together, this may not work very well. In this case you will likely have to manually find and mark an additional GCP (preferably further away from the initial GCPs</li>
</ul>
</ul>
<li>Right-click on the next GCP in the list and “Filter Photos by Marker”
<ul>
<li>Run through all of the photos and place the markers</li>
<li>“Update” again to refine the georeferencing</li>
<li>Repeat this for the rest of the GCPs</li>
<li>Double-check that all of your GCP markers are placed
<ul>
<li>Right-click on each of the GCPs and “Filter Photos by Marker”</li>
<li>Double-check that all of the photos have little blue flags above them in the photo pane.</li>
<li>Update one last time</li>
</ul>
</li>
</ul>
</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="optimize"></a>
<br />
<h3>
Optimize the alignment</h3>
Click on “Optimize” in the ground control pane<br />
<ul>
<li>Leave the default options</li>
<li>This optimizes the camera alignment and generates a camera calibration based on the GCP locations<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0kkY5gsb64gCNha8SfCR3WumxH08IP-58S1YyX24Ndx1DvqmM9mdSMvn2c0P9SAN_7mTGeyererfwUxF5k256Lo_LXWUK7JVItmg0DOV50esq040F7hyQFgmZ5J0aRDX0UyKTeWa1q1I/s1600/optimize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0kkY5gsb64gCNha8SfCR3WumxH08IP-58S1YyX24Ndx1DvqmM9mdSMvn2c0P9SAN_7mTGeyererfwUxF5k256Lo_LXWUK7JVItmg0DOV50esq040F7hyQFgmZ5J0aRDX0UyKTeWa1q1I/s1600/optimize.png" /></a></div>
</li>
</ul>
<br />
<h3>
Check your errors for each GCP</h3>
<ul>
<li>You may need to expand the reference pane to show the error statistics for the GCPs
<ul>
<li>You can also click on “View Errors” to view the X, Y, and Z components of the error</li>
<li>If you have points with errors that are higher than you would like, you can uncheck the box on the left to exclude it from the georeferencing calculations</li>
<li>Update the georeferencing, repeat for any other bad points if necessary</li>
<li>Re-optimizing in between updates will also help you improve the error</li>
</ul>
</li>
</ul>
A note on the error values<br />
<ul>
<li>The errors reported by Photoscan are the ‘root sum of squares errors’ and the ‘root mean squared errors’ for each point.</li>
<li>*** <strong>These values are only valid for the GCPs and should not be reported as the accuracy of the entire model. To judge the accuracy of the model I highly recommend that you collect independent control points that can be used to compute the overall spatial accuracy of the model. Please refer to the </strong><a href="http://www.asprs.org/PAD-Division/ASPRS-POSITIONAL-ACCURACY-STANDARDS-FOR-DIGITAL-GEOSPATIAL-DATA.html"><strong>ASPRS POSITIONAL ACCURACY STANDARDS FOR DIGITAL GEOSPATIAL DATA</strong></a><strong> for details on accuracy assessments.</strong></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgos2Xg0rEjomAAF6l2Ws_hqIHYa92benXQ5Zw_I_rOcc9DZjS_fe9IXm2rQ4e1EsvoSfwmFT1HOg-yN0hPTzS9FcBYwyacHgIlX1C6fw92hLpk22UCcZZGqFn2H1n6I9E7ALcvPgDJao/s1600/errors2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgos2Xg0rEjomAAF6l2Ws_hqIHYa92benXQ5Zw_I_rOcc9DZjS_fe9IXm2rQ4e1EsvoSfwmFT1HOg-yN0hPTzS9FcBYwyacHgIlX1C6fw92hLpk22UCcZZGqFn2H1n6I9E7ALcvPgDJao/s400/errors2.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.8000001907349px;">Explanation of the different error values in Photoscan</span></td></tr>
</tbody></table>
<br />
<a href="https://www.blogger.com/null" name="builddense"></a>
<br />
<h3>
Building the Dense Point Cloud</h3>
<a 0="" cellspacing="0" class="tr-caption-container" href="https://www.blogger.com/null" name="build_dense></a>
Check the bounding box (the light gray box with a red bottom) size and orientation<br />
<table cellpadding=" style="float: right; margin-left: 1em; text-align: right;">
</a>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8l2YEF4TMTx2tLAIELUCHSbI5r0S5xAWTrNNplK07UFjfNhQSvGFnqNyxtpgAPnGUFgszpsjCvPfQSYTsGRBJa59m3SZwlrPeh1fiNBMtBGON7fB1GGUtw7Aqtl_baAT7KwdQ2Xp7LG8/s1600/region_resizeRotate.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8l2YEF4TMTx2tLAIELUCHSbI5r0S5xAWTrNNplK07UFjfNhQSvGFnqNyxtpgAPnGUFgszpsjCvPfQSYTsGRBJa59m3SZwlrPeh1fiNBMtBGON7fB1GGUtw7Aqtl_baAT7KwdQ2Xp7LG8/s1600/region_resizeRotate.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"></td><td class="tr-caption"><span style="font-size: 12.8000001907349px;">Resize and Rotate </span></td><td class="tr-caption"><span style="font-size: 12.8000001907349px;">Region tools</span></td></tr>
</tbody></table>
<ul>
<li>Use the “Resize Region” and “Rotate Region” tools on the toolbar if the bounding box looks like it is going to cut off any parts of the model</li>
</ul>
<br />
Settings<br />
<ul>
<li>Quality:
<ul>
<li>High: great for smaller photosets</li>
<li>Medium: good for larger datasets</li>
<li>Lowest, Low: produce low quality results (not usually the goal)</li>
<li>Ultra High: I have only ever tried this once and my computer run out of memory.</li>
<ul>
<li><i>This is the super memory intensive part of the process, photosets that are large (lots of photos) can take a long time to complete. Too many photos cause the program to run out of memory. The quality that is achievable and the time it takes depend on your processor (CPU), RAM, and video card (GPU).</i></li>
</ul>
</ul>
</li>
<li>Advanced
<ul>
<li>Depth Filtering: Aggressive (default), limits points that are too far from the surface. For some vegetation applications, this may need to be relaxed a bit.</li>
</ul>
</li>
<ul>
</ul>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs2TkiAxDiIr9BDd9sKgkbzok5ixEZXl8X3xL3CIdBq7VaJiso4znYFXDnJQtgQ4wpoNUwaJgGWMjORUH2NWWS3d5gB1A7WE87DcWofm1RseYZKp4x_Prf2vTfx_HNZMOnUUGOPsr06wY/s1600/build_denseCloud.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs2TkiAxDiIr9BDd9sKgkbzok5ixEZXl8X3xL3CIdBq7VaJiso4znYFXDnJQtgQ4wpoNUwaJgGWMjORUH2NWWS3d5gB1A7WE87DcWofm1RseYZKp4x_Prf2vTfx_HNZMOnUUGOPsr06wY/s320/build_denseCloud.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dense reconstruction options </td></tr>
</tbody></table>
<br />
<a href="https://www.blogger.com/null" name="pc_edit"></a>
<br />
<h3>
Point Cloud Editing</h3>
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-pxFAymuuewo/VYr3za_MhuI/AAAAAAAANo8/FP27CoXmzMI/s1600/point_selectionTools.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-pxFAymuuewo/VYr3za_MhuI/AAAAAAAANo8/FP27CoXmzMI/s1600/point_selectionTools.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Point selection tools</td></tr>
</tbody></table>
<ul>
<li>If there are any points in the dense point cloud are outside of the envelope you wish to export, you can manually delete them</li>
<li>Use the “Rectangle Selection”, “Circle Selection”, or “Free-from Selection” tools on the toolbar to select and delete errant points.
<ul>
<li>You can hold the Control key on our keyboard to add to a selection OR hold the Shift key to subtract from a selection</li>
<li>Point Cloud Classification
<ul>
<li>Photoscan has a tool to automatically classify the point cloud into “ground” and “non-ground” classes (similar to lidar data). You can also select points and manually assign a class.</li>
<li>Tools menu > Dense Cloud</li>
</ul>
</li>
</ul>
</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="align_bb"></a>
<br />
<h3>
Aligning the Bounding Box</h3>
<br />
<ul>
<li>For geography applications, a height field mesh would normally be modeled orthogonal to the Z-axis of the coordinate system. In Photoscan, the height field is actually modeled against the orientation of the bounding box (the light gray box with a red bottom) of the model. You can run a Python script (**Align Bounding Box Tool**) in the console or from Tools > Run Script… to align the bounding box to the reference coordinate system.</li>
<li>Download the Script here <a href="https://github.com/geojames/photoscan">https://github.com/geojames/photoscan</a>
<ul>
<li>There are scripts for Photoscan version 1.1 (PS110…) and version 0.9 (PS090…)</li>
<li>There are some other fun scripts there too.</li>
</ul>
</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="mesh"></a>
<br />
<h3>
Build Mesh</h3>
Mesh Settings<br />
<ul>
<li>Surface Type:
<ul>
<li>Height Field: only builds a mesh surface orthogonal to the reference system Z-axis (i.e. no undercuts will be modeled). This is the fastest mesh procedure and excellent if DEMs are going to be your final product.</li>
<li>Arbitrary: Will model every nook and cranny of the object. Best for oblique imagery, when point clouds or complex mesh surfaces are going to be the final product.</li>
</ul>
</li>
<li>Source Data:
<ul>
<li>Dense cloud: default</li>
<li>Sparse cloud: I am not sure why you would use the sparse cloud, but you could…</li>
</ul>
</li>
<li>Polygon Count: The number of polygons that the model will be decimated to after processing.
<ul>
<li>The software has High, Medium, Low values</li>
<li>Or you can specify a custom number (entering 0 will not decimate the final model)</li>
</ul>
</li>
<li>Interpolation
<ul>
<li>Enabled: default, will interpolate over small holes in the surface</li>
<li>Disables: no interpolation will be done</li>
<li>Extrapolation: will interpolate the surface and then extrapolate out to fill the bounding box.</li>
<li>Point Classes:
<ul>
<li>If you used it to classify the dense point cloud, you could specify which point classes you want use for the mesh.</li>
</ul>
</li>
</ul>
</li>
<ul>
</ul>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir4yWvm6Df_A_tdhdGdYqRdGh-NXKMnHBtyLYm7VAFG_UbqjOR-v5HV2e24ut93xhlOSZKH3BuluAKi59cW-sUhnNf4b8M5QMyN7UGqxvSiu2NMEe3tNwgpSCXjQax_K5ljjpZfpyKUc0/s1600/mesh_options.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir4yWvm6Df_A_tdhdGdYqRdGh-NXKMnHBtyLYm7VAFG_UbqjOR-v5HV2e24ut93xhlOSZKH3BuluAKi59cW-sUhnNf4b8M5QMyN7UGqxvSiu2NMEe3tNwgpSCXjQax_K5ljjpZfpyKUc0/s320/mesh_options.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Build Mesh options</td></tr>
</tbody></table>
<br />
<a href="https://www.blogger.com/null" name="build_tex"></a>
<br />
<h3>
Build Texture</h3>
This step is not totally necessary, unless you will be exporting the 3D model (as a PLY or OBJ) to a 3D graphics program. I will give the settings I use the most here; there are tons of other options. If you are interested check out the user manual.<br />
<br />
Settings:<br />
<ul>
<li>Mapping Mode:
<ul>
<li>Adaptive Orthophoto: I recommend this mode for most 3D models that you will be exporting. It gives the best results for Arbitrary meshes.</li>
<li>Blending Mode:
<ul>
<li>Mosaic (Default): This will create a mosaic from the input photos</li>
<li>Texture size/count:
<ul>
<li>This determine the resolution of the texture map. Higher means better resolution, but also increased file size.</li>
<li>The default is 2046 and I usually double that to 4092.</li>
<li>Enable Color Correction:
<ul>
<li>I usually leave this unchecked.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-G7w86XapG38/VYr4piEzTyI/AAAAAAAANpM/WuZkowOhfhQ/s1600/texture_settigns.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="217" src="http://3.bp.blogspot.com/-G7w86XapG38/VYr4piEzTyI/AAAAAAAANpM/WuZkowOhfhQ/s320/texture_settigns.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Build Texture options</td></tr>
</tbody></table>
<br />
<a href="https://www.blogger.com/null" name="export_pc"></a>
<br />
<h3>
Exporting Point Clouds</h3>
<br />
<ul>
<li>From the File menu, you can export the sparse or dense point clouds.</li>
<li>I recommend that you export in the LAS format, keep the coordinate system that you georeferenced everything in, and keep the default export parameters.
<ul>
<li>For super big point clouds you can enable the ‘Split in Blocks’ option to tile the point cloud.</li>
<li>The LAS files can be viewed in software like <a href="http://www.cloudcompare.org/">CloudCompare</a> or <a href="http://www.fugroviewer.com/">FugroViewer</a>
<ul>
<li>I would not recommend trying to load a dense point cloud into a program like ArcMap (it really doesn’t like dealing with datasets like this)</li>
</ul>
</li>
</ul>
</li>
</ul>
<br />
<a href="https://www.blogger.com/null" name="export_dem"></a>
<br />
<h3>
Exporting DEM / Orthophotos</h3>
File > Export DEM > Export TIFF/BIL/XYZ<br />
<ul>
<li>Choose your projection</li>
<li>Crop invalid DEM: checked by default</li>
<li>No-data value: Use -9999 for ArcGIS</li>
<li>Pixel Size: Photoscan estimates an appropriate pixel size, can be changed to match your requirements</li>
<li>Split in blocks: segment the DEM into X by X rasters (only needed for large datasets)</li>
<li>Set boundaries:
<ul>
<li>Check the box and click “Estimate”, this limits extra no-data values on the edges</li>
<li>Write world file: not necessary if you export a TIFF</li>
<li>Choose your output location, file name, and type</li>
</ul>
</li>
</ul>
<br />
File > Export Orthophoto > Export JPEG/TIFF/PNG<br />
<ul>
<li>Choose your projection</li>
<li>Blending mode: Mosaic (default)</li>
<li>Enable Color Correction: not usually necessary, but if you need the color to be evened out feel free to select this option</li>
<li>Pixel Size: same as above</li>
<li>Split in Blocks: same as above</li>
<li>Set boundaries: same as above</li>
<li>Write world file: not necessary if you export a TIFF</li>
<li>Choose your output location, file name, and type</li>
</ul>
<div>
<br /></div>
<h4>
Finally all done!!!</h4>
If you are taking your orthophoto outputs into ArcMap (or any other GIS/RS software) there are some settings that Arc will default to that will make the orthophoto way to bright.<br />
<br />
<ul>
<li>Open the Properties of the image, switch to the Symbology tab</li>
<ul>
<li>Select 'None' for the stretch type</li>
<li>Uncheck 'Apply Gamma Stretch'</li>
</ul>
</ul>
<div>
<br /></div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com32tag:blogger.com,1999:blog-908258308186667628.post-7801450966077826952015-05-08T09:33:00.001-07:002015-07-09T07:02:56.095-07:00Raspberry Pi Camera Extension Cable<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUReKKzlJy7w3R1OtoTx3Pz7rrN0sdVG_HyCG7cT8XZqqds2BA_N5SrJQjVLXz9FxisEAkr03WrKUoFX5xPcucVDj9t6LZsVKXJaH0XKkxea3YNG74M0DWwQDabM63nAjahfYqq1pZ6XQ/s1600/IMG_20150310_223619.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="" border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUReKKzlJy7w3R1OtoTx3Pz7rrN0sdVG_HyCG7cT8XZqqds2BA_N5SrJQjVLXz9FxisEAkr03WrKUoFX5xPcucVDj9t6LZsVKXJaH0XKkxea3YNG74M0DWwQDabM63nAjahfYqq1pZ6XQ/s320/IMG_20150310_223619.jpg" title="Raspberry Pi Camera Extension Cable" width="320" /></a>I'm working on a project (hopefully to be completed this summer) that needed a longer, less rigid camera cable for my Pi camera board. I thought I would document this part of the project separately since it might be useful to others.<br />
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Parts:<br />
<ul>
<li>Raspberry Pi Camera Board with standard flex cable</li>
<li>2 x Adafruit <a href="http://www.adafruit.com/products/1325" target="_blank">FPC Sticks</a></li>
<li>1 x Short (2") Flex Cable (<a href="http://www.adafruit.com/products/1645" target="_blank">Adafruit</a>)</li>
<li>1 x 15 position, 1mm pitch, FPC connector with <u>bottom</u> contacts (<a href="http://www.digikey.com/product-detail/en/1-84952-5/A101391CT-ND/2567527" target="_blank">Digikey</a>)</li>
<li>1 x 15 position, 1mm pitch, FPC connector with <u>top</u> contacts (<a href="http://www.digikey.com/product-detail/en/1-84953-5/A101405CT-ND/2567541" target="_blank">Digikey</a>)</li>
<li>15 conductor wire - I had some 16 conductor ribbon cable lying around (<a href="http://www.digikey.com/product-detail/en/3302%2F16%20300SF/MC16M-5-ND/145488" target="_blank">Digikey</a>)</li>
<ul>
<li>Alternatively, you could just cut equal lengths of regular stranded wire or use two lengths of Cat5 cable. </li>
</ul>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPe_D9Jjz7LdSbFRGDWIPVFsoKfbQ6XZklZ2CWUv-JBqYUGOhtDA_Bp8Zvhj-mCwECaiGWpqAHRK7OFDfNqCpXsfWq-Yvk3md1S1stoAIKr5xM8QaUYag-gsqdm_lx-eM8_PfI6xHKkIU/s1600/IMG_20150310_223641.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPe_D9Jjz7LdSbFRGDWIPVFsoKfbQ6XZklZ2CWUv-JBqYUGOhtDA_Bp8Zvhj-mCwECaiGWpqAHRK7OFDfNqCpXsfWq-Yvk3md1S1stoAIKr5xM8QaUYag-gsqdm_lx-eM8_PfI6xHKkIU/s1600/IMG_20150310_223641.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPe_D9Jjz7LdSbFRGDWIPVFsoKfbQ6XZklZ2CWUv-JBqYUGOhtDA_Bp8Zvhj-mCwECaiGWpqAHRK7OFDfNqCpXsfWq-Yvk3md1S1stoAIKr5xM8QaUYag-gsqdm_lx-eM8_PfI6xHKkIU/s320/IMG_20150310_223641.jpg" width="320" /></a><br />
<br />
The assembly was really straight forward. Admittedly, the hardest part was soldering the little FPC connectors to the boards. First step was to align everything and then tack down the connector by soldering the side tabs to the board. Then I used the finest tip I had for my soldering iron and added some extra flux to the connections before carefully soldering each pin to the pad on the board.<br />
<br />
<br />
The next step was to strip and solder all of the ribbon cable wires to the boards. I added some hot glue to the connections to add some strain relief.<br />
<br />
At this point, I plugged in the flex cables and went through with my multimeter and tested all of the conductors for continuity and, more importantly, shorts. Although I did my best with the soldering of the FPC connectors, I did bridge two of the pins on one board. So, that required a little rework.<br />
<br />
Last thing to do was to plug everything into the Pi and camera board and test it out, and everything worked perfectly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizC1TmrzVv5lKOS2ddYRqlCVdrkDvO0t8xU2rsBCiTYX0NuCe1Hq8VzvXLsGLIsuFWjf9dP5YnXnniz_4nfT4nyqP1D6pJIT5Avt3QUgvnhHO8XmD3QgTixh8ZLBytXVPCV2JtkkM6GXw/s1600/IMG_20150310_223657.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizC1TmrzVv5lKOS2ddYRqlCVdrkDvO0t8xU2rsBCiTYX0NuCe1Hq8VzvXLsGLIsuFWjf9dP5YnXnniz_4nfT4nyqP1D6pJIT5Avt3QUgvnhHO8XmD3QgTixh8ZLBytXVPCV2JtkkM6GXw/s320/IMG_20150310_223657.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZBjDEOVfeIT8BggS5LgX-kWQKSGH4qd8Tpq4rWsi0yGnB8WC_Re2e3soyyd3M-aXplaOCaUon4dK1YjjmFQdWVV4u_fAKv9Lip0xy2bqqd-9wYg_k2tJg-QrqYgclQntNanZdq_Z0XnU/s1600/IMG_20150310_224428.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZBjDEOVfeIT8BggS5LgX-kWQKSGH4qd8Tpq4rWsi0yGnB8WC_Re2e3soyyd3M-aXplaOCaUon4dK1YjjmFQdWVV4u_fAKv9Lip0xy2bqqd-9wYg_k2tJg-QrqYgclQntNanZdq_Z0XnU/s320/IMG_20150310_224428.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com4tag:blogger.com,1999:blog-908258308186667628.post-26125071347434621352015-05-01T11:23:00.001-07:002015-05-03T12:47:57.952-07:00Desktop SfM Background and Scale<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifzidmDLseks5In_MVc2AWw6yfeP-PdOpHhOdoGvesv6DNxvBnkPLxPY6rq2bRqp3VWLuPMkfda1Y0S-NnzwJT5N0oInoLa06-mk79MwaKBuBTr9diTgFoTGnKBB1IzuUSXZUhuMPewzM/s1600/SfM_8x11_VanGoghScale.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifzidmDLseks5In_MVc2AWw6yfeP-PdOpHhOdoGvesv6DNxvBnkPLxPY6rq2bRqp3VWLuPMkfda1Y0S-NnzwJT5N0oInoLa06-mk79MwaKBuBTr9diTgFoTGnKBB1IzuUSXZUhuMPewzM/s1600/SfM_8x11_VanGoghScale.png" height="200" width="153" /></a>It seems like I've been doing/helping out with a lot of "desktop" structure-from-motion modeling. Through various iterations and attempts to scale the final SfM point clouds, the Van Gogh scale has emerged. So, I thought I'd share it in the hope that others can get some use out of it.<br />
<br />
<a name='more'></a>The background image helps the SfM image matching algorithms do their thing, which is especially helpful when modelling smaller things or objects without a lot of surface texture of their own. It also gives a nice contrasting surface that represents the desktop (which can help with editing it out later on).<br />
<br />
<a href="https://drive.google.com/file/d/0BxGQsn0ZxwVuTG0zMXUycWJoakE/view?usp=sharing" target="_blank">Download Here (Google Drive link)</a><br />
<br />
VanGogh_scale.zip<br />
|_ VanGogh_scale.pdf (PDF for printing)<br />
|_ VanGogh_scale.svg (Inkscape scalable vector graphics for editing)<br />
|_ VanGogh_coord.csv (comma-delimited coordinates)<br />
|_ VanGogh_coord.txt (tab-delimited coordinates)<br />
<br />
<span style="font-size: x-small;"><a href="http://creativecommons.org/licenses/by-nc-sa/4.0/" rel="license"><img alt="Creative Commons License" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" style="border-width: 0;" /></a>This work is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/" rel="license">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.</span><br />
<br />
Be sure to set the PDF print options to "Actual Size" to ensure that the scale is 1:1.<br />
<br />
The coordinates printed on top of each circle target are centimeter measurements, but in the VanGogh_coord files the values are in meters (20 cm = 0.20 m). All of the <i>Z</i> values are zero, assuming you're on a level surface. The numbering scheme in the VanGogh_coord files is columnar (top to bottom, left to right).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-qJ-SoN_BkrE/VUPDbac7WwI/AAAAAAAALgY/vcy9-pzY-7g/s1600/screenshot_sparse-hand.psz%2B%E2%80%94%2BAgisoft%2BPhotoScan.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-qJ-SoN_BkrE/VUPDbac7WwI/AAAAAAAALgY/vcy9-pzY-7g/s1600/screenshot_sparse-hand.psz%2B%E2%80%94%2BAgisoft%2BPhotoScan.png" height="233" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sparse point cloud of my hand from Agisoft Photoscan</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-4MHWzeaZdiQ/VUPDKLk2igI/AAAAAAAALgQ/Zg1BGSPRBL8/s1600/screenshot_hand.psz%E2%80%94%2BAgisoft%2BPhotoScan.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-4MHWzeaZdiQ/VUPDKLk2igI/AAAAAAAALgQ/Zg1BGSPRBL8/s1600/screenshot_hand.psz%E2%80%94%2BAgisoft%2BPhotoScan.png" height="232" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 12.8000001907349px;">Dense point cloud from Agisoft Photoscan</span></td></tr>
</tbody></table>
<br />
<br />
<span id="goog_363841040"></span><span id="goog_363841041"></span><br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-88682354334376588572015-03-18T07:26:00.000-07:002015-05-01T11:23:42.276-07:00Maiden flight of our new UAV<div class="separator" style="clear: both; text-align: left;">
A quick video of the maiden flight of our new DJI Inspire 1 quadcopter. We (the Dartmouth fluvial research group) will be using it this summer to do aerial surveys of several rivers throughout New England to look at dam removals, storm damage/recovery, and I'm sure much more.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WcESFP-gFak/0.jpg" frameborder="0" height="266" src="http://www.youtube.com/embed/WcESFP-gFak?feature=player_embedded" width="320"></iframe></div>
<br />
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-42744066051623141142014-12-23T05:54:00.002-08:002014-12-23T05:54:07.870-08:00New Pages: Software and PublicationsNow that I'm down with my dissertation, it's time to make some improvements...I've added two new pages to my site: Publications and Software. I'll be updating these periodically with my pubs and some of the software/code that's floating around.
<br/><br/>
Both of these new pages have been added to the navigation tabs at the top of the page.<br/><br/> Enjoy!
<br/><br/>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-30446102731204581202014-12-04T12:56:00.000-08:002015-02-13T10:12:21.004-08:00LiDAR datum transformations<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8hcMV8DNGwxEYSwmOaDNH7eU6gSTDm2l6qXbdIhTcEf3bPuF4yCC82EGQluDPFLX4LgIALUdsnycUiaxeTSSknnJqlpvzDmPh0Gjc200p_bHFBehyHkZYMpJUQeUGD3S0O6S15Eb-dxQ/s1600/benn_lidar.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="A stretch of the Roaring Branch of the Walloomsac River near Bennington, VT. " border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8hcMV8DNGwxEYSwmOaDNH7eU6gSTDm2l6qXbdIhTcEf3bPuF4yCC82EGQluDPFLX4LgIALUdsnycUiaxeTSSknnJqlpvzDmPh0Gjc200p_bHFBehyHkZYMpJUQeUGD3S0O6S15Eb-dxQ/s1600/benn_lidar.png" height="192" title="" width="200" /></a>So, I've been helping get an Earth Science graduate student going on some change detection work with some lidar data from the State of Vermont. As we were going through some of the sample datasets an interesting, yet not surprising, realization came over us...several of the datasets were in different projections. So we set out to find a simple way to convert the raw LAS files from lovely Vermont State Plane coordinates in feet (both horizontal and vertical) to the infinitely useful UTM with meters all around.<br />
<br />
There are several options out there, but I rediscovered an old standby, the National Geodetic Survey's <a href="http://vdatum.noaa.gov/">VDATUM </a>tool.<br />
<br />
<a name='more'></a>Here are some of the other options out there:<br />
<ul>
<li>ENVI/IDL - the <a href="http://bcal.boisestate.edu/tools/lidar">BCAL Lidar plugin</a> is a great tool if you have ENVI, but it only handles horizontal coordinate transformations.</li>
<li>ArcMap -<a href="http://resources.arcgis.com/en/help/main/10.1/index.html#//015w0000003s000000"> in the version 10 world</a> you could import LAS files to LAS dataset and reproject, but that still leaves the raw LAS file in its native projection.</li>
<li>ERDAS 2014 - has a define/reproject tool, but it's not very transparent.</li>
<li><a href="http://qcoherent.com/products/">LP360</a> - can reproject LAS files, but the $ for a licence was outside our scope.</li>
</ul>
<div>
<br />
One of the great things about VDATUM is that it is platform independent (PC, Mac, etc.), since it's just a lightweight Java program. It does both horizontal and vertical transformations from and to all the major datums/projections, as well as quite a few lesser known ones. VDATUM has an excellent <a href="http://vdatum.noaa.gov/docs/userguide.html">user guide</a> so I won't go into the details.</div>
<div>
<br /></div>
<div>
Happy Reprojecting!<br />
<br />
<br /></div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com2tag:blogger.com,1999:blog-908258308186667628.post-44835244776416763682014-11-25T11:31:00.000-08:002014-11-25T12:05:40.404-08:00Online Point Cloud Viewer (Finally!!!)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipgVgZe7mifU3s8YWVIrEr37tWxDBDKJfo02PpvvS6LTS9J1WTjbkEEUJPgKZlhivn6CB40_FZXYQgz5DtVE6N7VNcIZc3mi8rArXFODbAh2q2Z3LZ78Rrf81YcsH2X76V5ycoP5AAaGo/s1600/phase3_potree.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipgVgZe7mifU3s8YWVIrEr37tWxDBDKJfo02PpvvS6LTS9J1WTjbkEEUJPgKZlhivn6CB40_FZXYQgz5DtVE6N7VNcIZc3mi8rArXFODbAh2q2Z3LZ78Rrf81YcsH2X76V5ycoP5AAaGo/s1600/phase3_potree.png" height="148" width="200" /></a></div>
I finally found what I been wanted since I started collecting 3D datasets 4-ish years ago, an efficient online point cloud viewer!<br />
<br />
The viewer is by Markus Schütz over at<a href="http://potree.org/"> potree.org</a>. It only took a little while to get the code up and running.<br />
<br />
<br />
<a name='more'></a>I've only added a couple for now, but keep checking back for more...<br />
<a href="http://adv-geo-research.blogspot.com/p/pointclouds.html">http://adv-geo-research.blogspot.com/p/pointclouds.html</a>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-26992747162099971622014-10-23T08:00:00.002-07:002014-10-23T08:42:41.708-07:00Vermont and New Hampshire Rivers and Lakes in Google Earth<a href="http://1.bp.blogspot.com/-6X-ml_qJa3Y/VEkU-AojVcI/AAAAAAAAIcA/05LbcdwXdIU/s1600/2014-10-23%2B10_47_06-Google%2BEarth.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-6X-ml_qJa3Y/VEkU-AojVcI/AAAAAAAAIcA/05LbcdwXdIU/s1600/2014-10-23%2B10_47_06-Google%2BEarth.png" height="209" width="320" /></a><br />
National Hydrological Dataset (NHD) Google Earth layers for Vermont and New Hampshire<br />
<br />
Download:<br />
<a href="https://drive.google.com/folderview?id=0BxGQsn0ZxwVuUXdXeDJyWnV3ZWc&usp=sharing" target="_blank">Vermont and New Hampshire NHD Google Earth Layers</a><br />
<br />
There are three files:<br />
<ol>
<li>Named Streams</li>
<li>Named Waterbodies</li>
<li>Unnamed Streams (this one is big)</li>
</ol>
<br />
<br />
<div>
</div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-58271409777029016462014-10-21T12:06:00.001-07:002015-01-07T11:18:32.008-08:00SfM Fly Throughs Two new flythroughs from some recent work. The first is all in 3D (red/cyan anaglyph) and is a recent talk I gave as part of the 2014 Neukom Institute Dinner. The second is from some recent work in Massachusetts, the first half of the video is 2D and the second-half (jump to 2:08) is in 3D.<br />
<br />
I would definitely recommend viewing full screen. Double-check to make sure the resolution is set to 1080. Depending on your browser you may need to click the YouTube button to "Watch on YouTube.com" to be able to get to full screen.<br />
<br />
The data for these were produced with <a href="http://www.agisoft.ru/products/photoscan/professional/" target="_blank">Agisoft Photoscan Pro</a> and the fly throughs were made with <a href="http://www.bentley.com/en-US/Promo/Pointools/pointools.htm?skid=CT_PRT_POINTOOLS_B" target="_blank">Bentley Pointools</a>.<br />
<a name='more'></a><br />
<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/wg44DxD8X3w?fs=1" width="560"></iframe>
<br />
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/F0dg9-4gtpg?fs=1" width="560"></iframe>
</div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-66683027564226991782014-10-06T12:40:00.002-07:002014-10-06T12:49:50.240-07:00Camera Geometries for SfM - UPDATEThis is a quick update for my <a href="http://adv-geo-research.blogspot.com/2014/02/camera-geometries-for-structure-from.html" target="_blank">original camera geometry post</a>.<br />
<br />
Based on work by Mike James and Stuart Robson (<a href="http://onlinelibrary.wiley.com/doi/10.1002/esp.3609/abstract">Link</a>) and some of my own research it has become apparent that strictly parallel camera geometries produce some interesting distortions in some SFM reconstructions. The parallel nature can cause systematic distortions in final point clouds, DEMs, etc...<br />
<br />
Therefore, it is good practice to not limit yourself to one specific geometry. Convergent geometries seem to work the best in most situations. A variety of camera heights also seem to improve things and helps add to the convergent geometry. My suggestion is to play around with different geometries in an area that's analogous to your study area to get a feel for what type of pattern will work best and be efficient.James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com1tag:blogger.com,1999:blog-908258308186667628.post-83407407890271784502014-07-27T12:28:00.001-07:002014-07-27T12:28:53.743-07:00Helikite Test Flight<a href="http://3.bp.blogspot.com/-sr4_aRtsZ-Y/U9RJjzxPSUI/AAAAAAAAIGY/1L2gl47zLTI/s1600/IMG_20140725_110655.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://3.bp.blogspot.com/-sr4_aRtsZ-Y/U9RJjzxPSUI/AAAAAAAAIGY/1L2gl47zLTI/s1600/IMG_20140725_110655.jpg" height="200" width="150" /></a>We took out the new Helikite for a test run before it heads out into the field to do some real work. Nothing fancy just a new 3D printed picevet (<a href="http://publiclab.org/notes/cfastie/04-15-2014/pierre-s-plastic-picavets" target="_blank">Chris Fastie's design</a>), and a few natural color images with a Canon A3300 and a few near IR photos with a modified Canon A480.<br />
<br />
<a name='more'></a><br />
<br />
<table cellpadding="3" width="100%">
<tbody>
<tr>
<td align="center" width="25%"><a href="http://2.bp.blogspot.com/-jE7j8Je045w/U9RIQkikNgI/AAAAAAAAIEc/tftVeN0qRDk/s1600/IMG_0180.JPG" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-jE7j8Je045w/U9RIQkikNgI/AAAAAAAAIEc/tftVeN0qRDk/s200/IMG_0180.JPG" /></a></td>
<td align="center" width="25%"><a href="http://3.bp.blogspot.com/-ECFyZj0kT5A/U9RIRAznxmI/AAAAAAAAIEk/5x3cYh0siB8/s1600/IMG_0208.JPG" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-ECFyZj0kT5A/U9RIRAznxmI/AAAAAAAAIEk/5x3cYh0siB8/s200/IMG_0208.JPG" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://1.bp.blogspot.com/-tVaO2qpxdk8/U9RIQ-c8DDI/AAAAAAAAIEo/xLx7NaKt3xY/s1600/IMG_0213.JPG" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-tVaO2qpxdk8/U9RIQ-c8DDI/AAAAAAAAIEo/xLx7NaKt3xY/s200/IMG_0213.JPG" /></a></td>
<td align="center" width="25%"><a href="http://1.bp.blogspot.com/-o5oFoIaTdt4/U9RISAwvfFI/AAAAAAAAIEw/Itzn1v-xpOw/s1600/IMG_0242.JPG" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-o5oFoIaTdt4/U9RISAwvfFI/AAAAAAAAIEw/Itzn1v-xpOw/s200/IMG_0242.JPG" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://2.bp.blogspot.com/-uRqcu3HrEbY/U9RIYURTi8I/AAAAAAAAIE4/kG1i78bznp8/s1600/IMG_0253.JPG" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-uRqcu3HrEbY/U9RIYURTi8I/AAAAAAAAIE4/kG1i78bznp8/s200/IMG_0253.JPG" /></a></td>
<td align="center" width="25%"><a href="http://1.bp.blogspot.com/-We0ectL66N0/U9RIgjuK2YI/AAAAAAAAIFA/SzBBhsg7SAs/s1600/IMG_0267.JPG" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-We0ectL66N0/U9RIgjuK2YI/AAAAAAAAIFA/SzBBhsg7SAs/s200/IMG_0267.JPG" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://3.bp.blogspot.com/-VyqRgjTBmvE/U9RIh3kb0SI/AAAAAAAAIFI/aSbQUkLp010/s1600/IMG_0257.JPG" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-VyqRgjTBmvE/U9RIh3kb0SI/AAAAAAAAIFI/aSbQUkLp010/s200/IMG_0257.JPG" /></a></td>
<td align="center" width="25%"><a href="http://3.bp.blogspot.com/-c23-jeMnU5Q/U9RInc4OXCI/AAAAAAAAIFY/_8D6OcQ_d2o/s1600/IMG_0284.JPG" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-c23-jeMnU5Q/U9RInc4OXCI/AAAAAAAAIFY/_8D6OcQ_d2o/s200/IMG_0284.JPG" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://4.bp.blogspot.com/-1OjnW1Xaz2w/U9RIniFES-I/AAAAAAAAIFg/sf77beW1x-s/s1600/IMG_0287.JPG" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-1OjnW1Xaz2w/U9RIniFES-I/AAAAAAAAIFg/sf77beW1x-s/s200/IMG_0287.JPG" /></a></td>
<td align="center" width="25%"><a href="http://1.bp.blogspot.com/-PLACN3yvohA/U9RInWqDqfI/AAAAAAAAIFk/kALfap1Hs28/s1600/IMG_0288.JPG" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-PLACN3yvohA/U9RInWqDqfI/AAAAAAAAIFk/kALfap1Hs28/s200/IMG_0288.JPG" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://3.bp.blogspot.com/-3lZZZVmbS0Y/U9RIsYD70wI/AAAAAAAAIF0/Cfb-RLazIrk/s1600/IMG_0262.JPG" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-3lZZZVmbS0Y/U9RIsYD70wI/AAAAAAAAIF0/Cfb-RLazIrk/s200/IMG_0262.JPG" /></a></td>
<td align="center" width="25%"><a href="http://4.bp.blogspot.com/-Utj2Za07m5E/U9RJlE1qLzI/AAAAAAAAIGk/FiomZIZHVic/s1600/IMG_20140725_103839.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-Utj2Za07m5E/U9RJlE1qLzI/AAAAAAAAIGk/FiomZIZHVic/s200/IMG_20140725_103839.jpg" /></a></td>
</tr><tr>
<td align="center" width="25%"><a href="http://4.bp.blogspot.com/-8Q1m7UovwOM/U9RJmWB8yzI/AAAAAAAAIGw/26HjIgjitzE/s1600/IMG_20140725_105231.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-8Q1m7UovwOM/U9RJmWB8yzI/AAAAAAAAIGw/26HjIgjitzE/s200/IMG_20140725_105231.jpg" /></a></td>
<td align="center" width="25%"><a href="http://1.bp.blogspot.com/-5aBrxAYfl0c/U9RJngMR_YI/AAAAAAAAIG8/Px9J3_CW55Y/s1600/IMG_20140725_110618.jpg" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-5aBrxAYfl0c/U9RJngMR_YI/AAAAAAAAIG8/Px9J3_CW55Y/s200/IMG_20140725_110618.jpg" /></a></td>
</tr><tr>
<td align="center" width="25%"></td>
<td align="center" width="25%"></td>
</tr><tr>
</table>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-11601824365235544082014-07-18T12:13:00.001-07:002014-07-18T12:13:28.597-07:00Heading to Dartmouth<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2eBQZxRfj-pFtiscrnj5bfZPsJmZYS3lyCopkEuobk3bRM26me8lvAOPUkyoaU4ZJ5LWam3TXhkIQ55BLy6rsTBKBI6tCR6xm6NC1MLuAZnYucBq1hyphenhyphenKIoqaCVqy_VGbHDOFjnXQQJi8/s1600/Dartmouth_College_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2eBQZxRfj-pFtiscrnj5bfZPsJmZYS3lyCopkEuobk3bRM26me8lvAOPUkyoaU4ZJ5LWam3TXhkIQ55BLy6rsTBKBI6tCR6xm6NC1MLuAZnYucBq1hyphenhyphenKIoqaCVqy_VGbHDOFjnXQQJi8/s1600/Dartmouth_College_logo.png" height="56" width="320" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpznx-dIQnB53GhnBAXwPlcMebUo7IGk7DQZkJwmO62K-nH2GGNkWf9jDQEmthWW4BVEoZrDW9GP44ve94qnTOt3VLFKKRlkpFrKuP9FtUN60fCOtcAjeVbfu0uEJRsJ4qFFjjh-r7R3c/s1600/neukom+logo.png" imageanchor="1" style="clear: right; display: inline !important; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpznx-dIQnB53GhnBAXwPlcMebUo7IGk7DQZkJwmO62K-nH2GGNkWf9jDQEmthWW4BVEoZrDW9GP44ve94qnTOt3VLFKKRlkpFrKuP9FtUN60fCOtcAjeVbfu0uEJRsJ4qFFjjh-r7R3c/s1600/neukom+logo.png" height="82" width="320" /></a>As some of you know I headed to Dartmouth College at the end of the month to start "life after grad school" with a two-year appointment as a postdoctoral fellow in the William H. Neukom Institute for Computational Science. I've updated my contact info on this site. My Univ. of Oregon email will still work for a while but don't be surprised if you hear back from my Dartmouth account.</div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-1127606910932916242014-04-04T14:38:00.001-07:002014-04-04T15:19:56.686-07:00AAG 2014<div style="text-align: center;">
Sub-Meter Remote Sensing for Fluvial Monitoring with Off-the-Shelf Components<br />
James T. Dietrich
University of Oregon, Department of Geography<br />
Session: 1224 - River Observations, Monitoring, and Management<br />
Tuesday, 4/8/2014, from 10:00 AM - 11:40 AM<br />
<br />
<h3>
<a href="https://docs.google.com/uc?export=download&id=0BxGQsn0ZxwVuVk92X0RLS213clk">DOWNLOAD</a></h3>
<div>
<br /></div>
</div>
<div style="text-align: center;">
<a href="http://2.bp.blogspot.com/-SPdBPz0ZO8Q/Uz8eOqX0T1I/AAAAAAAAHc8/QzmpGSNGKH8/s1600/AAG_2014_Poster_web.jpg" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-SPdBPz0ZO8Q/Uz8eOqX0T1I/AAAAAAAAHc8/QzmpGSNGKH8/s1600/AAG_2014_Poster_web.jpg" width="100%" /></a></div>
<br />
<br />
<div>
<div style="text-align: center;">
</div>
</div>
James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-23008175372491795222014-03-21T10:25:00.000-07:002015-07-02T05:10:24.278-07:00Agisoft Photoscan Crash Course (v. 1.0.2)<html>
<head>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
h1
{mso-style-link:"Heading 1 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:0in;
margin-bottom:.0001pt;
page-break-after:avoid;
font-size:16.0pt;
font-family:"Calibri Light","sans-serif";
color:#2E74B5;
font-weight:normal;}
a:link, span.MsoHyperlink
{color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-link:"Heading 1";
font-family:"Calibri Light","sans-serif";
color:#2E74B5;}
.MsoChpDefault
{font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:.5in .5in .5in .5in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<div class="MsoNormal">
<h1>
<span style="font-family: "Arial","sans-serif";"><a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html">*Updated version for Photoscan 1.1 is finally here*</a></span></h1><br />
<span style="font-family: "Arial","sans-serif";">A not-so-quick
tutorial in using Photoscan to process a single photoset in Agisoft Photoscan Professional
version 1.0 (1.0.2 or 1.0.3), for Photoscan version 1.1 please see <a href="http://adv-geo-research.blogspot.com/2015/06/photoscan-crash-course-v1-1.html">the updated tutorial</a>.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "Arial","sans-serif";">I have
written this for various research groups at the University of Oregon, Oregon
State University, and Dartmouth College. I hope that this will help others get
started as well. I also plan to add screen shots to this eventually, but for
now this will have to do. </span></div>
<a name='more'></a>
<h1>
<span style="font-family: "Arial","sans-serif";">Photo Prep</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Eliminate any
blurry, out of focus, random photos from your photoset</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If you has GPS
track data for you photos, use a program like </span><a href="http://www.geosetter.de/en/"><span style="font-family: "Arial","sans-serif";">GeoSetter</span></a><span style="font-family: "Arial","sans-serif";"> to geotag your photos before
processing.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">With geotagged
photos, the coordinates are usually Lat/Long (in degrees); use the convert tool
in the ‘ground control’ pane to convert to UTM.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Never use
geotagged photos as the sole source of georeferencing information. The error’s
in consumer grade GPS units (handheld or in camera) is too great for anything
more than helping with photo alignment.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">3.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Make sure you have
a camera calibration file ready to go for your camera</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><a href="http://agisoft.ru/products/lens"><span style="font-family: "Arial","sans-serif";">Agisoft has a tool</span></a><span style="font-family: "Arial","sans-serif";"> for this on their website</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">When calibrating in
Agisoft Lens be sure that all of the variable boxes are checked</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Photo Alignment</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Load your photos</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Apply the camera
calibration file to all of the photos (Tools…Camera Calibration…)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Align Photos Settings:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Accuracy:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">High</span></b><span style="font-family: "Arial","sans-serif";">: is best for smaller photosets</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Medium</span></b><span style="font-family: "Arial","sans-serif";">: is best for larger photosets</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Pair Selection:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Disabled</span></b><span style="font-family: "Arial","sans-serif";">: default, works for most datasets</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Generic</span></b><span style="font-family: "Arial","sans-serif";">: I use this one if I’m having trouble
getting photos to align</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Ground Control</span></b><span style="font-family: "Arial","sans-serif";">: If your photos are geotagged, this
will use the GPS positions to speed up processing.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Advanced:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Point Limit</span></b><span style="font-family: "Arial","sans-serif";">: 40,000 is default. Smaller numbers
can speed up processing, but you run the risk of not having enough points to
align photos.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Constrain features by mask</span></b><span style="font-family: "Arial","sans-serif";">: You can use masks to exclude parts
of the images you do not want to model, check this box if you have masks.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">3.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Fixing
misaligned/unaligned photos</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">After the initial
pass of photo alignment, there may be photos that are misaligned or unaligned.
You can force the program to try again, usually this works (but not always).</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Select all of the photos that are
causing trouble, right-click and select ‘Reset Alignment’</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Right-click again, select ‘Align
Selected Cameras’</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">If that does not work, select a
smaller batch of problem photos and try again working in small batches.</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iv.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">If none of that works, there is not a
whole lot you can do but disable or exclude the photos that will not align.</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Georeferencing</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Prep your control
point data</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Double-check your
projection and vertical datum, do any conversions outside of Photoscan.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Load your data
points into Excel and delete all but the NAME, LAT(Northing), LONG(Easting),
ELEV to simplify things.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Save as a text
file (tab delimited)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">d.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Use the Import
tool in the ‘Ground Control’ pane, set the import settings, say ‘Yes to all’
when it asks to add points.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">e.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If you import a
larger file, you should delete any points that are not present in the photoset.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Set your
projection with the ‘Settings’, the other settings are default</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">3.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Find the first
photo with a ground control point</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Double-click the
photo to open it, zoom in on the control point, right-click on the center of
the control point marker, select ‘Place Marker’ and select the appropriate
marker.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Find the next
photo with the same GCP as the first, set the marker.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Once you have a marker placed in two
photos the software starts to guess where they should be in other photos.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Right-click on the marker you have
been working on, select ‘Filter Photos by Marker’. This will show just the
photos that the marker is in.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Click through all of the photos and
place the markers.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iv.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">If a photo has a marker flag in it,
but the GCP is not visible</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 2.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">You can leave it
as a gray flag and it will not be used, or</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 2.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">You can
right-click on it and ‘Remove Marker’</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">In the photos
pane, select ‘Reset Filter’ to get back to the full photoset.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">d.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Repeat the above
steps for the next two GCPs</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">4.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">After you have
three GCP markers set, you can ‘Update’ the georeferencing in the ground
control pane</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">This will roughly
georeference the model and make finding the remaining GCPs easier</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If your first
three points are close together, this may not work very well…</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">In this case you will likely have to
manually find and mark an additional GCP</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">5.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Right-click on the
next GCP in the list and ‘Filter Photos by Marker’</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Run through all of
the photos and place the markers</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">‘Update’ again to
refine the georeferencing</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Repeat this step
for the rest of the GCPs</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">6.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Double-check that
all of your GCP markers are placed</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Right-click on all
of the GCPs and ‘Filter Photos by Marker’</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Double-check that
all of the photos have little blue flags above them in the photo pane.</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Update one last
time</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Optimize the alignment</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Double-check that
you have a camera calibration applied to all of the photos</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Click on
‘Optimize’ in the ground control pane</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Make sure the ‘Fit
k4’ box is checked</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">This optimizes the
camera alignment based on the camera calibration and control points</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">3.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Check your error
for each GCP</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">In the
georeferencing pane, the point with the worst error is highlighted in red</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">You can also click on ‘View Errors’ to
view the X, Y, and Z components of the error</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If you have points
with errors that are higher than you would like, you can uncheck the box on the
left to exclude it from the georeferencing calculations</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Update the
georeferencing, repeat for any other bad points if necessary</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">d.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If you change
exclude a lot of points, re-optimizing is a good thing to do</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Building Dense Point Clouds</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Check the bounding
box (the light gray box with a red bottom) size and orientation</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Use the ‘Resize
Region’ and ‘Rotate Region’ tools on the toolbar if the bounding box looks like
it is going to cut off any parts of the model</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Settings</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Quality</span></b><span style="font-family: "Arial","sans-serif";">:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">This is the super memory intensive
part of the process, photosets that are large (lots of photos) can take a long
time to complete. Too many photos cause the program to run out of memory. The
quality that’s achievable and the time it takes depend on your processor (CPU),
RAM, and video card (GPU)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">High: great for smaller photosets (up
to ≈150 photos)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Medium: good for larger datasets (over
150 photos)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Advanced</span></b></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Depth Filtering: Aggressive (default),
limits points that are too far from the surface. For vegetation, this may need
to be relaxed a bit.</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Point Cloud Editing</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">If there are any
points in the dense point cloud are outside of the envelope you wish to export,
you can manually delete them</span></div>
<div class="MsoListParagraphCxSpLast" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Use the ‘Rectangle
Selection’, ‘Circle Selection’, or ‘Free-from Selection’ tools on the toolbar
to select and delete errant points </span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Build Mesh</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Settings</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Surface Type</span></b><span style="font-family: "Arial","sans-serif";">:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Height Field: only builds a mesh
surface orthogonal to the reference system Z-axis (i.e. no undercuts will be
modeled). This is the fastest mesh procedure and excellent if DEMs are going to
be your final product. </span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 2.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">For geography applications,
a height field would normally be modeled orthogonal to the Z-axis of the
coordinate system. In Photoscan, the height field is actually modeled against
the orientation of the bounding box (the light gray box with a red bottom) of
the model. You can run this Python script (</span><a href="https://drive.google.com/file/d/0BxGQsn0ZxwVuZkk3ZFZHdXdYYWc/edit?usp=sharing"><span style="font-family: "Arial","sans-serif";">**Align Bounding Box Tool**</span></a><span style="font-family: "Arial","sans-serif";">) in the console to align the bounding
box to the reference system. You will need to </span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Arbitrary: Will model every nook and
cranny of the object. Best for oblique imagery, when point clouds or complex
mesh surfaces are going to be the final product.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">b.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Source Data</span></b><span style="font-family: "Arial","sans-serif";">:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Dense cloud: default</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Sparse cloud: You could use this, but
I am not sure why…</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">c.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Polygon Count</span></b><span style="font-family: "Arial","sans-serif";">: The number of polygons that the
model will be decimated to after processing.</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">The software has High, Medium, Low
values</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Or you can specify a custom number
(entering 0 will not decimate the final model)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">d.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Interpolation</span></b></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Enabled: default, will interpolate
over small holes in the surface</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Extrapolation: will leave holes in the
final surface where there are no dense points</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">e.<span style="font: 7.0pt "Times New Roman";">
</span></span><b><span style="font-family: "Arial","sans-serif";">Point Classes</span></b><span style="font-family: "Arial","sans-serif";">:</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">There is a point classification tool
in Photoscan. If you used it to classify the dense point cloud, you could
specify which point classes you want use for the mesh.</span></div>
<h1>
<span style="font-family: "Arial","sans-serif";">Exporting DEM / Orthophotos</span></h1>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">File…Export
DEM…Export TIFF/BIL/XYZ…</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Settings:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Choose your projection</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Crop invalid DEM</span></b><span style="font-family: "Arial","sans-serif";">: checked by default</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">No-data value</span></b><span style="font-family: "Arial","sans-serif";">: Use -9999 for ArcGIS</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iv.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Pixel Size</span></b><span style="font-family: "Arial","sans-serif";">: Photoscan estimates an appropriate
pixel size, can be changed to match your requirements</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>v.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Split in blocks</span></b><span style="font-family: "Arial","sans-serif";">: segment the DEM into X by X rasters
(only needed for large datasets)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>vi.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Set boundaries</span></b><span style="font-family: "Arial","sans-serif";">:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 2.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">1.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Check the box and
click ‘Estimate’, this limits extra no-data values on the edges</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>vii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Write world file: not necessary if you
export a TIFF</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>viii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Choose your output location, file
name, and type</span></div>
<div class="MsoListParagraphCxSpMiddle" style="text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">2.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">File…Export
Orthophoto…Export JPEG/TIFF/PNG</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; text-indent: -.25in;">
<span style="font-family: "Arial","sans-serif";">a.<span style="font: 7.0pt "Times New Roman";">
</span></span><span style="font-family: "Arial","sans-serif";">Settings:</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>i.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Choose your projection</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>ii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Blending mode</span></b><span style="font-family: "Arial","sans-serif";">: Mosaic (default)</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Enable Color Correction</span></b><span style="font-family: "Arial","sans-serif";">: not usually necessary, but if you
need the color to be evened out feel free to select this option</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>iv.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Pixel Size</span></b><span style="font-family: "Arial","sans-serif";">: same as above</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>v.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Split in Blocks</span></b><span style="font-family: "Arial","sans-serif";">: same as above</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>vi.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Set boundaries</span></b><span style="font-family: "Arial","sans-serif";">: same as above</span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>vii.<span style="font: 7.0pt "Times New Roman";"> </span></span><b><span style="font-family: "Arial","sans-serif";">Write world file</span></b><span style="font-family: "Arial","sans-serif";">: not necessary if you export a TIFF</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.5in; text-indent: -1.5in;">
<span style="font-family: "Arial","sans-serif";"><span style="font: 7.0pt "Times New Roman";">
</span>viii.<span style="font: 7.0pt "Times New Roman";"> </span></span><span style="font-family: "Arial","sans-serif";">Choose your output location, file
name, and type</span></div>
</div>
</body>
</html>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com6tag:blogger.com,1999:blog-908258308186667628.post-59226509003466780142014-02-06T07:13:00.000-08:002014-10-23T08:37:20.700-07:00Camera geometries for Structure-from-Motion mapping<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0RGjaBaJCV2mQ3OGkAiirzsZYYD78WCQLsgDQ_s7ZTN8OfJlXrTUMIh0rBI-4CzAQltMYGw7x80_flmT0rAUI5ERVTgk76IJsZ8zXD18wZ9dj8PxR9KKRxNxJnGaCgc0W1H8dRib4Qk/s1600/Converge_Cams.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0RGjaBaJCV2mQ3OGkAiirzsZYYD78WCQLsgDQ_s7ZTN8OfJlXrTUMIh0rBI-4CzAQltMYGw7x80_flmT0rAUI5ERVTgk76IJsZ8zXD18wZ9dj8PxR9KKRxNxJnGaCgc0W1H8dRib4Qk/s1600/Converge_Cams.png" height="121" width="200" /></a></div>
<span style="font-family: inherit;">UPDATE POSTED - <a href="http://adv-geo-research.blogspot.com/2014/10/camera-geometries-for-sfm-update.html" target="_blank">HERE</a></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Camera geometry, the way photographs overlap, is an
important factor in successful mapping when using Structure-from-Motion (SfM).
There are several main geometries that photosets fall into: divergent,
convergent, parallel, and whether the camera is pointed at a nadir or oblique
angles. The type of geometry you use is dependent on the research question and
there is always going to be some natural variation in a photoset but you should
attempt to keep a consistent overall geometry in the scene. These are simply
guidelines, one of the beautiful things about SfM is that is can be forgiving,
so if you do not take perfectly aligned photos your 3D model will not be lost.
Also, I cannot stress the important of practice. Before you head out for a full
field campaign find an analog to your study site and practice taking photographs
using the different camera geometry guidelines. This will help you plan for the
field and also let you experiment with the processing workflow and familiarize
yourself with how the software behaves.</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"></span></div>
<a name='more'></a><br />
<div class="MsoNormal">
<span style="font-family: inherit;">The
first geometry to consider is oblique versus nadir. The nature of your mapping
exercise and what your final product will be will determine which you use.
Generally the camera should be perpendicular to the surface/object imaged, so
the more vertical the scene is, the more oblique the images. Flat surfaces
should be mapped using a nadir viewpoint which gives the best coverage and provides
for the best vertical resolution in the final model. Nadir viewpoints can be
achieved in a variety of ways: over small areas (less than a couple square
meters) can be done with a handheld camera pointed down at the ground, medium
sized areas (hundreds of square meters) can be mapped with a camera mounted on
a mobile pole (12-16 feet / 4-5 meters tall), and larger areas require balloons,
radio controlled or manned aircraft. For vertical surfaces/objects oblique
imagery will be needed to create a more complete 3D model. Oblique imagery can
be collected by any of the aforementioned platforms and again the size of the
area that needs to be mapped will dictate the platform. No natural scene falls
neatly into these two categories and so part of the decision should be based on
what the final output of the SfM process is going to be. If the outputs are
going to be traditional raster (DEM) formats, nadir imagery is usually the best
option, but if the results of SfM are going to be truly 3D data like point
clouds or TIN meshes, oblique imagery will better represent the scene. My go to
platform is pole photography with the camera pointed off-nadir by about 10 – 20
degrees which is a bit of the best of both worlds.</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">The
second geometry component is whether the photographs are divergent, convergent
or parallel to the scene. This geometry affects the overlap between photos and
ultimately the all important parallax between photos. The worst camera geometry
for SfM are divergent photos. By taking multiple photos spread out from a
single point, the parallax between photos is almost zero and creates a lot of
problems for SfM. Multiple overlapping divergent photosets of a scene adds
parallax, but in my experience leads to more error filled results. Parallel
photosets, think aerial photography flight lines, and are perfectly adequate
for SfM if each photo overlaps the last by at least 60% to optimize the overlap
and parallax. Convergent photos, where the photos are all focused on a central
point in the scene, have produced some of the best models. The convergent
geometry maximizes both overlap and parallax. For larger areas parallel photos
are probably the most efficient and for smaller areas or single objects
convergent photos produce the best results. <o:p></o:p></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-WRCh62GyKuo/UuFdczsgDUI/AAAAAAAAHXQ/iw_u9gW-yc4/s1600/Converge_Cams.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-WRCh62GyKuo/UuFdczsgDUI/AAAAAAAAHXQ/iw_u9gW-yc4/s1600/Converge_Cams.png" height="195" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Convergent Views</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqmJyIaBZ42ODzAHWu7T8udzygonr35Js5bKBHgLzXdillCsMoxP7TOdMMGH44445DrbjC9TstPScF22sOq0LT1EF7gY7q0FzJg-X8KxnTQYpILoV5Eqf2DOpj6k-VxIdu11gd8cqZhM/s1600/Diverge_Cams.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqmJyIaBZ42ODzAHWu7T8udzygonr35Js5bKBHgLzXdillCsMoxP7TOdMMGH44445DrbjC9TstPScF22sOq0LT1EF7gY7q0FzJg-X8KxnTQYpILoV5Eqf2DOpj6k-VxIdu11gd8cqZhM/s1600/Diverge_Cams.png" height="195" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Divergent Views</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewmc5Ck2q1ba7igF6Xm3HPpSBQEonMo1LimMgdmkSxPk6UlevF2MKdsTpdxwEuLxjWpfppJdr0MY_dJHiAaB6HW2VQEzI-BqSCOBI3Ig95TsklMOxpLjRoGZg0JxZsO8QY3ZtBecsing/s1600/Parallel_Cams.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjewmc5Ck2q1ba7igF6Xm3HPpSBQEonMo1LimMgdmkSxPk6UlevF2MKdsTpdxwEuLxjWpfppJdr0MY_dJHiAaB6HW2VQEzI-BqSCOBI3Ig95TsklMOxpLjRoGZg0JxZsO8QY3ZtBecsing/s1600/Parallel_Cams.png" height="195" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Parallel Views</td></tr>
</tbody></table>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Any
SfM project will inevitably be a mash up of all of the geometries above, and it
is important to remember that SfM is forgiving but cannot fill in gaps from
missing photos or bad geometry. It is important to practice and be systematic
about your photo collection so that you minimize your errors. A last note on
the number of photos to collect for a given area, there is no table that I can
produce that will show how many photos you need for a given area. I have made
successful SfM models from as few as three photos and as many as 300. If there are two rules I follow, they are to
cover the area of interest with photos that are at your desired ground
resolution (higher is not always better, and is a topic for a different
discussion) and the other is that your if photos overlap each other, they
should play back like a stop-motion animation.</span>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com3tag:blogger.com,1999:blog-908258308186667628.post-43703749246678766892014-01-14T16:48:00.000-08:002014-01-23T12:14:19.386-08:00Wired CHDK Trigger for Pole Photography<br />
<a href="http://1.bp.blogspot.com/-rM-09AdYn1Q/UlbUR6KlvZI/AAAAAAAAGMM/aIBNMFx4PYM/s1600/IMG_20131007_131300.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-rM-09AdYn1Q/UlbUR6KlvZI/AAAAAAAAGMM/aIBNMFx4PYM/s1600/IMG_20131007_131300.jpg" height="150" width="200" /></a><span style="font-family: inherit;">As some of you may know<span style="font-size: 12pt;">, I use occasionally use pole</span> photography for my research. Getting the camera on the pole is the easy part (<a href="http://adv-geo-research.blogspot.com/2012/06/pole-camera.html" target="_blank">Pole Camera</a>), the hard part is getting it to take pictures while it's up there</span>.<br />
<br />
<br />
<br />
I use almost entirely Canon cameras and <a href="http://chdk.wikia.com/wiki/CHDK" target="_blank">CHDK</a> is such a wonderful add-on to the smaller cameras I use. One key thing CHDK allows you to do is use the USB port on the camera to trigger the camera. This post is a rehash of the basic remote trigger that CHDK has on their site (<a href="http://chdk.wikia.com/wiki/USB_Remote">http://chdk.wikia.com/wiki/USB_Remote</a>), but I thought I'd post my design if you're interested in building your own.<br />
<br />
<a name='more'></a><h3>
Parts List:</h3>
(This was a quick build, so I just ran down to RadioShack for the parts)<br />
<ol>
<li>4 AA Battery Case (On/Off Switch is optional) - <a href="http://www.radioshack.com/product/index.jsp?productId=2062254" target="_blank">RadioShack</a></li>
<li>Push Button (Momentary, Normally Open)</li>
<li>Two (2) conductor stranded wires that will reach the top of the pole.</li>
<ol>
<li>I used some nice 22 gauge wire from another project, but a light gauge (18-22) speaker wire would be fine. </li>
</ol>
<li>Sacrificial USB cable, with a Mini-B connector (I used a stock Canon cable)</li>
</ol>
<h4>
Voltage</h4>
Most CHDK compatible cameras do not need the full 5 volts that USB usually provides. Most trigger just fine on the 4.5V that three 1.5V cells (like AA, AAA, or CR2032 batteries) provide. I went with 3 AA's so that the batteries would last a while.<br />
**Some cameras do need a full 5 volts<br />
<br />
<h4>
Buttons and Shutter Release Timing</h4>
<div>
This setup uses just one push button (momentary, normally open) switch to trigger the camera. CHDK can operate in two modes:</div>
<div>
<ul>
<li>one-push: focus and shutter release in one go</li>
<li>two-push: focus on one push and release on a second (like the shutter button on the camera)</li>
</ul>
<div>
One push mode is far easier to work with, so that's how all my cameras are setup.</div>
</div>
<div>
<br /></div>
<div>
Another consideration is how quickly the focus/release happens. The normal settings will start the focus/release as soon as the button is pushed. This is good for quick shots, but I've found that sometimes this can lead to blurry photos from the top of the pole because the camera is usually swaying around a bit. To combat this, I enable the Sync setting. What this setting does is allow the camera to focus when the button is pushed and then release when the button is released. This way you can hold down the button and allow the camera to focus and get the swaying under control before letting go of the button to release the shutter.</div>
<div>
<br /></div>
<h4>
Circuit</h4>
<div>
This is just a basic series circuit with the battery, on/off switch, and trigger button.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="zoomeffect" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-vH_GlKIrtB4/UqzqhH6pjmI/AAAAAAAAHVE/R-Qm_T3m0-k/s1600/Wired_CHDK_Trigger.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-vH_GlKIrtB4/UqzqhH6pjmI/AAAAAAAAHVE/R-Qm_T3m0-k/s1600/Wired_CHDK_Trigger.png" width="90%" /></a></div>
</div>
<div>
<h4>
Build </h4>
</div>
<div>
I wanted everything to be enclosed in a nice neat package so I modified the 4X AA battery case to only have three batteries and I embedded the push button in the space where the fourth battery used to live.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-OBrQitKDDrw/UlbUrrgNwCI/AAAAAAAAGMs/pgYulMYLR3E/s1600/IMG_20131007_131032.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-OBrQitKDDrw/UlbUrrgNwCI/AAAAAAAAGMs/pgYulMYLR3E/s1600/IMG_20131007_131032.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Front of the Battery Case</td></tr>
</tbody></table>
First thing on the list was to modify the fourth battery place. The positive contact slipped out of the slot it was set into with some gentle persuasion. On the negative end, I used my snips to cut out the spring and soldered a short piece of wire in its place. Next, I drilled the hole for the push button, got it set, and then soldered the short lead to one of the button terminals.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-HmifGezqlAA/UlbU32OWmeI/AAAAAAAAGM0/FCiebRwutaE/s1600/IMG_20131007_131329.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-HmifGezqlAA/UlbU32OWmeI/AAAAAAAAGM0/FCiebRwutaE/s1600/IMG_20131007_131329.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Inside the battery case <br />
(silicone'd up for some moisture protection) </td></tr>
</tbody></table>
I opened up the panel inside the case (on the right of the bottom picture) to access the power switch and the stock wires. I removed the stock wires and threaded my 2-conductor wire into the case. The on/off switch was in series with the negative side of the batteries, so I soldered the negative conductor of my long wire to the on/off switch output and the positive wire to the trigger switch.<br />
<br />
<br />
<br />
<br />
Next, I added the USB connector to the top. I cut the stock Canon camera cable in half and stripped about an inch of the cable jacket on the cut end and teased out the four conductors buried inside. The important wires inside are the Black and Red ones (they correspond to the power pins in the connector). The other two wires are the signal wires and they are not used with this type of trigger. With some solder and some heat shrink carefully connect up Red to Red and Black to Black. Now is a good time to check the whole circuit with a multimeter. First, check for shorts, then check for the proper voltage and polarity. If everything looks good, you can seal the whole thing up with some more heat shrink. I also added in some strain protection on this delicate joint by making an S-bend in the wires and using zip-ties on either side of the splice to keep things from moving too much.</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ_rOE5CtUQXBonsPHSMqi60ZOnQFY8bK72xJH_T3j7hM7GX90Y43Y0j4SSXTml1aHB74G5CKKA3ict1_qGznHcq_BnjrGoeD1KyiKl0cDdSsnCKBn7U2EASGUEylkXyfNJpxb_fmx0VQ/s1600/StrainRelief.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ_rOE5CtUQXBonsPHSMqi60ZOnQFY8bK72xJH_T3j7hM7GX90Y43Y0j4SSXTml1aHB74G5CKKA3ict1_qGznHcq_BnjrGoeD1KyiKl0cDdSsnCKBn7U2EASGUEylkXyfNJpxb_fmx0VQ/s1600/StrainRelief.png" height="117" width="320" /></a></div>
<br />
<h4>
Testing</h4>
<span id="goog_882058285"></span>Nothing left to do but close things up and give it a test. Load up CHDK and set up the remote options, and like I said earlier, I use the one-push with the Sync option enabled.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-nPeeHgzLN8w/UlbXBr-8dYI/AAAAAAAAGYI/dvAC6CgWRtE/s1600/VID_20131007_131549.mp4" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-nPeeHgzLN8w/UlbXBr-8dYI/AAAAAAAAGYI/dvAC6CgWRtE/s1600/VID_20131007_131549.mp4" height="180" width="320" /></a></div>
<br />
A few extra options that you can see in some of the photos.<br />
<ol>
<li>Velcro straps to hold the trigger on the pole</li>
<li>Water resistance measures</li>
<ol>
<li><i>*This particular setup was headed to the mountains of Costa Rica so some water resistance was in order. </i></li>
<li>Some silicon potting compound to seal up some the openings in the battery case.</li>
<li>Some <a href="http://sugru.com/" target="_blank">Sugru</a> molded around the USB plug to create a seal to protect the ports on the side of the camera when the door is open.</li>
</ol>
</ol>
Stay tuned for the wireless version!<br />
<ol><ol>
</ol>
</ol>
<h4>
Field Report</h4>
<div>
This setup has taken two trips to Costa Rica now and gotten a bit wet on both trips but still works beautifully. It has taken well over 3,000 photos on the original set of AA batteries.</div>
<div>
<br /></div>
<div>
<br /></div>
<h4>
Bonus Photos:</h4>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-rM-09AdYn1Q/UlbUR6KlvZI/AAAAAAAAGYI/Rg5f1ab7oaA/s1600/IMG_20131007_131300.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-rM-09AdYn1Q/UlbUR6KlvZI/AAAAAAAAGYI/Rg5f1ab7oaA/s1600/IMG_20131007_131300.jpg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The whole system<br />
<br /></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-ejYVB22nIfM/UlbUWrYUnFI/AAAAAAAAGYI/KwjFFNvwi4g/s1600/IMG_20131007_133717.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-ejYVB22nIfM/UlbUWrYUnFI/AAAAAAAAGYI/KwjFFNvwi4g/s1600/IMG_20131007_133717.jpg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Velcro straps</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-E8dO7i6BXfE/UlbUhKdA3MI/AAAAAAAAGYI/OVazZwRZY2E/s1600/IMG_20131007_131240.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-E8dO7i6BXfE/UlbUhKdA3MI/AAAAAAAAGYI/OVazZwRZY2E/s1600/IMG_20131007_131240.jpg" height="300" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sugru port seal</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com0tag:blogger.com,1999:blog-908258308186667628.post-48304742748249114062013-12-17T13:00:00.000-08:002014-01-15T13:10:39.942-08:00Mobile LiDAR / Point Cloud Veiwer<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
</div>
<div style="text-align: left;">
<a href="https://play.google.com/store/apps/details?id=com.ogs.limo" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"><img alt="Cover art" border="0" height="100" src="https://lh6.ggpht.com/iIaqTFB4Vxh46E4gfNg8ok0fuz-TWxtbB8KeDaCgbzfm7tFAytVpf03JFcXcSQSNFu0I=w300-rw" width="100" /></a><br />
Just a quick post on something I found just in time for AGU, a mobile LiDAR / Point Cloud viewer app for Android (<a href="https://play.google.com/store/apps/details?id=com.ogs.limo" target="_blank">Google Play</a>). I've been searching for an app like this since I started creating 3D datasets.<br />
<br />
<br />
It works best with LAS files, which for Structure-from-Motion point cloud data you can export LAS files from CloudCompare. It seemed to have a problem with UTM coordinates (probably to a decimal precision cut off), but if you export the data in a "local" coordinate system it works beautifully. I also tried it on some <a href="http://www.opentopography.org/index.php" target="_blank">OpenTopography</a> LiDAR data and it works just fine.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<br />James Dietrichhttp://www.blogger.com/profile/03611662238915453239noreply@blogger.com2