Skip to content

Commit

Permalink
Fix findfeatures matrix inversion issues and improve FastGeom perform…
Browse files Browse the repository at this point in the history
…ance (#4772)

* findfeatures bug fixes and improvements

* Fix matrix inversion error on empty matrix. (Fixes #4639)
* Identify images that fail FastGeom transform and exclude from matching.
* Add TONOGEOM parameter to write failed file loads or FastGeom error file list if the transform cannot be determined
* Improve FastGeom transform algorithm using new radial point mapping scheme
* Add more debugging output to help diagnose problem images/procedures

* findfeatures - add Grid algorithm to FastGeom

* findfeatures mod to add Grid algorithm to FastGeom class
* Improved Grid algorithm by computing proper starting iteration to statisfy fastgeompoints request
* Added additional parameterization of Grid algorithm
* Reorganized mapping process to consolidate Radial and Grid algorithms in FastGeom

* findfeatures modifications after Astro code review

findfeatures modifications:

* Refactored FastGeom separating large sections of the compute() methods
* Redesigned the the radial algorithm for easier user configuration
* Added sanity checks avoid bad geometric correspondences
* Added GLOBALS parameters for easy configuration of FastGeom algorithms at runtime

* Fixed existing findfeatures test - error text

The ThreeImageNetwork.FunctionalTestFindfeaturesErrorNoInput expects an error to be thrown with spectific text. The text in findfeatures.cpp was changed in this PR. It fixes the existing findfeatures test suite.

* FastGeom.cpp updated to better accomodate testing

* Add findfeatures Radial/Grid config files for test

* Updated findfeatures test for Grid/Radial algos

* Fixed cnetwinnow test that created misplaced files

The cnetwinnow test needs tempDir().path() prepended to the “file_prefix” parameter to properly place the output files in the teardown directory.

* Small adjustment to new findfeatures tests

* Fixes/improvements to findfeature code

- Improved reporting of parameterizations of findfeatures
- Prevent creation of empty TONOTMATCH file when none are detected

* Significant modifications/improvements to docs

 - Added two new examples demonstrating/documenting the use of FASTGEOM algorithm, parameterization using GLOBALS and how to produce a regional mosaic using findfeatures with batch scripts.
- Reviewed, clarified and improved findfeatures program documentation

* Updated the change log

* Updates to findfeatures PR #4772

- Modified findfeatures.xml documentation to address PR review feedback
- Fixed use of projected images which wasn’t working due to improper instantiation of the cube projection object
- Updated CHANGELOG.md to better categorize all changes in this PR

* Removed scripts in example 4 of findfeatures docs

- Per request via USGS review, removed the Bash shell scripts that produce the results of example 4

- Removed the $ISISROOT/appdata/templates/findfeatures/mosaics containing the scripts

- Updated documentation in findfeatures.xml accordingly

- Updated CHANGELOG.md accordingly
  • Loading branch information
KrisBecker authored Aug 17, 2023
1 parent af62663 commit 4c33e0a
Show file tree
Hide file tree
Showing 26 changed files with 3,340 additions and 848 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,20 @@ release.

## [Unreleased]


### Changed
- Removed the `.py` extention from the _isisdataeval_ tool `isisdata_mockup` for consistency and install it in $ISISROOT/bin; added the `--tojson` and `--hasher` option to _isisdata_mockup_ tool improve utility; updated the tool `README.md` documentation to reflect this change, removed help output and trimmed example results; fixed paths to test data in `make_isisdata_mockup.sh`. [#5163](https://github.com/DOI-USGS/ISIS3/pull/5163)
- Significantly refactored FASTGEOM processing in <i>findfeatures</i> to accommodate stability and functionality. The scope of the algorithm was taken out of the ImageSource class and isolated to support this feature. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Report better information regarding the behavior of <i>findfeatures</i>, FASTGEOM algorithms, and creation of the output network. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)

### Added
- Added rclone to run dependencies in meta.yaml [#5183](https://github.com/DOI-USGS/ISIS3/issues/5183)
- Add new program option <b>TONOGEOM</b> to <i>findfeatures</i> that logs captures geometry errors in the FASTGEOM algorithm and records them to the file provided in this parameter. These images are excluded from the matching process. References [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Added a new Radial FASTGEOM transform mapping algorithm to <i>findfeatures</i> to address performance problems with the Grid algorithm. This is now the default algorithm if none are selected by the user (see the new <b>GLOBALS</b> parameter to specify the algorithm) [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Added new parameter <b>GLOBALS</b> to make parameterization of <i>findfeatures</i> behavior significantly easier and convenient. Wrote significant documentation for the parameter and provide several examples showing its use. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Added two new examples demonstrating/documenting the use of FASTGEOM algorithm, parameterization using <b>GLOBALS</b> and creation of a regional mosaic using <i>findfeatures</i>. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Added new option <b>GEOMSOURCE=BOTH</b> to <i>findfeatures</i> to check both the MATCH and FROM/FROMLIST images for valid control measure geometry to produce better networks and prevent downstream processing errors. Ignore points that end up with no valid measures (but can be retained with use of <b>PreserveIgnoredControl</b> via GLOBALS parameterization). [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Added new gtests for <i>findfeatures</i> that replaces all the old application tests. These tests are <i>FunctionalTestFindfeaturesFastGeomDefault</i>, <i>FunctionalTestFindfeaturesFastGeomRadialConfig</i>, <i>FunctionalTestFindfeaturesFastGeomGridDefault</i> and <i>FunctionalTestFindfeaturesFastGeomGridConfig</i>. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)

### Deprecated

Expand All @@ -49,6 +58,10 @@ release.
- Updated History constructor to check for invalid BLOB before copying History BLOB to output cube [#4966](https://github.com/DOI-USGS/ISIS3/issues/4966)
- Updated photomet MinnaertEmpirical model to support photemplate-style PVL format [#3621](https://github.com/DOI-USGS/ISIS3/issues/3621)
- Fixed gaussstretch segmentation fault error and refactored gaussstretch files/tests to use gtest [#5240](https://github.com/DOI-USGS/ISIS3/issues/5240)
- Fix matrix inversion errors in <i>findfeatures</i> due to bad FASTGEOM matrix transforms using a more robust implementation to detect these errors and throw exceptions. Images with these errors are captured and logged to the <b>TONOTMATCHED</b> file. Fixes [#4639](https://github.com/DOI-USGS/ISIS3/issues/4639)
- Fixed <i>findfeatures</i> use of projected mosaics with correct check for <b>TargetName</b> in the Mapping labels. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)
- Fixed a bug in the <i>cnetwinnow</i> test that did not clean/remove it during test runs.
- Fixed <i>findfeatures</i> instantiation and use of projection classes to correctly return geometry data from projected images and mosaics. [#4772](https://github.com/DOI-USGS/ISIS3/issues/4772)

## [8.0.0] - 2023-04-19

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Group = FastGeomCommonParameters
# Defaults used for findfeatures FastGeom Algorithms

# FastGeomAlgorithm = radial
FastGeomPoints = 25
FastGeomTolerance = 3
# GeomType = camera

FastGeomQuerySampleTolerance = 0
FastGeomQueryLineTolerance = 0
FastGeomTrainSampleTolerance = 0
FastGeomTrainLineTolerance = 0

FastGeomDumpMapping = false
EndGroup = FastGeomCommonParameters


Group = FastGeomGridParameters
# FastGeomAlgorithm = grid

FastGeomGridStartIteration = 0
# FastGeomGridStopIteration = 1 to N
FastGeomGridIterationStep = 1

FastGeomTotalGridIterations = 1

FastGeomGridSaveAllPoints = false
EndGroup = FastGeomGridParameters


Group = FastGeomRadialParameters
# FastGeomAlgorithm = radial

FastGeomRadialSegmentLength = 25
FastGeomRadialPointCount = 5
FastGeomRadialPointFactor = 1.0

# FastGeomRadialSegments = N
EndGroup = FastGeomRadialParameters
End
Loading

0 comments on commit 4c33e0a

Please sign in to comment.