-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin'
- Loading branch information
Showing
9 changed files
with
1,681 additions
and
59 deletions.
There are no files selected for viewing
306 changes: 306 additions & 0 deletions
306
course/topics/topic_4_GIS_analytics/lectures/lecture_4a.qmd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,306 @@ | ||
--- | ||
title: "Analysis of UAS data processing results" | ||
subtitle: "Center for Geospatial Analytics at North Carolina State University" | ||
author: "Justyna Jeziorska, Helena Mitasova & Corey White" | ||
format: | ||
revealjs: | ||
theme: [simple, ../../../../theme.scss] | ||
--- | ||
|
||
<section> | ||
<h2>Objectives</h2> | ||
<ul> | ||
<li class="fragment"><strong>Understand</strong> how to interpret a processing report</li> | ||
<li class="fragment"><strong>Compare</strong> errors and survey data from different flights</li> | ||
<li class="fragment"><strong>Recognize</strong> differences in geoprocessing products generated by different software</li> | ||
<li class="fragment"><strong>Understand</strong> significance of using GCPs in the processing and their impact on the final products</li> | ||
<li class="fragment"><strong>Recognize</strong> what processing steps need to be modified in order to improve particular errors</li | ||
</ul> | ||
</section> | ||
|
||
<section> | ||
<h2>Objectives</h2> | ||
<ul> | ||
<li class="fragment"><strong>Understand</strong> what causes the 'Bowl effect' and know the solutions to fix it</li> | ||
<li class="fragment"><strong>Execute</strong> simple terrain measurements in Agisoft Photoscan </li> | ||
</ul> | ||
</section> | ||
|
||
<section> | ||
<h2>Flights Oct. 6th 2015</h2> | ||
<img class="fragment" src="images/group_photo.webp" width="80%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Flight Feb. 6th 2018</h2> | ||
<img class="fragment" src="images/group_photo2018.webp"> | ||
</section> | ||
|
||
<section> | ||
<h2>Flights Oct. 6th 2015</h2> | ||
<img class="fragment" src="images/both_flights.webp"> | ||
</section> | ||
|
||
<section class="smaller"> | ||
### Analyzing the processing report | ||
|
||
::: {.columns} | ||
:::{.column width="40%"} | ||
|
||
Includes: | ||
|
||
- Orthophoto and digital elevation model sketch; | ||
- Camera parameters and survey scheme | ||
- Tie points data export (matching points and panoramas) | ||
- Image overlap statistics | ||
- Camera positioning error estimates | ||
- Ground control point error estimates | ||
::: | ||
|
||
:::{.column width="50%"} | ||
![](../images/Agisoft_report.webp) | ||
::: | ||
::: | ||
</section> | ||
|
||
<section> | ||
<h2>Orthophoto</h2> | ||
<img class="fragment" src="images/flights_ortho.webp"> | ||
</section> | ||
<section> | ||
<h2>Survey data</h2> | ||
<img class="fragment" src="images/flight_image_overlap.webp"> | ||
</section> | ||
<section> | ||
<h2>Flight plans</h2> | ||
<img class="fragment" src="images/flight_plan.webp"> | ||
</section> | ||
<section> | ||
<h2>Flight plan – flight 1</h2> | ||
<img class="fragment" src="images/flight_plan_flight1.webp"> | ||
</section> | ||
<section> | ||
<h2>Flight plan – flight 2</h2> | ||
<img class="fragment" src="images/flight_plan_flight2.webp"> | ||
</section> | ||
<section> | ||
<h2>Ground Control Points</h2> | ||
<img class="fragment" src="images/flights_GCP_errors.webp" width="90%"> | ||
</section> | ||
<section> | ||
<h2>Ground Control Points</h2> | ||
<img class="fragment" src="images/flights_GCP_errors_explained.webp" width="90%"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img class="fragment" src="images/camera1.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera2.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera3.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera4.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera5.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera6.webp"> | ||
</section> | ||
<section> | ||
<h2>Camera calibration report</h2> | ||
<img src="images/camera7.webp"> | ||
</section> | ||
|
||
<section> | ||
### Analyzing the processing report | ||
|
||
::: {.columns} | ||
:::{.column width="40%"} | ||
|
||
Includes: | ||
|
||
- While carrying out photo alignment PhotoScan estimates both internal and external camera orientation parameters, including nonlinear radial distortions. | ||
|
||
- Tools > Camera calibration | ||
::: | ||
|
||
:::{.column width="50%"} | ||
![](../images/camera_calibration_report.webp) | ||
::: | ||
::: | ||
</section> | ||
|
||
<section> | ||
<h2>Image residuals</h2> | ||
<img class="fragment" src="images/image_residuals1.webp" width="80%"> | ||
</section> | ||
<section> | ||
<h2>Image residuals</h2> | ||
<img src="images/image_residuals2.webp" width="80%"> | ||
</section> | ||
<section> | ||
<h2>Image residuals</h2> | ||
<img src="images/image_residuals3.webp" width="80%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Image residuals</h2> | ||
<p> The geometric error corresponding to the average image distance, measured in pixels, between:</p> | ||
<img src="images/image_residuals_explained.webp" width="55%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Image residuals</h2> | ||
<p> This reprojection error is equivalent to the root mean square (RMS) image residuals used in photogrammetric literature </p> | ||
<img src="images/image_residuals.webp" width="55%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Flight path</h2> | ||
<img class="fragment" src="images/flight_path.webp"> | ||
</section> | ||
<section> | ||
<h2>Flight path in 3D</h2> | ||
<img class="fragment" src="images/flight_path3d.webp" width="70%"> | ||
</section> | ||
<section> | ||
<h2>Digital Surface Model</h2> | ||
<img class="fragment" src="images/Flight1_DSM.webp"> | ||
</section> | ||
<section> | ||
<h2>Digital Surface Model</h2> | ||
<img src="images/Flight2_DSM.webp"> | ||
</section> | ||
|
||
<section> | ||
<h2>DSMs comparison</h2> | ||
<img src="images/image_residuals.webp" width="55%"> | ||
<p> difference [m] between DSMs generated | ||
based on data from two consecutive flights </p> | ||
|
||
</section> | ||
|
||
<section> | ||
<h2>DSMs comparison by software</h2> | ||
<img class="fragment" src="images/flights_software.webp"> | ||
</section> | ||
|
||
<section> | ||
<h2>DSMs comparison -GCPs</h2> | ||
<img class="fragment" src="images/flight_06_20.webp"> | ||
</section> | ||
|
||
<section> | ||
<h2>'Bowl effect'</h2> | ||
<p class="fragment">effect can be introduced during photo alignment, in case camera calibration estimates are inaccurate</p> | ||
<img class="fragment" src="img/flights_bowl.png"> | ||
</section> | ||
|
||
<section> | ||
<h2>'Bowl effect'</h2> | ||
<p >effect can be introduced during photo alignment, in case camera calibration estimates are inaccurate</p> | ||
<img class="left fragment" src="images/pix4d_gcp-pix4d_noGCP_bowl.webp" width="50%"> | ||
<img class="right fragment" src="images/sample_DSM_bowl_effect.webp" width="50%"> | ||
</section> | ||
|
||
<section> | ||
<h2>'Bowl effect'- solutions to the problem</h2> | ||
<ol> | ||
<li class="fragment"> If camera calibration is known in advance- it can be loaded in PhotoScan and fixed during photo alignment</li> | ||
<li class="fragment"> Optimization procedure - recommended approach | ||
<ul> | ||
<li>based on camera or GCP coordinates</li> | ||
<li>performed after photo alignment</li> | ||
<li>is recommended to perform optimization based on ground control data in any case, even if precalibrated cameras are used</li> | ||
</ul> | ||
|
||
</section> | ||
|
||
<section> | ||
<h2>Optimization</h2> | ||
<img class="fragment" src="images/flights_optimization.webp" width="90%"> | ||
</section> | ||
|
||
<section> | ||
<h2>What is an optimization?</h2> | ||
<ul> | ||
<li class="fragment">PhotoScan performs full photogrammetric adjustment taking into account additional constraints introduced by ground control data</li> | ||
<li class="fragment">Extrinsic and intrinsic parameters for all cameras are optimized at this step, in contrast to the simple 7-parameter transform used for georeferencing by default</li> | ||
<li class="fragment">Optimization helps to significantly improve accuracy of the final solution</li> | ||
</ul> | ||
|
||
<p class="fragment"> More on the bowl effect in <a href="http://onlinelibrary.wiley.com/doi/10.1002/esp.3609/epdf">this article</a></p> | ||
</section> | ||
|
||
<section> | ||
<h2> Software related issues</h2> | ||
<p class="fragment"> Pix4D - Trimble, Agisoft - Trimble</p> | ||
<img class="left fragment" src="images/pix4d-trimble_zoom.webp" width="50%"> | ||
<img class="right fragment" src="images/agi-trimble_zoom.webp" width="50%"> | ||
<p class="fragment"> artifacts on Trimble DSM - "tiles" pattern visible for both cases</p> | ||
</section> | ||
|
||
<section> | ||
<h2>Measurements in Agisoft Photoscan</h2> | ||
<ul> | ||
<li class="fragment">Agisoft has capability of performing simple measurements on DSM and 3D model:</li> | ||
<li class="fragment"><strong>Profile generation</strong></li> | ||
</ul> | ||
<img class="fragment" src="images/analysis/profile.webp" width="80%"> | ||
</section> | ||
<section> | ||
<h2>Measurements in Agisoft Photoscan</h2> | ||
<ul> | ||
<li><strong>Generating contour lines</strong></li> | ||
</ul> | ||
<img class="fragment" src="images/analysis/DEM_contours.webp" width="80%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Measurements in Agisoft Photoscan</h2> | ||
<ul> | ||
<li><strong>Volume and area measurements</strong></li> | ||
</ul> | ||
<img class="fragment" src="images/analysis/volumes_contours.webp"> | ||
</section> | ||
|
||
<section> | ||
<h2>Terrain analysis in GRASS GIS</h2> | ||
<p> computing <a href="https://grass.osgeo.org/grass64/manuals/r.slope.aspect.html">aspect, slope</a></p> | ||
<img class="left fragment" src="images/analysis_aspect_GCP.webp" width="50%"> | ||
<img class="right fragment" src="images/analysis_slope_GCP.png" width="50%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Terrain analysis in GRASS GIS</h2> | ||
<p class="fragment"> computing <a href="https://grass.osgeo.org/grass64/manuals/r.slope.aspect.html">curvature</a> and <a href="https://grass.osgeo.org/grass70/manuals/r.relief.html">shaded relief</a> maps</p> | ||
<img class="left fragment" src="images/analysis_curvature_GCP.webp" width="50%"> | ||
<img class="right fragment" src="images/analysis_relief_GCP.webp" width="50%"> | ||
</section> | ||
|
||
<section> | ||
<h2>Advanced terrain analysis</h2> | ||
<p class="fragment"> computing <a href="https://grass.osgeo.org/grass70/manuals/addons/r.local.relief.html">local relief</a>, <a href="https://grass.osgeo.org/grass70/manuals/addons/r.skyview.html">skyview</a></p> | ||
<img class="left fragment" src="images/analysis_local_relief.webp" width="50%"> | ||
<img class="right fragment" src="images/analysis_skyview.webp" width="50%"> | ||
</section> | ||
|
||
<section> | ||
<h2> What did we learn?</h2> | ||
<ul> | ||
<li class="fragment">What are the imagery processing outputs | ||
<li class="fragment">How to interpret the processing results based on processing report | ||
<li class="fragment">How to compare results of differing processing results (by software and GCPs used) | ||
<li class="fragment">How use Agisoft Photoscan for simple measurements | ||
<li class="fragment">What GIS tools can be used for more advanced terrain analysis | ||
</ul> | ||
</section> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.