Copy disabled (too large)
Download .txt
Showing preview only (20,109K chars total). Download the full file to get everything.
Repository: NeoGeographyToolkit/StereoPipeline
Branch: master
Commit: a3d1ace4c673
Files: 877
Total size: 19.0 MB
Directory structure:
gitextract_o1uagew5/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bibliography-addition---.md
│ │ ├── bug-report---.md
│ │ └── feature-request---.md
│ ├── pull_request_template.md
│ └── workflows/
│ ├── build_helper.sh
│ ├── build_helper_linux.yml
│ ├── build_test.sh
│ ├── build_test_mac_arm64.yml
│ ├── build_test_mac_x64.yml
│ ├── save_linux_deps.sh
│ ├── save_mac_deps.sh
│ ├── ssh_linux_arm.yml
│ ├── ssh_mac_arm.yml
│ ├── ssh_mac_x64.yml
│ └── update_mac_tests.sh
├── .gitignore
├── .readthedocs.yml
├── AUTHORS.rst
├── CMakeLists.txt
├── CODE_OF_CONDUCT.rst
├── CONTRIBUTING.rst
├── ChangeLog
├── INSTALLGUIDE.rst
├── LICENSE
├── NEWS.rst
├── README.rst
├── RELEASEGUIDE
├── THIRDPARTYLICENSES.rst
├── cmake/
│ ├── FindCairo.cmake
│ ├── FindCairomm.cmake
│ ├── FindFreeType.cmake
│ ├── FindSigC++.cmake
│ ├── LibFindMacros.cmake
│ ├── Utilities.cmake
│ └── linux_cross_toolchain.cmake
├── conda/
│ ├── asp_2.7.0_linux_env.yaml
│ ├── asp_2.7.0_osx_env.yaml
│ ├── asp_3.0.0_linux_env.yaml
│ ├── asp_3.0.0_osx_env.yaml
│ ├── asp_3.1.0_linux_env.yaml
│ ├── asp_3.1.0_osx_env.yaml
│ ├── asp_3.2.0_linux_env.yaml
│ ├── asp_3.2.0_osx_env.yaml
│ ├── asp_3.3.0_linux_env.yaml
│ ├── asp_3.3.0_osx_env.yaml
│ ├── asp_3.5.0_linux_env.yaml
│ ├── asp_3.5.0_osx_x64_env.yaml
│ ├── asp_deps_2.7.0_linux_env.yaml
│ ├── asp_deps_2.7.0_osx_env.yaml
│ ├── asp_deps_3.0.0_linux_env.yaml
│ ├── asp_deps_3.0.0_osx_env.yaml
│ ├── asp_deps_3.1.0_linux_env.yaml
│ ├── asp_deps_3.1.0_osx_env.yaml
│ ├── asp_deps_3.2.0_linux_env.yaml
│ ├── asp_deps_3.2.0_osx_env.yaml
│ ├── asp_deps_3.3.0_linux_env.yaml
│ ├── asp_deps_3.3.0_osx_env.yaml
│ ├── asp_deps_3.4.0_alpha_linux_env.yaml
│ ├── asp_deps_3.4.0_alpha_osx_env.yaml
│ ├── environment.yml
│ └── update_versions.py
├── docs/
│ ├── Makefile
│ ├── acknowledgements.rst
│ ├── bathy_water_masking.rst
│ ├── bibliography.bib
│ ├── building_asp.rst
│ ├── bundle_adjustment.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── correlation.rst
│ ├── environment.yml
│ ├── error_propagation.rst
│ ├── examples/
│ │ ├── apollo15.rst
│ │ ├── aster.rst
│ │ ├── bathy.rst
│ │ ├── cassini.rst
│ │ ├── chandrayaan2.rst
│ │ ├── change3.rst
│ │ ├── csm.rst
│ │ ├── ctx.rst
│ │ ├── dawn.rst
│ │ ├── dg.rst
│ │ ├── hirise.rst
│ │ ├── historical.rst
│ │ ├── hrsc.rst
│ │ ├── isis_minirf.rst
│ │ ├── junocam.rst
│ │ ├── k10.rst
│ │ ├── kaguya.rst
│ │ ├── lronac.rst
│ │ ├── mer.rst
│ │ ├── moc.rst
│ │ ├── msl.rst
│ │ ├── orbital_rig.rst
│ │ ├── pbs_slurm.rst
│ │ ├── perusat1.rst
│ │ ├── pleiades.rst
│ │ ├── rig.rst
│ │ ├── rpc.rst
│ │ ├── sfm_iss.rst
│ │ ├── sfs_ctx.rst
│ │ ├── sfs_earth.rst
│ │ ├── skysat.rst
│ │ ├── spot5.rst
│ │ ├── spot67.rst
│ │ ├── stereo_pairs.rst
│ │ └── umbra_sar.rst
│ ├── examples.rst
│ ├── experimental.rst
│ ├── glossary.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── introduction.rst
│ ├── news.rst
│ ├── next_steps.rst
│ ├── outputfiles.rst
│ ├── papersusingasp.bib
│ ├── papersusingasp.rst
│ ├── pinholemodels.rst
│ ├── requirements.txt
│ ├── sfm.rst
│ ├── sfs_usage.rst
│ ├── stereo_algorithms.rst
│ ├── stereodefault.rst
│ ├── thirdparty.rst
│ ├── tips_tricks.rst
│ ├── tools/
│ │ ├── add_spot_rpc.rst
│ │ ├── aster2asp.rst
│ │ ├── bathy_plane_calc.rst
│ │ ├── bathy_threshold_calc.rst
│ │ ├── bundle_adjust.rst
│ │ ├── cam2map4stereo.rst
│ │ ├── cam2rpc.rst
│ │ ├── cam_gen.rst
│ │ ├── cam_test.rst
│ │ ├── camera_calibrate.rst
│ │ ├── camera_footprint.rst
│ │ ├── camera_solve.rst
│ │ ├── cgal_tools.rst
│ │ ├── colormap.rst
│ │ ├── convert_pinhole_model.rst
│ │ ├── corr_eval.rst
│ │ ├── correlator.rst
│ │ ├── dem2gcp.rst
│ │ ├── dem_geoid.rst
│ │ ├── dem_mosaic.rst
│ │ ├── dg_mosaic.rst
│ │ ├── disp2ip.rst
│ │ ├── disparitydebug.rst
│ │ ├── gcp_gen.rst
│ │ ├── gdal.rst
│ │ ├── geodiff.rst
│ │ ├── hiedr2mosaic.rst
│ │ ├── hillshade.rst
│ │ ├── historical_helper.rst
│ │ ├── icebridge_kmz_to_csv.rst
│ │ ├── image2qtree.rst
│ │ ├── image_align.rst
│ │ ├── image_calc.rst
│ │ ├── image_mosaic.rst
│ │ ├── image_subset.rst
│ │ ├── ipfind.rst
│ │ ├── ipmatch.rst
│ │ ├── jitter_solve.rst
│ │ ├── lronac2mosaic.rst
│ │ ├── lvis2kml.rst
│ │ ├── mapproject.rst
│ │ ├── multi_stereo.rst
│ │ ├── n_align.rst
│ │ ├── orbit_plot.rst
│ │ ├── orbitviz.rst
│ │ ├── ortho2pinhole.rst
│ │ ├── otsu_threshold.rst
│ │ ├── pansharp.rst
│ │ ├── parallel_bundle_adjust.rst
│ │ ├── parallel_sfs.rst
│ │ ├── parallel_stereo.rst
│ │ ├── parse_match_file.rst
│ │ ├── pc_align.rst
│ │ ├── pc_filter.rst
│ │ ├── pc_merge.rst
│ │ ├── point2dem.rst
│ │ ├── point2las.rst
│ │ ├── point2mesh.rst
│ │ ├── refr_index.rst
│ │ ├── rig_calibrator.rst
│ │ ├── ros.rst
│ │ ├── sat_sim.rst
│ │ ├── sfm_merge.rst
│ │ ├── sfm_proc.rst
│ │ ├── sfm_submap.rst
│ │ ├── sfm_view.rst
│ │ ├── sfs.rst
│ │ ├── sfs_blend.rst
│ │ ├── stereo.rst
│ │ ├── stereo_dist.rst
│ │ ├── stereo_gui.rst
│ │ ├── stereo_sweep.rst
│ │ ├── stereo_tile.rst
│ │ ├── texrecon.rst
│ │ ├── theia_sfm.rst
│ │ ├── undistort_image.rst
│ │ ├── view_reconstruction.rst
│ │ ├── voxblox_mesh.rst
│ │ └── wv_correct.rst
│ ├── tools.rst
│ ├── tutorial.rst
│ └── zzreferences.rst
├── examples/
│ ├── CTX/
│ │ ├── Makefile
│ │ ├── control.net
│ │ └── stereo.nonmap
│ ├── HiRISE/
│ │ ├── Makefile
│ │ ├── downloader.sh
│ │ └── stereo.nonmap
│ ├── K10/
│ │ ├── Makefile
│ │ ├── black_left.tsai
│ │ ├── black_right.tsai
│ │ └── stereo.default
│ ├── MER/
│ │ ├── Makefile
│ │ ├── stereo.default
│ │ └── stereo.default.navcam
│ ├── MOC/
│ │ ├── E0201461.imq
│ │ ├── M0100115.imq
│ │ ├── Makefile
│ │ ├── control.net
│ │ └── stereo.nonmap
│ ├── TriangulationError.lut
│ └── surf_match.patch
├── plugins/
│ └── stereo/
│ └── plugin_list.txt
├── src/
│ ├── CMakeLists.txt
│ ├── asp/
│ │ ├── CMakeLists.txt
│ │ ├── Camera/
│ │ │ ├── ASTER_XML.cc
│ │ │ ├── ASTER_XML.h
│ │ │ ├── BaParams.cc
│ │ │ ├── BaParams.h
│ │ │ ├── BaseCostFuns.cc
│ │ │ ├── BaseCostFuns.h
│ │ │ ├── BundleAdjustCamera.cc
│ │ │ ├── BundleAdjustCamera.h
│ │ │ ├── BundleAdjustCamera2.cc
│ │ │ ├── BundleAdjustCostFuns.cc
│ │ │ ├── BundleAdjustCostFuns.h
│ │ │ ├── BundleAdjustEigen.cc
│ │ │ ├── BundleAdjustEigen.h
│ │ │ ├── BundleAdjustIO.cc
│ │ │ ├── BundleAdjustIsis.cc
│ │ │ ├── BundleAdjustIsis.h
│ │ │ ├── BundleAdjustOptions.cc
│ │ │ ├── BundleAdjustOptions.h
│ │ │ ├── BundleAdjustOutliers.cc
│ │ │ ├── BundleAdjustOutliers.h
│ │ │ ├── BundleAdjustResiduals.cc
│ │ │ ├── BundleAdjustResiduals.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraErrorPropagation.cc
│ │ │ ├── CameraErrorPropagation.h
│ │ │ ├── CameraResectioning.cc
│ │ │ ├── CameraResectioning.h
│ │ │ ├── Covariance.cc
│ │ │ ├── Covariance.h
│ │ │ ├── CsmModel.cc
│ │ │ ├── CsmModel.h
│ │ │ ├── CsmModelFit.cc
│ │ │ ├── CsmModelFit.h
│ │ │ ├── CsmUtils.cc
│ │ │ ├── CsmUtils.h
│ │ │ ├── JitterSolveCostFuns.cc
│ │ │ ├── JitterSolveCostFuns.h
│ │ │ ├── JitterSolveRigCostFuns.cc
│ │ │ ├── JitterSolveRigCostFuns.h
│ │ │ ├── JitterSolveRigUtils.cc
│ │ │ ├── JitterSolveRigUtils.h
│ │ │ ├── JitterSolveUtils.cc
│ │ │ ├── JitterSolveUtils.h
│ │ │ ├── LinescanASTERModel.cc
│ │ │ ├── LinescanASTERModel.h
│ │ │ ├── LinescanDGModel.cc
│ │ │ ├── LinescanDGModel.h
│ │ │ ├── LinescanPeruSatModel.cc
│ │ │ ├── LinescanPeruSatModel.h
│ │ │ ├── LinescanPleiadesModel.cc
│ │ │ ├── LinescanPleiadesModel.h
│ │ │ ├── LinescanSpotModel.cc
│ │ │ ├── LinescanSpotModel.h
│ │ │ ├── LinescanUtils.cc
│ │ │ ├── LinescanUtils.h
│ │ │ ├── MapprojectImage.cc
│ │ │ ├── MapprojectImage.h
│ │ │ ├── PRISM_XML.cc
│ │ │ ├── PRISM_XML.h
│ │ │ ├── PeruSatXML.cc
│ │ │ ├── PeruSatXML.h
│ │ │ ├── PleiadesXML.cc
│ │ │ ├── PleiadesXML.h
│ │ │ ├── RPCModel.cc
│ │ │ ├── RPCModel.h
│ │ │ ├── RPCModelGen.cc
│ │ │ ├── RPCModelGen.h
│ │ │ ├── RPCStereoModel.cc
│ │ │ ├── RPCStereoModel.h
│ │ │ ├── RPC_XML.cc
│ │ │ ├── RPC_XML.h
│ │ │ ├── RpcUtils.cc
│ │ │ ├── RpcUtils.h
│ │ │ ├── SPOT_XML.cc
│ │ │ ├── SPOT_XML.h
│ │ │ ├── SatSim.cc
│ │ │ ├── SatSim.h
│ │ │ ├── SyntheticLinescan.cc
│ │ │ ├── SyntheticLinescan.h
│ │ │ ├── TimeProcessing.cc
│ │ │ ├── TimeProcessing.h
│ │ │ ├── XMLBase.cc
│ │ │ ├── XMLBase.h
│ │ │ └── tests/
│ │ │ ├── TestCsmCameraModel.cxx
│ │ │ ├── TestDGCameraModel.cxx
│ │ │ ├── TestRPCStereoModel.cxx
│ │ │ ├── TestSpotCameraModel.cxx
│ │ │ ├── ctx.json
│ │ │ ├── dg_example1.xml
│ │ │ ├── dg_example2.xml
│ │ │ ├── dg_example3.xml
│ │ │ ├── dg_example4.xml
│ │ │ ├── sample.RPB
│ │ │ ├── spot_example1.xml
│ │ │ ├── spot_style.xsl
│ │ │ ├── wv_mvp_1.xml
│ │ │ ├── wv_mvp_2.xml
│ │ │ ├── wv_test1.xml
│ │ │ └── wv_test2.xml
│ │ ├── Core/
│ │ │ ├── AffineEpipolar.cc
│ │ │ ├── AffineEpipolar.h
│ │ │ ├── AlignmentUtils.cc
│ │ │ ├── AlignmentUtils.h
│ │ │ ├── AspLog.cc
│ │ │ ├── AspLog.h
│ │ │ ├── AspProgramOptions.cc
│ │ │ ├── AspProgramOptions.h
│ │ │ ├── AspStringUtils.cc
│ │ │ ├── AspStringUtils.h
│ │ │ ├── AsterProc.cc
│ │ │ ├── AsterProc.h
│ │ │ ├── BaBaseOptions.h
│ │ │ ├── BaseCameraUtils.cc
│ │ │ ├── BaseCameraUtils.h
│ │ │ ├── BathyPlaneCalc.cc
│ │ │ ├── BathyPlaneCalc.h
│ │ │ ├── Bathymetry.cc
│ │ │ ├── Bathymetry.h
│ │ │ ├── BitChecker.cc
│ │ │ ├── BitChecker.h
│ │ │ ├── BundleAdjustUtils.cc
│ │ │ ├── BundleAdjustUtils.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CamPoseUtils.cc
│ │ │ ├── CamPoseUtils.h
│ │ │ ├── CameraTransforms.cc
│ │ │ ├── CameraTransforms.h
│ │ │ ├── CartographyUtils.cc
│ │ │ ├── CartographyUtils.h
│ │ │ ├── DataLoader.cc
│ │ │ ├── DataLoader.h
│ │ │ ├── DemDisparity.cc
│ │ │ ├── DemDisparity.h
│ │ │ ├── DemMosaic.cc
│ │ │ ├── DemMosaic.h
│ │ │ ├── DemMosaicOptions.h
│ │ │ ├── DemMosaicParse.cc
│ │ │ ├── DemMosaicParse.h
│ │ │ ├── DemUtils.cc
│ │ │ ├── DemUtils.h
│ │ │ ├── DisparityProcessing.cc
│ │ │ ├── DisparityProcessing.h
│ │ │ ├── EigenTransformUtils.cc
│ │ │ ├── EigenTransformUtils.h
│ │ │ ├── EigenUtils.cc
│ │ │ ├── EigenUtils.h
│ │ │ ├── EnvUtils.cc
│ │ │ ├── EnvUtils.h
│ │ │ ├── FileUtils.cc
│ │ │ ├── FileUtils.h
│ │ │ ├── GCP.cc
│ │ │ ├── GCP.h
│ │ │ ├── GdalUtils.cc
│ │ │ ├── GdalUtils.h
│ │ │ ├── ImageNormalization.cc
│ │ │ ├── ImageNormalization.h
│ │ │ ├── ImageUtils.cc
│ │ │ ├── ImageUtils.h
│ │ │ ├── InterestPointMatching.cc
│ │ │ ├── InterestPointMatching.h
│ │ │ ├── InterestPointMatching2.cc
│ │ │ ├── IpMatchingAlgs.cc
│ │ │ ├── IpMatchingAlgs.h
│ │ │ ├── LocalAlignment.cc
│ │ │ ├── LocalAlignment.h
│ │ │ ├── Macros.h
│ │ │ ├── MatchList.cc
│ │ │ ├── MatchList.h
│ │ │ ├── Nvm.cc
│ │ │ ├── Nvm.h
│ │ │ ├── OpenCVUtils.cc
│ │ │ ├── OpenCVUtils.h
│ │ │ ├── OrthoRasterizer.cc
│ │ │ ├── OrthoRasterizer.h
│ │ │ ├── OutlierProcessing.cc
│ │ │ ├── OutlierProcessing.h
│ │ │ ├── PdalUtils.cc
│ │ │ ├── PdalUtils.h
│ │ │ ├── PhotometricOutlier.cc
│ │ │ ├── PhotometricOutlier.h
│ │ │ ├── Point2Grid.cc
│ │ │ ├── Point2Grid.h
│ │ │ ├── PointCloudAlignment.cc
│ │ │ ├── PointCloudAlignment.h
│ │ │ ├── PointCloudProcessing.cc
│ │ │ ├── PointCloudProcessing.h
│ │ │ ├── PointCloudRead.cc
│ │ │ ├── PointCloudRead.h
│ │ │ ├── PointToDem.cc
│ │ │ ├── PointToDem.h
│ │ │ ├── PointToDem2.cc
│ │ │ ├── PointUtils.cc
│ │ │ ├── PointUtils.h
│ │ │ ├── ProjectiveCamApprox.cc
│ │ │ ├── ProjectiveCamApprox.h
│ │ │ ├── ReportUtils.cc
│ │ │ ├── ReportUtils.h
│ │ │ ├── StereoSettings.cc
│ │ │ ├── StereoSettings.h
│ │ │ ├── StereoSettingsDesc.h
│ │ │ ├── StereoSettingsParse.cc
│ │ │ ├── StereoSettingsParse.h
│ │ │ ├── StereoTiling.cc
│ │ │ ├── StereoTiling.h
│ │ │ ├── ThreadedEdgeMask.h
│ │ │ └── tests/
│ │ │ ├── TestAspProgramOptions.cxx
│ │ │ ├── TestIntegralAutoGainDetector.cxx
│ │ │ ├── TestInterestPointMatching.cxx
│ │ │ ├── TestPointUtils.cxx
│ │ │ ├── TestThreadedEdgeMask.cxx
│ │ │ ├── ThreadTest1.tif
│ │ │ ├── ThreadTest2.tif
│ │ │ ├── ThreadTest3.tif
│ │ │ └── sample_ascii.pcd
│ │ ├── GUI/
│ │ │ ├── AppData.cc
│ │ │ ├── AppData.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChooseFilesDlg.cc
│ │ │ ├── ChooseFilesDlg.h
│ │ │ ├── DiskImagePyramidMultiChannel.cc
│ │ │ ├── DiskImagePyramidMultiChannel.h
│ │ │ ├── EventWidget.cc
│ │ │ ├── GuiArgs.cc
│ │ │ ├── GuiArgs.h
│ │ │ ├── GuiBase.cc
│ │ │ ├── GuiBase.h
│ │ │ ├── GuiConstants.h
│ │ │ ├── GuiGeom.cc
│ │ │ ├── GuiGeom.h
│ │ │ ├── GuiUtilities.cc
│ │ │ ├── GuiUtilities.h
│ │ │ ├── ImageData.cc
│ │ │ ├── ImageData.h
│ │ │ ├── MainWidget.cc
│ │ │ ├── MainWidget.h
│ │ │ ├── MainWindow.cc
│ │ │ ├── MainWindow.h
│ │ │ ├── MatchPointMgr.cc
│ │ │ ├── MatchPointMgr.h
│ │ │ ├── PolyWidget.cc
│ │ │ ├── ProfileWidget.cc
│ │ │ ├── WidgetBase.cc
│ │ │ ├── WidgetBase.h
│ │ │ ├── WidgetMenuMgr.cc
│ │ │ ├── WidgetMenuMgr.h
│ │ │ ├── WindowMenuMgr.cc
│ │ │ └── WindowMenuMgr.h
│ │ ├── GenerateConfig.cmake
│ │ ├── Gotcha/
│ │ │ ├── ALSC.cc
│ │ │ ├── ALSC.h
│ │ │ ├── CALSCParam.h
│ │ │ ├── CASP-GO_params.xml
│ │ │ ├── CBatchProc.cc
│ │ │ ├── CBatchProc.h
│ │ │ ├── CDensify.cc
│ │ │ ├── CDensify.h
│ │ │ ├── CDensifyParam.h
│ │ │ ├── CGOTCHAParam.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CProcBlock.cc
│ │ │ ├── CProcBlock.h
│ │ │ ├── CTiePt.h
│ │ │ └── README.txt
│ │ ├── IceBridge/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── archive_functions.py
│ │ │ ├── blend_dems.py
│ │ │ ├── camera_lookup.txt
│ │ │ ├── camera_models_from_nav.py
│ │ │ ├── correct_icebridge_l3_dem.cc
│ │ │ ├── extract_icebridge_ATM_points.py
│ │ │ ├── fetch_icebridge_data.py
│ │ │ ├── fetcher_script.py
│ │ │ ├── full_processing_script.py
│ │ │ ├── gen_ortho.py
│ │ │ ├── generate_fake_camera_models.py
│ │ │ ├── generate_flight_summary.py
│ │ │ ├── get_date_list.py
│ │ │ ├── icebridge_common.py
│ │ │ ├── icebridge_kmz_to_csv.py
│ │ │ ├── input_conversions.py
│ │ │ ├── label_images.py
│ │ │ ├── lvis2kml.py
│ │ │ ├── merge_orbitviz.py
│ │ │ ├── multi_flight_label_runner.py
│ │ │ ├── multi_process_command_runner.py
│ │ │ ├── nav2cam.cc
│ │ │ ├── orbitviz_pinhole.cc
│ │ │ ├── ortho2pinhole.cc
│ │ │ ├── pbs_functions.py
│ │ │ ├── pleiades_job_runner.sh
│ │ │ ├── pleiades_manager.py
│ │ │ ├── process_calibration_file.py
│ │ │ ├── process_icebridge_batch.py
│ │ │ ├── process_icebridge_run.py
│ │ │ ├── push_to_nsidc.py
│ │ │ ├── qi2txt.cc
│ │ │ ├── regenerate_summary_images.py
│ │ │ ├── run_helper.py
│ │ │ ├── run_multiple_flights.py
│ │ │ ├── sbet2txt.pl
│ │ │ └── special_cases.txt
│ │ ├── IsisIO/
│ │ │ ├── BaseEquation.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DiskImageResourceIsis.cc
│ │ │ ├── DiskImageResourceIsis.h
│ │ │ ├── Equation.cc
│ │ │ ├── Equation.h
│ │ │ ├── IsisCameraModel.h
│ │ │ ├── IsisInterface.cc
│ │ │ ├── IsisInterface.h
│ │ │ ├── IsisInterfaceFrame.cc
│ │ │ ├── IsisInterfaceFrame.h
│ │ │ ├── IsisInterfaceLineScan.cc
│ │ │ ├── IsisInterfaceLineScan.h
│ │ │ ├── IsisInterfaceMapFrame.cc
│ │ │ ├── IsisInterfaceMapFrame.h
│ │ │ ├── IsisInterfaceMapLineScan.cc
│ │ │ ├── IsisInterfaceMapLineScan.h
│ │ │ ├── IsisInterfaceSAR.cc
│ │ │ ├── IsisInterfaceSAR.h
│ │ │ ├── IsisSpecialPixels.cc
│ │ │ ├── IsisSpecialPixels.h
│ │ │ ├── PolyEquation.cc
│ │ │ ├── PolyEquation.h
│ │ │ ├── RPNEquation.cc
│ │ │ ├── RPNEquation.h
│ │ │ └── tests/
│ │ │ ├── 5165r.cub
│ │ │ ├── 5165r.map.cub
│ │ │ ├── E0201461.tiny.cub
│ │ │ ├── E1701676.reduce.cub
│ │ │ ├── TestEphemerisEquations.cxx
│ │ │ └── TestIsisCameraModel.cxx
│ │ ├── OpenMVG/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── flat_pair_map.hpp
│ │ │ ├── indMatch.hpp
│ │ │ ├── numeric.cpp
│ │ │ ├── numeric.h
│ │ │ ├── projection.cpp
│ │ │ ├── projection.hpp
│ │ │ ├── tracks.hpp
│ │ │ ├── triangulation.cpp
│ │ │ ├── triangulation.hpp
│ │ │ ├── triangulation_nview.cpp
│ │ │ ├── triangulation_nview.hpp
│ │ │ ├── types.hpp
│ │ │ └── union_find.hpp
│ │ ├── PcAlign/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── MaskedImageAlgs.cc
│ │ │ ├── MaskedImageAlgs.h
│ │ │ ├── NuthAlignment.cc
│ │ │ ├── NuthAlignment.h
│ │ │ ├── NuthAlignmentParse.cc
│ │ │ ├── NuthAlignmentParse.h
│ │ │ ├── NuthFit.cc
│ │ │ ├── NuthFit.h
│ │ │ ├── SlopeAspect.cc
│ │ │ ├── SlopeAspect.h
│ │ │ ├── pc_align_ceres.cc
│ │ │ ├── pc_align_ceres.h
│ │ │ ├── pc_align_fgr.cc
│ │ │ ├── pc_align_fgr.h
│ │ │ ├── pc_align_utils.cc
│ │ │ └── pc_align_utils.h
│ │ ├── PclIO/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── PclIO.cc
│ │ │ └── PclIO.h
│ │ ├── Python/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── asp_alg_utils.py
│ │ │ ├── asp_cmd_utils.py
│ │ │ ├── asp_dist_utils.py
│ │ │ ├── asp_file_utils.py
│ │ │ ├── asp_geo_utils.py
│ │ │ ├── asp_image_utils.py
│ │ │ ├── asp_rig_utils.py
│ │ │ ├── asp_stereo_utils.py
│ │ │ ├── asp_string_utils.py
│ │ │ ├── asp_system_utils.py
│ │ │ └── scale_linescan.py
│ │ ├── Rig/
│ │ │ ├── BasicAlgs.cc
│ │ │ ├── BasicAlgs.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraImage.h
│ │ │ ├── Detector.cc
│ │ │ ├── Detector.h
│ │ │ ├── ImageLookup.cc
│ │ │ ├── ImageLookup.h
│ │ │ ├── InterestPoint.cc
│ │ │ ├── InterestPoint.h
│ │ │ ├── InterpolationUtils.cc
│ │ │ ├── InterpolationUtils.h
│ │ │ ├── MergeMaps.cc
│ │ │ ├── MergeMaps.h
│ │ │ ├── NvmUtils.cc
│ │ │ ├── NvmUtils.h
│ │ │ ├── Ransac.cc
│ │ │ ├── Ransac.h
│ │ │ ├── RigCameraParams.cc
│ │ │ ├── RigCameraParams.h
│ │ │ ├── RigCameraUtils.cc
│ │ │ ├── RigCameraUtils.h
│ │ │ ├── RigConfig.cc
│ │ │ ├── RigConfig.h
│ │ │ ├── RigCostFunction.cc
│ │ │ ├── RigCostFunction.h
│ │ │ ├── RigData.cc
│ │ │ ├── RigData.h
│ │ │ ├── RigDem.cc
│ │ │ ├── RigDem.h
│ │ │ ├── RigImageIO.cc
│ │ │ ├── RigImageIO.h
│ │ │ ├── RigIo.cc
│ │ │ ├── RigIo.h
│ │ │ ├── RigMath.cc
│ │ │ ├── RigMath.h
│ │ │ ├── RigOptimizer.cc
│ │ │ ├── RigOptimizer.h
│ │ │ ├── RigOptions.h
│ │ │ ├── RigOutlier.cc
│ │ │ ├── RigOutlier.h
│ │ │ ├── RigParseOptions.cc
│ │ │ ├── RigParseOptions.h
│ │ │ ├── RigParseUtils.cc
│ │ │ ├── RigParseUtils.h
│ │ │ ├── RigRpcDistortion.cc
│ │ │ ├── RigRpcDistortion.h
│ │ │ ├── RigThread.cc
│ │ │ ├── RigThread.h
│ │ │ ├── RigTypeDefs.h
│ │ │ ├── RigUtils.cc
│ │ │ ├── RigUtils.h
│ │ │ ├── SystemUtils.cc
│ │ │ ├── SystemUtils.h
│ │ │ ├── TextureProcessing.cc
│ │ │ ├── TextureProcessing.h
│ │ │ ├── Tracks.cc
│ │ │ ├── Tracks.h
│ │ │ ├── TransformUtils.cc
│ │ │ ├── TransformUtils.h
│ │ │ ├── Triangulation.cc
│ │ │ ├── Triangulation.h
│ │ │ ├── happly.h
│ │ │ └── theia_flags.txt
│ │ ├── Sessions/
│ │ │ ├── BundleAdjustParse.cc
│ │ │ ├── BundleAdjustParse.h
│ │ │ ├── BundleAdjustSession.cc
│ │ │ ├── BundleAdjustSession.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraModelLoader.cc
│ │ │ ├── CameraModelLoader.h
│ │ │ ├── CameraUtils.cc
│ │ │ ├── CameraUtils.h
│ │ │ ├── StereoSession.cc
│ │ │ ├── StereoSession.h
│ │ │ ├── StereoSessionASTER.cc
│ │ │ ├── StereoSessionASTER.h
│ │ │ ├── StereoSessionBathy.cc
│ │ │ ├── StereoSessionFactory.cc
│ │ │ ├── StereoSessionFactory.h
│ │ │ ├── StereoSessionGdal.cc
│ │ │ ├── StereoSessionGdal.h
│ │ │ ├── StereoSessionIo.cc
│ │ │ ├── StereoSessionIp.cc
│ │ │ ├── StereoSessionIsis.cc
│ │ │ ├── StereoSessionIsis.h
│ │ │ ├── StereoSessionMapProj.h
│ │ │ ├── StereoSessionNadirPinhole.cc
│ │ │ ├── StereoSessionNadirPinhole.h
│ │ │ ├── StereoSessionPinhole.cc
│ │ │ ├── StereoSessionPinhole.h
│ │ │ ├── StereoSessionRPC.h
│ │ │ └── tests/
│ │ │ ├── TestInstantiation.cxx
│ │ │ ├── TestStereoSessionASTER.cxx
│ │ │ ├── TestStereoSessionDG.cxx
│ │ │ ├── TestStereoSessionDGMapRPC.cxx
│ │ │ ├── TestStereoSessionRPC.cxx
│ │ │ ├── TestStereoSessionSpot.cxx
│ │ │ ├── dg_example1.xml
│ │ │ ├── dg_example2.xml
│ │ │ ├── dg_example3.xml
│ │ │ └── dg_example4.xml
│ │ ├── SfS/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SfsArgs.cc
│ │ │ ├── SfsArgs.h
│ │ │ ├── SfsCamera.cc
│ │ │ ├── SfsCamera.h
│ │ │ ├── SfsCostFun.cc
│ │ │ ├── SfsCostFun.h
│ │ │ ├── SfsErrorEstim.cc
│ │ │ ├── SfsErrorEstim.h
│ │ │ ├── SfsImageProc.cc
│ │ │ ├── SfsImageProc.h
│ │ │ ├── SfsModel.cc
│ │ │ ├── SfsModel.h
│ │ │ ├── SfsOptions.cc
│ │ │ ├── SfsOptions.h
│ │ │ ├── SfsUtils.cc
│ │ │ └── SfsUtils.h
│ │ ├── SfmView/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── GlCommon.h
│ │ │ ├── GlContext.cc
│ │ │ ├── GlContext.h
│ │ │ ├── GlWidget.cc
│ │ │ ├── GlWidget.h
│ │ │ ├── MeshRenderer.cc
│ │ │ ├── MeshRenderer.h
│ │ │ ├── SceneManager.cc
│ │ │ ├── SceneManager.h
│ │ │ ├── SceneOverview.cc
│ │ │ ├── SceneOverview.h
│ │ │ ├── SceneRenderer.cc
│ │ │ ├── SceneRenderer.h
│ │ │ ├── SfmMainWindow.cc
│ │ │ ├── SfmMainWindow.h
│ │ │ ├── SfmMath.h
│ │ │ ├── SfmUtils.cc
│ │ │ └── SfmUtils.h
│ │ ├── Tools/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── add_spot_rpc.cc
│ │ │ ├── aster2asp.cc
│ │ │ ├── bathy_plane_calc.cc
│ │ │ ├── bathy_threshold_calc.py
│ │ │ ├── bias_dg_cam.py
│ │ │ ├── bundle_adjust.cc
│ │ │ ├── cam2map4stereo.py
│ │ │ ├── cam2rpc.cc
│ │ │ ├── cam_gen.cc
│ │ │ ├── cam_test.cc
│ │ │ ├── camera_calibrate
│ │ │ ├── camera_footprint.cc
│ │ │ ├── camera_solve
│ │ │ ├── corr_eval.cc
│ │ │ ├── coverage_fraction.cc
│ │ │ ├── dem2gcp.cc
│ │ │ ├── dem_geoid.cc
│ │ │ ├── dem_mosaic.cc
│ │ │ ├── dg_mosaic
│ │ │ ├── disp2ip.cc
│ │ │ ├── disparitydebug.cc
│ │ │ ├── extract_bag
│ │ │ ├── fit_rpc.cc
│ │ │ ├── gcp_gen.cc
│ │ │ ├── geodiff.cc
│ │ │ ├── hiedr2mosaic.py
│ │ │ ├── historical_helper.py
│ │ │ ├── image_align.cc
│ │ │ ├── image_calc.cc
│ │ │ ├── image_mosaic.cc
│ │ │ ├── image_subset.cc
│ │ │ ├── jitter_solve.cc
│ │ │ ├── list_timestamps
│ │ │ ├── lronac2mosaic.py
│ │ │ ├── lronacjitreg.cc
│ │ │ ├── mapproject
│ │ │ ├── mapproject_single.cc
│ │ │ ├── mer2camera.cc
│ │ │ ├── multi_stereo
│ │ │ ├── n_align.cc
│ │ │ ├── nonlin_trans_corr.cc
│ │ │ ├── opencv_calibrate.cc
│ │ │ ├── opencv_imagelist_creator.cc
│ │ │ ├── orbit_plot.py
│ │ │ ├── orbitviz.cc
│ │ │ ├── otsu_threshold.cc
│ │ │ ├── pansharp.cc
│ │ │ ├── parallel_bundle_adjust
│ │ │ ├── parallel_sfs
│ │ │ ├── parallel_stereo
│ │ │ ├── parse_match_file.py
│ │ │ ├── pc_align.cc
│ │ │ ├── pc_filter.cc
│ │ │ ├── pc_merge.cc
│ │ │ ├── point2dem.cc
│ │ │ ├── point2las.cc
│ │ │ ├── point2mesh.cc
│ │ │ ├── prism2asp.cc
│ │ │ ├── refr_index
│ │ │ ├── rig_bracket
│ │ │ ├── rig_calibrator.cc
│ │ │ ├── rpc_gen.cc
│ │ │ ├── runWithLog.py
│ │ │ ├── sat_sim.cc
│ │ │ ├── scale_bathy_mask.py
│ │ │ ├── sfm_merge.cc
│ │ │ ├── sfm_proc
│ │ │ ├── sfm_submap.cc
│ │ │ ├── sfm_view.cc
│ │ │ ├── sfs.cc
│ │ │ ├── sfs_blend.cc
│ │ │ ├── skysat_helper.py
│ │ │ ├── sparse_disp
│ │ │ ├── stereo
│ │ │ ├── stereo.cc
│ │ │ ├── stereo.h
│ │ │ ├── stereo_blend.cc
│ │ │ ├── stereo_corr.cc
│ │ │ ├── stereo_dist
│ │ │ ├── stereo_fltr.cc
│ │ │ ├── stereo_gui.cc
│ │ │ ├── stereo_parse.cc
│ │ │ ├── stereo_pprc.cc
│ │ │ ├── stereo_rfne.cc
│ │ │ ├── stereo_sweep
│ │ │ ├── stereo_tile
│ │ │ ├── stereo_tri.cc
│ │ │ ├── texrecon
│ │ │ ├── theia_sfm
│ │ │ ├── tif_mosaic.cc
│ │ │ ├── time_trials
│ │ │ ├── undistort_image_texrecon.cc
│ │ │ ├── wv_correct.cc
│ │ │ └── xyzi2csv.cc
│ │ ├── WVCorrect/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README_MULTISPECTRAL
│ │ │ ├── README_PAN
│ │ │ ├── WV02_BAND3_CCD_CORR.tif
│ │ │ ├── ccd_process.py
│ │ │ ├── disp_avg.cc
│ │ │ ├── find_ccds.m
│ │ │ ├── find_ccds_aux.m
│ │ │ ├── find_moving_avg.m
│ │ │ ├── fix_ccd.m
│ │ │ ├── form_corrections_image.py
│ │ │ ├── gen_scandir.pl
│ │ │ ├── ms_ccd_solve.sh
│ │ │ ├── ms_ccd_verify.sh
│ │ │ ├── ms_correction_lookup.txt
│ │ │ ├── plot_ccds.m
│ │ │ ├── run_lr.sh
│ │ │ └── run_lr_wrap.sh
│ │ ├── asp_config.h.in
│ │ └── asp_date_config.h.in
│ └── test/
│ ├── Helpers.h
│ └── test_main.cc
├── stereo.default.example
└── thirdparty/
├── autotroll.mak
├── gtest/
│ ├── CHANGES
│ ├── CONTRIBUTORS
│ ├── COPYING
│ ├── README
│ ├── include/
│ │ └── gtest/
│ │ └── gtest_ASP.h
│ └── src/
│ ├── gtest-all.cc
│ └── gtest_main.cc
├── m4/
│ └── autotroll.m4
└── protobuf.mak
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bibliography-addition---.md
================================================
---
name: "Bibliography Addition \U0001F5C3"
about: Add a paper, abstract, or other reference that used ASP!
title: ''
labels: ''
assignees: ''
---
**DOI**
If the work has a DOI, that's really all we need. Please enter it.
**Citation**
Otherwise, please provide as complete a citation as possible.
If you have a citation in BibTeX format, please paste that in (but it isn't required).
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report---.md
================================================
---
name: "Bug Report \U0001F41B"
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Error Logs, Terminal Captures, Screenshots**
If applicable, please give us as much information as you can to help explain your problem.
**Your Environment (please complete the following information):**
- OS: [e.g. macOS, Linux, and their version number]
- ASP Version: [e.g. 2.6.2, can find via `stereo --version`]
- Any other environment information that might be helpful?
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature-request---.md
================================================
---
name: "Feature Request \U0001F680"
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/pull_request_template.md
================================================
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
## Related Issue
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
<!--- Please link to the issue here: -->
## Motivation and Context
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
<!--- If any of the tests below were *not* run, please delete the line -->
## Types of changes
<!--- What types of changes does your code introduce? Remove lines that do not apply: -->
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to change)
## Checklist:
<!--- Go over all the following points, and remove lines that do not apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- My change requires a change to the documentation.
- I have updated the documentation accordingly.
- I have added tests to cover my changes.
- All new and existing tests passed.
## Licensing:
This project is released under the [LICENSE](https://github.com/NeoGeographyToolkit/StereoPipeline/blob/master/LICENSE).
<!-- Remove the statement that does not apply. -->
- I claim copyrights on my contributions in this pull request, and I provide those contributions via this pull request under the same license terms that the pvl project uses.
- I dedicate any and all copyright interest in my contributions in this pull request to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this contribution under copyright law.
<!-- No matter how you contributed, please make sure you add your name to the
[AUTHORS](https://github.com/NeoGeographyToolkit/StereoPipeline/blob/master/AUTHORS.rst) file, if you haven't already. -->
<!-- Thanks for contributing to the StereoPipeline! -->
================================================
FILE: .github/workflows/build_helper.sh
================================================
#!/bin/bash
# This is a debugging script that builds ASP and its dependencies. It also shows
# how the result of building can be uploaded as an artifact, and later moved to
# a permanent location. Some parts are more focused towards the Mac build in the
# cloud, while others apply to the local Linux build as well.
# This script is not meant to be run directly. Each block of code must be
# inspected, edited, and run separately. This is a scratchpad. The production
# logic is in build_test.sh, save_mac_deps.sh, and the
# https://github.com/NeoGeographyToolkit/stereopipeline-feedstock repo.
# This helps do a dress rehearsal for the build process, before using
# conda-build which is very slow and error-prone.
# After the dependencies are updated with this script, they can be saved for the
# future with the script save_mac_deps.sh. See that script for more info.
# Move from the source dir to the home dir
cd
# Set up the compiler. Using a known compiler that is in the environment ensures
# there are no surprises when later conda-build is employed with the same
# compiler.
if [ "$(uname)" = "Darwin" ]; then
cc_comp=clang
cxx_comp=clang++
else
cc_comp=x86_64-conda-linux-gnu-gcc
cxx_comp=x86_64-conda-linux-gnu-g++
fi
# Fetch the ASP dependencies. Must keep $tag in sync with build_test.sh. See
# save_mac_deps.sh for how to save and update a tarball with the dependencies.
# New dependencies can be created from scratch with the environment in
# stereopipeline-feedstock.
tag=asp_deps_mac_x64_v3 # Mac Intel. Sync up tag with build_test.sh.
# tag=asp_deps_mac_arm64_v3 # Mac Arm. Sync up tag with build_test.sh.
# tag=asp_deps_linux_v2 # Linux.
cd $HOME
wget https://github.com/NeoGeographyToolkit/BinaryBuilder/releases/download/${tag}/asp_deps.tar.gz > /dev/null 2>&1 # this is verbose
/usr/bin/time tar xzf asp_deps.tar.gz > /dev/null 2>&1 # this is verbose
# Set up conda
conda init bash
source ~/.bash_profile
conda activate asp_deps
# Install anaconda client. Will save the anaconda_env client on exit.
conda create -n anaconda -c conda-forge -c defaults -y anaconda-client
# Activate anaconda env
source ~/.bash_profile
conda activate anaconda
# Install conda-build in a separate environment. Do not save it on exit as it
# can have huge partial builds.
conda create -n build -c conda-forge -c defaults -y conda-build
source ~/.bash_profile
conda activate build
# Build ale. It is assumed the compiler is set up as above. May need to save the
# current ~/.ssh/id_rsa.pub key to Github in the user settings for recursive
# cloning of the submodules to work.
cd
git clone https://github.com/DOI-USGS/ale.git --recursive
cd ale
git submodule update --recursive # if refreshing the repo later
#git rebase origin/main
#git reset --hard 0ba7b24
export PREFIX=$HOME/miniconda3/envs/asp_deps
export PATH=$PREFIX/bin:$PATH
mkdir -p build && cd build
cmake .. \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DALE_USE_EXTERNAL_EIGEN=ON \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
-DALE_USE_EXTERNAL_JSON=ON \
-DALE_BUILD_DOCS=OFF \
-DALE_BUILD_TESTS=OFF \
-DCMAKE_VERBOSE_MAKEFILE=TRUE \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
make -j${CPU_COUNT} install
# Build usgscsm. It is assumed the compiler is set up as above.
cd
git clone https://github.com/DOI-USGS/usgscsm.git --recursive
cd usgscsm
git submodule update --recursive # if refreshing the repo later
#git rebase origin/main
mkdir -p build && cd build
export PREFIX=$HOME/miniconda3/envs/asp_deps
export PATH=$PREFIX/bin:$PATH
# -DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
# -DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
cmake .. \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
-DUSGSCSM_EXTERNAL_DEPS=ON \
-DUSGSCSM_BUILD_DOCS=OFF \
-DUSGSCSM_BUILD_TESTS=OFF \
-DCMAKE_VERBOSE_MAKEFILE=TRUE \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
make -j${CPU_COUNT} install
# Build ISIS3
cd
conda install -c conda-forge cmake doxygen \
c-compiler=1.7.0 cxx-compiler=1.7.0 \
fortran-compiler=1.7.0
git clone https://github.com/DOI-USGS/ISIS3.git
cd ISIS3
mkdir -p build
cd build
export ISISROOT=$PWD
#export PREFIX=$HOME/miniconda3/envs/asp_deps
export PREFIX=$CONDA_PREFIX
export PATH=$PREFIX/bin:$PATH
export ISISTESTDATA=$HOME/isis_test_data
conda env config vars set ISISTESTDATA=$ISISTESTDATA
ext=.so
if [ "$(uname)" = "Darwin" ]; then
ext=.dylib
fi
cmake \
-GNinja \
-DJP2KFLAG=OFF \
-Dpybindings=OFF \
-DbuildTests=ON \
-DCMAKE_BUILD_TYPE=Release \
-DBULLET_DEFINITIONS="-DBT_USE_DOUBLE_PRECISION" \
-DOPENCV_INCLUDE_DIR=$PREFIX/include/opencv4 \
-DPCL_INCLUDE_DIR=${PREFIX}/include/pcl-1.15 \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
../isis
#export NINJAJOBS=4; /usr/bin/time ninja install -j $NINJAJOBS # osx
/usr/bin/time ninja install
# Create a tarball with the updated packages. It will be uploaded as an
# artifact. The destination directory is set in the .yml file.
#
# See build_test.sh for how to use this artifact to save the updated packages to
# a permanent location.
mkdir -p ~/work/StereoPipeline/packages
/usr/bin/time tar cfz ~/work/StereoPipeline/packages/asp_deps.tar.gz \
/Users/runner/miniconda3/envs
# See the top of the document for how to save / fetch a tarball with dependencies.
# Done for now. Other packages have been built before.
exit 0
# Must create an ssh key to be able to clone the repos
# ssh-keygen -t rsa
# Add the key /Users/runner/.ssh/id_rsa.pub to github in Settings -> SSH and GPG keys
# Turn on the steps below only if starting from scratch
if [ 1 -eq 0 ]; then
echo Wiping old env
/bin/rm -rf /Users/runner/miniconda3/envs/asp_deps
# Fetch the isis env from the
/bin/rm -f environment.yml
wget https://raw.githubusercontent.com/DOI-USGS/ISIS3/refs/heads/dev/environment.yml
# Create the asp_deps env
echo Creating a new asp_deps env
conda env create -n asp_deps -f environment.yml
conda activate asp_deps
fi
# Install some needed tools
cd
conda install -c conda-forge -y parallel pbzip2
# Build the needed packages
# geoid
cd
wget https://github.com/NeoGeographyToolkit/StereoPipeline/releases/download/geoid1.0/geoids.tgz
tar xzf geoids.tgz
cd geoids
if [ "$(uname)" = "Darwin" ]; then
LIB_FLAG='-dynamiclib'
EXT='.dylib'
else
LIB_FLAG='-shared'
EXT='.so'
fi
# Build
${FC} ${FFLAGS} -fPIC -O3 -c interp_2p5min.f
${FC} ${LDFLAGS} ${LIB_FLAG} -o libegm2008${EXT} interp_2p5min.o
# Install
mkdir -p ${PREFIX}/lib
cp -fv libegm2008.* ${PREFIX}/lib
GEOID_DIR=${PREFIX}/share/geoids
mkdir -p ${GEOID_DIR}
cp -fv *tif *jp2 ${GEOID_DIR}
# libnabo
cd
export PREFIX=/Users/runner/miniconda3/envs/asp_deps
git clone https://github.com/NeoGeographyToolkit/libnabo.git
cd libnabo
mkdir -p build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS='-O3 -std=c++11' \
-DCMAKE_C_FLAGS='-O3' \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DEIGEN_INCLUDE_DIR=${PREFIX}/include/eigen3 \
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DBoost_DIR=${PREFIX}/lib \
-DBoost_INCLUDE_DIR=${PREFIX}/include \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_VERBOSE_MAKEFILE=ON \
..
make -j${CPU_COUNT} install
# libpointmatcher
cd
export PREFIX=$HOME/miniconda3/envs/asp_deps
git clone https://github.com/NeoGeographyToolkit/libpointmatcher.git
cd libpointmatcher
mkdir -p build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="-O3 -std=c++17" \
-DCMAKE_C_FLAGS='-O3' \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DBUILD_SHARED_LIBS=ON \
-DEIGEN_INCLUDE_DIR=${PREFIX}/include/eigen3 \
-DBoost_DIR=${PREFIX}/lib \
-DBoost_INCLUDE_DIR=${PREFIX}/include \
-DBoost_NO_BOOST_CMAKE=OFF \
-DBoost_DEBUG=ON \
-DBoost_DETAILED_FAILURE_MSG=ON \
-DBoost_NO_SYSTEM_PATHS=ON \
..
make -j${CPU_COUNT} install
# fgr
cd $SRC_DIR
git clone https://github.com/NeoGeographyToolkit/FastGlobalRegistration.git
cd FastGlobalRegistration
FGR_SOURCE_DIR=$(pwd)/source
mkdir -p build && cd build
INC_FLAGS="-I${PREFIX}/include/eigen3 -I${PREFIX}/include -O3 -L${PREFIX}/lib -lflann_cpp -llz4 -O3 -std=c++11"
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="${INC_FLAGS}" \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DFastGlobalRegistration_LINK_MODE=SHARED \
${FGR_SOURCE_DIR}
make -j${CPU_COUNT}
# Install
FGR_INC_DIR=${PREFIX}/include/FastGlobalRegistration
mkdir -p ${FGR_INC_DIR}
/bin/cp -fv ${FGR_SOURCE_DIR}/FastGlobalRegistration/app.h ${FGR_INC_DIR}
FGR_LIB_DIR=${PREFIX}/lib
mkdir -p ${FGR_LIB_DIR}
/bin/cp -fv FastGlobalRegistration/libFastGlobalRegistrationLib* ${FGR_LIB_DIR}
#s2p
cd
export PREFIX=/Users/runner/miniconda3/envs/asp_deps
conda activate asp_deps
conda install -c conda-forge -y fftw=3.3.10
git clone https://github.com/NeoGeographyToolkit/s2p.git --recursive
cd s2p
# update recursive submodules
git submodule update --init --recursive
export CFLAGS="-I$PREFIX/include -O3 -DNDEBUG -march=native"
export LDFLAGS="-L$PREFIX/lib"
# Fix for missing liblzma
#perl -pi -e "s#(/[^\s]*?lib)/lib([^\s]+).la#-L\$1 -l\$2#g" ${PREFIX}/lib/*.la
baseDir=$(pwd)
# Extension
if [ "$(uname)" = "Darwin" ]; then
EXT='.dylib'
else
EXT='.so'
fi
# Build the desired programs
cd 3rdparty/mgm
perl -pi -e "s#CFLAGS=#CFLAGS=$CFLAGS #g" Makefile
perl -pi -e "s#LDFLAGS=#LDFLAGS=$LDFLAGS #g" Makefile
make -j${CPU_COUNT}
cd $baseDir
# msmw
cd 3rdparty/msmw
mkdir -p build
cd build
cmake .. \
-DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CFLAGS" \
-DPNG_LIBRARY_RELEASE="${PREFIX}/lib/libpng${EXT}" \
-DTIFF_LIBRARY_RELEASE="${PREFIX}/lib/libtiff${EXT}" \
-DZLIB_LIBRARY_RELEASE="${PREFIX}/lib/libz${EXT}" \
-DJPEG_LIBRARY="${PREFIX}/lib/libjpeg${EXT}"
make -j${CPU_COUNT}
cd $baseDir
# msmw2
cd 3rdparty/msmw2
mkdir -p build
cd build
cmake .. \
-DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS="$CFLAGS" \
-DPNG_LIBRARY_RELEASE="${PREFIX}/lib/libpng${EXT}" \
-DTIFF_LIBRARY_RELEASE="${PREFIX}/lib/libtiff${EXT}" \
-DZLIB_LIBRARY_RELEASE="${PREFIX}/lib/libz${EXT}" \
-DJPEG_LIBRARY="${PREFIX}/lib/libjpeg${EXT}"
make -j${CPU_COUNT}
cd $baseDir
# Install the desired programs
BIN_DIR=${PREFIX}/plugins/stereo/mgm/bin
mkdir -p ${BIN_DIR}
/bin/cp -fv 3rdparty/mgm/mgm ${BIN_DIR}
BIN_DIR=${PREFIX}/plugins/stereo/msmw/bin
mkdir -p ${BIN_DIR}
/bin/cp -fv \
3rdparty/msmw/build/libstereo/iip_stereo_correlation_multi_win2 \
${BIN_DIR}/msmw
BIN_DIR=${PREFIX}/plugins/stereo/msmw2/bin
mkdir -p ${BIN_DIR}
/bin/cp -fv \
3rdparty/msmw2/build/libstereo_newversion/iip_stereo_correlation_multi_win2_newversion \
${BIN_DIR}/msmw2
# libelas (does not work on Mac Arm)
cd
env=isis_dev # can also be asp_deps
export PREFIX=$(ls -d ~/*conda3/envs/$env)
export PATH=$PREFIX/bin:$PATH
conda activate $env
git clone https://github.com/NeoGeographyToolkit/libelas.git
cd libelas
# Set the env
export CFLAGS="-I$PREFIX/include -O3 -DNDEBUG -ffast-math -march=native"
export LDFLAGS="-L$PREFIX/lib"
if [ "$(uname)" = "Darwin" ]; then
EXT='.dylib'
else
EXT='.so'
fi
# build
mkdir -p build
cd build
cmake .. \
-DTIFF_LIBRARY_RELEASE="${PREFIX}/lib/libtiff${EXT}" \
-DTIFF_INCLUDE_DIR="${PREFIX}/include" \
-DCMAKE_CXX_FLAGS="-I${PREFIX}/include"
make -j${CPU_COUNT}
# Copy the 'elas' tool to the plugins subdir meant for it
BIN_DIR=${PREFIX}/plugins/stereo/elas/bin
mkdir -p ${BIN_DIR}
/bin/cp -fv elas ${BIN_DIR}/elas
# Multiview
cd
conda activate asp_deps
export PREFIX=$HOME/miniconda3/envs/asp_deps
conda install -c conda-forge \
rocksdb rapidjson
git clone https://github.com/NeoGeographyToolkit/MultiView.git --recursive
cd MultiView
# Must have ssh authentication set up for github
git submodule update --init --recursive
mkdir -p build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DMULTIVIEW_DEPS_DIR=${PREFIX} \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_MODULE_PATH=$PREFIX/share/pcl-1.13/Modules \
-DCMAKE_CXX_FLAGS="-O3 -std=c++11 -Wno-error -I${PREFIX}/include" \
-DCMAKE_C_FLAGS='-O3 -Wno-error' \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
make -j${CPU_COUNT} install
# PDAL
git clone https://github.com/PDAL/PDAL.git
cd PDAL
git checkout 2.9.3
mkdir -p build
cd build
export PREFIX=$HOME/miniconda3/envs/asp_deps
ldflags="-Wl,-rpath,${PREFIX}/lib -L${PREFIX}/lib -lgeotiff -lcurl -lssl -lxml2 -lcrypto -lzstd -lz"
if [ "$(uname)" = "Darwin" ]; then
EXT='.dylib'
else
EXT='.so'
# add unwind to ldflags on Linux
ldflags="$ldflags -lunwind"
fi
# Compilers should be auto-detected if the env is activated
# and has both them and cmake installed.
cmake ${CMAKE_ARGS} \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DBUILD_PLUGIN_I3S=OFF \
-DBUILD_PLUGIN_TRAJECTORY=OFF \
-DBUILD_PLUGIN_E57=OFF \
-DBUILD_PLUGIN_PGPOINTCLOUD=OFF \
-DBUILD_PLUGIN_ICEBRIDGE=OFF \
-DBUILD_PLUGIN_NITF=OFF \
-DBUILD_PLUGIN_TILEDB=OFF \
-DBUILD_PLUGIN_HDF=OFF \
-DBUILD_PLUGIN_DRACO=OFF \
-DENABLE_CTEST=OFF \
-DWITH_TESTS=OFF \
-DWITH_ZLIB=ON \
-DWITH_ZSTD=ON \
-DWITH_LASZIP=ON \
-DWITH_LAZPERF=ON \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_CXX17_STANDARD_COMPILE_OPTION="-std=c++17" \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DWITH_TESTS=OFF \
-DCMAKE_EXE_LINKER_FLAGS="$ldflags" \
-DDIMBUILDER_EXECUTABLE=dimbuilder \
-DBUILD_PLUGIN_DRACO:BOOL=OFF \
-DOPENSSL_ROOT_DIR=${PREFIX} \
-DLIBXML2_INCLUDE_DIR=${PREFIX}/include/libxml2 \
-DLIBXML2_LIBRARIES=${PREFIX}/lib/libxml2${EXT} \
-DLIBXML2_XMLLINT_EXECUTABLE=${PREFIX}/bin/xmllint \
-DGDAL_LIBRARY=${PREFIX}/lib/libgdal${EXT} \
-DGDAL_CONFIG=${PREFIX}/bin/gdal-config \
-DZLIB_INCLUDE_DIR=${PREFIX}/include \
-DZLIB_LIBRARY:FILEPATH=${PREFIX}/lib/libz${EXT} \
-DCURL_INCLUDE_DIR=${PREFIX}/include \
-DPostgreSQL_LIBRARY_RELEASE=${PREFIX}/lib/libpq${EXT} \
-DCURL_LIBRARY_RELEASE=${PREFIX}/lib/libcurl${EXT} \
-DPROJ_INCLUDE_DIR=${PREFIX}/include \
-DPROJ_LIBRARY:FILEPATH=${PREFIX}/lib/libproj${EXT} \
..
make -j${CPU_COUNT} install
# OpenEXR
# This will be removed from ASP
# Build from source, to ensure the proper version of ilmbase is used
wget https://github.com/AcademySoftwareFoundation/openexr/archive/v2.5.5.tar.gz
tar xzfv v2.5.5.tar.gz
cd openexr-2.5.5
mkdir -p build && cd build
conda activate isis_dev
export PREFIX=$(ls -d ~/*conda3/envs/{asp_deps,isis_dev})
if [ ! -d "$PREFIX" ]; then
echo "Error: $PREFIX does not exist. Exiting."
#exit 1
fi
$PREFIX/bin/cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_CXX_FLAGS='-O3 -std=c++11 -w' \
-DCMAKE_C_FLAGS='-O3 -w' \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13
make -j${CPU_COUNT} install
# Build theia
cd ~/work/StereoPipeline
conda install -c conda-forge vlfeat
conda install -c conda-forge rapidjson=1.1.0
conda install -c conda-forge rocksdb=8.5.3 gflags glog ceres-solver mesalib
# On linux, install mesa-libgl-cos6-x86_64
git clone git@github.com:NeoGeographyToolkit/TheiaSfM.git
cd TheiaSfM
mkdir -p build && cd build
export PREFIX=$HOME/miniconda3/envs/asp_deps
if [ ! -d "$PREFIX" ]; then
echo "Error: $PREFIX does not exist. Exiting."
#exit 1
fi
$PREFIX/bin/cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DMULTIVIEW_DEPS_DIR=${PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_CXX_FLAGS='-O3 -std=c++11 -Wno-error' \
-DCMAKE_C_FLAGS='-O3 -Wno-error' \
-DCMAKE_MODULE_PATH=$PREFIX/share/pcl-1.13/Modules \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
# Build Multiview
# Dependencies. Use precisely same compiler that will be used in the conda recipe
git submodule update --init --recursive
conda install -c conda-forge vlfeat \
gflags=2.2.2 glog=0.7.1 \
ceres-solver=2.2.0 \
vlfeat \
'clang >=16,<17' 'clangxx >=16,<17'
conda install -c conda-forge \
rapidjson=1.1.0 \
rocksdb=8.5.3
git clone git@github.com:NeoGeographyToolkit/MultiView.git
mkdir -p build && cd build
# For OSX use a custom location for TBB. This is a fix for a conflict with embree.
# When that package gets updated to version 3 or 4 this may become unnecessary.
opt=""
if [[ $target_platform =~ osx.* ]]; then
opt="-DTBB_LIBRARY=${PREFIX}/lib/libtbb.12.dylib -DTBB_MALLOC_LIBRARY=${PREFIX}/lib/libtbbmalloc.2.dylib"
fi
# Set up the cc_comp compiler as above
# Enforce a compiler we know to work
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DMULTIVIEW_DEPS_DIR=${PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_CXX_FLAGS='-O3 -std=c++11' \
-DCMAKE_C_FLAGS='-O3' \
-DCMAKE_MODULE_PATH=$PREFIX/share/pcl-1.13/Modules \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
$opt
# Build
make -j${CPU_COUNT} install
# Make the python env
echo Creating a new python_isis8 env
/bin/rm -rf /usr/local/miniconda/envs/python_isis8
conda create -n python_isis8 python=3.12.0 numpy=1.26.2 -y
# Build visionworkbench
cd
conda activate asp_deps
# Set up the cc_comp compiler as above
# conda install -c conda-forge openblas
cd ~/work/StereoPipeline
export PREFIX=/Users/runner/miniconda3/envs/asp_deps
git clone https://github.com/visionworkbench/visionworkbench.git
cd visionworkbench
mkdir -p build
cd build
cmake .. \
-DASP_DEPS_DIR=$PREFIX \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp
echo Building VisionWorkbench
make -j${CPU_COUNT} install
# Build StereoPipeline
cd
conda activate asp_deps
# Set up the cc_comp compiler as above
export PREFIX=$HOME/miniconda3/envs/asp_deps
cd ~/work
mkdir copy_for_build
cd copy_for_build
git clone https://github.com/NeoGeographyToolkit/StereoPipeline.git
cd StereoPipeline
mkdir -p build
cd build
cmake .. \
-DASP_DEPS_DIR=$PREFIX \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DVISIONWORKBENCH_INSTALL_DIR=$PREFIX \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp
echo Building StereoPipeline
make -j${CPU_COUNT} install > /dev/null 2>&1 # this is too verbose
# Search for packages
conda search -c nasa-ames-stereo-pipeline --override-channels --platform osx-64
# Save current dependencies
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
# conda env export > ~/miniconda3/envs/asp_deps/asp_deps.yaml.bk
# To create an env, it appears important to use the flexible channel priority.
# Below creating the final asp_deps env, after ensuring all dependencies are good.
conda config --set channel_priority flexible
conda env create -n asp_deps -f asp_deps.yaml
# See the top of document for how to save / fetch a tarball with dependencies
# See also for how to install conda-build and anaconda client.
# geoid
cd ~/work/StereoPipeline
git clone https://github.com/NeoGeographyToolkit/geoid-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml geoid-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c conda-forge geoid-feedstock
anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/geoid-1.0_asp3.5.0-2.conda
/Users/runner/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps geoid=1.0_asp3.5.0
# ilmbase
git clone https://github.com/NeoGeographyToolkit/ilmbase-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml ilmbase-feedstock
conda build -c conda-forge -c nasa-ames-stereo-pipeline ilmbase-feedstock
~/miniconda3/bin/anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/ilmbase-2.5.5-h01edc0c_1.conda
#conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps ilmbase=2.5.5
/Users/runner/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps nasa-ames-stereo-pipeline::ilmbase=2.5.5
/Users/runner/miniconda3/envs/anaconda/bin/anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/ilmbase-2.5.5-h01edc0c_0.conda
/Users/runner/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps ilmbase=2.5.5
# openexr
cd ~/work/StereoPipeline
https://github.com/NeoGeographyToolkit/openexr-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml openexr-feedstock
~/miniconda3/bin/anaconda upload upload /Users/runner/miniconda3/conda-bld/osx-64/openexr-2.5.5-ha5a8b8e_0.conda
/Users/runner/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps nasa-ames-stereo-pipeline::openexr=2.5.5
# libnabo
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/libnabo-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml libnabo-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c conda-forge libnabo-feedstock
~/miniconda3/bin/anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/libnabo-asp3.5.0-h01edc0c_1.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps libnabo
# fgr
cd ~/work/StereoPipeline
git clone https://github.com/NeoGeographyToolkit/fgr-feedstock.git
conda activate asp_deps; conda env export > asp_deps.yaml
python StereoPipeline/conda/update_versions.py asp_deps.yaml fgr-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c conda-forge fgr-feedstock
anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/fgr-asp3.5.0-h01edc0c_0.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps fgr
# libpointmatcher
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/libpointmatcher-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml libpointmatcher-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c conda-forge libpointmatcher-feedstock
anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/libpointmatcher-asp3.5.0-ha5a8b8e_0.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps libpointmatcher
# pdal
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/pdal-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml pdal-feedstock
# Do not use ASP GDAL so exclude the ASP channel
conda activate build
conda build -c conda-forge pdal-feedstock |tee output_debug_pdal.txt
# s2p
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/s2p-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml s2p-feedstock
conda build -c nasa-ames-stereo-pipeline -c conda-forge s2p-feedstock
anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/s2p-subset-asp3.5.0-h01edc0c_0.conda
# libelas
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/libelas-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml libelas-feedstock
conda build -c nasa-ames-stereo-pipeline -c conda-forge libelas-feedstock
~/miniconda3/bin/anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/libelas-asp3.5.0-h01edc0c_0.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps libelas
# Build Multiview with conda. Ensure that the same compile tools
# are used as above.
cd ~/work/StereoPipeline
conda activate asp_deps; conda env export > asp_deps.yaml
git clone https://github.com/NeoGeographyToolkit/multiview-feedstock.git
python StereoPipeline/conda/update_versions.py asp_deps.yaml multiview-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c conda-forge multiview-feedstock
~/*conda3/bin/anaconda upload /Users/runner/miniconda3/conda-bld/osx-64/multiview-asp_3.5.0-py310_0.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps multiview
# visionworkbench
cd ~/work/StereoPipeline
git clone https://github.com/NeoGeographyToolkit/visionworkbench-feedstock.git
conda activate asp_deps; conda env export > asp_deps.yaml
python StereoPipeline/conda/update_versions.py asp_deps.yaml visionworkbench-feedstock
conda activate build
conda build -c conda-forge -c nasa-ames-stereo-pipeline visionworkbench-feedstock 2>&1 |tee output_debug.txt
~/miniconda3/bin/anaconda upload upload /Users/runner/miniconda3/conda-bld/osx-64/visionworkbench-asp3.5.0-0.conda
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps visionworkbench
# StereoPipeline
conda config --set channel_priority flexible
cd ~/work/StereoPipeline
git clone https://github.com/NeoGeographyToolkit/stereopipeline-feedstock.git
conda activate asp_deps; conda env export > asp_deps.yaml
python StereoPipeline/conda/update_versions.py asp_deps.yaml stereopipeline-feedstock
conda activate build
conda build -c nasa-ames-stereo-pipeline -c usgs-astrogeology \
-c conda-forge stereopipeline-feedstock 2>&1 |tee output_debug.txt
~/miniconda3/bin/anaconda upload
~/miniconda3/bin/conda install -c nasa-ames-stereo-pipeline -c conda-forge -n asp_deps
# Prepare for packaging the tarball
conda install -c conda-forge pbzip2 chrpath cmake parallel
conda create -c conda-forge -n python_isis8 python=3.10.13 numpy=1.26.4
# Package with BinaryBuilder. The Mac Arm and Mac x84 use
# different paths to the python environment.
cd ~/work/StereoPipeline
git clone https://github.com/NeoGeographyToolkit/BinaryBuilder
cd BinaryBuilder
export PREFIX=$HOME/miniconda3/envs/asp_deps
export ISISROOT=$PREFIX
installDir=$PREFIX
envPath=$PREFIX
pythonPath=$(ls -d $HOME/miniconda3/envs/*python* | head -n 1)
echo installDir=$installDir
echo envPath=$envPath
echo pythonPath=$pythonPath
./make-dist.py $installDir \
--asp-deps-dir $envPath \
--python-env $(ls -d $HOME/*conda3/envs/python*)
================================================
FILE: .github/workflows/build_helper_linux.yml
================================================
name: build_helper_linux
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: conda-incubator/setup-miniconda@v3
with:
auto-activate-base: true
activate-environment: ""
- uses: actions/checkout@v3
- name: Build deps on top of asp_deps
run: |
set -ex
# Fetch the asp_deps tarball (cross-compiled on Mac, has all deps
# except ISIS, Geoid, and Python env)
tag=asp_deps_linux_v2
cd $HOME
wget https://github.com/NeoGeographyToolkit/BinaryBuilder/releases/download/${tag}/asp_deps.tar.gz
/usr/bin/time tar xzf asp_deps.tar.gz -C $HOME
# Find the env
envPath=$(ls -d $HOME/*conda3/envs/asp_deps)
if [ ! -d "$envPath" ]; then
echo "Error: $envPath does not exist"
exit 1
fi
export PATH=$envPath/bin:$PATH
conda init bash
source ~/.bash_profile
conda activate asp_deps
# The tarball was stripped to fit GitHub releases (2GB limit).
# Removed: lib/python3.13/, static .a files, LLVM/clang, OpenVINO,
# openblas (MKL used), conda-meta, rclone, mysqld, locale-archive,
# opt/bullet, include/{bullet,qt6,vtk-9.5}.
# BLAS/LAPACK symlinks redirect to MKL (libmkl_rt.so).
# Reinstall stripped packages needed for ISIS build.
# Pin versions to match environment_asp_deps_linux.yml.
conda install -c conda-forge -y \
"bullet>=3.25" "qt6-main>=6,<7" "openblas" 2>/dev/null || true
# Create the Python env (needed for ASP packaging later).
# Must match the Python version in asp_deps.
conda create -n python_isis9 -c conda-forge -y python=3.13 numpy
# Set up compiler
cc_comp=x86_64-conda-linux-gnu-gcc
cxx_comp=x86_64-conda-linux-gnu-g++
PREFIX=$envPath
# Build Geoid (Fortran, can't cross-compile on Mac)
cd $HOME
wget https://github.com/NeoGeographyToolkit/StereoPipeline/releases/download/geoid1.0/geoids.tgz
tar xzf geoids.tgz
cd geoids
${PREFIX}/bin/x86_64-conda-linux-gnu-gfortran -fPIC -O3 -c interp_2p5min.f
${PREFIX}/bin/x86_64-conda-linux-gnu-gfortran -shared -o libegm2008.so interp_2p5min.o
cp -fv libegm2008.so ${PREFIX}/lib/
mkdir -p ${PREFIX}/share/geoids
cp -fv *.tif *.jp2 ${PREFIX}/share/geoids/
# Build ALE (already cross-compiled in tarball, skip for now)
if [ 1 -eq 0 ]; then
cd $HOME
git clone https://github.com/DOI-USGS/ale.git --recursive
cd ale
mkdir -p build && cd build
cmake .. \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DALE_USE_EXTERNAL_EIGEN=ON \
-DALE_USE_EXTERNAL_JSON=ON \
-DALE_BUILD_LOAD=ON \
-DALE_BUILD_DOCS=OFF \
-DALE_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
make -j$(nproc) install
fi
# Build USGSCSM (already cross-compiled in tarball, skip for now)
if [ 1 -eq 0 ]; then
cd $HOME
git clone https://github.com/DOI-USGS/usgscsm.git --recursive
cd usgscsm
mkdir -p build && cd build
cmake .. \
-DCMAKE_C_COMPILER=${PREFIX}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${PREFIX}/bin/$cxx_comp \
-DUSGSCSM_EXTERNAL_DEPS=ON \
-DUSGSCSM_BUILD_DOCS=OFF \
-DUSGSCSM_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=${PREFIX}
make -j$(nproc) install
fi
# Build ISIS (needs Qt6, Fortran deps - can't cross-compile on Mac)
cd $HOME
git clone https://github.com/DOI-USGS/ISIS3.git
cd ISIS3
git submodule update --init --recursive
mkdir -p build && cd build
export ISISROOT=$PWD
cmake .. \
-GNinja \
-DJP2KFLAG=OFF \
-Dpybindings=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
../isis
/usr/bin/time ninja install
# Tar both envs (asp_deps + python_isis9)
mkdir -p ~/work/StereoPipeline/packages
cd $HOME
condaDir=$(basename $(dirname $envPath))
/usr/bin/time tar czf ~/work/StereoPipeline/packages/asp_deps.tar.gz \
${condaDir}/envs/asp_deps ${condaDir}/envs/python_isis9
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: asp-deps-linux-with-isis
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/build_test.sh
================================================
#!/bin/bash
# This is run by GitHub Actions to build and test the Mac version of ASP.
# See build_helper.sh for detailed build commands for ASP and its dependencies.
# Track infrastructure failures separately from test failures.
# Infrastructure failures (build, packaging) are fatal.
# Test validation failures are reported but not fatal.
build_failed=0
# Record the location where the script is running, which should
# be the base of the StereoPipeline repo. This must happen first.
aspRepoDir=$(pwd) # same as $HOME/work/StereoPipeline/StereoPipeline
if [ "$(basename $aspRepoDir)" != "StereoPipeline" ]; then
# Check that base dir is StereoPipeline
echo "Error: Directory: $aspRepoDir is not StereoPipeline"
exit 1
fi
# Other variables
baseDir=$(dirname $aspRepoDir) # one level up
installDir=$baseDir/install
# packageDir will later be uploaded, as set in the yml file
packageDir=$baseDir/packages
testDir=$baseDir/StereoPipelineTest
# Throw an error unless on a Mac
isMac=$(uname -s | grep Darwin)
if [ "$isMac" = "" ]; then
echo "This script is for Mac only"
exit 1
fi
# See if this is Arm64 or Intel x64
isArm64=$(uname -m | grep arm64)
# The ASP dependencies at the location below are updated using the script
# save_mac_deps.sh. See that script for more info. Sometimes the names and
# versions of these change during development.
if [ "$isArm64" != "" ]; then
echo "Platform: Arm64 Mac"
tag=asp_deps_mac_arm64_v3
envName=asp_deps
else
echo "Platform: Intel Mac"
tag=asp_deps_mac_x64_v3
envName=asp_deps
fi
# Fetch and unzip the ASP dependencies
bbUrl=https://github.com/NeoGeographyToolkit/BinaryBuilder/releases/download/${tag}
if [ "$isArm64" != "" ]; then
# ARM64: single tarball
wget ${bbUrl}/asp_deps.tar.gz > /dev/null 2>&1
/usr/bin/time tar xzf asp_deps.tar.gz -C $HOME > /dev/null 2>&1
else
# Intel x64: split into two tarballs (env exceeds 2 GB GitHub limit)
wget ${bbUrl}/asp_deps_p1.tar.gz > /dev/null 2>&1
wget ${bbUrl}/asp_deps_p2.tar.gz > /dev/null 2>&1
/usr/bin/time tar xzf asp_deps_p1.tar.gz -C $HOME > /dev/null 2>&1
/usr/bin/time tar xzf asp_deps_p2.tar.gz -C $HOME > /dev/null 2>&1
fi
# The env can be in miniconda3 or anaconda3
envPath=$(ls -d $HOME/*conda3/envs/${envName})
if [ ! -d "$envPath" ]; then
echo "Error: Directory: $envPath does not exist"
exit 1
fi
export PATH=$envPath/bin:$PATH
# These are of help in interactive mode but are not strictly needed in batch mode
conda init
source ~/.bash_profile
conda activate $envName
# Must use the linker from the conda environment to avoid issues with recent Intel Mac.
# The linker can be installed with conda as package ld64_osx-64 on conda forge.
# Put it in the asp_deps env.
cmake_opts=""
if [ "$isArm64" = "" ]; then
CONDA_LINKER="$(ls $envPath/bin/x86_64-apple-darwin*ld | head -n 1)"
if [ ! -f "$CONDA_LINKER" ]; then
echo "Error: File: $CONDA_LINKER does not exist"
exit 1
fi
ln -sf "$CONDA_LINKER" "$envPath/bin/ld" # Force the use of conda linker
cmake_opts="-DCMAKE_LINKER=$envPath/bin/ld"
fi
# Set up the compiler
if [ "$(uname)" = "Darwin" ]; then
cc_comp=clang
cxx_comp=clang++
else
cc_comp=x86_64-conda-linux-gnu-gcc
cxx_comp=x86_64-conda-linux-gnu-g++
fi
echo cc_comp=$cc_comp
echo cxx_comp=$cxx_comp
# Build visionworkbench
mkdir -p $baseDir
cd $baseDir
git clone https://github.com/visionworkbench/visionworkbench.git
cd visionworkbench
mkdir -p build
cd build
$envPath/bin/cmake .. \
-DASP_DEPS_DIR=$envPath \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 \
-DCMAKE_INSTALL_PREFIX=$installDir \
-DCMAKE_C_COMPILER=${envPath}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${envPath}/bin/$cxx_comp \
$cmake_opts
echo Building VisionWorkbench
make -j10 install > /dev/null 2>&1 # this is too verbose
# Log of the build, for inspection, in case it fails.
# This will resume from earlier.
out_build_vw=$(pwd)/output_build_vw.txt
make install > $out_build_vw 2>&1
tail -n 500 $out_build_vw
echo Log of VW build will be saved with the artifacts in $(basename $out_build_vw)
# Build StereoPipeline
cd $aspRepoDir
mkdir -p build
cd build
$envPath/bin/cmake .. \
-DASP_DEPS_DIR=$envPath \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
-DCMAKE_INSTALL_PREFIX=$installDir \
-DVISIONWORKBENCH_INSTALL_DIR=$installDir \
-DCMAKE_C_COMPILER=${envPath}/bin/$cc_comp \
-DCMAKE_CXX_COMPILER=${envPath}/bin/$cxx_comp \
$cmake_opts
echo Building StereoPipeline
make -j10 install > /dev/null 2>&1 # this is too verbose
ans=$?
if [ "$ans" -ne 0 ]; then
echo "Error: StereoPipeline build failed"
# Do not exit so we can save the build log
fi
# Log of the build, for inspection in case it fails
out_build_asp=$(pwd)/output_build_asp.txt
make install > $out_build_asp 2>&1
tail -n 500 $out_build_asp
echo Log of ASP build will be saved with the artifacts in $(basename $out_build_asp)
# Bugfix for duplicate LC_PATH failure. Wipe all values of LC_PATH.
for lib in $installDir/lib/*dylib; do
for f in $(otool -l $lib | grep -A 3 LC_RPATH | grep path | awk '{print $2}'); do
install_name_tool -delete_rpath $f $lib
done
done
export DYLD_LIBRARY_PATH=$installDir/lib:$DYLD_LIBRARY_PATH
# Package with BinaryBuilder. The Mac Arm and Mac x64 use
# different paths to the python environment.
echo Packaging the build
cd $baseDir
# Clone BinaryBuilder BEFORE setting DYLD_LIBRARY_PATH to include conda
# libs, as conda's libiconv conflicts with system git.
/usr/bin/git clone https://github.com/NeoGeographyToolkit/BinaryBuilder
cd BinaryBuilder
num=$(ls -d $HOME/*conda3/envs/python* | wc -l)
# Must have exactly one python env
if [ "$num" -ne 1 ]; then
echo "Error: Expected exactly one python env, found $num"
exit 1
fi
export ISISROOT=$envPath # needed for Mac Arm
# Do not add $envPath/lib to DYLD_LIBRARY_PATH. Conda's libiconv and ICU libs
# shadow system frameworks and crash CoreFoundation (Qt6 static init dies with
# "unrecognized selector" in CFStringGetFileSystemRepresentation on Sequoia).
# Use DYLD_FALLBACK_LIBRARY_PATH instead - it only kicks in when rpath/install_name
# lookup fails, so system libs are never shadowed.
export DYLD_FALLBACK_LIBRARY_PATH=$envPath/lib
# Qt6 crashes on macOS 15 during os version check in its static initializer.
# SYSTEM_VERSION_COMPAT=1 tells macOS to report version in a compatible way.
export SYSTEM_VERSION_COMPAT=1
./make-dist.py $installDir \
--asp-deps-dir $envPath \
--python-env $(ls -d $HOME/*conda3/envs/python*)
if [ $? -ne 0 ]; then
echo "Error: make-dist.py failed"
build_failed=1
fi
# Prepare the package for upload
mkdir -p $packageDir
mv -fv Stereo* $packageDir
# Extract the tarball so we can test it
cd $packageDir
tarBall=$(ls StereoPipeline-*.tar.bz2 | head -n 1)
if [ "$tarBall" == "" ]; then
echo Cannot find the packaged ASP tarball
build_failed=1
fi
/usr/bin/time tar xjf $tarBall > /dev/null 2>&1 # this is verbose
# Path to executables
binDir=$packageDir/$tarBall
binDir=${binDir/.tar.bz2/}
binDir=$binDir/bin
export PATH=$binDir:$PATH
echo "Binaries are in $binDir"
if [ ! -d "$binDir" ]; then
echo "Error: Directory: $binDir does not exist. Build failed."
build_failed=1
fi
# TODO(oalexan1): Run the tests as a different step in the .yml file.
# Extract the tests. This tarball has both the scripts, test data,
# and the expected results.
# TODO(oalexan1): Must fetch the StereoPipelineTest repo and update
# the scripts extracted from the tarball.
cd $baseDir
echo Testing the build.
wget https://github.com/NeoGeographyToolkit/StereoPipelineTest/releases/download/0.0.1/StereoPipelineTest.tar > /dev/null 2>&1 # this is verbose
# Check if we got the tarball
if [ ! -f "StereoPipelineTest.tar" ]; then
echo "Error: File: StereoPipelineTest.tar does not exist. Test failed."
build_failed=1
fi
tar xfv StereoPipelineTest.tar > /dev/null 2>&1 # this is verbose
# Note: If the test results change, a new tarball with latest scripts and test
# results must be uploaded. That is done by running the script:
# StereoPipeline/.github/workflows/update_mac_tests.sh in the local directory.
# The nightly build script fetches the testa data with the latest and reference
# results in tarball StereoPipelineTest.tar. That artifact will be uploaded
# further down.
# Go to the test dir
if [ ! -d "$testDir" ]; then
echo "Error: Directory: $testDir does not exist"
build_failed=1
fi
cd $testDir
# Run the tests. Failed to install pytest, despite trying hard.
# Just run them manually.
reportFile=$(pwd)/output_test.txt
rm -f $reportFile
ans=0
for d in ss*; do
# Skip unless a directory
if [ ! -d "$d" ]; then continue; fi
cd $d
echo Running test in $(pwd)
./run.sh > output.txt 2>&1
./validate.sh >> output.txt 2>&1
ans0=$?
tail -n 20 output.txt # this can be verbose
echo "Test $d returned $ans0"
echo "Test $d returned $ans0" >> $reportFile
if [ "$ans0" -ne 0 ]; then ans=1; fi # keep record of failures
cd ..
done
echo ans is $ans
# Set the test status. This is parsed after the build is downloaded.
echo test_status $ans >> $reportFile
if [ "$ans" -eq 0 ]; then
echo "All tests passed"
else
# Do not quit, as we want to save the test results
echo "Some tests failed"
fi
# Create the artifacts dir that will be saved
mkdir -p $packageDir
# Save the resulting test results as part of the artifacts. See above for how
# to use this to update the test results in the cloud.
echo Copying the build
(cd $testDir/..; tar cf $packageDir/$(basename $testDir).tar $(basename $testDir))
# Save these logs as part of the artifacts
echo Copying the logs
cp -rfv $out_build_vw $out_build_asp $reportFile $packageDir
# Wipe the extracted tarball so we do not upload it
# TODO(oalexan1): Consider extracting it to a different location to start with
rm -rfv $(dirname $binDir) > /dev/null 2>&1
# Exit with failure if build/packaging broke (infrastructure failure)
if [ "$build_failed" -ne 0 ]; then
echo "Build or packaging failed (see errors above)"
exit 1
fi
# Exit with test status so CI reports failure when tests fail
exit $ans
================================================
FILE: .github/workflows/build_test_mac_arm64.yml
================================================
name: build_test_mac_arm64
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
# No caching of dependencies, as the cache does not change when it is
# modified, and it can expire. See build_test.sh how to fetch an
# offline tarball with dependencies, and how to update that one if need
# be.
# - name: Cache conda
# id: cache-conda
# uses: actions/cache@v3
# env:
# cache-name: cache-conda
# with:
# path: |
# /usr/local/miniconda/envs
# key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/miniconda.json') }}
# restore-keys: |
# ${{ runner.os }}-build-${{ env.cache-name }}-
# ${{ runner.os }}-build-
# ${{ runner.os }}-
- name: build_test
# Build and test ASP
run: ./.github/workflows/build_test.sh
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
# This must be in sync with BinaryBuilder/auto_build
name: StereoPipeline-Artifact-build_test_mac_arm64
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/build_test_mac_x64.yml
================================================
name: build_test_mac_x64
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v3
- name: build_test
# Build and test ASP
run: ./.github/workflows/build_test.sh
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
# This must be in sync with BinaryBuilder/auto_build
name: StereoPipeline-Artifact-build_test_mac_x64
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/save_linux_deps.sh
================================================
#!/bin/bash
# Run this on a local machine to save the current dependencies as a release.
# This will wipe the old version with the same tag. See save_mac_deps.sh for
# more info.
# Check usage
if [ "$#" -lt 1 ]; then
echo "Usage: $0 tag"
exit 1
fi
tag=$1; shift
# Create the tarball of dependencies. This likely includes a pre-built ASP
# itself, but that is not a problem.
# Note: Must updated below the names of both envs if they change.
tarball=asp_deps.tar.gz
cd $HOME
echo Creating: $tarball
/usr/bin/time tar cfz $tarball \
miniconda3/envs/asp_deps \
miniconda3/envs/python_isis9
# Set up GitHub CLI
gh=$HOME/miniconda3/envs/gh/bin/gh
repo=git@github.com:NeoGeographyToolkit/BinaryBuilder.git
# Run $gh auth to authenticate
# Wipe old version
$gh release -R $repo delete $tag
# Save the tarball as a release
notes="Full tarball of latest ASP dev build dependencies"
/usr/bin/time $gh release -R $repo create $tag $tarball --title $tag --notes "$notes"
================================================
FILE: .github/workflows/save_mac_deps.sh
================================================
#!/bin/bash
# To update the Mac dependencies or create new ones, in manual (interactive)
# mode, run the ssh_mac_x64.yml / ssh_mac_arm.yml action to get ssh access to a
# Mac cloud instance.
# Then, fetch/build/update the dependencies. See
# https://stereopipeline.readthedocs.io/en/latest/building_asp.html
# for a high-level overview.
# Ideally all dependencies are built and then installed as conda packages.
# The script build_helper.sh has the commands for how build dependencies
# manually, if needed to understand failures when using conda.
# The updated dependencies should be installed in /Users/runner/miniconda3/envs.
# When done, and before exiting, save the dependencies, such as:
# mkdir -p ~/work/StereoPipeline/packages
# cd $HOME
# /usr/bin/time tar cfz ~/work/StereoPipeline/packages/asp_deps.tar.gz *conda3/envs
# After quitting the action (exiting the shell), the tarball will be saved as an
# artifact. Upload progress can be monitored in GitHub Actions.
# Then, from a local machine, which need not be a Mac, run this script.
# It will fetch the tarball from the cloud and then push it as a release
# to permanent location, with given tag.
# This tarball will be used to build VisionWorkplace and ASP. See the script
# build_test.sh.
# The tag set here must match the tag in build_test.sh and build_helper.sh. If
# changing here, must later change in the other places.
# This script will overwrite the dependencies. If in doubt, use it with a new
# tag, as the dependencies are very hard to recreate.
# TODO(oalexan1): For Intel Mac, the env exceeds the 2 GB GitHub release limit
# and must be split into two tarballs (asp_deps_p1.tar.gz and asp_deps_p2.tar.gz).
# This script does not yet handle the split. The build_test.sh script already
# expects two parts for Intel Mac.
# If the tarball with dependencies already exists locally, rather than being
# fetched as an artifact first, the commands from the latter part of
# this script can be run manually to upload the tarball as a release.
# How to run this script:
# For Mac x64:
# tag=asp_deps_mac_x64_xxx # sync up here with build_test.sh
# workflow="ssh_mac_x64.yml"
# $HOME/projects/StereoPipeline/.github/workflows/save_mac_deps.sh $workflow $tag
# For Mac Arm64:
# tag=asp_deps_mac_arm64_xxx # sync up here with build_test.sh
# workflow="ssh_mac_arm.yml"
# $HOME/projects/StereoPipeline/.github/workflows/save_mac_deps.sh $workflow $tag
# For Linux, the dependencies from the local machine can be saved as follows.
# tag=asp_deps_linux_xxx # change here
# $HOME/projects/StereoPipeline/.github/workflows/save_linux_deps.sh $tag
# Check usage
if [ "$#" -lt 2 ]; then
echo "Usage: $0 workflow tag"
exit 1
fi
# The workflow that saved the dependencies as artifact. Options:
# ssh_mac_x64.yml, ssh_mac_arm.yml
workflow=$1; shift
# The tag to use to save the dependencies. Must then use this tag
# to fetch the dependencies in build_test.sh and build_helper.sh.
tag=$1; shift
# The GitHub CLI tool. Can be installed in a new conda environment
# named 'gh' as follows:
# conda create -n gh -c conda-forge gh
gh=$(ls -d $HOME/*conda3/envs/gh/bin/gh)
repo=git@github.com:NeoGeographyToolkit/StereoPipeline.git
# Query the ${workflow}. Must check that that the top-most run is successful
$gh run list -R $repo --workflow=${workflow}
# Find the latest id, then fetch the artifacts for it
ans=$($gh run list -R $repo --workflow=${workflow} | grep -v STATUS | head -n 1)
completed=$(echo $ans | awk '{print $1}')
success=$(echo $ans | awk '{print $2}')
id=$(echo $ans | awk '{print $7}')
echo Stage: $completed
echo Status: $success
echo Id: $id
if [ "$success" != "success" ]; then
echo "Error: The ${workflow} workflow did not succeed"
exit 1
fi
echo Fetching the build with id $id from the cloud
echo $gh run download -R $repo $id
/bin/rm -rf ASP-dependencies-macOS # Must wipe this first, or else the download can fail
$gh run download -R $repo $id
# Must be careful with the line below. This is set in the ${workflow} file.
binaries=ASP-dependencies-macOS/asp_deps.tar.gz
if [ ! -f "$binaries" ]; then
echo "Error: File: $binaries does not exist"
exit 1
fi
# Add the tarball of dependencies as a release
# Can use a new tag here, or overwrite the existing tarball
# If making a new one, must make sure to update the tag in build_test.sh and build_helper.sh
repo=git@github.com:NeoGeographyToolkit/BinaryBuilder.git
# Wipe any old version
echo If present, deleting the old release for tag: $tag
$gh release -R $repo delete $tag -y 2>/dev/null # hide any error message for missing release
# Upload the new version
notes="Full tarball of latest ASP dev build dependencies"
echo Uploading a new version for tag: $tag
/usr/bin/time $gh release -R $repo create $tag $binaries --title $tag --notes "$notes"
================================================
FILE: .github/workflows/ssh_linux_arm.yml
================================================
name: ssh_linux_arm
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04-arm
steps:
# Fetch miniconda
- uses: conda-incubator/setup-miniconda@v3
with:
auto-activate-base: true
activate-environment: ""
# Fetch the code
- uses: actions/checkout@v3
# No caching of dependencies, as the cache does not change when it is
# modified, and it can expire. See build_test.sh how to fetch an offline
# tarball with dependencies, and how to update that one if need be.
# Set up ssh for interactive use
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3 # disconnects after about 40 minutes
timeout-minutes: 600
with:
limit-access-to-actor: true
# Upload the artifacts that were saved in the directory below before exiting
# the ssh session. Useful for saving any results produced in this session.
# Can be later downloaded manually and saved to a permanent location.
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ASP-dependencies-${{ runner.os }}
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/ssh_mac_arm.yml
================================================
name: ssh_mac_arm
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
steps:
# Fetch miniconda
- uses: conda-incubator/setup-miniconda@v3
with:
auto-activate-base: true
activate-environment: ""
# Fetch the code
- uses: actions/checkout@v3
# No caching of dependencies, as the cache does not change when it is
# modified, and it can expire. See build_test.sh how to fetch an offline
# tarball with dependencies, and how to update that one if need be.
# Set up ssh for interactive use
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3 # disconnects after about 40 minutes
timeout-minutes: 600
with:
limit-access-to-actor: true
# Upload the artifacts that were saved in the directory below before exiting
# the ssh session. Useful for saving any results produced in this session.
# Can be later downloaded manually and saved to a permanent location.
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ASP-dependencies-${{ runner.os }}
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/ssh_mac_x64.yml
================================================
name: ssh_mac_x64
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-15-intel
steps:
# Fetch miniconda
- uses: conda-incubator/setup-miniconda@v3
with:
auto-activate-base: true
activate-environment: ""
# Fetch the code
- uses: actions/checkout@v3
# Set up ssh for interactive use
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3 # disconnects after about 40 minutes
timeout-minutes: 600
with:
limit-access-to-actor: true
# Upload the artifacts that were saved in the directory below before exiting
# the ssh session. Useful for saving any results produced in this session.
# Can be later downloaded manually and saved to a permanent location.
# See save_mac_deps.sh for how to prepare the dependencies for upload.
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ASP-dependencies-${{ runner.os }}
path: ~/work/StereoPipeline/packages
retention-days: 2
continue-on-error: true
================================================
FILE: .github/workflows/update_mac_tests.sh
================================================
#!/bin/bash
# Given the latest test results for Mac, as fetched (automatically) from the
# cloud as an artifact, update the reference results and push the updated tests
# back to the cloud. See build_test.sh for how this gets prepared and downloaded
# to the machine that launches the build and regressions.
# The tarball having the tests.
data=StereoPipelineTest.tar
# Check if it exists
if [ ! -f "$data" ]; then
# Maybe it is in a subdir. That happens when fetching the artifact.
ans=$(ls */$data | head -n 1)
if [ "$ans" != "" ]; then
cd $(dirname $ans)
fi
fi
# Check again
if [ ! -f "$data" ]; then
echo "Error: File: $data does not exist"
exit 1
fi
# Extract
echo "Extracting $data"
tar xfv $data > /dev/null 2>&1 # this is verbose
if [ ! -d "StereoPipelineTest" ]; then
echo "Error: Directory: StereoPipelineTest does not exist"
exit 1
fi
# Here may need to do some manual inspections
# Update the failed tests (each 'gold' is overwritten with 'run').
# This assumes that the "run" directories are trusted to be correct.
echo "Updating the tests"
for f in StereoPipelineTest/ss*/run; do
g=${f/run/gold}
/bin/rm -rfv $g
/bin/mv -fv $f $g
done
# If the scripts need to be updated, do it here, manually
# Must make all scripts in bin and individual tests executable
chmod a+x StereoPipelineTest/bin/* StereoPipelineTest/*/*sh
echo "Creating a new tarball"
tar cfv $data StereoPipelineTest
# Make sure the gh tool is executable
gh=$(ls -d $HOME/*conda3/envs/gh/bin/gh)
if [ ! -x "$gh" ]; then
echo "Error: Cannot find gh"
exit 1
fi
echo "Pushing the updated tarball to the cloud"
repo=git@github.com:NeoGeographyToolkit/StereoPipelineTest.git
tag=0.0.1
echo Wipe the old tests and upload the new ones
$gh release -R $repo delete $tag -y # wipe old tarball
notes="Update test results"
$gh release -R $repo create $tag $data --title $tag --notes "$notes" # upload new
================================================
FILE: .gitignore
================================================
# Generally ignorable files.
*~
/build
/build_linux
/install
/install_linux
docs/_build
GitHubReleases.txt
.vscode
*.code-workspace
================================================
FILE: .readthedocs.yml
================================================
# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# Build documentation with MkDocs
#mkdocs:
# configuration: mkdocs.yml
# Optionally build your docs in additional formats such as PDF and ePub
formats:
- htmlzip
# Optionally set the version of Python and requirements required to build your docs
python:
install:
- requirements: docs/requirements.txt
================================================
FILE: AUTHORS.rst
================================================
The Ames Stereo Pipeline (ASP) was originally developed by the
Intelligent Robotics Group (IRG), in the Intelligent Systems Division
at the NASA Ames Research Center in Moffett Field, CA.
**Project Lead**
- Dr. `Ross Beyer <https://github.com/rbeyer>`_ (NASA/SETI Institute)
**Core Development Team**
- Oleg Alexandrov (KBR, Inc., at NASA Ames)
- Scott McMichael (KBR, Inc., at NASA Ames)
**Contributors and Developers**
- Zachary Moratto (NASA/Stinger-Ghaffarian Technologies, former ASP Lead Architect)
- Michael J. Broxton (NASA/Carnegie Mellon University, former ASP Lead Architect
and Project Lead, co-developer of the Vision Workbench)
- Matthew Hancher (NASA, co-developer of the Vision Workbench)
- Dr. Ara Nefian (NASA/Carnegie Mellon University, wrote the Bayes EM subpixel mode
and the early version of Shape-from-Shading)
- Mike Lundy (NASA/Stinger-Ghaffarian Technologies)
- Dr. Laurence Edwards (NASA, former IRG Terrain Reconstruction Lead)
- Monica Palaseanu-Lovejoy (USGS, lead the research on the bathymetry module, :numref:`bathy_intro`)
- Dr. Randolph Kirk (USGS, contributed many insights to the shape-from-shading functionality, :numref:`sfs_usage`)
- Yu Tao and Jan-Peter Muller (University College London, contributed the CASP-GO stereo processing system, :numref:`casp_go`)
- Vinh To (NASA/Stinger-Ghaffarian Technologies)
- Kyle Husmann (California Polytechnic State University)
- Sasha Aravkin (Washington State University)
- Aleksandr Segal (Stanford)
- Patrick Mihelich (Stanford University)
- Melissa Bunte (Arizona State University)
- Matthew Faulkner (Massachusetts Institute of Technology)
- Todd Templeton (UC Berkeley)
- Morgon Kanter (Bard College)
- Kerri Cahoy (Stanford University)
- Ian Saxton (UC San Diego)
- Trey Smith (NASA, lead the Astrobee and ISAAC projects, that resulted in the rig calibrator,
:numref:`rig_calibrator`)
- `mstyer <https://github.com/mstyer>`_
- `harguess <https://github.com/harguess>`_
- David Shean (University of Washington)
- Ben Smith (University of Washington)
- Andrew Annex (Johns Hopkins University)
- Joachim Meyer (University of Washington)
- Jay Laura (USGS)
- Shashank Bhushan (University of Washington)
Acknowledgments
---------------
The open source Stereo Pipeline leverages stereo image processing
work, led by Michael J. Broxton (NASA/CMU), Dr. Laurence Edwards
(NASA), Eric Zbinden (formerly NASA/QSS Inc.), Dr. Michael Sims
(NASA), and others in the Intelligent Systems Division at NASA Ames
Research Center. It has benefited substantially from the contributions
of Dr. Keith Nishihara (formerly NASA/Stanford), Randy Sargent
(NASA/Carnegie Mellon University), Dr. Judd Bowman (formerly NASA/QSS
Inc.), Clay Kunz (formerly NASA/QSS Inc.), and Dr. Matthew Deans
(NASA).
The initial adaptation of Ames's stereo surface reconstruction tools to
orbital imagers was a result of a NASA funded, industry led project to
develop automated DEM generation techniques for the MGS mission. Our
work with that project's Principal Investigator, Dr. Michael Malin of
Malin Space Science Systems (MSSS), and Co-Investigator, Dr. Laurence
Edwards of NASA Ames, inspired the idea of making stereo surface
reconstruction technology available and accessible to a broader
community. We thank Dr. Malin and Dr. Edwards for providing the initial
impetus that in no small way made this open source stereo pipeline
possible, and we thank Dr. Michael Caplinger, Joe Fahle and others at
MSSS for their help and technical assistance.
The tools for rig calibration (:numref:`rig_calibrator`), fusion of
points clouds into meshes (:numref:`multi_stereo`), and texturing of
meshes (:numref:`texrecon`), were originally developed as part of the
NASA ISAAC project, with Trey Smith as project manager, and rely
heavily on third-party packages, including Theia SfM, Ceres Solver,
VoxBlox, and MVS Texturing.
We'd also like to thank our friends and collaborators Dr. Randolph
Kirk, Dr. Brent Archinal, Trent Hare, Mark Rosiek, and David Mayer
of the United States Geological Survey's (USGS's) Astrogeology
Science Center in Flagstaff, AZ, for their encouragement and
willingness to share their experience and expertise by answering
many of our technical questions. We also thank them for their ongoing
support and efforts to help us evaluate our work. Thanks also to
the USGS ISIS team, especially Jeff Anderson, Kris Becker, Jay
Laura, and Jesse Mapel, for their help in integrating stereo pipeline
with the USGS ISIS software package.
Thanks go also to Dr. Mark Robinson, Jacob Danton, Ernest
Bowman-Cisneros, Dr. Sam Laurence, and Melissa Bunte at Arizona
State University for their help in adapting the Ames Stereo Pipeline
to lunar data sets including the Apollo Metric Camera.
We'd also like to thank Dr. David Shean, Dr. Ben Smith, and Dr. Ian
Joughin of the Applied Physics Laboratory at the University of
Washington for providing design direction for adapting Ames Stereo
Pipeline to Earth sciences.
Finally, we thank Dr. Ara Nefian, and Dr. Laurence Edwards for their
contributions to this software, and Dr. Terry Fong (IRG Group Lead
during the first decade or so of ASP's existence) for his management
and support of the open source and public software release process.
Portions of this software were developed with support from the
following sources from NASA Science Mission Directorate (SMD) and
Exploration Systems Mission Directorate (ESMD) funding sources:
- Mars Technology Program
- Mars Critical Data Products Initiative
- Mars Reconnaissance Orbiter mission
- Applied Information Systems Research program grant #06-AISRP06-0142
- Lunar Advanced Science and Exploration Research (LASER) program grants
#07-LASER07-0148 and #11-LASER11-0112
- ESMD Lunar Mapping and Modeling Program (LMMP)
- SMD Cryosphere Program
- The Resource Prospector site selection activity
- The VIPER mission site selection activity
- NASA-USGS Interagency Agreement #NNH16AC13I to support the Community
Sensor Model (CSM) work (2019-2021).
- Planetary Data Archiving and Tools program (PDART) grant #19-PDART19_2-0094
under Dr. Ross Beyer (2020-2022).
- NASA-USGS Interagency Agreement #30499, SAA2-403489 to support the satellite-derived
bathymetry work (2020-2021)
- NASA-USGS Interagency Agreement #NNH22OB02A to support interoperability between ISIS
and ASP (2022-)
- Decadal Survey Incubation for global Surface Topography and Vegetation (STV) grant #21-DSI-21-0008 under Dr. David Shean (2022-2025)
- Support for Open Source Tools, Frameworks, and Libraries (OSTFL) grant #20-OSTFL20-0050
under Dr. Ross Beyer (2023-2024)
Any opinions, findings, and conclusions or recommendations expressed in
this documentation are those of the authors and do not necessarily
reflect the views of the National Aeronautics and Space Administration.
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required (VERSION 3.15.5)
project(StereoPipeline)
if(APPLE)
cmake_policy(SET CMP0025 NEW)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)
endif(APPLE)
# Make it possible to append to these from the command line
set(CMAKE_CXX_FLAGS "" CACHE STRING "")
set(CMAKE_C_FLAGS "" CACHE STRING "")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++17 -DNDEBUG")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread -lpthread")
# VisionWorkbench cannot be built with latest OpenEXR due to API changes.
# The few places where this library was used were changed to use text files
# instead of .exr files. So we disable OpenEXR support by default.
set(USE_OPENEXR OFF CACHE BOOL "Use EXR (default OFF)")
set(USE_ISIS ON CACHE BOOL "Use ISIS (default ON)")
set(CORE_ASP_ONLY OFF CACHE BOOL "Build only core ASP (default OFF)")
if (APPLE)
# A workaround for the clang included with conda build
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlinker-version=305")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlinker-version=305")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mlinker-version=305")
# Prevent a pedantic error in recent clang
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-enum-constexpr-conversion")
# This a bugfix for spdlog issues
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_USE_CHAR8_T=0")
else()
# On Linux need to link to additional libraries
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm -lrt -lgcc_s")
endif()
# Tell cmake to look in the /cmake folder.
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
# Make sure we do a release type
set(CMAKE_BUILD_TYPE "Release")
message("Setting CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
add_subdirectory(src)
install(FILES "AUTHORS.rst" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "INSTALLGUIDE.rst" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "LICENSE" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "NEWS.rst" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "README.rst" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "stereo.default.example" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES "THIRDPARTYLICENSES.rst" DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY "examples" DESTINATION ${CMAKE_INSTALL_PREFIX})
# Install only the .rst files as images take too much space
install(DIRECTORY "docs" DESTINATION ${CMAKE_INSTALL_PREFIX}
FILES_MATCHING PATTERN "*.rst")
# Install the plugins directory and the files in it
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/plugins/stereo)
install(FILES "plugins/stereo/plugin_list.txt"
DESTINATION ${CMAKE_INSTALL_PREFIX}/plugins/stereo)
# Make a directory for wv_correct data and copy that data to it
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/share/wv_correct)
install(FILES "src/asp/WVCorrect/ms_correction_lookup.txt"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/wv_correct)
install(FILES "src/asp/WVCorrect/WV02_BAND3_CCD_CORR.tif"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/wv_correct)
install(FILES "src/asp/Camera/tests/ctx.json"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/tests)
# Install the default CASP-GO params
install(FILES "src/asp/Gotcha/CASP-GO_params.xml"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
================================================
FILE: CODE_OF_CONDUCT.rst
================================================
====================================
Contributor Covenant Code of Conduct
====================================
Our Pledge
----------
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Our Standards
-------------
Examples of behavior that contributes to a positive environment for our
community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
Enforcement Responsibilities
----------------------------
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
Scope
-----
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
-----------
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement listed
as the Project Lead or members of the Core Development Team in the AUTHORS.rst
file.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
----------------------
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
~~~~~~~~~~~~~
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
~~~~~~~~~~
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
3. Temporary Ban
~~~~~~~~~~~~~~~~
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
~~~~~~~~~~~~~~~~
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
Attribution
-----------
This Code of Conduct is adapted from the `Contributor Covenant
<https://www.contributor-covenant.org>`_ version 2.1, available at
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
Community Impact Guidelines were inspired by `Mozilla's code of conduct
enforcement ladder <https://github.com/mozilla/diversity>`_.
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: CONTRIBUTING.rst
================================================
============
Contributing
============
Contributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.
You can contribute to ASP in many ways:
Types of Contributions
----------------------
Report Bugs or Ask for Features via Issues
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We want to hear from you! You can report bugs, ask for new features,
or just raise issues or concerns via logging an `Issue via our GitHub
repo <https://github.com/NeoGeographyToolkit/StereoPipeline/issues>`_.
Fix Bugs or Implement Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Look through the GitHub Issues for bugs to fix or features to
implement. If anything looks tractable to you, work on it. Most (if
not all) pull requests should be based on an Issue, so if you're
thinking about doing some coding on a topic that isn't covered in an
Issue, please author one so you can get some feedback while you work
on your pull request.
Write Documentation
~~~~~~~~~~~~~~~~~~~
ASP could always use more documentation, whether as part of the
official docs, on the web in blog posts, articles, and such.
Submit Feedback
~~~~~~~~~~~~~~~
The best way to send feedback is to file an `Issue
<https://github.com/NeoGeographyToolkit/StereoPipeline/issues>`_.
Get Started!
------------
Ready to contribute?
You'll need to follow the instructions for building ASP from source,
which can be found in the INSTALLGUIDE.rst file or the Installation
chapter of the documentation.
1. Fork the `StereoPipeline` repo on GitHub.
2. Clone your fork locally::
$ git clone git@github.com:your_name_here/StereoPipeline.git
3. Create a branch for local development::
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
4. When you're done making changes, check that your changes pass a run
of `make gtest_all` (though note that the unit tests have been
broken recently so this won't work).
5. Commit your changes and push your branch to GitHub::
$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature
6. Submit a `pull request <https://github.com/NeoGeographyToolkit/StereoPipeline/pulls>`_.
Pull Request Guidelines
-----------------------
Before you submit a pull request, check that it meets these guidelines:
1. The pull request should include tests.
2. If the pull request adds functionality, the docs should be updated.
Add the feature to the list in NEWS.rst and potentially update the
README.rst or other documentation files.
What to expect
--------------
Our development of ASP is neither continuous, nor as well-funded as we
might like, and it is entirely possible that when you submit a PR
(pull request), none of us will have the time to evaluate or integrate
your PR. If we don't, we'll try and communicate that with you via the
PR.
For large contributions, it is likely that you, or your employer,
will be retaining your copyrights, but releasing the contributions
via an open-source license. It must be compatible with the Apache-2
license that ASP is distributed with, so that we can redistribute
that contribution with ASP, give you credit, and make ASP even
better! Please contact us if you have a contribution of that nature,
so we can be sure to get all of the details right.
For smaller contributions, where you (or your employer) are not
concerned about retaining copyright (but we will give you credit!),
you will need to fill out a Contributor License Agreement (CLA)
if we plan to accept your PR. The CLA assigns your copyright in
your contribution to NASA, so that our NASA copyright statement
remains true:
Copyright (c) YEAR, United States Government as represented by the
Administrator of the National Aeronautics and Space Administration.
All rights reserved.
There is an `Individual CLA <https://github.com/NeoGeographyToolkit/StereoPipeline/blob/master/docs/ASP_Individual_CLA.pdf>`_ and a `Corporate CLA
<https://github.com/NeoGeographyToolkit/StereoPipeline/blob/master/docs/ASP_Corporate_CLA.pdf>`_.
ASP People
----------
- An ASP **Contributor** is any individual creating or commenting
on an issue or pull request. Anyone who has authored a PR that was
merged should be listed in the AUTHORS.rst file.
- An ASP **Committer** is a subset of contributors, typically NASA
employees or contractors, who have been given write access to the
repository.
================================================
FILE: ChangeLog
================================================
================================================
FILE: INSTALLGUIDE.rst
================================================
Installation
============
Precompiled binaries are available for the stable releases and the current
development build. Conda packages exist for the stable versions
(:numref:`conda_intro`).
.. _release:
Precompiled binaries
--------------------
Linux
~~~~~
Choose either the latest build (recommended) or a stable release
from:
- `<https://github.com/NeoGeographyToolkit/StereoPipeline/releases>`_
No installation steps or administrative rights are necessary. Extract
the archive, and run the executables in the ``bin`` subdirectory as::
tar xvf StereoPipeline-3.6.0-2025-12-26-x86_64-Linux.tar.bz2
./StereoPipeline-3.6.0-2025-12-26-x86_64-Linux/bin/stereo --help
The result of the last command should be a help message.
To permanently add the ASP executable subdirectory to your PATH, add to your
shell configuration (e.g., ``~/.bashrc``), a line similar to::
export PATH="${PATH}":"/path/to/StereoPipeline/bin"
Then, run ``source ~/.bashrc`` (or open a new terminal) for the changes to take
effect.
The latest additions are documented in :numref:`news`.
MacOS
~~~~~
ASP is available for the Mac Intel and Mac Arm architectures. The latter is
somewhat experimental but was shown to work well in testing. The Mac Arm package
has all ASP logic except the minor ``libelas`` stereo algorithm
(:numref:`libelas`).
The installation steps are the same as for Linux. It is important to
note that:
- An error may be shown about not being able to verify the developers. That can
be overridden in the Privacy & Security settings of the system. Consider using
instead the conda-based installation (:numref:`conda_intro`), which should
not have this issue.
- Running the Intel build the first time will be slow, as Rosetta will
translate the instructions to the native architecture. Subsequent runs will be
faster.
Windows
~~~~~~~
ASP does not offer Windows binaries. However, the Linux build can be run on
Windows using the `Windows Subsystem for Linux
<https://learn.microsoft.com/en-us/windows/wsl/install>`_ (WSL). Once a recent
Linux distribution is installed and verified to work, the installation steps are
the same as for Linux.
.. _conda_intro:
Conda-based installation
------------------------
The ASP 3.6.0 release (December 26, 2025) can be installed via conda, together with
ISIS 9.0.0 (:numref:`planetary_images`) for Linux, Mac Intel, and Mac Arm.
The Mac Arm release is experimental but was tested rather thoroughly. Since USGS
did not release an ISIS version for Mac Arm (as of 12/2025), this is shipped
with an unofficial ISIS Arm conda package, hosted on the
``nasa-ames-stereo-pipeline`` channel. This one lacks the Kakadu JPEG2000
library support. Consider using the Intel release under Rosetta 2 for
mission-critical work.
To install ``conda``, see:
https://docs.conda.io/en/latest/miniconda.html
Make the fetched installation file executable and run it, such as::
chmod u+x ./Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
on Linux, and analogously on OSX. Use the suggested::
$HOME/miniconda3
directory for installation.
Configure the conda channels::
conda config --env --add channels conda-forge
conda config --env --add channels usgs-astrogeology
conda config --env --add channels nasa-ames-stereo-pipeline
Do not skip doing each of these three, even if you think you already
have some of these channels.
Run::
conda config --show channels
to ensure that the order of channels is::
- nasa-ames-stereo-pipeline
- usgs-astrogeology
- conda-forge
*Not having the channels in this order is likely to result in failure to install
ASP.* Do not use the ``defaults`` channel.
Install ASP with the commands::
conda config --set channel_priority flexible
conda create -n asp \
-c nasa-ames-stereo-pipeline \
-c usgs-astrogeology \
-c conda-forge \
-c defaults \
stereo-pipeline=3.6.0
This will create a new environment named ``asp`` and install ASP 3.6.0 together
with ISIS 9.0.0 and all other dependencies.
The priority setting is set to ``flexible``, as otherwise conda can get confused
if the same package (even with old versions) exists in more than one channel.
Note that the *latest build* (:numref:`release`) may have more features and
fixes than this official release.
Environment setup
~~~~~~~~~~~~~~~~~
Run::
conda activate asp
and set::
export ISISROOT=$CONDA_PREFIX
in any new shell. These should put the ASP binaries in the path, and will also
initialize various environmental variables, including ``ISISROOT`` and
``PROJ_DATA``.
Check if the ``stereo`` command is found by running::
which stereo
When working with planetary images with ISIS, the ``ISISDATA`` environmental
variable also needs to be set (:numref:`planetary_images`). For more information
see the `ISIS installation instructions
<https://github.com/USGS-Astrogeology/ISIS3>`_.
Alternative approaches
~~~~~~~~~~~~~~~~~~~~~~
Consider using ``mamba`` instead of ``conda`` for the installation, as it is
much faster. (Note that recent ``conda`` distributions default to using the
``mamba`` solver.)
ASP can be installed with Docker (`instructions
<https://github.com/uw-cryo/asp-binder>`_).
ASP can be built from source (:numref:`building_asp`).
Post-installation
-----------------
The next steps depend on whether it is desired to process planetary (non-Earth),
Earth, or aerial images.
.. _planetary_images:
Planetary images
~~~~~~~~~~~~~~~~
To process images from NASA's spacecraft that are exploring other planets,
install ISIS and its data. Summary of the steps:
#. Fetch ISIS binaries and install, following
https://github.com/DOI-USGS/ISIS3#installation
#. Fetch ISIS data, as detailed at
https://github.com/DOI-USGS/ISIS3#the-isis-data-area
#. Add the ISIS executables to your path:
- bash: ``export PATH="/path/to/isis/bin:${PATH}"``
- csh: ``setenv PATH "/path/to/isis/bin:${PATH}"``
#. Set the ``ISISDATA`` environmental variable to point to where your
ISIS data was downloaded, per the installation link above. For
example, in the ``bash`` shell, this is done as follows::
export ISISDATA="/path/to/isisdata"
Check that you have the directory ``$ISISDATA/base``.
#. Install Stereo Pipeline and set the ``PATH`` variable as above.
#. Try it out. See :numref:`lronac_csm` for a quick Lunar example which does not
require installing ISIS or it supporting data as above,
:numref:`moc_tutorial` for an example using Mars images and ISIS data, and
many other examples in :numref:`examples`.
Earth images
~~~~~~~~~~~~
Processing Earth images is described in the data processing tutorial in
:numref:`dg_tutorial`. See also examples for ASTER (:numref:`aster`), Pleiades
(:numref:`pleiades`), SkySat (:numref:`skysat`), and many more in
:numref:`examples`.
Aerial and historical images
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fetch the software as above. Processing images without accurate camera
pose information is described in :numref:`sfm`. See also examples for
declassified satellite images in :numref:`kh4`.
.. _system_rec:
System requirements
-------------------
To run ASP, a computer cluster sharing storage and connected via ssh is needed
(:numref:`pbs_slurm`).
As a rule of thumb, for images on the order of 20,000 x 20,000 pixels, a machine
with 40 GB of RAM 16 cores could likely produce a terrain model in 4 - 20 hours.
There is a lot of uncertainty here, and much depends on the choice of the stereo
algorithm (:numref:`stereo_alg_overview`), and if mapprojection is employed
(:numref:`mapproj-example`).
1 TB of storage or more is suggested.
Common errors
-------------
Here are some errors you might see, and what it could mean. Treat these
as templates for problems. In practice, the error messages might be
slightly different.
::
Error: **ERROR** Unable to initialize camera model in Camera Factory.
**PROGRAMMER ERROR** Unable to create a shape model from
given target and pvl.
**I/O ERROR** Unable to open [$ISISDATA/<Some/Path/Here>].
Stereo step 0: Preprocessing failed
You need to set up your ISIS environment or manually set the correct
location for ``ISISDATA`` (:numref:`planetary_images`).
::
bash: stereo: command not found
You need to add the ``bin`` directory of your deployed Stereo Pipeline
installation to the environmental variable ``PATH``
(:numref:`planetary_images`).
::
/bin/sh: camrange: command not found
You need to to add the ``bin`` directory of your ISIS installation to your path (:numref:`planetary_images`).
::
Cache size (500 MB) is larger than the requested maximum cache size
Consider increasing ``--cache-size-mb`` for your program.
This also may be a sign of large input TIF images being stored
in blocks as tall or as wide as the image. The storage scheme of
an image can be examined with the ``gdalinfo -stats`` command,
and an image can be rewritten with square blocks using the command::
gdal_translate -co compress=lzw -co TILED=yes -co INTERLEAVE=BAND \
-co BLOCKXSIZE=256 -co BLOCKYSIZE=256 input.tif output.tif
If the new images are used instead, that warning should go away and
the processing time should go down. Both ``gdalinfo`` and
``gdal_translate`` are included with ASP.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NEWS.rst
================================================
Changes since last release
--------------------------
Added a new program for distributed stereo processing across computing nodes
(:numref:`stereo_dist`).
Added a new program to study parameter sensitivity by running stereo on small
patches with different parameter combinations (:numref:`stereo_sweep`).
Added the ``asp_plot`` package for generating diagnostic plots and PDF reports
from ASP outputs (:numref:`asp_plot`).
Added cloud-optimized GeoTIFF (COG) support via the ``--cog`` option to
``point2dem``, ``mapproject``, etc. (:numref:`cog_output`).
Added support for plain-text match files (:numref:`txt_match`).
Added support for SPOT 6 and 7 exact linescan camera models (:numref:`spot67`).
Migrated SPOT 5 to a CSM linescan camera model (:numref:`spot5`). This enables
use of ``jitter_solve`` (:numref:`jitter_pleiades`).
Migrated PeruSat-1 to a CSM linescan camera model (:numref:`perusat1`). This
enables use of ``jitter_solve`` (:numref:`jitter_pleiades`).
For the ASTER camera (:numref:`aster`), removed the ``--aster-use-csm`` option
as that is the default. Removed the use of the helper RPC model for interest
point matching.
sfm_view (:numref:`sfm_view`):
* Brought the source code into the ASP repository from the external
MultiView dependency.
* Input images are no longer required. Only camera files are needed.
aster2asp (:numref:`aster2asp`):
* Added support for ASTER Level 1A V004 HDF format.
bathymetry (:numref:`bathy_intro`):
* Added a program for computing the effective refraction index of water
for a satellite band (:numref:`refr_index`).
* Added documentation on alternative spectral indices for water masking
(:numref:`bathy_water_masking`).
bathy_plane_calc (:numref:`bathy_plane_calc`):
* Refined the algorithm by taking into account that given a mask of land
pixels, the true water interface is somewhere half way between those and the
water pixels.
* Added the option ``--ortho-mask`` to use a georeferenced orthoimage
mask and a DEM to estimate the water plane (:numref:`bathy_plane_ortho_mask`).
* Added the option ``--lon-lat-measurements`` to use a CSV file with
longitude and latitude measurements and lookup heights in a DEM
(:numref:`bathy_plane_lonlat`).
* Removed the option ``--use-ecef-water-surface``. It is now always assumed
that the bathy plane is computed in local projected coordinates.
cam_test (:numref:`cam_test`):
* Added the options ``--bathy-plane`` and ``--refraction-index`` to model
bathymetry correction with ray bending according to Snell's law.
bundle_adjust (:numref:`bundle_adjust`):
* Replaced ``--save-cnet-as-csv`` with ``--save-cnet-as-gcp``. The control
network is now saved after optimization and outlier filtering, with
optimized triangulated point positions, including any input GCP.
* Added bathymetry support (:numref:`ba_bathy`).
jitter_solve (:numref:`jitter_solve`):
* Added ``--save-cnet-as-gcp`` to save the optimized control network in
GCP format, after outlier filtering (:numref:`bagcp`).
ipfind (:numref:`ipfind`):
* Added the option ``--binary-to-txt`` to convert .vwip files to text.
ipmatch (:numref:`ipmatch`):
* Added options for converting match files between binary and text formats
(:numref:`ipmatch_convert`).
* Added an option for merging match files (:numref:`ipmatch_merge`).
image_calc (:numref:`image_calc`):
* Added the option ``--stretch`` to stretch an image and save it with 8-bit
pixels, for visualization purposes (:numref:`image_calc_stretch`).
* For a single input image, the option ``-c`` (calculation operation) defaults
to ``var_0`` (identity operation).
* The default output data type is now ``float32`` (previously ``float64``).
disparitydebug (:numref:`disparitydebug`):
* Added the option ``--raw`` to extract the horizontal and vertical
disparities without normalization (:numref:`raw_disp`).
pc_align (:numref:`pc_align`):
* Print to the terminal and the log file the following initial and final
error stats: Mean, StdDev, RMSE, Median, NMAD.
* Changed the default for ``--diff-rotation-error`` from 1e-8 to 1e-5 degrees,
to avoid slow convergence in some cases due to numerical precision issues.
parallel_stereo (:numref:`parallel_stereo`):
* Added the option ``--proj-win`` to limit stereo to a projection window for
mapprojected images (:numref:`stereodefault`).
* The logic for consolidating the output directory has been given its own
stage (:numref:`entrypoints`).
* The DEM for mapprojected images can be set with ``--dem`` instead of as the
last positional argument (:numref:`mapproj-example`).
sfs (:numref:`sfs`):
* Recommend the variance-based uncertainty estimation (:numref:`sfs_unc`).
* Added the option ``--save-covariances`` (:numref:`sfs_opt`).
rig_calibrator (:numref:`rig_calibrator`):
* Replaced ``--camera-position-weight`` with ``--camera-position-uncertainty``.
* Added the option ``--heights-from-dem`` to constrain triangulated points
relative to a DEM.
* Added an example of an orbital rig with a DEM constraint (:numref:`orbital_rig`).
* All command-line options now use dashes instead of underscores. For example,
``--out_dir`` is now ``--out-dir``.
theia_sfm (:numref:`theia_sfm`):
* Made the SfM reconstruction deterministic by passing a fixed random seed
to TheiaSfM. Previously, results could vary between runs due to time-based
random seeding in RANSAC.
* All command-line options now use dashes instead of underscores. For example,
``--rig_config`` is now ``--rig-config``.
camera_solve (:numref:`camera_solve`):
* Made the SfM reconstruction deterministic by passing a fixed random seed
to TheiaSfM. Previously, results could vary between runs due to time-based
random seeding in RANSAC.
parse_match_file.py (:numref:`parse_match_file`):
* When converting from binary to text, descriptors are no longer saved by
default. Use the ``--save-descriptors`` option to include them.
stereo_gui (:numref:`stereo_gui`):
* The ``--colorize`` and ``--colorbar`` options now work with overlaid and
georeferenced images. Added ``--no-colorize`` (:numref:`colorize`).
mapproject (:numref:`mapproject`):
* Documented compatibility with the upcoming ISIS ``cam2map asp_map=true``
option, which uses the same per-pixel projection algorithm
(:numref:`mapproj_isis`).
* Consistently handle ISIS special pixels in ``.cub`` input images.
Misc:
* Greatly improved the speed of parsing WorldView and SPOT5 XML camera files.
* Removed the unused and undocumented option ``--use-least-squares`` for ray
triangulation in stereo and bundle adjustment.
* Added the option ``--bathy-plane-list`` to supplement ``--bathy-plane``
to various programs.
* Removed the old qi2txt program for reading IceBridge QFIT binary data.
* Removed unused quad-tree tile generators and visualization formats (TOAST,
Celestia, Gigapan, GMap, TMS, Uniview) from VisionWorkbench. Only KML is
kept for ``image2qtree``.
* Do not use more than 128 threads in ``parallel_stereo``, as OpenBlas
fails then.
* Removed the undocumented ``dem_mosaic`` options ``--first-dem-as-reference``
and ``--this-dem-as-reference``.
* The ``--t_projwin`` option in ``mapproject`` no longer subtracts one
grid size from the maximum, so the requested extent is fully covered.
* Much removal of templates and breaking up of functions and files into smaller
and better-organized components.
* Removed the unused HDR module, Python SWIG bindings, and legacy tools
(contourgen, blend, bayer, learnpca, doc-generate) from VisionWorkbench.
* Removed the ``grassfirealpha`` tool from VisionWorkbench. Simplified
``image2qtree`` to produce uint8 RGBA output, removing the
``--channel-type`` and ``--terrain`` options.
* Removed the unused ``georef`` tool from VisionWorkbench.
* Removed the ``--preserve-pixel-type`` option from ``undistort_image``.
* Removed the ``slopemap`` tool from VisionWorkbench. Use ``gdaldem slope``
and ``gdaldem aspect`` instead.
* Removed the ``hsv_merge`` tool. Use ``gdaldem color-relief`` with
``gdaldem hillshade`` for similar results.
* Removed the unused ``PixelHSV`` and ``PixelLuv`` pixel types from
VisionWorkbench.
* Updated from Qt5 to Qt6.
RELEASE 3.6.0, December 26, 2025
--------------------------------
DOI: https://zenodo.org/records/18064111
Stable release doc: https://stereopipeline.readthedocs.io/en/stable/index.html
- Available for Linux, Mac Intel, and Mac Arm (the latter is experimental).
- Includes ISIS 9.0.0 (experimental for Mac Arm), GDAL 3.8.1 and PDAL 2.9.3.
camera_solve (:numref:`camera_solve`):
* Works on Mac Arm.
* Removed dependency on OpenImageIO.
parallel_stereo (:numref:`parallel_stereo`):
* Added an example for JunoCam images (:numref:`junocam`).
* Added examples for the Chandrayaan-2 lunar orbiter (:numref:`chandrayaan2`).
* Rewrote the KH-9 example to take into account the improved modeling of
optical bar cameras and a new strategy for fixing local warping
(:numref:`kh9`).
* Added a status file that shows the progress in processing tiles
(:numref:`stereo_diag`).
* Added an output shapefile that shows the tiles being processed
(:numref:`stereo_diag`).
* Left and right alignment matrices are now saved in plain text format. Older
.exr files can no longer be read (:numref:`outputfiles`).
* Erode less at at image boundary during filtering when ``--subpixel-mode`` is
not between 1 and 6 (option ``--edge-buffer-size``,
:numref:`filter_options`).
* Determination of interest point matches is optional when either
``--corr-search`` or ``--seed-mode 2`` are set
(:numref:`stereodefault`).
parallel_sfs (:numref:`parallel_sfs`):
* When albedo and / or haze is modeled, initial estimates for these are
produced for the full site (:numref:`parallel_sfs_usage`).
sfs (:numref:`sfs`):
* Added the option ``--save-variances``, that saves the DEM variance
(and albedo variance, if albedo is floated).
* Added a method for removing seams in the SfS terrain (:numref:`sfs_seams`).
* Improved the documentation for how to measure and repair the misalignment
between the input DEM and output SfS DEM (:numref:`sfs_align_refine`).
* Added a documentation section for how to do registration based on an SfS
terrain to refine the alignment of this SfS DEM and the images
(:numref:`sfs_sim`).
* Options ``--albedo-constraint-weight`` and ``--albedo-robust-threshold`` are
respected when low-resolution initial albedo is estimated (with option
``--estimate-exposure-haze-albedo``).
* Replaced ``--save-computed-intensity-only`` with ``--save-sim-intensity-only``
and ``--save-meas-intensity-only``.
* Renamed ``comp-albedo-final.tif`` to ``albedo-final.tif``, for consistency with
other output files.
* Unused option ``--estimate-slope-errors`` got removed.
parallel_bundle_adjust (:numref:`parallel_bundle_adjust`):
* Bugfix for a crash when there are no interest point matches.
bundle_adjust (:numref:`bundle_adjust`):
* Added the option ``--max-gcp-reproj-err`` to remove GCPs with large
reprojection error.
* Changed the implementation of the camera position constraint
(:numref:`ba_cam_constraints`).
* Added the option ``--fixed-distortion-indices`` to control which lens
distortion parameters are kept fixed.
* The option ``--auto-overlap-params`` accepts an optional third argument (all
in quotes) that has the number of subsequent images that overlap to use in
matching. Also works with option ``--match-first-to-last``.
* For the option ``--mapprojected-data``, the DEM specified at the end is
optional, if it can be looked up from the geoheader of the mapprojected
images.
point2dem (:numref:`point2dem`):
* Added support for LAS COPC files (:numref:`point2dem_las`).
* Added the option ``--gdal-tap``.
* Removed unused options: ``--phi-rotation``, ``--omega-rotation``,
``--kappa-rotation``. A rotation matrix can be applied with ``pc_align``
instead.
pc_align (:numref:`pc_align`):
* Added support for LAS COPC files (:numref:`pc_align_las`).
* The hillshade-based alignment uses by default ``gdaldem hillshade``
(:numref:`pc_hillshade`).
cam_gen (:numref:`cam_gen`):
* Can fit a CSM linescan camera to an OpticalBar camera
(:numref:`opticalbar2csm`).
* Can fit a CSM frame camera model with radial distortion.
* Support pixel pitch that is not just 1 in CSM cameras.
* If the input is an ISIS cube and the output is a CSM camera, save the
ephemeris time, sun position, serial number, and target (planet) name.
* Added the option ``--camera-center-llh``.
mapproject (:numref:`mapproject`):
* Added the option ``--gdal-tap``.
* Bugfix for erosion during mapprojection at DEM boundary when the DEM and
output image have the same grid size.
dem2gcp (:numref:`dem2gcp`):
* Added the options ``--max-num-gcp``, ``--max-disp``, ``--gcp-sigma-image``.
* Added the options ``--image-list``, ``--camera-list``,
``--match-files-prefix``, and ``--clean-match-files-prefix`` to work
with multiple input images and matches.
* Added the option ``--max-pairwise-matches`` to control the maximum
number of matches loaded from any given match file.
jitter_solve (:numref:`jitter_solve`):
* Added documentation on limitations (:numref:`jitter_limitations`).
* Changed the implementation of the camera position constraint
(:numref:`jitter_camera`).
* Added the options ``--fix-gcp-xyz``, ``--use-lon-lat-height-gcp-error``.
* Changed the lens distortion model for ASTER cameras to be radial-tangential.
This produces better results after solving for jitter.
point2las (:numref:`point2las`):
* Added the option ``--dem`` to convert a DEM to LAS.
dem_mosaic (:numref:`dem_mosaic`):
* Added the option ``--gdal-tap``.
camera_footprint (:numref:`camera_footprint`):
* Added the option ``--output-shp`` to save the convex hull of the camera
footprint as a shapefile.
stereo_gui (:numref:`stereo_gui`):
* Added the option ``--zoom-all-to-same-region``.
image_align (:numref:`image_align`):
* Added the option ``--nodata-value``.
* Supports the same controls for interest point detection as
``bundle_adjust`` (:numref:`image_align_opts`).
* The value of option ``--output-prefix`` is now required to be non-empty. It
is set by default to ``out_image_align/run``.
image_subset (:numref:`image_subset`):
* This program is now multi-threaded. Each image is read fully in memory for
speed.
misc:
* Added minimum system requirements for running ASP (:numref:`system_rec`).
* Made the OpticalBar model 3x faster by switching from minimization in 3D
to root-finding in 2D with the Newton-Raphson method.
* Turned off experimental ``--subpixel-mode 6`` as it is failing to run
(:numref:`subpixel_options`).
* Unused ``pca`` mode in ``ipfind`` got removed.
* Bugfix for modifying the creation time of ISIS cubes when it was meant to
only read them.
* Bugfix for when ``parallel_stereo`` has the same value for the output prefix
and bundle adjustment prefix.
* Bugfix for stereo triangulation when the point cloud is huge and has data
only in corners.
RELEASE 3.5.0, April 28, 2025
-----------------------------
DOI: `10.5281/zenodo.15298734 <https://zenodo.org/records/15298734>`_
Stable release doc: https://stereopipeline.readthedocs.io/en/stable/index.html
*New platform*: An experimental native Mac M1/M2 Arm64 build is available
(:numref:`release`).
bundle_adjust (:numref:`bundle_adjust`):
* Replaced the algorithm for creating control networks when there are more
than two images. Notably more features in more than two images now can be
found.
* Added the option ``--save-adjusted-rpc`` to save RPC cameras with adjustments
applied to them (:numref:`rpc_and_ba`).
* Added the option ``--min-distortion`` to ensure small distortion parameters
get optimized.
* Added the option ``--max-triangulation-angle``.
* Compensate for the images in the input nvm being potentially in different
order than the images specified on the command line.
* The report file measuring statistics of registration errors on the ground
got broken up into errors per image and per image pair
(:numref:`ba_mapproj_dem`).
parallel_bundle_adjust (:numref:`parallel_bundle_adjust`):
* The default number of processes per node is 1/4 of the number of cores on
the head node, and the default number of threads per process is the number
of cores on the head node over the number of processes.
* The number of launched jobs is number of nodes times number of processes
per node. This appears best for load balancing.
* Create interest points (before matching) once per image, not each time per
image pair. This speeds up the processing.
mapproject (:numref:`mapproject`):
* If the input DEM is in the ``longlat`` projection, a projection
in meters is auto-determined (:numref:`mapproj_auto_proj`).
* Added the option ``--ref-map`` to borrow the grid size and projection from
an existing mapprojected image (:numref:`mapproj_refmap`).
* Add the option ``--query-pixel``.
jitter_solve (:numref:`jitter_solve`):
* Do two passes by default. This improves the results.
* Can model rig constraints between sensors (:numref:`jitter_rig`).
* Added an example for the Kaguya Terrain Camera (:numref:`jitter_kaguya`).
* Added the option ``--camera-position-uncertainty`` (:numref:`jitter_camera`).
* Can constrain against a sparse point cloud (:numref:`jitter_ref_terrain`).
* Added the option ``--smoothness-weight`` to control high-frequency changes
in the camera orientations in linescan cameras.
* Can use GCP files.
* Can read a control network from an nvm file.
* Write the stereo convergence angles. Can write registration errors on the
ground (:numref:`other_jitter_out`).
stereo_gui (:numref:`stereo_gui`):
* Changing the image threshold updates the display correctly.
* When creating GCP, ask before quitting without saving them. Save the IP as
well when GCP are saved.
* Added the option ``--gcp-sigma`` for creating GCP.
* Big speedup when rendering a stack of georeferenced images.
image_calc (:numref:`image_calc`):
* Added an example for how to extract the horizontal and vertical disparity
bands while setting invalid disparities to a no-data value
(:numref:`mask_disparity`).
sat_sim (:numref:`sat_sim`):
* Added the option ``--rig-sensor-rotation-angles``, to be able to produce
a rig to desired specifications (:numref:`sat_sim_rig_adjust`).
* Can apply a periodic or random perturbation to given cameras
(:numref:`sat_sim_perturb`).
* Added the option ``--blur-sigma``, to blur the simulated images. This can
help simulate the effect of degraded images due to fog, motion, etc.
parallel_stereo (:numref:`parallel_stereo`):
* Added an example of processing Umbra SAR images (:numref:`umbra_sar`).
* Added an example of refining intrinsics and stereo with Chang'e 3 images
(:numref:`change3`).
* The initial low-resolution disparity from a DEM works with mapprojected
images (:numref:`d_sub_dem`).
* Added a discussion of various ways ASP can make use of existing terrain data
(:numref:`existing_terrain`).
* If the number of matches from disparity is much less than requested, try to
find more matches. This usually brings their number in the ballpark.
* The option ``--num-matches-from-disparity`` was made equivalent to
``--num-matches-from-disp-triplets``, and the triplet logic now works
with mapprojected images (:numref:`dense_ip`).
* It is possible to mapproject either with ``dg`` or ``rpc`` cameras
when using mapprojected images in stereo with DigitalGlobe / Maxar
cameras (:numref:`dg-mapproj`).
* Enable stereo with vendor-supplied images that have been mapprojected onto
surfaces of constant height above a datum (:numref:`mapproj_ortho`).
* Added the option ``--band`` to process a given band (channel) from
multispectral images (:numref:`stereodefault`).
* With alignment methods ``none`` and ``epipolar``, the option
``--corr-search`` will work even when interest point matching fails
(:numref:`corr_section`).
* Skip tiles for which there is no valid low-resolution disparity.
* Throw an error if the left and right mapprojected images have different
resolutions, as this can lead to incorrect results.
* Print a warning in ``stereo_pprc`` and ``stereo_tri`` if the stereo
convergence angle is too small.
* Added the options ``--enable-atmospheric-refraction-correction`` and
``--enable-velocity-aberration-correction`` for Pleiades linescan cameras
(these are enabled by default for WorldView cameras only). It is not clear
if these corrections improve or not Pleiades accuracy.
sfm (:numref:`sfm`):
* Added an example for processing data acquired with an UAS, with known
metadata (:numref:`sfm_uas`).
sfs (:numref:`sfs`):
* Added an SfS example for Earth (:numref:`sfs_earth`).
* Added a CTX Mars example (:numref:`sfs_ctx`).
* Added the program ``image_subset`` for selecting a subset of images that
have almost the same coverage as the full input set
(:numref:`image_subset`).
* Added the option ``--sun-angles`` to specify the Sun azimuth and elevation
angles.
* Bugfix in modeling atmospheric haze.
* Removed the ability to work on multiple clips at once, as it was not used.
* Can ingest a provided albedo map (of same size as the input DEM). Option:
``--input-albedo``.
* Removed the RPC approximation logic. Use instead the option
``--use-approx-camera-models`` with ISIS cameras.
* Removed the option ``--float-cameras``. It is more reliable to optimize
the cameras beforehand, in bundle adjustment.
* Removed obsolete options ``--float-dem-at-boundary``,
``--float-sun-position``, ``--coarse-levels``.
* Have option ``--crop-input-images`` be always on.
pc_align (:numref:`pc_align`):
* Added the Nuth and Kaab algorithm (:numref:`nuth`).
* Added an example of how to use dense image correlation for alignment
(:numref:`pc_corr`).
* Speed up the computation of shared bounding box and loading of source
points.
cam2rpc (:numref:`cam2rpc`):
* When a DEM is passed in, sample not just the DEM surface but its bounding
box, to create a more robust RPC model.
* The produced RPC file has been streamlined to a minimum of metadata.
point2las (:numref:`point2las`):
* Replaced the option ``--triangulation-error-factor`` for saving the triangulation
error as a scaled int with the option ``--save-triangulation-error``, that
saves it in double precision without scaling.
* Added the options ``--save-intensity-from-image`` and ``--save-stddev``.
point2dem (:numref:`point2dem`):
* The default projection for WGS84 is now UTM / polar stereographic.
For other datums it is local stereographic (:numref:`point2dem_proj`).
* Adjust the region passed in via the option ``--t_projwin`` so that, as
usual, the DEM grid coordinates are integer multiples of the grid size.
* Handle robustly invalid input points.
* Remove old options ``--use-surface-sampling`` and ``--fsaa``.
* Bugfix for slow performance with dynamic CRS.
* Changed the default output nodata-value to -1e+6, as the smallest float
may not be displayed accurately by some software.
gcp_gen (:numref:`gcp_gen`):
* Make the interest point matching work better by invoking the full
machinery and options from ``bundle_adjust``.
image_align (:numref:`image_align`):
* Let the default alignment method be ``rigid`` rather than ``translation``.
cam_gen (:numref:`cam_gen`):
* Added the option ``--camera-center``.
* Can export an RPC camera model to .xml format (:numref:`cam_gen_rpc`).
dem_mosaic (:numref:`dem_mosaic`):
* Added the option ``--weight-list`` for blending DEMs given external weights
(:numref:`dem_mosaic_external_weights`).
* Renamed the option ``--dem-list-file`` to ``--dem-list``. The old option
is kept for backward compatibility.
* Can handle DEMs with NaN values.
dem_geoid (:numref:`dem_geoid`):
* Accept a custom geoid correction via ``--geoid-path``. Added support for a
Moon geoid.
orbit_plot (:numref:`orbit_plot`):
* Added the options ``--use-rmse``, ``--output-file``.
isis (:numref:`planetary_images`):
* Upgraded to ISIS 8.3.0.
misc:
* The logic for triangulation with RPC cameras changed (:numref:`rpc_tri`).
* In ``bundle_adjust`` and ``jitter_solve``, save the lists of images and
optimized camera file names (or adjustments). Can be passed in back to
any of these tools (:numref:`ba_out_cams`).
* The option ``--flann-method`` in ``bundle_adjust`` and ``stereo`` defaults to
using the slower but deterministic ``kmeans`` method for a smaller set of
interest points, and to ``kdtree`` otherwise (:numref:`stereodefault-pprc`).
* When creating dense interest point matches from disparity and mapprojected
images, the match file reflects the name of the original unprojected images
(:numref:`dense_ip`).
* Bugfix for a crash with the ``asp_sgm`` and ``asp_mgm`` algorithms when the
disparity search range is large.
* Print the stereo convergence angle in ``stereo_pprc`` with mapprojected
images and with epipolar alignment. These are the remaining cases that were
not handled before.
* The ``mapproject`` and ``parallel_sfs`` programs will not fail if the work
directory has spaces (this fix is a workaround, the bug is in GNU Parallel).
* Renamed ``--csv-proj4`` to ``--csv-srs``. This accepts any GDAL WKT,
GeoJSON, or PROJ string. The previous option is still accepted for backward
compatibility.
* Support images with up to 12 bands (channels), up from 6.
* Support files with the .nitf extension.
* Can handle no-data values larger than valid pixel values.
* Wiped extremely old and unused SPICE logic.
* Wiped the unused old option ``--mask-flatfield``. Can use with stereo
the option ``--nodata-value`` to mask values no more than this value.
* The ``geodiff`` program output image is with float pixels, rather than
in double precision.
* Have the OpenCV interest point detectors respect the ``--threads`` option.
* Have ``bundle_adjust`` and ``parallel_stereo`` use same
``--ip-inlier-factor`` value by default.
* Bugfix for loading camera adjustments when mapprojected images are passed
in, rather than the raw ones.
* Can read Airbus Pleiades RPC XML files that have both a "global" and a
"partial" camera model. The global one will be used.
* Dependence on package ``htdp`` removed. This was needed for
``datum_convert``.
RELEASE 3.4.0, June 19, 2024
----------------------------
*This release is is available only as binaries, and not as a conda package*
(:numref:`conda_intro`).
DOI: `10.5281/zenodo.12176190 <https://zenodo.org/records/12176190>`_
Stable release doc: https://stereopipeline.readthedocs.io/en/stable/index.html
New tools:
* Added ``orbit_plot.py`` (:numref:`orbit_plot`), a tool for plotting
camera orientations along an orbit (contributed by Shashank Bhushan).
* Added ``gcp_gen`` (:numref:`gcp_gen`), a program for generating ground
control points (GCP) based on ortho images. Helps create camera models from
scratch.
* Added ``dem2gcp`` (:numref:`dem2gcp`), a tool that can greatly help solve
for lens distortion that manifests itself as large horizontal warping in the
DEM.
New camera support:
* Added the ability to use the CSM camera model with ASTER images
(:numref:`aster_csm`).
New external library support:
* Migrated to PDAL 2.6.0 from libLAS for LAS input/output (in ``pointlas``,
``point2dem``, and ``pc_align``), as libLAS is no longer developed.
WorldView (DigitalGlobe) cameras (:numref:`dg_tutorial`):
* The WorldView linescan model got moved to a CSM implementation. The
transitional option ``--dg-use-csm`` was removed. The new implementation is
about 5x faster for ground-to-image projections.
* Re-enabled correcting velocity aberration and atmospheric refraction.
These corrections are now implemented in the CSM camera model, and, unlike
before, play nicely with bundle adjustment (:numref:`dg_csm`).
* The options ``--enable-correct-velocity-aberration`` and
``--enable-correct-atmospheric-refraction`` got removed.
* Non-DG cameras do not use these corrections, as a case for that has not been
made.
jitter_solve (:numref:`jitter_solve`):
* Added an example for ASTER cameras (:numref:`jitter_aster`).
* Added an example with 27 CTX images (:numref:`jitter_multiple_images`).
* Added the option ``--weight-image``, to weigh observations based on
geographic location of triangulated points (:numref:`limit_ip`).
* Can handle several sensors with very similar positions and orientations
(:numref:`jitter_rig`).
* Support reading the ISIS ``jigsaw`` binary control network
format (:numref:`jitter_ip`).
* Can read and write CSM model state embedded in ISIS .cub files
(:numref:`embedded_csm`).
* Replaced the option ``--translation-weight`` with
``--camera-position-weight``, which is off by default, as it may affect the
convergence. The new option adapts appropriately to the number of interest
points and the ground sample distance (:numref:`jitter_camera`).
* The ``--tri-weight`` constraint is now the default, with a positive value of
0.1. This is adjusted for GSD (:numref:`jitter_tri_constraint`).
* Added report files having the change in camera positions
(:numref:`jitter_cam_offsets`), triangulated points
(:numref:`jitter_tri_offsets`), and stats of pixel reprojection errors per
camera (:numref:`jitter_errors_per_camera`).
* Replaced the option ``--heights-from-dem-weight`` with
``--heights-from-dem-uncertainty`` (1 sigma, in meters). This is more
physically meaningful (as a rule of thumb, use the inverse of what was
previously the weight value).
* Integrated the logic behind ``--reference-dem`` into ``--heights-from-dem``,
with an approach that combines the strength of both. Removed
``--reference-dem``.
* Can use anchor points with frame cameras.
* Added ``--num-anchor-points-per-tile``. This helps when different
images have different sizes but want to ensure the same point density.
* Added the option ``--anchor-weight-image`` that is used to limit
where anchor points are placed.
* The roll and yaw constraints no longer assume linescan camera positions and
orientations are one-to-one.
* Order of images in each interest point match file need not be the same
as for input images.
bundle_adjust (:numref:`bundle_adjust`):
* Added the ability to refine the camera intrinsics for several groups of
cameras, with each group sharing intrinsics (:numref:`kaguya_ba`).
* Can mix frame and linescan cameras, while controlling for each
group of cameras which intrinsics should be optimized
(:numref:`ba_frame_linescan`).
* Support reading and writing the ISIS ``jigsaw`` binary control network
format (:numref:`jigsaw_cnet`).
* Can read and write CSM model state embedded in ISIS .cub files
(:numref:`embedded_csm`).
* Support reading and writing the NVM format for control networks
(:numref:`ba_nvm`).
* Added the option ``--camera-position-weight``, with a default value of 0.0.
This is an internally adjustable constraint to keep the cameras from moving
too much. It may prevent the reduction in reprojection error
(:numref:`ba_cam_constraints`).
* Remove the option ``--translation-weight``. The translation is now
automatically controlled by default by the camera position weight.
* Added the option ``--camera-position-uncertainty`` to set hard constraints
on the horizontal and vertical uncertainty for each camera
(:numref:`ba_cam_constraints`).
* Added report files having the change in camera positions
(:numref:`ba_camera_offsets`) and triangulated points
(:numref:`ba_tri_offsets`).
* The option ``--tri-weight`` is now set by default to 0.1, and adjusted for
GSD. The option ``--camera-weight`` is by default 0.0. This work better
than before at preventing the cameras from moving when optimizing them.
* Replaced the option ``--heights-from-dem-weight`` with
``--heights-from-dem-uncertainty`` (1 sigma, in meters). This is more physically
meaningful (as a rule of thumb, use the inverse of what was previously the
weight value).
* Integrated the logic behind ``--reference-dem`` into ``--heights-from-dem``,
with an approach that combines the strength of both. Removed
``--reference-dem``.
* Added the option ``--propagate-errors`` to propagate the uncertainties from
input cameras to triangulated points (:numref:`ba_error_propagation`).
* Added the option ``--weight-image``, to weigh observations based on
geographic location of triangulated points. (:numref:`limit_ip`).
* For ASTER cameras, use the RPC model to find interest points. This does
not affect the final results but is much faster.
* When optimizing intrinsics, cameras that do not share distortion can
have different distortion types and sizes. (:numref:`limit_ip`).
* Each image passed to ``--mapprojected-data`` reads from its geoheader
the camera and adjustment prefix for undoing the mapprojection.
* Fixed a bug when both ``--initial-transform`` and
``--input-adjustments-prefix`` are used.
* Can use the image names in ``--camera-list`` when images contain the camera
models.
* The pixel reprojection errors are adjusted correctly for pixel sigma in
the report files (:numref:`ba_errors_per_camera`, :numref:`ba_err_per_point`).
* The default outlier removal parameters are more generous, to avoid removing
valid interest point matches when the input images have distortion (option
``--remove-outliers-params``).
* The combination of options ``--mapprojected-data`` and
``--auto-overlap-params`` will restrict the interest point matching to the
region of overlap (expanded by the percentage in the latter option). This
can result in great efficiency gains for large images.
* Made the Tsai lens distortion agree precisely with OpenCV's implementation
(:numref:`pinholemodels`). There was a small numerical problem and the K3
coefficient was not part of the distortion model.
* Replaced the Tsai lens undistortion implementation, for a 10x speedup.
* Added the OpenCV fisheye lens distortion model and also the FOV model
(:numref:`pinholemodels`). These are for wide-angle lenses.
* Bugfix: points for which initial triangulation failed are flagged as
outliers right away. See ``--forced-triangulation-distance`` for
fine-grained control.
* Order of images in each previously created interest point match file need
not be the same as for input images.
* RPC lens distortion is now applied to pixels that are normalized by focal
length, in addition to being offset by the principal point. This is
consistent with the radial-tangential and fisheye models, and produces a
more accurate fit to other models. *Previously created models are now
invalid*.
* RPC undistortion is now done with a solver rather than using separate
undistortion coefficients. This much more accurate but slower
(:numref:`pinholemodels`).
* Added an example of using RPC distortion for KH-7 cameras, for which
an exact model is not available (:numref:`kh7_fig`).
* Ensure that outlier filtering with ``--min-triangulation-angle`` is done
after each pass with refined cameras and for all ways of reading a control
network.
* Load and save the camera models in parallel, for speed (except for ISIS).
* Bugfix: if some intrinsics are shared, sync them up before optimization.
parallel_stereo (:numref:`parallel_stereo`):
* Added Kaguya processing example (:numref:`kaguya_tc`).
* When a run finished successfully, combine the data from subdirectories and
delete these. See ``--keep-only`` for more options.
* Made the tiles for the ``asp_mgm`` / ``asp_sgm`` algorithms bigger, with
smaller padding, which should be about 2x faster (:numref:`ps_tiling`).
* Added an illustration of several stereo algorithms (:numref:`stereo_alg_fig`).
* Fixed a failure when processing images that have very large blocks (on the
order of several tens of thousands of pixels along some dimension, as shown
by ``gdalinfo``). A warning, progress bar, and timing info is displayed.
* For the ``asp_sgm`` and ``asp_mgm`` algorithms allow ``cost-mode`` to
have the value 3 or 4 only, as other values produce bad results.
* Fix a failure when the working directory has a space in its name.
* Bugfix for memory usage with very large images.
point2dem (:numref:`point2dem`):
* Added the option ``--auto-proj-center``, to automatically compute the
projection center for stereographic and other projections
(:numref:`point2dem_proj`).
* When the lon-lat projection is used, the output DEM longitude range
is always in [-180, 180], unless using [0, 360] results in a smaller range
(such as when crossing the 180 degree meridian).
* Added the option ``--scalar-error`` to find the norm of the triangulated
error vector (if applicable).
* Can read a ground-level point cloud stored as a tif file with 3 bands,
representing the x, y, and z coordinates of the points, with z being
vertical (option ``--input-is-projected``).
* Bugfix for when all heights are equal. A valid DEM is produced.
* Do not assume the datum is WGS84 by default, as this can result in
incorrect DEMs. The datum, projection, or semi-axes must be set
(or read from the input PC/LAS file).
gdal (:numref:`gdal_tools`):
* Full support for WKT and GeoJSON for the projection string (option
``--t_srs``) in ``point2dem``, ``point2las``, ``mapproject``,
``dem_mosaic``, ``cam2rpc``. Can still use PROJ.4 strings.
* Georeferenced images with different datums cannot be used together. Use
``gdalwarp`` to convert them to a common datum.
* Upgraded to GDAL 3.8.0 and PROJ 9.3.0.
csm (:numref:`csm`):
* Upgraded to USGSCSM 2.0.1.
* Fixed several problems in generation of CSM cameras for MSL Curiosity Nav
and Mast images. Much large-scale testing was performed. Updated the
example showing how to create stereo from either Nav or Mast stereo pairs
(:numref:`csm_msl`).
* A multi-Martian-day example for MSL added (:numref:`csm_msl_multiday`).
* Added support for the radial and tangential distortion model
with 3 radial distortion parameters and 2 tangential ones. Tested
that it agrees with the OpenCV implementation.
* Fixed a small bug in radial distortion implementation.
stereo_gui (:numref:`stereo_gui`):
* Can show scattered data with a colorbar and axes
(:numref:`scattered_points_colorbar`).
* Renamed ``--colorize-image`` to ``--colorbar``.
* Right-click on a colorized image to set the range of intensities to
colorize.
* Can view ISIS control network files (:numref:`stereo_gui_isis_cnet`).
* Auto-guess and load ``pc_align`` error files (:numref:`pc_align_error`).
* When loading an .nvm file with features that are not shifted relative
to the optical center, must specify ``--no-shift``. This avoids confusion
as to whether a shift is present or not (:numref:`stereo_gui_nvm`).
colormap (:numref:`colormap`):
* Added the option ``--hillshade`` to create a hillshaded colormap.
image_calc (:numref:`image_calc`):
* When adding new keywords to metadata geoheader, do not erase the existing
ones (if a keyword already exists, its value will be modified).
* Added the ability to create a random image.
pc_align (:numref:`pc_align`):
* Add the option ``--skip-shared-box-estimation``.
historical_helper.py (:numref:`historical_helper`):
* Added the ability to set a custom path to the needed ``convert``
executable and described how that tool can be installed.
sfs (:numref:`sfs`):
* Added two examples for Kaguya TC, for single and multiple illumination
conditions (:numref:`sfs_kaguya`).
* Added the option ``--albedo-robust-threshold``.
isis (:numref:`moc_tutorial`):
* The ISIS libraries are compiled from source, and reflect the code after
the ISIS 8.0.3 release (:numref:`conda_intro`).
* Made the operation of projecting into an ISIS linescan camera 2.2-2.6 times
faster by using the secant method to find the best sensor line.
* Expanded the ``jigsaw`` documentation (:numref:`jigsaw`). This is the
ISIS bundle adjustment tool.
cam_gen (:numref:`cam_gen`):
* Can fit a CSM frame camera to a given input camera, including distortion
(:numref:`cam_gen_frame`).
* Can export linescan cameras to CSM format (:numref:`cam_gen_linescan`).
* Can create cameras given longitude, latitude, height above datum, and roll,
pitch, yaw angles (:numref:`cam_gen_extrinsics`).
rig_calibrator (:numref:`rig_calibrator`):
* Can export the interest point matches, cameras, and the OpenCV lens
distortion model for use with ``bundle_adjust`` (:numref:`rc_ba`).
* Added documentation for how to register the produced cameras to the ground
for a planet (:numref:`msl_registration`).
* Can fix the translation and/or rotation component of a rig configuration.
* Can constrain camera positions with ``--camera_position_weight``.
* Added two more naming conventions, to help process existing data
out-of-the-box. Also for ``theia_sfm`` and ``sfm_merge``.
:numref:`rig_data_conv`.
* Thoroughly validated with an orbital rig (in addition to indoor rigs).
lronac2mosaic.py (:numref:`lronac2mosaic`):
* Run ``spiceinit`` before calling ``lronaccal``, and re-enable all
options for the latter command, which were disabled due to a bug
in ISIS that was fixed in version 7.2.
* Invoke ``spiceinit`` with ``spksmithed=true``.
* Add the option ``--spiceinit-options``.
camera_solve (:numref:`camera_solve`):
* Switched to cascade matching from brute force matching, which is much faster.
* Always reuse the Theia SfM matches.
dem_mosaic (:numref:`dem_mosaic`):
* Bugfix for option ``--use-centerline-weights``.
misc:
* Made all tools that spawn processes in parallel use the option
``--parallel-options``, with default ``--sshdelay 0.2``, to avoid
failure on certain architectures.
* For ASTER (:numref:`aster`), the model loaded by default is now linescan
rather than RPC.
* Fixed a bug in outlier filtering when the interest points are very noisy.
* Fixed a couple of runtime errors when using conda packages on OSX.
* Eliminated a procedure for cleaning the name of an input path that was
replacing two slashes with one slash, resulting in inconsistencies.
* Robustly handle 360 degree longitude offsets without classifying
georeferenced images into [-180, 180] or [0, 360] types.
* Fix an error in conversion between projections for non-Earth images.
* The North-East-Down coordinate system assumes an ellipsoid, not a sphere,
and takes into account the point elevation. This fixes some small
inaccuracies in error propagation and reporting in ``pc_align``.
* The OSX build now gets created and tested via GitHub Actions.
* Very old jitter adjustment logic was removed. The ``jitter_solve``
tool must be used instead.
* For stereo, increased ``--ip-num-ransac-iterations`` from 100 to 1000,
as for ``bundle_adjust``. This can make a difference for noisy data.
* Do not keep auxiliary files with temporary names in the work directory for
``parallel_stereo`` and ``parallel_bundle_adjust``. Use run's output
directory and proper names.
* Ensure any sequence of quaternions in a CSM linescan model is normalized
and there is no sign flip along the sequence. Such a flip was resulting
in incorrectly interpolated camera orientations.
* Auto-guess the planet for Pinhole cameras (For Earth, Moon, Mars).
* Documented the program ``view_reconstruction``
(:numref:`view_reconstruction`), with a figure.
* Switched by default to a slower but deterministic method for matching
interest points in ``bundle_adjust`` and ``parallel_stereo``. Normally this
is not a bottleneck. See ``--flann-method`` in :numref:`stereodefault-pprc`.
* Made RANSAC multi-threaded. This speeds up interest point matching.
* Added a sanity check: If the user sets ``--t_srs`` to any tool, it
must not be empty.
* Added sanity checks to ensure no mix-up of datums from different planets in
different inputs for the stereo tools, ``bundle_adjust``, ``jitter_solve``,
``mapproject``, ``cam_test``, and ``cam_gen``.
* Upgraded to Boost 1.82.0.
RELEASE 3.3.0, August 16, 2023
------------------------------
DOI: `10.5281/zenodo.8270270 <https://zenodo.org/record/8270270>`_
Stable release doc: https://stereopipeline.readthedocs.io/en/stable/index.html
New tools:
* Added ``sfm_merge`` (:numref:`sfm_merge`), a tool to merge several
SfM reconstructions that may or may not have shared images.
* Added ``sfm_submap`` (:numref:`sfm_submap`), a tool to extract
a submap from a Structure-from-Motion map in .nvm format,
as produced by ``theia_sfm`` (:numref:`theia_sfm`) or refined
with ``rig_calibrator`` (:numref:`rig_calibrator`).
* Added a couple of small Python scripts for handling ROS bags
(:numref:`ros_tools`). No ROS binaries are shipped.
* Added support for the Pleiades NEO exact linescan model
(:numref:`pleiades_neo`).
* Added ``sat_sim`` (:numref:`sat_sim`), a tool to create simulated
satellite images camera models for pinhole or linescan sensors.
* Added ``sfm_view`` (:numref:`sfm_view`), a tool for viewing orbital
Pinhole camera models. It is a modification of the ``umve`` program.
csm (:numref:`csm`):
* Added initial support for using CSM camera models with MSL Curiosity
(:numref:`csm_msl`).
parallel_stereo (:numref:`parallel_stereo`):
* Can propagate horizontal ground plane standard deviations (stddev)
specified for each camera through triangulation, obtaining the
horizontal and vertical stddev for each triangulated point.
For DigitalGlobe RPC and Pleiades linescan cameras the input
horizontal stddev can be read from camera files. A formula to go
from known CE90 to input horizontal stddev is provided
(:numref:`error_propagation`).
* Can propagate the covariances of satellite positions and
quaternions to the triangulated point cloud for Maxar
(DigitalGlobe) linescan cameras (:numref:`error_propagation`).
* Documented the pre-processing options ``--stddev-mask-kernel``
and ``--stddev-mask-thresh``
(:numref:`stereodefault-pprc`). Fixed a bug in writing
out debug images for this option.
* The cameras files used in mapprojection can be switched to other
ones for the purpose of doing stereo or reusing a stereo run
(:numref:`mapproj_reuse`).
* Added the option ``--matches-per-tile``, to attempt to guarantee
that each 1024 x 1024 tile has about this many number of matches.
* Bugfix for stereo with mapprojected Pleiades images. If the
mapprojection is done with the exact (non-RPC) cameras, stereo
must load the exact cameras when undoing the mapprojection.
bundle_adjust (:numref:`bundle_adjust`):
* Validated that given about a thousand input images acquired with three views
and much overlap, one can have very tight control of the cameras in bundle
adjustment, while improving the self-consistency of the camera configuration
(:numref:`skysat_stereo`).
* Validated the option ``--reference-dem`` for bundle adjustment. This works
even when rays obtained during triangulation are parallel.
* Added the option ``--matches-per-tile``, to attempt to guarantee that each
1024 x 1024 tile has about this many number of matches (example in
:numref:`ba_examples`).
* Bugfix for slow performance and memory usage for a large number of images.
jitter_solve (:numref:`jitter_solve`):
* Added the options ``--roll-weight`` and ``--yaw-weight`` to control the
amount of change in these angles relative to the along-track direction. To
be used with synthetic cameras created with ``sat_sim`` (:numref:`sat_sim`).
* Added a section discussing solving for jitter with synthetic camera models
(:numref:`jitter_sat_sim`).
* The solver can mix and match linescan and pinhole (frame) camera images if
the inputs are all in the CSM format (:numref:`jitter_linescan_frame_cam`).
* Added a section on how to prepare interest point matches
(:numref:`jitter_ip`).
* Validated the option ``--reference-dem`` for bundle adjustment. This works
even when rays obtained during triangulation are parallel.
* Bugfix for reverse scan direction.
* Added an example for Pleiades cameras (:numref:`jitter_pleiades`),
comparing two ways of setting ground constraints.
sfs (:numref:`sfs`):
* Created an SfS DEM of size 14336 x 11008 pixels, at 1 m pixel with
420 LRO NAC images with various illuminations and orientations.
Reliably bundle-adjusted 814 LRO NAC images in which the shadows
were observed to make a full 360 degree loop, with a total of 614k
triangulated points. Updated the documentation reflecting
latest best practices (:numref:`sfs-lola`).
* Create more detail in the reconstructed DEM in borderline lit
regions. Option: ``--allow-borderline-data``
(:numref:`sfs_borderline`).
* Added the options ``--image-list`` and ``--camera-list`` for when
the number of images becomes too large to set on the command line.
rig_calibrator (:numref:`rig_calibrator`):
* Added a detailed tutorial describing how this tool was used to
create a full 360-degree textured mesh of the JEM ISS module
(:numref:`sfm_iss`) using data acquired with two rigs (6 sensors).
* Added an example for the MSL Curiosity rover (:numref:`rig_msl`).
* Allow multiple rigs to be jointly optimized (the rig constraint
applies within individual rigs and not between them).
* Added the option ``--extra_list`` to insert additional images
close in time to some of the images already on the rig (for
the same or different rig sensor). Helps easily grow a map and
complete a rig.
* Added the option of keeping a subset of the camera poses fixed (for
when those have been validated in a smaller map).
* Images for any of the rig sensors (not just the reference one) can
be used in registration (but all must be for same sensor).
* Added the ``--save_pinhole_cameras`` option to save the optimized
cameras in ASP's Pinhole format (with no distortion for now).
* Absorb ``--rig_transforms_to_float`` into ``--camera_poses_to_float``.
* Save alongside an .nvm file a separate file having the values of
optical center point that are subtracted from each interest point
(for plotting in ``stereo_gui``).
* Merge the interest point tracks created as part of rig calibration
with the matches read from disk beforehand.
* Fix for too many valid interest point matches being filtered out.
voxblox_mesh (:numref:`voxblox_mesh`):
* Added median filtering of input point clouds (option
``--median_filter``).
* Added weighing of depth points given their distance from the
sensor (option ``--distance_weight``).
multi_stereo (:numref:`multi_stereo`):
* Left and right images can be acquired with different sensors.
* Use ``--left`` and ``--right`` to specify which stereo pairs to
run.
texrecon (:numref:`texrecon`):
* Can create a texture with images from multiple sensors.
point2dem (:numref:`point2dem`):
* Added the option ``--propagate-errors`` to grid the stddev values
computed during stereo triangulation.
* Added the option ``--input-is-projected`` to specify that the input
coordinates are already in the projected coordinate system.
stereo_gui (:numref:`stereo_gui`):
* Can read, write, edit, and overlay on top of images polygons in
plain text format in addition to the .shp format. Per-polygon
colors are supported.
* Can read nvm files whose features are shifted relative to the
optical center, if an ``.nvm`` file is accompanied by an
``_offsets.txt`` file.
* Added the option ``--preview`` to load one image at a time,
and quickly cycle through them with the 'n' and 'p' keys.
* Added the option ``--view-several-side-by-side``
to view several images side-by-side with a dialog to choose which
images to show (also accessible from the View menu).
* Added the option ``--font-size``, with the default of 9.
* Added the option ``--lowest-resolution-subimage-num-pixels`` to
control the behavior of the pyramid of subimages.
* Noticeable speedup in loading images.
* Bug fix in loading .nvm files (an SfM format).
image_align (:numref:`image_align`):
* Can find the 3D alignment around planet center that transforms the
second georeferenced image to the first one. This transform can be
used to apply the alignment to cameras and point clouds
(:numref:`image_align_ecef_trans`).
dem_mosaic (:numref:`dem_mosaic`):
* Added the option ``--fill-search-radius`` to fill nodata pixels in
a DEM with nearby valid values. This is different from
``--hole-fill-length``. See an example in :numref:`dem_mosaic_examples`.
wv_correct (:numref:`wv_correct`):
* Maxar (DigitalGlobe) WorldView-2 images with a processing (generation) date
(not acquisition date), of May 26, 2022 or newer have much-reduced CCD
artifacts, and for those this tool will in fact make the solution worse, not
better. This does not apply to WorldView-1, 3, or GeoEye-1.
* ASP builds after 2023-06-21 (so, version later than 3.2.0), will detect the
above-mentioned scenario, and will not apply any correction in that case (a
copy of the original image will be written instead and a warning will be
printed). This applies to both PAN and multi-spectral images.
corr_eval (:numref:`corr_eval`):
* Remove an excessive check. The refined/filtered disparity can be such
that left image pixel plus disparity may be outside the right image.
Don't fail in that case, but just skip the pixel, resulting in empty
correlation for that pixel.
cam_test (:numref:`cam_test`):
* Added the option ``--datum``. Useful for Pinhole cameras as those don't
know their datum.
* Added a warning if the camera center is below the datum.
misc:
* Upgraded to ISIS 8.0.0 and USGSCSM 1.7.
* Throw an error for WorldView products that are not Stereo1B or Basic1B.
That because ASP does not support orthorectified Maxar products.
* Changed the "pretend" height of the RPC cameras from 10 km
above ground to around 100 km. RPC camera models do not store this
number and it does not make a difference normally, as only ray
directions to the ground matter. Yet, .adjust
files created with an earlier version of ASP for RPC cameras
should be re-created as those use the camera center.
* The latest version of the Xerces-C XML parser became 10 times
slower than before, which may affect the speed of
processing for XML-based camera models.
* Added back the tool ``view_reconstruction``, for examining
Theia's SfM solution (:numref:`sfm`).
* The ``theia_sfm`` tool can write the optical offsets for a given
nvm file which can be used in plotting such files in ``stereo_gui``.
* Added to ``hiedr2mosaic.py`` (:numref:`hiedr2mosaic`) the option
``--web`` to invoke ``spiceinit`` with ``web=True``. Contributed
by Giacomo Nodjoumi.
* Bugfix for reading .jp2 files. Needed to ship the JPEG2000 driver
and set GDAL_DRIVER_PATH.
* Fixed a failure in ``mapproject`` with a small DEM.
* Bugfix for exporting the TheiaSfM matches in ``camera_solve``.
* The documentation of the examples chapter was broken up into
individual pages (:numref:`examples`).
RELEASE 3.2.0, December 30, 2022
--------------------------------
DOI: `10.5281/zenodo.7497499 <https://doi.org/10.5281/zenodo.7497499>`_
Added functionality for creation of large-scale meshes and fused
textures for small planetary bodies and indoor environments. Added
logic for rig calibration. See individual tools below.
New tools:
* ``rig_calibrator``: Calibrates a rig of N image and/or
depth+image cameras. Can also co-register and refine
intrinsics of camera images acquired with N sensors with no rig
constraint (:numref:`rig_calibrator`).
* ``multi_stereo``: Runs multiple stereo pairs and produces
a fused mesh. Uses ``parallel_stereo``, ``pc_filter``, and
``voxblox_mesh`` (:numref:`multi_stereo`).
* ``voxblox_mesh``: Fuses point clouds into a seamless oriented
mesh, with each input point given a weight according to its
reliability. Based on the third-party VoxBlox software
(:numref:`voxblox_mesh`).
* ``texrecon``: Creates seamless textured meshes. Based on
the third-party MVS-Texturing project (:numref:`texrecon`).
* ``pc_filter``: Filters outliers in point clouds created with
pinhole cameras and weighs inliers based on many criteria
(:numref:`pc_filter`).
* Added CGAL-based tools for mesh smoothing, hole-filling, remeshing,
and removal of small connected components (:numref:`cgal_tools`).
* ``jitter_solve``: A tool for solving for jitter in CSM camera
models (:numref:`jitter_solve`). It gives promising results
for CTX, Pleiades, and DigitalGlobe data. Examples are provided.
Removed tools:
* ``datum_convert``: This was an attempt at having a tool applying
a transform between datums. It is suggested to use GDAL/PROJ instead.
Note that a datum transform may require fetching transformation grids,
and without them PROJ will quietly return incorrect results.
New sensors:
* Support the Pleiades exact sensor (for 1A/1B). See :numref:`pleiades`.
Implemented as a wrapper around the CSM linescan camera model.
parallel_stereo (:numref:`parallel_stereo`):
* Added the options ``--match-files-prefix`` and
``--clean-match-files-prefix`` for reusing interest point matches
from a previous ``bundle_adjust`` or ``parallel_stereo`` run. The
"clean" interest point matches created by ``bundle_adjust`` may
have fewer outliers than what stereo can create.
* Added the option ``--keep-only`` to convert all VRT files to TIF
(e.g., D.tif), then wipe all files and subdirectories except those
specified by given suffixes.
* Added the triangulation option ``--max-valid-triangulation-error``.
* The option ``--prev-run-prefix`` can be used to start a run
with bathymetry modeling at the triangulation stage while
reusing the previous stages of a run without such modeling
(the needed aligned bathy masks are created, if needed,
at the triangulation stage, if not done, as usual, at the
preprocessing stage).
* For SGM and MGM use by default 8 threads and number of processes
equal to number of cores divided by number of threads. Less likely
to run out of memory that way.
* Added examples of using PBS and SLURM with ASP
(:numref:`pbs_slurm`).
* Added an example of processing SkySat Stereo data
(:numref:`skysat_stereo`).
* Documented better the option ``--num-matches-from-disp-triplets``
for creating dense and uniformly distributed interest point
matches. Useful for modeling lens distortion.
parallel_bundle_adjust (:numref:`parallel_bundle_adjust`):
* Do not create subdirectories or symlinks, as that results in a
massive number of small files. (Unless ``--save-vwip`` is used,
see below.)
* Do not save by default .vwip files as those take space and are
only needed to find .match files. Use the new option
``--save-vwip`` to save them. Note that these depend on individual
image pairs, so ``parallel_bundle_adjust`` saves them in
subdirectories.
bundle_adjust (:numref:`bundle_adjust`):
* Save the convergence angle percentiles for each pair of
images having matches. Useful for understating the configuration
of cameras.
* Added the option ``--tri-weight`` (default is 0) to keep triangulated
points close to their initial values. This looks more promising
than other weighing used so far at preventing the cameras from
moving when optimizing them. This assumes input cameras are
not grossly inaccurate. This adds a robust cost function
with the threshold given by ``--tri-robust-threshold``.
* Added the options ``--image-list``, ``--camera-list``,
``--mapprojected-data-list``, for when the inputs are too many to
specify on the command line.
* Added the option ``--fixed-image-list`` to specify a file having a
list of image names whose cameras should be fixed during
optimization.
* Pinhole cameras are no longer automatically reinitialized or
transformed based on GCP, but only refined given GCP. So, option
``--disable-pinhole-gcp-init`` is the default. Use one of the
options ``--init-camera-using-gcp`` (:numref:`camera_solve_gcp`),
``--transform-cameras-with-shared-gcp``,
``--transform-cameras-using-gcp`` (:numref:`sfm_world_coords`) for
manipulating cameras using GCP.
* Bugfix in initializing pinhole cameras based on GCP for off-nadir
cameras.
* When doing multiple passes (which is the default) at each pass
resume not only with clean matches but also with the cameras
optimized so far, rather than going to the originals.
* Can do multiple passes with ``--heights-from-dem``. One should
be generous with outlier removal thresholds if not sure of
the input DEM accuracy (option ``--remove-outliers-params``).
* Remove outliers based on spatial distribution of triangulated
points.
* Bugfix when the number of interest points is 4 million or more.
The algorithm would just stall. It is now replaced by an OpenMVG
algorithm.
* Fold ``--remove-outliers-by-disparity-params`` into
``--remove-outliers-params``.
* Bugfix in ``residuals_stats.txt``; the mean was correct but the
median was wrong.
* Let the default ``--heights-from-dem-weight`` be 1.0, and the
default ``--heights-from-dem-robust-threshold`` be 0.5. These
normally need tuning.
* Added the option ``--mapproj-dem``. If specified, evaluate
the disagreement of interest point matches after mapprojecting
onto this DEM, per interest point match pair, per matching image
pair, and per image. Useful at evaluating registration without
mapprojecting the images (:numref:`ba_out_files`).
* Added report files having the camera positions and orientations
before and after optimization (for Pinhole cameras only,
:numref:`ba_cam_pose`).
* Added options ``--proj-win`` and ``--proj-str`` for restricting
interest points to given area (useful when having many images
with footprints beyond area of interest).
* With ``--match-first-to-last``, write match files from earlier
to later images, rather than vice-versa. This was a bug, as
the matches were not being picked up correctly later.
* For pinhole cameras, can read .adjust files via
``--input-adjustments-prefix``, then apply them to existing .tsai
files via ``--inline-adjustments``. Until now one could do either
one or the other. Also works with ``--initial-transform``.
* Added a section describing how bundle adjustment is implemented
(:numref:`how_ba_works`).
point2dem (:numref:`point2dem`):
* Added the Tukey outlier removal method option applied to
triangulation errors (error_thresh = 75th_pct + 1.5 * (75th_pct -
25th_pct)). Also print out these percentages even for the regular
outlier removal.
bathymetry (:numref:`bathy_intro`):
* Added ``scale_bathy_mask.py``, for creating a PAN-sized image
or mask from an multispectral-sized image or mask, both for
WorldView data.
mapproject (:numref:`mapproject`):
* Exposed and documented the ``--query-projection`` option.
stereo_gui (:numref:`stereo_gui`):
* Can plot, overlay on top of images, and colorize scattered points
stored in a CSV file (:numref:`plot_csv`). Many colormap styles
are supported. See :numref:`colormap` for the list.
* Can show side-by-side colorized images with colorbars and coordinate
axes (:numref:`colorize`).
* Given a ``bundle_adjust`` output prefix, can select via checkboxes
any two images to show side-by-side, and automatically load their
match file or clean match file (options:
``--pairwise-matches`` and ``--pairwise-clean-matches``, also
accessible from the top menu).
* Visualize pairwise matches read from an nvm file, as created by
``rig_calibrator --save_nvm_no_shift``.
* Zoom to given proj win from the View menu. Useful for
reproducibility. Also accessible with the command-line option
``--zoom-proj-win``.
* Bug fix for slow overlaying of images with different datums.
* When all images have a georeference, start in georeference mode.
corr_eval (:numref:`corr_eval`):
* Bugfix for excessive memory usage with positive ``--prefilter-mode``.
* Added a note saying that the user should ensure that this tool uses
the same ``--corr-kernel`` and ``--prefilter-mode`` as
``parallel_stereo``.
* Added the option ``--sample-rate``.
cam_gen (:numref:`cam_gen`):
* Can read Planet's pinhole.json files. Then no further changes
are made to the produced pinhole camera.
* Fix a bug in output camera center determination, when an input
camera is provided.
* Bugfix in initializing pinhole cameras based on GCP for off-nadir
cameras given image corners and no prior camera.
* Added the options ``--cam-height`` and ``--cam-weight`` to try
to keep the camera at a given height above ground.
* Added the option ``--cam-ctr-weight``, to help fix the camera
center during refinement.
* If ``--optical-center`` is not set for pinhole cameras, use the
image center (half of image dimensions) times the pixel pitch.
The optical bar camera always uses the image center.
pc_align (:numref:`pc_align`):
* Fix a bug with loading very large DEMs; it was failing because of
a 32-bit integer overflow.
colormap (:numref:`colormap`):
* Added six colormaps: ``black-body``, ``viridis``, ``plasma``,
``kindlmann``, ``rainbow``, ``turbo``. Sources:
http://www.kennethmoreland.com/color-advice/ and matplotlib.
misc:
* Upgrade to C++-14, Python 3.9, latest libLAS, OpenCV 4, PCL 1.11,
Boost 1.72, ISIS 7.1.0, GDAL 3.5, and PROJ 9.1.0. The latter has a
whole new API, intended to handle properly transformations among
datums.
* The ``lronaccal`` tool in ISIS 7.1.0 appears buggy. Try using
an earlier ISIS version if this is needed.
* Replaced in some locations ASP's homegrown coordinate transformation
logic with what is in PROJ.
* Added the option of using the CSM camera with DigitalGlobe WorldView
images in bundle adjustment, stereo, and mapprojection (use with
``--t dg``). Option name is ``--dg-use-csm`` and must be set
consistently for all tools. This speeds up ground-to-image
computation by a factor of about 20 (which helps with
mapprojection and bundle adjustment). The result of projecting
into the camera changes by less than 0.015 pixels from before if
using this option. That is due to the fact that different
methods are used for position and orientation interpolation.
The ``cam_test`` option ``--dg-vs-csm`` can be
used for evaluating this discrepancy. Each of these methods is
consistent with itself to within 2e-8 when it comes to projecting
from camera to ground and back.
* Increased the cache size to 1 GB per process for each ASP tool.
Added the option ``--cache-size-mb``, to set this. Made the
warning message refer to this option when the limit is
hit. Documented this for all tools.
* Using ``-t pinhole`` now invokes the same logic as ``-t
nadirpinhole --no-datum``, which is same code path used by other
sessions. This wipes an old alternative approach. Eliminated much
other duplicated and mutated code for various sessions at the
preprocessing stage.
* Bugfix for D.tif VRTs as created by ``parallel_stereo``.
* Allow whitespaces in stereo.default before option names.
* Fix a crash in ISIS for international users by setting for all ASP
programs the environmental variables LC_ALL and LANG to en_US.UTF-8.
* parallel_stereo will accept (but ignore) Unicode in stereo.default.
* Eliminate internal fudging of ``--ip-uniqueness-threshold``,
and make it equal to 0.8 for both ``stereo`` and
``bundle_adjust``. This was shown to increase the number of
interest points in situations when not enough were found.
* The ``historical_helper.py`` program expects a local installation
of ImageMagick and the ``convert`` tool (available on most systems
normally).
RELEASE 3.1.0, May 18, 2022
----------------------------
DOI: `10.5281/zenodo.6562267 <https://doi.org/10.5281/zenodo.6562267>`_
New camera additions:
* Added support for the USGSCSM Frame, SAR, and PushFrame sensors
(until now just the Linescan sensor was supported), together
with documentation and examples (for Dawn, MiniRF, and WAC,
respectively).
* Added support for ISIS SAR cameras, together with an example in
the doc.
* Added support for the PeruSat-1 linescan camera model (so far just
the RPC model was supported for this satellite).
New tool additions:
* Added the program ``corr_eval``, for evaluating the quality of
produced correlation with several metrics. See also the new option
``--save-left-right-disparity-difference`` in ``parallel_stereo``.
* Added the program ``otsu_threshold`` for computing an image
threshold. It can be used for separating land from water (in
WorldView multispectral NIR bands), and shadowed from lit areas
(in Lunar images).
* The program ``parallel_stereo`` can function as purely an image
correlation tool, without assuming any camera information, via
the option ``--correlator-mode``.
* Added the program ``image_align``. Used to align two images or
DEMs based on interest point matches or disparity, with given
alignment transform type (translation, rigid, similarity, affine,
and homography).
isis:
* Using ISIS 6.0.0.
csm:
* Save the camera state on multiple lines. On reading both the
single-line and multiple-line formats are accepted.
* Bundle adjustment, mapproject, and SfS with the CSM model can be
7-15 times faster than done with the corresponding ISIS mode
for linescan cameras (the latter as reimplemented in ASP itself).
It is strongly suggested to use CSM for large-scale processing.
* Bugfix in CSM linescan implementation for some LRO NAC sensors.
Also replaced the fixed-point method with the secant method in the
ground-to-image logic for CSM linescan cameras, which is faster.
parallel_stereo:
* Many fixes for reliability of stereo with local epipolar alignment.
* Added the option ``--resume-at-corr``. Start at the correlation stage
and skip recomputing the valid low-res and full-res disparities for
that stage.
* Bugfix: Eliminate edge artifacts in stereo refinement (for
subpixel modes 1, 2, and 3).
* Print in stereo_pprc the estimated convergence angle for the given
stereo pair (for alignment methods affineepipolar, local_epipolar, and
homography).
* Added the option ``--prev-run-prefix``, which makes parallel_stereo
start at the triangulation stage while using previous stages
from this other run. The new run can have different cameras, different
session (rpc vs dg, isis vs csm), different bundle
adjustment prefix, and different bathy planes (if applicable).
* Added option ``--save-left-right-disparity-difference`` to save the
discrepancy between left-to-right and right-to-left
disparities, which may help with filtering unreliable
disparities.
* Interest point matching with mapprojected images now happens
at full resolution, which results in a more reliable process
when there are clouds or if fine features are washed out at
low resolution.
* Expanded the doc to address a big gotcha: if left and right
mapprojected images have somewhat different resolutions, then an
immense disparity search range can result.
* Added the option ``--max-disp-spread`` to limit the spread of the
disparity to this value (useful with clouds in images).
* Added the option ``--ip-filter-using-dem`` to filter as outliers
interest point matches whose triangulated height differs by more
than given value from the height at the same location for the
given DEM.
* Added a doc section on handling of images with clouds.
* Disable by default velocity aberration and atmospheric refraction
corrections. These are not accurate enough and cause issues with
convergence of bundle adjustment. Can be enabled with
``--enable-correct-velocity-aberration`` and
``--enable-correct-atmospheric-refraction``. These improve results
however with Digital Globe cameras if not doing bundle
adjustment. (Note that these are still hard-coded as enabled for
optical bar camera models. This would require further study.)
* Added ready-made ASTER and LRO NAC examples with sample images,
cameras, commands, and outputs, all available for
download. Contributions of more examples are welcome. See
https://github.com/NeoGeographyToolkit/StereoPipelineSolvedExamples.
* Bugfix for ASTER cameras; this was fully broken.
* ASP's SGM and MGM algorithms will always use the cross-check for
disparity by default, to improve the quality, even if that takes
more time. It can be turned off with ``--xcorr-threshold -1``.
* Filter outliers in low-resolution disparity D_sub.tif. Can be
turned off by setting the percentage in ``--outlier-removal-params``
to 100.
* Filtering of interest points based on percentiles (using also
``--outlier-removal-params``).
* Folded ``--remove-outliers-by-disparity-params`` into
``--outlier-removal-params``.
* Bugfix in disparity search range handling when it is large.
* For Linux, in each tile's directory write the elapsed runtime and
memory usage to ``<tile prefix>-<prog name>-resource-usage.txt``.
* Removed the ``--local-homography`` option, as it is superseded by
``--alignment-method local_epipolar``, which blends the local results.
* The stereo tool is deprecated, and can be used only with the
ASP_BM classical block-matching algorithm when invoked without
local epipolar alignment. Use parallel_stereo instead.
* Added the experimental ``--gotcha-disparity-refinement`` option, under
NASA proposal 19-PDART19_2-0094.
bundle_adjust:
* Added the option ``--apply-initial-transform-only`` to apply an initial
transform to cameras while skipping image matching and other
steps, making the process much faster.
* Added the option ``--auto-overlap-params`` to automatically compute
which camera images overlap, if a DEM and camera footprint
expansion percentage are given.
* Added the option ``--max-pairwise-matches`` to put an upper limit on
the number of matches, as a large number can slow down bundle
adjustment. The default is 10000, likely a large overestimate (but
this includes potential outliers). If creating interest points
from disparity using ``--num-matches-from-disp-triplets``, similar
values should be used for both of these options.
* Stop printing warnings about failed triangulation if their number
goes over 100.
* Rename verbose ``final_residuals_no_loss_function_pointmap_point_log.csv``
to ``final_residuals_pointmap.csv`` and
``final_residuals_no_loss_function_raw_pixels.txt`` to
``final_residuals_raw_pixels.txt``, etc.
* Document the useful initial and final ``residuals_stats.txt`` files.
* Added new options for reusing a previous run:
``--match-files-prefix`` and ``--clean-match-files-prefix``.
sfs:
* SfS was made to work with any camera model supported by ASP,
including for Earth. For non-ISIS and non-CSM cameras, the option
``--sun-positions`` should be used.
* Exhaustively tested with the CSM model. It is very recommended to
use that one instead of ISIS .cub cameras, to get a very large
speedup and multithreading.
* Added a new ``--gradient-weight`` parameter, constraining the
first-order derivatives. Can be used in combination with the
``--smoothness-weight`` parameter which constrains the second-order
derivatives. The goal is to avoid a noisy solution without losing
detail.
* Much work on expanding the documentation.
mapproject:
* If the input image file has an embedded RPC camera model, append
it to the output mapprojected file. (Which makes stereo with
mapprojected images work correctly in this case.)
* Always start a process for each tile. The default tile size
is set to 5120 for non-ISIS cameras and to 1024 for ISIS. Use
a large value of ``--tile-size`` to use fewer processes.
bathymetry:
* Can have different water surfaces in left and right images, so the
triangulating rays bend at different heights.
* ``bathy_plane_calc`` can use a mask of pixels above water to find the
water-land interface, and also a set of actual ``lon, lat, height``
measurements.
* Added documentation for how to find water level heights at given
times and coordinates using National Ocean Service's tidal zoning
map.
pc_align:
* Add alignment method similarity-point-to-plane. It works better
than similarity-point-to-point at finding a scale between the
clouds when they have a large shift.
* Bugfix for alignment methods point-to-point and
similarity-point-to-point.
* Use RANSAC with ``--initial-transform-from-hillshading``, for increased
robustness to outliers. Replaced
``--initial-transform-outlier-removal-params`` (based on percentiles)
with ``--initial-transform-ransac-params``.
dem_mosaic:
* Add the option ``--tap``, to have the output grid be at integer
multiples of the grid size (like the default behavior of
``point2dem`` and ``mapproject``, and ``gdalwarp`` when invoked
with ``-tap``). If not set, the input grids determine
the output grid. (The produced DEM will then extend for an
additional 0.5 x grid_size beyond grid centers on its perimeter.)
* Do not allow more than one of these operations in a given
dem_mosaic invocation: fill holes, blur, or erode. These won't
work when also having more than one input DEM, reprojection is
desired, or priority blending length is used. This is done to
avoid confusion about order of operations, and the fact that
different input DEMs can have different grid sizes and hence the
input parameters have different effects on each.
* Bugfix for hole-filling and blurring. Tile artifacts got removed.
stereo_gui:
* Can cycle through given images from the View menu, or with the 'n'
and 'p' keys, when all images are in the same window.
* Can save a shapefile having points, segments, or polygons. (These
are distinct classes for a shapefile; the shapefile format
requires that these not be mixed in the same file.)
* Noticeable speedup when changing display mode (e.g., from
side-by-side to overlaid).
* Bugfix when overlaying shapefiles with different georeferences.
* Polygon layers can be set to desired colors from the left pane,
when overlaid.
* On startup, draw rectangular regions corresponding to values of
``--left-image-crop-win`` and ``--right-image-crop-win``, if these
are passed in as command line arguments together with two images.
* Quietly accept parallel_stereo options and pass them on if this tool
is invoked from the GUI.
image_calc:
* Add the option ``--no-georef`` to remove any georeference
information in the output image (useful with subsequent GDAL-based
processing).
* Added the option ``--longitude-offset`` to help to deal with the
fact that ASP-produced DEMs and orthoimages may have the
longitudes in [0, 360] while users may prefer [-180, 180].
* Bugfix: The ``--input-nodata`` value, if set, now overrides the
value set in the metadata (the previous value then becomes valid).
Misc:
* Added the tool ``parse_match_file.py`` to convert a binary match file
to text and vice-versa.
* Add the tool ``cam_test`` to compare two different camera models
for the same image.
* Stereo and bundle adjustment with RPC cameras now query the RPC
model for the datum.
* The ``cam2rpc`` program saves its datum which is read when needed by
the RPC model loader.
* Add the option ``--triangulation-error-factor`` to ``point2las`` to allow
point cloud triangulation errors multiplied by this factor and
rounded/clamped appropriately to be stored in the 2-byte intensity
field in the LAS file.
* Make symlinks relative in ``parallel_bundle_adjust`` for portability.
* The mapprojected image saves as metadata the adjustments it was
created with.
* Save the low-resolution triangulated point cloud (``PC_sub.tif``) in
stereo_corr (based on filtered ``D_sub.tif``).
* The ``ipmatch`` program can take as input just images, with the
.vwip files looked up by extension.
* Bugfix in handling projections specified via an EPSG code.
* Bugfix when some environmental variables or the path to ASP
itself have spaces. (It happens under Microsoft WSL.)
* Bugfix for the "too many open files" error for large images.
* Add the build date to the ``--version`` option in the ASP tools
and to the log files.
* Bugfix in the original author's MGM implementation, accepted by
the author.
RELEASE 3.0.0, July 27, 2021
----------------------------
DOI: `10.5281/zenodo.5140581 <https://doi.org/10.5281/zenodo.5140581>`_
New functionality:
* Added new stereo algorithms: MGM (original author implementation),
OpenCV SGBM, LIBELAS, MSMW, MSMW2, and OpenCV BM to complement
the existing ASP block matching, SGM, and MGM algorithms. See
https://stereopipeline.readthedocs.io/en/latest/next_steps.html
for usage. These will be further refined in subsequent releases.
* Added the ability to perform piecewise local epipolar alignment
for the input images, to be followed by a 1D disparity search (for
non-mapprojected images), as suggested by the Satellite Stereo
Pipeline (S2P) approach. This is still somewhat experimental.
* Added the ability for a user to plug into ASP any desired stereo
program working on image clips to which epipolar alignment has
been applied (as is customary in the computer vision community)
without rebuilding ASP.
* Added support for shallow-water bathymetry, so creation of terrain
models with correct depth determination for well-resolved areas under
shallow water. To be used with dg, rpc, and nadirpinhole cameras.
* Added two supporting tools for this: bathy_plane_calc and
bathy_threshold_calc.py.
* Added CCD artifact corrections for a few WV02 band 3 multispectral
images. Apart from the systematic artifacts corrected by this
logic, these images have a high-frequency unique pattern, and also
jitter, which are not corrected for. Also added tools and
documentation to easily tabulate more multispectral bands and TDI.
isis:
* Upgraded to ISIS 5.0.1.
* Ship a full Python 3.6 runtime, as expected by ISIS.
csm:
* Upgraded to USGSCSM 1.5.2 (ASP's own build of it has an additional
bugfix for LRO NAC not present in the conda-forge package).
* Validated the CSM model for CTX, HiRISE, and LRO NAC cameras.
* Added documentation for how to create CSM models from .cub
cameras.
* Export the state of a CSM camera after bundle adjustment and
pc_align (only for linescan cameras supported by ISIS).
parallel_stereo
* Will now throw an error if ``--threads`` is passed in, whose behavior
was not defined.
* Bugifx for Python 3.
bundle_adjust:
* Added the option ``--heights-from-dem-robust-threshold``.
* Added the option ``--save-intermediate-cameras`` to save the cameras
at each iteration.
* Added the option ``--match-first-to-last`` to match the first several
images to several last images by extending the logic of
``--overlap-limit`` past the last image to the earliest ones.
point2las
* Remove outliers by using a percentile times a factor, in a way
analogous to point2dem.
convert_pinhole_model:
* Improve the accuracy of the RPC approximation distortion and
undistortion.
sfs:
* Added the option ``--shadow-threshold`` to be able to specify
a single shadow threshold for all images. Also added
``--custom-shadow-threshold-list``.
* Added the option ``--robust-threshold`` for situations when the
measured image intensity is unreliable.
* Added the option ``--estimate-height-errors`` to estimate the
uncertainty in height at each computed SfS DEM pixel.
It can be customized via ``--height-error-params``.
* Added an auxiliary tool named sfs_blend to replace SfS
pixels with ones from the original LOLA DEM in permanently
shadowed regions.
stereo_gui:
* Added the ability to find the contour of a georeferenced image at
a given threshold. (It can be later edited, saved to disk, etc.)
* Bugifxes for polygon drawing logic.
* Much more responsive for overlaying many images.
image_calc:
* Support the sign function (can help in creating masks).
pc_align:
* Bugifx for ``--initial-transform-from-hillshading`` with outlier
removal.
* Add the ``--initial-transform-outlier-removal-params`` to control
outlier removal when finding matches between DEMs to align
using features detected in hillshaded images or selected
manually.
* Added ``--initial-rotation-angle``, to initialize the alignment
transform as the rotation with this angle (in degrees) around
the axis going from the planet center to the centroid of the point
cloud.
Misc
* Moved the daily build to the release area on GitHub, at
https://github.com/NeoGeographyToolkit/StereoPipeline/releases
* Upgraded to GDAL 2.4 and PROJ4 5.2.0. (ISIS constrains updating to
newer versions of these.)
* Added the option ``--ip-per-image`` to bundle adjustment and stereo, to
detect roughly how many interest points should be found per image
(only a small fraction of them may eventually match across images).
* The ``--min-triangulation-angle`` in stereo must be always positive if
set by the user. Can be set to something very small if desired.
This is a bug fix for this rarely used option (before, when set to
0 it would just reset itself to some internal non-small value).
* Bugifx for the VisionWorkbench implementation of the
Levenberg-Marquardt algorithm, it was giving up prematurely in
challenging situations.
* Bugifx for affine epipolar alignment. Use the OpenCV function
for finding the alignment matrix instead of the ASP one as OpenCV
can filter outliers which cause issues on rare occasions.
* Bugfix: Do not allow a full run to take place in a directory
where a clip was run, as that will produce incorrect results.
RELEASE 2.7.0, July 27, 2020
----------------------------
New functionality
* Support for ISIS version 4.1.10. Please set ISISDATA instead of
ISIS3DATA with this version of ISIS and ASP.
* Support for the Community Sensor Model
(https://github.com/USGS-Astrogeology/usgscsm)
* Ability to install ASP with conda. See INSTALLGUIDE.rst for details.
* Moved the documentation to ReStructured Text, and Sphinx-Doc. See
the documentation at: https://stereopipeline.readthedocs.io
* As of this release, we have transitioned to the
`Semantic Versioning 2.0.0 standard <https://semver.org>`_ for ASP.
bundle_adjust
* Can first create interest point matches among mapprojected images
(automatically or manually) and use those to create matches among
the unprojected images when the latter are so dissimilar in
perspective that the direct approach fails. See ``--mapprojected-data``.
stereo_gui
* Bug fix when zooming all images to same region when the region is
such that all images are seen fully.
sfs
* Added a new very challenging example at the South Pole with drastic
illumination changes and using a non-stereo DEM as initial guess.
* Fixed a bug with craters missing under low light.
* Fixed a bug with computation of exposures in terrain with many shadows.
* Print the Sun azimuth angle for all images (useful for sorting them
by illumination conditions).
hiedr2mosaic.py
* When hijitreg finds no match points between two CCDs, the program now
emits a warning message to STDOUT with a suggestion to perhaps
fiddle with hijitreg manually, and rather than fail with a
mysterious exception warning, now gracefully falls back to
assuming that there is no jitter correction between the two
CCDs that had no matches.
point2dem
* Use outlier filtering when computing the bounding box of a DEM.
The same option ``--remove-outliers-params`` controls this
just as for removing outliers by triangulation error.
mapproject
* Fixed a bug when finding the extent of the mapprojected
image when the DEM to project onto spans the whole planet.
point2mesh
* Only meshes in .obj format are created. This format can be opened
in Meshlab, Blender, or some other mesh viewer.
* The osgviewer program is no longer shipped.
* Fixed a bug with invalid points not being filtered.
* Fixed a bug with insufficient precision (now it can be set
by the user and defaults to 17 digits).
* Added the option ``--texture-step-size`` to control the sampling
rate for the texture, in addition to the -s option that controls
the sampling rate for the point cloud.
Misc
* Updated to C++ 11.
* Added phase subpixel correlation accuracy parameter.
RELEASE 2.6.2, June 15, 2019
----------------------------
DOI: https://doi.org/10.5281/zenodo.3247734
New satellites
* Added support for SkySat, together with a detailed example,
including how to jointly align and optimize cameras in respect
to a reference DEM, while optionally refining the intrinsics.
This approach may be helpful for other images obtained with frame
cameras and uncertain positioning information.
* Added support for CORONA KH-4B, KH-7, and KH-9 declassified images
and their panoramic (optical bar) camera models, as well as using
and optimizing camera models with RPC distortion (only RPC is
supported for KH-7 because it is a linescan camera). An example
is in the documentation.
New tools
* Added parallel_bundle_adjust which computes image statistics and
IP matching in a parallel manner similar to parallel_stereo.
* Added the cam_gen tool to create a correctly oriented pinhole
camera model given camera intrinsics, lon-lat coordinates of the
corners (or some other pixels), and optionally a ground truth
DEM. It can also parse SkySat's video/frame_index metafile to get
this data. It can also take as input any camera supported by ASP
via ``--input-camera`` and create a most-similar pinhole camera
model with given intrinsics.
* Added the coverage_fraction tool to provide a coverage estimate
of the results of a stereo call.
* Added the image_mosaic tool which merges together images based on
interest point matches. Can be used to stitch together Coro
gitextract_o1uagew5/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bibliography-addition---.md
│ │ ├── bug-report---.md
│ │ └── feature-request---.md
│ ├── pull_request_template.md
│ └── workflows/
│ ├── build_helper.sh
│ ├── build_helper_linux.yml
│ ├── build_test.sh
│ ├── build_test_mac_arm64.yml
│ ├── build_test_mac_x64.yml
│ ├── save_linux_deps.sh
│ ├── save_mac_deps.sh
│ ├── ssh_linux_arm.yml
│ ├── ssh_mac_arm.yml
│ ├── ssh_mac_x64.yml
│ └── update_mac_tests.sh
├── .gitignore
├── .readthedocs.yml
├── AUTHORS.rst
├── CMakeLists.txt
├── CODE_OF_CONDUCT.rst
├── CONTRIBUTING.rst
├── ChangeLog
├── INSTALLGUIDE.rst
├── LICENSE
├── NEWS.rst
├── README.rst
├── RELEASEGUIDE
├── THIRDPARTYLICENSES.rst
├── cmake/
│ ├── FindCairo.cmake
│ ├── FindCairomm.cmake
│ ├── FindFreeType.cmake
│ ├── FindSigC++.cmake
│ ├── LibFindMacros.cmake
│ ├── Utilities.cmake
│ └── linux_cross_toolchain.cmake
├── conda/
│ ├── asp_2.7.0_linux_env.yaml
│ ├── asp_2.7.0_osx_env.yaml
│ ├── asp_3.0.0_linux_env.yaml
│ ├── asp_3.0.0_osx_env.yaml
│ ├── asp_3.1.0_linux_env.yaml
│ ├── asp_3.1.0_osx_env.yaml
│ ├── asp_3.2.0_linux_env.yaml
│ ├── asp_3.2.0_osx_env.yaml
│ ├── asp_3.3.0_linux_env.yaml
│ ├── asp_3.3.0_osx_env.yaml
│ ├── asp_3.5.0_linux_env.yaml
│ ├── asp_3.5.0_osx_x64_env.yaml
│ ├── asp_deps_2.7.0_linux_env.yaml
│ ├── asp_deps_2.7.0_osx_env.yaml
│ ├── asp_deps_3.0.0_linux_env.yaml
│ ├── asp_deps_3.0.0_osx_env.yaml
│ ├── asp_deps_3.1.0_linux_env.yaml
│ ├── asp_deps_3.1.0_osx_env.yaml
│ ├── asp_deps_3.2.0_linux_env.yaml
│ ├── asp_deps_3.2.0_osx_env.yaml
│ ├── asp_deps_3.3.0_linux_env.yaml
│ ├── asp_deps_3.3.0_osx_env.yaml
│ ├── asp_deps_3.4.0_alpha_linux_env.yaml
│ ├── asp_deps_3.4.0_alpha_osx_env.yaml
│ ├── environment.yml
│ └── update_versions.py
├── docs/
│ ├── Makefile
│ ├── acknowledgements.rst
│ ├── bathy_water_masking.rst
│ ├── bibliography.bib
│ ├── building_asp.rst
│ ├── bundle_adjustment.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── correlation.rst
│ ├── environment.yml
│ ├── error_propagation.rst
│ ├── examples/
│ │ ├── apollo15.rst
│ │ ├── aster.rst
│ │ ├── bathy.rst
│ │ ├── cassini.rst
│ │ ├── chandrayaan2.rst
│ │ ├── change3.rst
│ │ ├── csm.rst
│ │ ├── ctx.rst
│ │ ├── dawn.rst
│ │ ├── dg.rst
│ │ ├── hirise.rst
│ │ ├── historical.rst
│ │ ├── hrsc.rst
│ │ ├── isis_minirf.rst
│ │ ├── junocam.rst
│ │ ├── k10.rst
│ │ ├── kaguya.rst
│ │ ├── lronac.rst
│ │ ├── mer.rst
│ │ ├── moc.rst
│ │ ├── msl.rst
│ │ ├── orbital_rig.rst
│ │ ├── pbs_slurm.rst
│ │ ├── perusat1.rst
│ │ ├── pleiades.rst
│ │ ├── rig.rst
│ │ ├── rpc.rst
│ │ ├── sfm_iss.rst
│ │ ├── sfs_ctx.rst
│ │ ├── sfs_earth.rst
│ │ ├── skysat.rst
│ │ ├── spot5.rst
│ │ ├── spot67.rst
│ │ ├── stereo_pairs.rst
│ │ └── umbra_sar.rst
│ ├── examples.rst
│ ├── experimental.rst
│ ├── glossary.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── introduction.rst
│ ├── news.rst
│ ├── next_steps.rst
│ ├── outputfiles.rst
│ ├── papersusingasp.bib
│ ├── papersusingasp.rst
│ ├── pinholemodels.rst
│ ├── requirements.txt
│ ├── sfm.rst
│ ├── sfs_usage.rst
│ ├── stereo_algorithms.rst
│ ├── stereodefault.rst
│ ├── thirdparty.rst
│ ├── tips_tricks.rst
│ ├── tools/
│ │ ├── add_spot_rpc.rst
│ │ ├── aster2asp.rst
│ │ ├── bathy_plane_calc.rst
│ │ ├── bathy_threshold_calc.rst
│ │ ├── bundle_adjust.rst
│ │ ├── cam2map4stereo.rst
│ │ ├── cam2rpc.rst
│ │ ├── cam_gen.rst
│ │ ├── cam_test.rst
│ │ ├── camera_calibrate.rst
│ │ ├── camera_footprint.rst
│ │ ├── camera_solve.rst
│ │ ├── cgal_tools.rst
│ │ ├── colormap.rst
│ │ ├── convert_pinhole_model.rst
│ │ ├── corr_eval.rst
│ │ ├── correlator.rst
│ │ ├── dem2gcp.rst
│ │ ├── dem_geoid.rst
│ │ ├── dem_mosaic.rst
│ │ ├── dg_mosaic.rst
│ │ ├── disp2ip.rst
│ │ ├── disparitydebug.rst
│ │ ├── gcp_gen.rst
│ │ ├── gdal.rst
│ │ ├── geodiff.rst
│ │ ├── hiedr2mosaic.rst
│ │ ├── hillshade.rst
│ │ ├── historical_helper.rst
│ │ ├── icebridge_kmz_to_csv.rst
│ │ ├── image2qtree.rst
│ │ ├── image_align.rst
│ │ ├── image_calc.rst
│ │ ├── image_mosaic.rst
│ │ ├── image_subset.rst
│ │ ├── ipfind.rst
│ │ ├── ipmatch.rst
│ │ ├── jitter_solve.rst
│ │ ├── lronac2mosaic.rst
│ │ ├── lvis2kml.rst
│ │ ├── mapproject.rst
│ │ ├── multi_stereo.rst
│ │ ├── n_align.rst
│ │ ├── orbit_plot.rst
│ │ ├── orbitviz.rst
│ │ ├── ortho2pinhole.rst
│ │ ├── otsu_threshold.rst
│ │ ├── pansharp.rst
│ │ ├── parallel_bundle_adjust.rst
│ │ ├── parallel_sfs.rst
│ │ ├── parallel_stereo.rst
│ │ ├── parse_match_file.rst
│ │ ├── pc_align.rst
│ │ ├── pc_filter.rst
│ │ ├── pc_merge.rst
│ │ ├── point2dem.rst
│ │ ├── point2las.rst
│ │ ├── point2mesh.rst
│ │ ├── refr_index.rst
│ │ ├── rig_calibrator.rst
│ │ ├── ros.rst
│ │ ├── sat_sim.rst
│ │ ├── sfm_merge.rst
│ │ ├── sfm_proc.rst
│ │ ├── sfm_submap.rst
│ │ ├── sfm_view.rst
│ │ ├── sfs.rst
│ │ ├── sfs_blend.rst
│ │ ├── stereo.rst
│ │ ├── stereo_dist.rst
│ │ ├── stereo_gui.rst
│ │ ├── stereo_sweep.rst
│ │ ├── stereo_tile.rst
│ │ ├── texrecon.rst
│ │ ├── theia_sfm.rst
│ │ ├── undistort_image.rst
│ │ ├── view_reconstruction.rst
│ │ ├── voxblox_mesh.rst
│ │ └── wv_correct.rst
│ ├── tools.rst
│ ├── tutorial.rst
│ └── zzreferences.rst
├── examples/
│ ├── CTX/
│ │ ├── Makefile
│ │ ├── control.net
│ │ └── stereo.nonmap
│ ├── HiRISE/
│ │ ├── Makefile
│ │ ├── downloader.sh
│ │ └── stereo.nonmap
│ ├── K10/
│ │ ├── Makefile
│ │ ├── black_left.tsai
│ │ ├── black_right.tsai
│ │ └── stereo.default
│ ├── MER/
│ │ ├── Makefile
│ │ ├── stereo.default
│ │ └── stereo.default.navcam
│ ├── MOC/
│ │ ├── E0201461.imq
│ │ ├── M0100115.imq
│ │ ├── Makefile
│ │ ├── control.net
│ │ └── stereo.nonmap
│ ├── TriangulationError.lut
│ └── surf_match.patch
├── plugins/
│ └── stereo/
│ └── plugin_list.txt
├── src/
│ ├── CMakeLists.txt
│ ├── asp/
│ │ ├── CMakeLists.txt
│ │ ├── Camera/
│ │ │ ├── ASTER_XML.cc
│ │ │ ├── ASTER_XML.h
│ │ │ ├── BaParams.cc
│ │ │ ├── BaParams.h
│ │ │ ├── BaseCostFuns.cc
│ │ │ ├── BaseCostFuns.h
│ │ │ ├── BundleAdjustCamera.cc
│ │ │ ├── BundleAdjustCamera.h
│ │ │ ├── BundleAdjustCamera2.cc
│ │ │ ├── BundleAdjustCostFuns.cc
│ │ │ ├── BundleAdjustCostFuns.h
│ │ │ ├── BundleAdjustEigen.cc
│ │ │ ├── BundleAdjustEigen.h
│ │ │ ├── BundleAdjustIO.cc
│ │ │ ├── BundleAdjustIsis.cc
│ │ │ ├── BundleAdjustIsis.h
│ │ │ ├── BundleAdjustOptions.cc
│ │ │ ├── BundleAdjustOptions.h
│ │ │ ├── BundleAdjustOutliers.cc
│ │ │ ├── BundleAdjustOutliers.h
│ │ │ ├── BundleAdjustResiduals.cc
│ │ │ ├── BundleAdjustResiduals.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraErrorPropagation.cc
│ │ │ ├── CameraErrorPropagation.h
│ │ │ ├── CameraResectioning.cc
│ │ │ ├── CameraResectioning.h
│ │ │ ├── Covariance.cc
│ │ │ ├── Covariance.h
│ │ │ ├── CsmModel.cc
│ │ │ ├── CsmModel.h
│ │ │ ├── CsmModelFit.cc
│ │ │ ├── CsmModelFit.h
│ │ │ ├── CsmUtils.cc
│ │ │ ├── CsmUtils.h
│ │ │ ├── JitterSolveCostFuns.cc
│ │ │ ├── JitterSolveCostFuns.h
│ │ │ ├── JitterSolveRigCostFuns.cc
│ │ │ ├── JitterSolveRigCostFuns.h
│ │ │ ├── JitterSolveRigUtils.cc
│ │ │ ├── JitterSolveRigUtils.h
│ │ │ ├── JitterSolveUtils.cc
│ │ │ ├── JitterSolveUtils.h
│ │ │ ├── LinescanASTERModel.cc
│ │ │ ├── LinescanASTERModel.h
│ │ │ ├── LinescanDGModel.cc
│ │ │ ├── LinescanDGModel.h
│ │ │ ├── LinescanPeruSatModel.cc
│ │ │ ├── LinescanPeruSatModel.h
│ │ │ ├── LinescanPleiadesModel.cc
│ │ │ ├── LinescanPleiadesModel.h
│ │ │ ├── LinescanSpotModel.cc
│ │ │ ├── LinescanSpotModel.h
│ │ │ ├── LinescanUtils.cc
│ │ │ ├── LinescanUtils.h
│ │ │ ├── MapprojectImage.cc
│ │ │ ├── MapprojectImage.h
│ │ │ ├── PRISM_XML.cc
│ │ │ ├── PRISM_XML.h
│ │ │ ├── PeruSatXML.cc
│ │ │ ├── PeruSatXML.h
│ │ │ ├── PleiadesXML.cc
│ │ │ ├── PleiadesXML.h
│ │ │ ├── RPCModel.cc
│ │ │ ├── RPCModel.h
│ │ │ ├── RPCModelGen.cc
│ │ │ ├── RPCModelGen.h
│ │ │ ├── RPCStereoModel.cc
│ │ │ ├── RPCStereoModel.h
│ │ │ ├── RPC_XML.cc
│ │ │ ├── RPC_XML.h
│ │ │ ├── RpcUtils.cc
│ │ │ ├── RpcUtils.h
│ │ │ ├── SPOT_XML.cc
│ │ │ ├── SPOT_XML.h
│ │ │ ├── SatSim.cc
│ │ │ ├── SatSim.h
│ │ │ ├── SyntheticLinescan.cc
│ │ │ ├── SyntheticLinescan.h
│ │ │ ├── TimeProcessing.cc
│ │ │ ├── TimeProcessing.h
│ │ │ ├── XMLBase.cc
│ │ │ ├── XMLBase.h
│ │ │ └── tests/
│ │ │ ├── TestCsmCameraModel.cxx
│ │ │ ├── TestDGCameraModel.cxx
│ │ │ ├── TestRPCStereoModel.cxx
│ │ │ ├── TestSpotCameraModel.cxx
│ │ │ ├── ctx.json
│ │ │ ├── dg_example1.xml
│ │ │ ├── dg_example2.xml
│ │ │ ├── dg_example3.xml
│ │ │ ├── dg_example4.xml
│ │ │ ├── sample.RPB
│ │ │ ├── spot_example1.xml
│ │ │ ├── spot_style.xsl
│ │ │ ├── wv_mvp_1.xml
│ │ │ ├── wv_mvp_2.xml
│ │ │ ├── wv_test1.xml
│ │ │ └── wv_test2.xml
│ │ ├── Core/
│ │ │ ├── AffineEpipolar.cc
│ │ │ ├── AffineEpipolar.h
│ │ │ ├── AlignmentUtils.cc
│ │ │ ├── AlignmentUtils.h
│ │ │ ├── AspLog.cc
│ │ │ ├── AspLog.h
│ │ │ ├── AspProgramOptions.cc
│ │ │ ├── AspProgramOptions.h
│ │ │ ├── AspStringUtils.cc
│ │ │ ├── AspStringUtils.h
│ │ │ ├── AsterProc.cc
│ │ │ ├── AsterProc.h
│ │ │ ├── BaBaseOptions.h
│ │ │ ├── BaseCameraUtils.cc
│ │ │ ├── BaseCameraUtils.h
│ │ │ ├── BathyPlaneCalc.cc
│ │ │ ├── BathyPlaneCalc.h
│ │ │ ├── Bathymetry.cc
│ │ │ ├── Bathymetry.h
│ │ │ ├── BitChecker.cc
│ │ │ ├── BitChecker.h
│ │ │ ├── BundleAdjustUtils.cc
│ │ │ ├── BundleAdjustUtils.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CamPoseUtils.cc
│ │ │ ├── CamPoseUtils.h
│ │ │ ├── CameraTransforms.cc
│ │ │ ├── CameraTransforms.h
│ │ │ ├── CartographyUtils.cc
│ │ │ ├── CartographyUtils.h
│ │ │ ├── DataLoader.cc
│ │ │ ├── DataLoader.h
│ │ │ ├── DemDisparity.cc
│ │ │ ├── DemDisparity.h
│ │ │ ├── DemMosaic.cc
│ │ │ ├── DemMosaic.h
│ │ │ ├── DemMosaicOptions.h
│ │ │ ├── DemMosaicParse.cc
│ │ │ ├── DemMosaicParse.h
│ │ │ ├── DemUtils.cc
│ │ │ ├── DemUtils.h
│ │ │ ├── DisparityProcessing.cc
│ │ │ ├── DisparityProcessing.h
│ │ │ ├── EigenTransformUtils.cc
│ │ │ ├── EigenTransformUtils.h
│ │ │ ├── EigenUtils.cc
│ │ │ ├── EigenUtils.h
│ │ │ ├── EnvUtils.cc
│ │ │ ├── EnvUtils.h
│ │ │ ├── FileUtils.cc
│ │ │ ├── FileUtils.h
│ │ │ ├── GCP.cc
│ │ │ ├── GCP.h
│ │ │ ├── GdalUtils.cc
│ │ │ ├── GdalUtils.h
│ │ │ ├── ImageNormalization.cc
│ │ │ ├── ImageNormalization.h
│ │ │ ├── ImageUtils.cc
│ │ │ ├── ImageUtils.h
│ │ │ ├── InterestPointMatching.cc
│ │ │ ├── InterestPointMatching.h
│ │ │ ├── InterestPointMatching2.cc
│ │ │ ├── IpMatchingAlgs.cc
│ │ │ ├── IpMatchingAlgs.h
│ │ │ ├── LocalAlignment.cc
│ │ │ ├── LocalAlignment.h
│ │ │ ├── Macros.h
│ │ │ ├── MatchList.cc
│ │ │ ├── MatchList.h
│ │ │ ├── Nvm.cc
│ │ │ ├── Nvm.h
│ │ │ ├── OpenCVUtils.cc
│ │ │ ├── OpenCVUtils.h
│ │ │ ├── OrthoRasterizer.cc
│ │ │ ├── OrthoRasterizer.h
│ │ │ ├── OutlierProcessing.cc
│ │ │ ├── OutlierProcessing.h
│ │ │ ├── PdalUtils.cc
│ │ │ ├── PdalUtils.h
│ │ │ ├── PhotometricOutlier.cc
│ │ │ ├── PhotometricOutlier.h
│ │ │ ├── Point2Grid.cc
│ │ │ ├── Point2Grid.h
│ │ │ ├── PointCloudAlignment.cc
│ │ │ ├── PointCloudAlignment.h
│ │ │ ├── PointCloudProcessing.cc
│ │ │ ├── PointCloudProcessing.h
│ │ │ ├── PointCloudRead.cc
│ │ │ ├── PointCloudRead.h
│ │ │ ├── PointToDem.cc
│ │ │ ├── PointToDem.h
│ │ │ ├── PointToDem2.cc
│ │ │ ├── PointUtils.cc
│ │ │ ├── PointUtils.h
│ │ │ ├── ProjectiveCamApprox.cc
│ │ │ ├── ProjectiveCamApprox.h
│ │ │ ├── ReportUtils.cc
│ │ │ ├── ReportUtils.h
│ │ │ ├── StereoSettings.cc
│ │ │ ├── StereoSettings.h
│ │ │ ├── StereoSettingsDesc.h
│ │ │ ├── StereoSettingsParse.cc
│ │ │ ├── StereoSettingsParse.h
│ │ │ ├── StereoTiling.cc
│ │ │ ├── StereoTiling.h
│ │ │ ├── ThreadedEdgeMask.h
│ │ │ └── tests/
│ │ │ ├── TestAspProgramOptions.cxx
│ │ │ ├── TestIntegralAutoGainDetector.cxx
│ │ │ ├── TestInterestPointMatching.cxx
│ │ │ ├── TestPointUtils.cxx
│ │ │ ├── TestThreadedEdgeMask.cxx
│ │ │ ├── ThreadTest1.tif
│ │ │ ├── ThreadTest2.tif
│ │ │ ├── ThreadTest3.tif
│ │ │ └── sample_ascii.pcd
│ │ ├── GUI/
│ │ │ ├── AppData.cc
│ │ │ ├── AppData.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ChooseFilesDlg.cc
│ │ │ ├── ChooseFilesDlg.h
│ │ │ ├── DiskImagePyramidMultiChannel.cc
│ │ │ ├── DiskImagePyramidMultiChannel.h
│ │ │ ├── EventWidget.cc
│ │ │ ├── GuiArgs.cc
│ │ │ ├── GuiArgs.h
│ │ │ ├── GuiBase.cc
│ │ │ ├── GuiBase.h
│ │ │ ├── GuiConstants.h
│ │ │ ├── GuiGeom.cc
│ │ │ ├── GuiGeom.h
│ │ │ ├── GuiUtilities.cc
│ │ │ ├── GuiUtilities.h
│ │ │ ├── ImageData.cc
│ │ │ ├── ImageData.h
│ │ │ ├── MainWidget.cc
│ │ │ ├── MainWidget.h
│ │ │ ├── MainWindow.cc
│ │ │ ├── MainWindow.h
│ │ │ ├── MatchPointMgr.cc
│ │ │ ├── MatchPointMgr.h
│ │ │ ├── PolyWidget.cc
│ │ │ ├── ProfileWidget.cc
│ │ │ ├── WidgetBase.cc
│ │ │ ├── WidgetBase.h
│ │ │ ├── WidgetMenuMgr.cc
│ │ │ ├── WidgetMenuMgr.h
│ │ │ ├── WindowMenuMgr.cc
│ │ │ └── WindowMenuMgr.h
│ │ ├── GenerateConfig.cmake
│ │ ├── Gotcha/
│ │ │ ├── ALSC.cc
│ │ │ ├── ALSC.h
│ │ │ ├── CALSCParam.h
│ │ │ ├── CASP-GO_params.xml
│ │ │ ├── CBatchProc.cc
│ │ │ ├── CBatchProc.h
│ │ │ ├── CDensify.cc
│ │ │ ├── CDensify.h
│ │ │ ├── CDensifyParam.h
│ │ │ ├── CGOTCHAParam.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CProcBlock.cc
│ │ │ ├── CProcBlock.h
│ │ │ ├── CTiePt.h
│ │ │ └── README.txt
│ │ ├── IceBridge/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── archive_functions.py
│ │ │ ├── blend_dems.py
│ │ │ ├── camera_lookup.txt
│ │ │ ├── camera_models_from_nav.py
│ │ │ ├── correct_icebridge_l3_dem.cc
│ │ │ ├── extract_icebridge_ATM_points.py
│ │ │ ├── fetch_icebridge_data.py
│ │ │ ├── fetcher_script.py
│ │ │ ├── full_processing_script.py
│ │ │ ├── gen_ortho.py
│ │ │ ├── generate_fake_camera_models.py
│ │ │ ├── generate_flight_summary.py
│ │ │ ├── get_date_list.py
│ │ │ ├── icebridge_common.py
│ │ │ ├── icebridge_kmz_to_csv.py
│ │ │ ├── input_conversions.py
│ │ │ ├── label_images.py
│ │ │ ├── lvis2kml.py
│ │ │ ├── merge_orbitviz.py
│ │ │ ├── multi_flight_label_runner.py
│ │ │ ├── multi_process_command_runner.py
│ │ │ ├── nav2cam.cc
│ │ │ ├── orbitviz_pinhole.cc
│ │ │ ├── ortho2pinhole.cc
│ │ │ ├── pbs_functions.py
│ │ │ ├── pleiades_job_runner.sh
│ │ │ ├── pleiades_manager.py
│ │ │ ├── process_calibration_file.py
│ │ │ ├── process_icebridge_batch.py
│ │ │ ├── process_icebridge_run.py
│ │ │ ├── push_to_nsidc.py
│ │ │ ├── qi2txt.cc
│ │ │ ├── regenerate_summary_images.py
│ │ │ ├── run_helper.py
│ │ │ ├── run_multiple_flights.py
│ │ │ ├── sbet2txt.pl
│ │ │ └── special_cases.txt
│ │ ├── IsisIO/
│ │ │ ├── BaseEquation.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DiskImageResourceIsis.cc
│ │ │ ├── DiskImageResourceIsis.h
│ │ │ ├── Equation.cc
│ │ │ ├── Equation.h
│ │ │ ├── IsisCameraModel.h
│ │ │ ├── IsisInterface.cc
│ │ │ ├── IsisInterface.h
│ │ │ ├── IsisInterfaceFrame.cc
│ │ │ ├── IsisInterfaceFrame.h
│ │ │ ├── IsisInterfaceLineScan.cc
│ │ │ ├── IsisInterfaceLineScan.h
│ │ │ ├── IsisInterfaceMapFrame.cc
│ │ │ ├── IsisInterfaceMapFrame.h
│ │ │ ├── IsisInterfaceMapLineScan.cc
│ │ │ ├── IsisInterfaceMapLineScan.h
│ │ │ ├── IsisInterfaceSAR.cc
│ │ │ ├── IsisInterfaceSAR.h
│ │ │ ├── IsisSpecialPixels.cc
│ │ │ ├── IsisSpecialPixels.h
│ │ │ ├── PolyEquation.cc
│ │ │ ├── PolyEquation.h
│ │ │ ├── RPNEquation.cc
│ │ │ ├── RPNEquation.h
│ │ │ └── tests/
│ │ │ ├── 5165r.cub
│ │ │ ├── 5165r.map.cub
│ │ │ ├── E0201461.tiny.cub
│ │ │ ├── E1701676.reduce.cub
│ │ │ ├── TestEphemerisEquations.cxx
│ │ │ └── TestIsisCameraModel.cxx
│ │ ├── OpenMVG/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── flat_pair_map.hpp
│ │ │ ├── indMatch.hpp
│ │ │ ├── numeric.cpp
│ │ │ ├── numeric.h
│ │ │ ├── projection.cpp
│ │ │ ├── projection.hpp
│ │ │ ├── tracks.hpp
│ │ │ ├── triangulation.cpp
│ │ │ ├── triangulation.hpp
│ │ │ ├── triangulation_nview.cpp
│ │ │ ├── triangulation_nview.hpp
│ │ │ ├── types.hpp
│ │ │ └── union_find.hpp
│ │ ├── PcAlign/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── MaskedImageAlgs.cc
│ │ │ ├── MaskedImageAlgs.h
│ │ │ ├── NuthAlignment.cc
│ │ │ ├── NuthAlignment.h
│ │ │ ├── NuthAlignmentParse.cc
│ │ │ ├── NuthAlignmentParse.h
│ │ │ ├── NuthFit.cc
│ │ │ ├── NuthFit.h
│ │ │ ├── SlopeAspect.cc
│ │ │ ├── SlopeAspect.h
│ │ │ ├── pc_align_ceres.cc
│ │ │ ├── pc_align_ceres.h
│ │ │ ├── pc_align_fgr.cc
│ │ │ ├── pc_align_fgr.h
│ │ │ ├── pc_align_utils.cc
│ │ │ └── pc_align_utils.h
│ │ ├── PclIO/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── PclIO.cc
│ │ │ └── PclIO.h
│ │ ├── Python/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── asp_alg_utils.py
│ │ │ ├── asp_cmd_utils.py
│ │ │ ├── asp_dist_utils.py
│ │ │ ├── asp_file_utils.py
│ │ │ ├── asp_geo_utils.py
│ │ │ ├── asp_image_utils.py
│ │ │ ├── asp_rig_utils.py
│ │ │ ├── asp_stereo_utils.py
│ │ │ ├── asp_string_utils.py
│ │ │ ├── asp_system_utils.py
│ │ │ └── scale_linescan.py
│ │ ├── Rig/
│ │ │ ├── BasicAlgs.cc
│ │ │ ├── BasicAlgs.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraImage.h
│ │ │ ├── Detector.cc
│ │ │ ├── Detector.h
│ │ │ ├── ImageLookup.cc
│ │ │ ├── ImageLookup.h
│ │ │ ├── InterestPoint.cc
│ │ │ ├── InterestPoint.h
│ │ │ ├── InterpolationUtils.cc
│ │ │ ├── InterpolationUtils.h
│ │ │ ├── MergeMaps.cc
│ │ │ ├── MergeMaps.h
│ │ │ ├── NvmUtils.cc
│ │ │ ├── NvmUtils.h
│ │ │ ├── Ransac.cc
│ │ │ ├── Ransac.h
│ │ │ ├── RigCameraParams.cc
│ │ │ ├── RigCameraParams.h
│ │ │ ├── RigCameraUtils.cc
│ │ │ ├── RigCameraUtils.h
│ │ │ ├── RigConfig.cc
│ │ │ ├── RigConfig.h
│ │ │ ├── RigCostFunction.cc
│ │ │ ├── RigCostFunction.h
│ │ │ ├── RigData.cc
│ │ │ ├── RigData.h
│ │ │ ├── RigDem.cc
│ │ │ ├── RigDem.h
│ │ │ ├── RigImageIO.cc
│ │ │ ├── RigImageIO.h
│ │ │ ├── RigIo.cc
│ │ │ ├── RigIo.h
│ │ │ ├── RigMath.cc
│ │ │ ├── RigMath.h
│ │ │ ├── RigOptimizer.cc
│ │ │ ├── RigOptimizer.h
│ │ │ ├── RigOptions.h
│ │ │ ├── RigOutlier.cc
│ │ │ ├── RigOutlier.h
│ │ │ ├── RigParseOptions.cc
│ │ │ ├── RigParseOptions.h
│ │ │ ├── RigParseUtils.cc
│ │ │ ├── RigParseUtils.h
│ │ │ ├── RigRpcDistortion.cc
│ │ │ ├── RigRpcDistortion.h
│ │ │ ├── RigThread.cc
│ │ │ ├── RigThread.h
│ │ │ ├── RigTypeDefs.h
│ │ │ ├── RigUtils.cc
│ │ │ ├── RigUtils.h
│ │ │ ├── SystemUtils.cc
│ │ │ ├── SystemUtils.h
│ │ │ ├── TextureProcessing.cc
│ │ │ ├── TextureProcessing.h
│ │ │ ├── Tracks.cc
│ │ │ ├── Tracks.h
│ │ │ ├── TransformUtils.cc
│ │ │ ├── TransformUtils.h
│ │ │ ├── Triangulation.cc
│ │ │ ├── Triangulation.h
│ │ │ ├── happly.h
│ │ │ └── theia_flags.txt
│ │ ├── Sessions/
│ │ │ ├── BundleAdjustParse.cc
│ │ │ ├── BundleAdjustParse.h
│ │ │ ├── BundleAdjustSession.cc
│ │ │ ├── BundleAdjustSession.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── CameraModelLoader.cc
│ │ │ ├── CameraModelLoader.h
│ │ │ ├── CameraUtils.cc
│ │ │ ├── CameraUtils.h
│ │ │ ├── StereoSession.cc
│ │ │ ├── StereoSession.h
│ │ │ ├── StereoSessionASTER.cc
│ │ │ ├── StereoSessionASTER.h
│ │ │ ├── StereoSessionBathy.cc
│ │ │ ├── StereoSessionFactory.cc
│ │ │ ├── StereoSessionFactory.h
│ │ │ ├── StereoSessionGdal.cc
│ │ │ ├── StereoSessionGdal.h
│ │ │ ├── StereoSessionIo.cc
│ │ │ ├── StereoSessionIp.cc
│ │ │ ├── StereoSessionIsis.cc
│ │ │ ├── StereoSessionIsis.h
│ │ │ ├── StereoSessionMapProj.h
│ │ │ ├── StereoSessionNadirPinhole.cc
│ │ │ ├── StereoSessionNadirPinhole.h
│ │ │ ├── StereoSessionPinhole.cc
│ │ │ ├── StereoSessionPinhole.h
│ │ │ ├── StereoSessionRPC.h
│ │ │ └── tests/
│ │ │ ├── TestInstantiation.cxx
│ │ │ ├── TestStereoSessionASTER.cxx
│ │ │ ├── TestStereoSessionDG.cxx
│ │ │ ├── TestStereoSessionDGMapRPC.cxx
│ │ │ ├── TestStereoSessionRPC.cxx
│ │ │ ├── TestStereoSessionSpot.cxx
│ │ │ ├── dg_example1.xml
│ │ │ ├── dg_example2.xml
│ │ │ ├── dg_example3.xml
│ │ │ └── dg_example4.xml
│ │ ├── SfS/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SfsArgs.cc
│ │ │ ├── SfsArgs.h
│ │ │ ├── SfsCamera.cc
│ │ │ ├── SfsCamera.h
│ │ │ ├── SfsCostFun.cc
│ │ │ ├── SfsCostFun.h
│ │ │ ├── SfsErrorEstim.cc
│ │ │ ├── SfsErrorEstim.h
│ │ │ ├── SfsImageProc.cc
│ │ │ ├── SfsImageProc.h
│ │ │ ├── SfsModel.cc
│ │ │ ├── SfsModel.h
│ │ │ ├── SfsOptions.cc
│ │ │ ├── SfsOptions.h
│ │ │ ├── SfsUtils.cc
│ │ │ └── SfsUtils.h
│ │ ├── SfmView/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── GlCommon.h
│ │ │ ├── GlContext.cc
│ │ │ ├── GlContext.h
│ │ │ ├── GlWidget.cc
│ │ │ ├── GlWidget.h
│ │ │ ├── MeshRenderer.cc
│ │ │ ├── MeshRenderer.h
│ │ │ ├── SceneManager.cc
│ │ │ ├── SceneManager.h
│ │ │ ├── SceneOverview.cc
│ │ │ ├── SceneOverview.h
│ │ │ ├── SceneRenderer.cc
│ │ │ ├── SceneRenderer.h
│ │ │ ├── SfmMainWindow.cc
│ │ │ ├── SfmMainWindow.h
│ │ │ ├── SfmMath.h
│ │ │ ├── SfmUtils.cc
│ │ │ └── SfmUtils.h
│ │ ├── Tools/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── add_spot_rpc.cc
│ │ │ ├── aster2asp.cc
│ │ │ ├── bathy_plane_calc.cc
│ │ │ ├── bathy_threshold_calc.py
│ │ │ ├── bias_dg_cam.py
│ │ │ ├── bundle_adjust.cc
│ │ │ ├── cam2map4stereo.py
│ │ │ ├── cam2rpc.cc
│ │ │ ├── cam_gen.cc
│ │ │ ├── cam_test.cc
│ │ │ ├── camera_calibrate
│ │ │ ├── camera_footprint.cc
│ │ │ ├── camera_solve
│ │ │ ├── corr_eval.cc
│ │ │ ├── coverage_fraction.cc
│ │ │ ├── dem2gcp.cc
│ │ │ ├── dem_geoid.cc
│ │ │ ├── dem_mosaic.cc
│ │ │ ├── dg_mosaic
│ │ │ ├── disp2ip.cc
│ │ │ ├── disparitydebug.cc
│ │ │ ├── extract_bag
│ │ │ ├── fit_rpc.cc
│ │ │ ├── gcp_gen.cc
│ │ │ ├── geodiff.cc
│ │ │ ├── hiedr2mosaic.py
│ │ │ ├── historical_helper.py
│ │ │ ├── image_align.cc
│ │ │ ├── image_calc.cc
│ │ │ ├── image_mosaic.cc
│ │ │ ├── image_subset.cc
│ │ │ ├── jitter_solve.cc
│ │ │ ├── list_timestamps
│ │ │ ├── lronac2mosaic.py
│ │ │ ├── lronacjitreg.cc
│ │ │ ├── mapproject
│ │ │ ├── mapproject_single.cc
│ │ │ ├── mer2camera.cc
│ │ │ ├── multi_stereo
│ │ │ ├── n_align.cc
│ │ │ ├── nonlin_trans_corr.cc
│ │ │ ├── opencv_calibrate.cc
│ │ │ ├── opencv_imagelist_creator.cc
│ │ │ ├── orbit_plot.py
│ │ │ ├── orbitviz.cc
│ │ │ ├── otsu_threshold.cc
│ │ │ ├── pansharp.cc
│ │ │ ├── parallel_bundle_adjust
│ │ │ ├── parallel_sfs
│ │ │ ├── parallel_stereo
│ │ │ ├── parse_match_file.py
│ │ │ ├── pc_align.cc
│ │ │ ├── pc_filter.cc
│ │ │ ├── pc_merge.cc
│ │ │ ├── point2dem.cc
│ │ │ ├── point2las.cc
│ │ │ ├── point2mesh.cc
│ │ │ ├── prism2asp.cc
│ │ │ ├── refr_index
│ │ │ ├── rig_bracket
│ │ │ ├── rig_calibrator.cc
│ │ │ ├── rpc_gen.cc
│ │ │ ├── runWithLog.py
│ │ │ ├── sat_sim.cc
│ │ │ ├── scale_bathy_mask.py
│ │ │ ├── sfm_merge.cc
│ │ │ ├── sfm_proc
│ │ │ ├── sfm_submap.cc
│ │ │ ├── sfm_view.cc
│ │ │ ├── sfs.cc
│ │ │ ├── sfs_blend.cc
│ │ │ ├── skysat_helper.py
│ │ │ ├── sparse_disp
│ │ │ ├── stereo
│ │ │ ├── stereo.cc
│ │ │ ├── stereo.h
│ │ │ ├── stereo_blend.cc
│ │ │ ├── stereo_corr.cc
│ │ │ ├── stereo_dist
│ │ │ ├── stereo_fltr.cc
│ │ │ ├── stereo_gui.cc
│ │ │ ├── stereo_parse.cc
│ │ │ ├── stereo_pprc.cc
│ │ │ ├── stereo_rfne.cc
│ │ │ ├── stereo_sweep
│ │ │ ├── stereo_tile
│ │ │ ├── stereo_tri.cc
│ │ │ ├── texrecon
│ │ │ ├── theia_sfm
│ │ │ ├── tif_mosaic.cc
│ │ │ ├── time_trials
│ │ │ ├── undistort_image_texrecon.cc
│ │ │ ├── wv_correct.cc
│ │ │ └── xyzi2csv.cc
│ │ ├── WVCorrect/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README_MULTISPECTRAL
│ │ │ ├── README_PAN
│ │ │ ├── WV02_BAND3_CCD_CORR.tif
│ │ │ ├── ccd_process.py
│ │ │ ├── disp_avg.cc
│ │ │ ├── find_ccds.m
│ │ │ ├── find_ccds_aux.m
│ │ │ ├── find_moving_avg.m
│ │ │ ├── fix_ccd.m
│ │ │ ├── form_corrections_image.py
│ │ │ ├── gen_scandir.pl
│ │ │ ├── ms_ccd_solve.sh
│ │ │ ├── ms_ccd_verify.sh
│ │ │ ├── ms_correction_lookup.txt
│ │ │ ├── plot_ccds.m
│ │ │ ├── run_lr.sh
│ │ │ └── run_lr_wrap.sh
│ │ ├── asp_config.h.in
│ │ └── asp_date_config.h.in
│ └── test/
│ ├── Helpers.h
│ └── test_main.cc
├── stereo.default.example
└── thirdparty/
├── autotroll.mak
├── gtest/
│ ├── CHANGES
│ ├── CONTRIBUTORS
│ ├── COPYING
│ ├── README
│ ├── include/
│ │ └── gtest/
│ │ └── gtest_ASP.h
│ └── src/
│ ├── gtest-all.cc
│ └── gtest_main.cc
├── m4/
│ └── autotroll.m4
└── protobuf.mak
Showing preview only (838K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3824 symbols across 533 files)
FILE: src/asp/Camera/ASTER_XML.cc
type asp (line 49) | namespace asp {
function DOMElement (line 51) | DOMElement* ASTERXML::open_xml_file(std::string const& xml_path) {
FILE: src/asp/Camera/ASTER_XML.h
function XERCES_CPP_NAMESPACE_END (line 45) | XERCES_CPP_NAMESPACE_END
FILE: src/asp/Camera/BaParams.cc
type asp (line 38) | namespace asp {
FILE: src/asp/Camera/BaParams.h
function namespace (line 27) | namespace vw {
function namespace (line 39) | namespace asp {
FILE: src/asp/Camera/BaseCostFuns.cc
type asp (line 23) | namespace asp {
function signed_power (line 76) | double signed_power(double val, double power) {
FILE: src/asp/Camera/BaseCostFuns.h
function namespace (line 33) | namespace asp {
function ceres (line 65) | static ceres::CostFunction* Create(vw::Vector3 const& observation,
type LLHError (line 82) | struct LLHError {
type CamUncertaintyError (line 106) | struct CamUncertaintyError {
FILE: src/asp/Camera/BundleAdjustCamera.cc
type asp (line 51) | namespace asp {
function pack_pinhole_to_arrays (line 124) | void pack_pinhole_to_arrays(vw::camera::PinholeModel const& camera,
function pack_optical_bar_to_arrays (line 149) | void pack_optical_bar_to_arrays(vw::camera::OpticalBarModel const& cam...
function pack_csm_to_arrays (line 174) | void pack_csm_to_arrays(asp::CsmModel const& camera,
function apply_transform_to_params (line 203) | void apply_transform_to_params(vw::Matrix4x4 const& M, asp::BaParams &...
function apply_transform_to_cameras_pinhole (line 226) | void apply_transform_to_cameras_pinhole(vw::Matrix4x4 const& M,
function apply_transform_to_cameras_optical_bar (line 245) | void apply_transform_to_cameras_optical_bar(vw::Matrix4x4 const& M,
function apply_transform_to_cameras_csm (line 277) | void apply_transform_to_cameras_csm(vw::Matrix4x4 const& M,
function apply_rigid_transform (line 297) | void apply_rigid_transform(vw::Matrix3x3 const & rotation,
function check_gcp_dists (line 326) | void check_gcp_dists(std::vector<vw::CamPtr> const& camera_models,
function init_pinhole_model_with_camera_positions (line 374) | bool init_pinhole_model_with_camera_positions(boost::shared_ptr<vw::ba...
function transform_cameras_with_indiv_image_gcp (line 436) | void transform_cameras_with_indiv_image_gcp
function transform_cameras_with_shared_gcp (line 497) | void transform_cameras_with_shared_gcp(
function init_camera_using_gcp (line 583) | void init_camera_using_gcp(boost::shared_ptr<vw::ba::ControlNetwork> c...
function transformedPinholeCamera (line 637) | vw::camera::PinholeModel transformedPinholeCamera(int camera_index,
function transformedOpticalBarCamera (line 679) | vw::camera::OpticalBarModel
function transformedCsmCamera (line 730) | boost::shared_ptr<asp::CsmModel> transformedCsmCamera(int camera_index,
function calcPairMapprojOffsets (line 792) | void calcPairMapprojOffsets(int left_cam_index, int right_cam_index,
function processMatchPair (line 858) | void processMatchPair(size_t left_index, size_t right_index,
function matchFilesProcessing (line 919) | void matchFilesProcessing(vw::ba::ControlNetwork const& cnet,
function propagatedErrorStats (line 1162) | void propagatedErrorStats(size_t left_cam_index, size_t right_cam_index,
FILE: src/asp/Camera/BundleAdjustCamera.h
function namespace (line 46) | namespace vw {
FILE: src/asp/Camera/BundleAdjustCamera2.cc
type asp (line 63) | namespace asp {
function put_adjustments_in_params (line 67) | void put_adjustments_in_params(std::string const& input_prefix,
function create_corrected_cameras (line 88) | void create_corrected_cameras(std::vector<vw::CamPtr> const& input_cam...
function init_cams (line 104) | bool init_cams(asp::BaBaseOptions const& opt, asp::BaParams & param_st...
function init_cams_pinhole (line 155) | bool init_cams_pinhole(asp::BaBaseOptions const& opt, asp::BaParams & ...
function init_cams_optical_bar (line 216) | bool init_cams_optical_bar(asp::BaBaseOptions const& opt, asp::BaParam...
function init_cams_csm (line 262) | bool init_cams_csm(asp::BaBaseOptions const& opt, asp::BaParams & para...
function distortion_sanity_check (line 326) | void distortion_sanity_check(std::vector<int> const& num_dist_params,
function replace_separators_with_space (line 378) | void replace_separators_with_space(std::string & str) {
function split_str_with_space (line 385) | std::vector<std::string> split_str_with_space(std::string const& str) {
function is_str_non_neg_integer (line 395) | bool is_str_non_neg_integer(std::string const& str) {
function fine_grained_parse (line 407) | void fine_grained_parse(bool share_intrinsics_per_sensor,
function coarse_grained_parse (line 505) | void coarse_grained_parse(int num_sensors,
function print_float (line 585) | void print_float(bool do_float) {
function print_float_vec (line 592) | void print_float_vec(std::vector<bool> const& intrinsics, std::string ...
function print_shared (line 603) | void print_shared(bool shared) {
function load_intrinsics_options (line 614) | void load_intrinsics_options(bool solve_intrinsics,
function parse_intrinsics_limits (line 747) | void parse_intrinsics_limits(std::string const& intrinsics_limits_str,
function auto_build_overlap_list (line 772) | void auto_build_overlap_list(asp::BaBaseOptions &opt, double lonlat_bu...
function setup_error_propagation (line 842) | void setup_error_propagation(std::string const& session_name,
function calcOptimizedCameras (line 865) | void calcOptimizedCameras(asp::BaBaseOptions const& opt,
function estimateGsdPerTriPoint (line 929) | void estimateGsdPerTriPoint(std::vector<std::string> const& images,
function estimateGsdPerTriPoint (line 1001) | void estimateGsdPerTriPoint(std::vector<std::string> const& images,
function calcCameraCenters (line 1072) | void calcCameraCenters(std::vector<vw::CamPtr> const& cams,
function calcCameraCenters (line 1085) | void calcCameraCenters(std::string const& stereo_session,
function get_optical_center (line 1146) | void get_optical_center(vw::camera::CameraModel const* cam, vw::Vector...
function set_optical_center (line 1175) | void set_optical_center(vw::camera::CameraModel* cam, vw::Vector2 cons...
function get_focal_length (line 1205) | void get_focal_length(vw::camera::CameraModel const* cam, double & foc...
function set_focal_length (line 1235) | void set_focal_length(vw::camera::CameraModel* cam, double const& foca...
function get_distortion (line 1264) | void get_distortion(vw::camera::CameraModel const* cam, vw::Vector<dou...
function set_distortion (line 1321) | void set_distortion(vw::camera::CameraModel* cam, vw::Vector<double> c...
function syncUpInitialSharedParams (line 1381) | bool syncUpInitialSharedParams(BACameraType camera_type,
function calcMaxNumDistParams (line 1478) | int calcMaxNumDistParams(std::vector<vw::CamPtr> const& camera_models,
function ensureMinDistortion (line 1528) | void ensureMinDistortion(std::vector<vw::CamPtr> & camera_models,
function checkGcpRadius (line 1609) | void checkGcpRadius(vw::cartography::Datum const& datum,
function handleCameraPositionUncertainty (line 1630) | void handleCameraPositionUncertainty(asp::BaBaseOptions & opt, bool ha...
FILE: src/asp/Camera/BundleAdjustCostFuns.cc
type asp (line 35) | namespace asp {
function addReprojResidual (line 562) | void addReprojResidual(vw::Vector2 const& observation,
function addDispResidual (line 679) | void addDispResidual(vw::Vector3 const& reference_xyz,
function addPixelReprojCostFun (line 767) | void addPixelReprojCostFun(asp::BaOptions cons...
function addTriConstraint (line 899) | void addTriConstraint(asp::BaOptions const& opt,
function addRefTerrainCostFun (line 965) | void addRefTerrainCostFun(asp::BaOptions & ...
function addCamPosCostFun (line 1074) | void addCamPosCostFun(asp::BaOptions const& opt,
function addGcpOrDemConstraint (line 1161) | void addGcpOrDemConstraint(asp::BaBaseOptions const& opt,
FILE: src/asp/Camera/BundleAdjustCostFuns.h
type vw (line 35) | typedef vw::PixelMask<vw::Vector<float, 2>> DispPixelT;
function namespace (line 38) | namespace vw {
function namespace (line 43) | namespace asp {
function virtual (line 61) | virtual int num_intrinsic_params() const = 0;
function class (line 115) | class BaPinholeCam: public BaCamBase {
FILE: src/asp/Camera/BundleAdjustEigen.cc
type asp (line 27) | namespace asp {
function exportTriPoints (line 30) | void exportTriPoints(asp::BaParams const& param_storage,
function calcOpticalOffsets (line 42) | void calcOpticalOffsets(std::vector<std::string> const& ...
function calcWorldToCam (line 75) | Eigen::Affine3d calcWorldToCam(vw::camera::PinholeModel const& pin) {
function calcWorldToCam (line 106) | Eigen::Affine3d calcWorldToCam(asp::CsmModel const& csm) {
function calcCameraPoses (line 137) | void calcCameraPoses(bool no_poses_from...
function saveNvm (line 200) | void saveNvm(asp::BaBaseOptions const& opt,
function updateCameraPoses (line 231) | void updateCameraPoses(std::vector<Eigen::Affine3d> const& world_to_cam,
FILE: src/asp/Camera/BundleAdjustEigen.h
function namespace (line 33) | namespace asp {
FILE: src/asp/Camera/BundleAdjustIO.cc
type asp (line 65) | namespace asp {
function saveMapprojOffsets (line 68) | void saveMapprojOffsets(
function saveCameraReport (line 145) | void saveCameraReport(asp::BaBaseOptions const& opt, asp::BaParams con...
function saveHorizVertErrors (line 235) | void saveHorizVertErrors(std::string const& horiz_vert_errors_file,
function savePinholeCam (line 259) | std::string savePinholeCam(asp::BaBaseOptions const& opt, int icam,
function saveOpticalBarCam (line 297) | std::string saveOpticalBarCam(asp::BaBaseOptions const& opt, int icam,
function saveCsmCamUpdateIntr (line 336) | std::string saveCsmCamUpdateIntr(asp::BaBaseOptions const& opt, int icam,
function saveConvergenceAngles (line 391) | void saveConvergenceAngles(std::string const& conv_angles_file,
function read_image_cam_lists (line 412) | void read_image_cam_lists(std::string const& image_list,
function saveUpdatedCsm (line 491) | std::string saveUpdatedCsm(asp::BaBaseOptions const& opt, int icam,
function saveUpdatedRpc (line 536) | std::string saveUpdatedRpc(asp::BaBaseOptions const& opt, int icam,
function saveAdjustedCam (line 586) | std::string saveAdjustedCam(asp::BaBaseOptions const& opt, int icam,
function saveUpdatedCamera (line 618) | std::string saveUpdatedCamera(asp::BaBaseOptions const& opt,
function saveUpdatedCameras (line 653) | void saveUpdatedCameras(asp::BaBaseOptions const& opt,
function saveCsmCameras (line 692) | void saveCsmCameras(std::string const& out_prefix,
function loadRefDisp (line 739) | int loadRefDisp(std::string const& disp_list_filename,
FILE: src/asp/Camera/BundleAdjustIsis.cc
type asp (line 58) | namespace asp {
function readSerialNumbers (line 67) | void readSerialNumbers(std::vector<std::string> const& image_files,
function setIsisCnetTarget (line 93) | void setIsisCnetTarget(std::string const& image_name,
function readIsisCameras (line 116) | void readIsisCameras(std::vector<std::string> const& image_files,
function addIsisControlPoint (line 134) | void addIsisControlPoint(Isis::ControlNet & icnet,
function loadIsisCnet (line 234) | void loadIsisCnet(std::string const& isisCnetFile,
function saveUpdatedIsisCnet (line 422) | void saveUpdatedIsisCnet(std::string const& outputPrefix,
function saveIsisCnet (line 538) | void saveIsisCnet(std::string const& outputPrefix,
FILE: src/asp/Camera/BundleAdjustIsis.h
function namespace (line 37) | namespace vw {
function namespace (line 46) | namespace asp {
FILE: src/asp/Camera/BundleAdjustOptions.cc
type asp (line 39) | namespace asp {
function setupMapprojectedData (line 84) | void setupMapprojectedData(asp::BaOptions & opt,
function loadEstimCameraPositions (line 148) | int loadEstimCameraPositions(asp::BaOptions &opt,
function computeStatsOrIp (line 203) | void computeStatsOrIp(asp::BaOptions const& opt,
FILE: src/asp/Camera/BundleAdjustOptions.h
function namespace (line 30) | namespace asp {
FILE: src/asp/Camera/BundleAdjustOutliers.cc
type asp (line 40) | namespace asp {
function updateOutliers (line 47) | void updateOutliers(vw::ba::ControlNetwork const& cnet,
function filterOutliersProjWin (line 59) | void filterOutliersProjWin(asp::BaBaseOptions & opt,
function filterOutliersByConvergenceAngle (line 89) | void filterOutliersByConvergenceAngle(asp::BaBaseOptions const& opt,
function add_to_outliers (line 154) | int add_to_outliers(vw::ba::ControlNetwork & cnet,
function filterGcpOutliers (line 374) | void filterGcpOutliers(vw::ba::ControlNetwork const& cnet,
FILE: src/asp/Camera/BundleAdjustOutliers.h
function namespace (line 31) | namespace ceres {
function namespace (line 35) | namespace asp {
FILE: src/asp/Camera/BundleAdjustResiduals.cc
type asp (line 36) | namespace asp {
function compute_residuals (line 40) | void compute_residuals(asp::BaBaseOptions const& opt,
function compute_mean_residuals_at_xyz (line 114) | void compute_mean_residuals_at_xyz(asp::CRN const& crn,
function write_residual_map (line 165) | void write_residual_map(std::string const& output_prefix,
function write_per_xyz_pixel_residuals (line 229) | void write_per_xyz_pixel_residuals(vw::ba::ControlNetwork const& cnet,
function write_anchor_residuals (line 278) | void write_anchor_residuals(std::string const& residual_p...
function write_residual_logs (line 303) | void write_residual_logs(std::string const& residual_prefix,
function saveTriOffsetsPerCamera (line 472) | void saveTriOffsetsPerCamera(std::vector<std::string> const& image_files,
function saveTriOffsetsPerCamera (line 519) | void saveTriOffsetsPerCamera(std::vector<std::string> const& image_files,
function writeTriOffsetsPerCamera (line 568) | void writeTriOffsetsPerCamera(int num_cams,
function saveCameraOffsets (line 596) | void saveCameraOffsets(vw::cartography::Datum const& datum,
function saveCameraOffsets (line 635) | void saveCameraOffsets(vw::cartography::Datum const& da...
function compute_residuals (line 687) | void compute_residuals(asp::BaBaseOptions const& opt,
function writeRefTerrainResiduals (line 704) | void writeRefTerrainResiduals(std::string const& res...
function saveJitterResiduals (line 780) | void saveJitterResiduals(ceres::Problem & ...
FILE: src/asp/Camera/BundleAdjustResiduals.h
function namespace (line 34) | namespace asp {
FILE: src/asp/Camera/CameraErrorPropagation.cc
type asp (line 25) | namespace asp {
function horizontalStDevFromCamera (line 28) | double horizontalStDevFromCamera(boost::shared_ptr<vw::camera::CameraM...
function horizontalStdDevCheck (line 82) | void horizontalStdDevCheck(vw::Vector<double> const& stddevs, std::str...
FILE: src/asp/Camera/CameraErrorPropagation.h
function namespace (line 26) | namespace asp {
FILE: src/asp/Camera/CameraResectioning.cc
type asp (line 31) | namespace asp {
function RodriguesToRotation (line 33) | void RodriguesToRotation(Eigen::Vector3d const& vector,
function findCameraPose (line 42) | void findCameraPose(std::vector<vw::Vector3> const& ground_points,
FILE: src/asp/Camera/CameraResectioning.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Camera/Covariance.cc
type asp (line 31) | namespace asp {
function positionDelta (line 48) | vw::Vector<double, 3> positionDelta(int num) {
function quatDelta (line 67) | vw::Vector<double, 4> quatDelta(int num) {
function numCamsForCovariance (line 88) | int numCamsForCovariance() {
function scaledDGTriangulationJacobian (line 112) | void scaledDGTriangulationJacobian(vw::cartography::Datum const& datum,
function insertBlock (line 268) | void insertBlock(int start, int size, double* inputVals, vw::Matrix<do...
function scaledDGSatelliteCovariance (line 290) | void scaledDGSatelliteCovariance(vw::camera::CameraModel const* cam1,
function nedTri (line 366) | vw::Vector3 nedTri(vw::Vector3 const& cam1_ctr, vw::Vector3 const& cam...
function triangulationJacobian (line 387) | void triangulationJacobian(vw::cartography::Datum const& datum,
function propagateCovariance (line 463) | vw::Vector2 propagateCovariance(vw::Vector3 const& tri_nominal,
FILE: src/asp/Camera/Covariance.h
function namespace (line 30) | namespace vw {
function namespace (line 36) | namespace asp {
FILE: src/asp/Camera/CsmModel.cc
type asp (line 60) | namespace asp {
type USGSCSM_MODEL_TYPE (line 67) | enum USGSCSM_MODEL_TYPE {
function vectorToEcefCoord (line 79) | csm::EcefCoord vectorToEcefCoord(Vector3 v) {
function vectorToImageCoord (line 87) | csm::ImageCoord vectorToImageCoord(Vector2 v) {
function toCsmPixel (line 96) | void toCsmPixel(vw::Vector2 const& pix, csm::ImageCoord & csm) {
function fromCsmPixel (line 100) | void fromCsmPixel(vw::Vector2 & pix, csm::ImageCoord const& csm) {
function Vector3 (line 105) | Vector3 ecefCoordToVector(csm::EcefCoord const& c) {
function Vector3 (line 113) | Vector3 ecefVectorToVector(csm::EcefVector const& c) {
function Vector2 (line 121) | Vector2 imageCoordToVector(csm::ImageCoord const& c) {
function readCsmSunPosition (line 375) | void readCsmSunPosition(boost::shared_ptr<csm::RasterGM> const& gm_model,
function setModelFromStateStringAux (line 512) | void setModelFromStateStringAux(bool recreate_model,
function Vector2 (line 648) | Vector2 CsmModel::point_to_pixel(Vector3 const& point) const {
function Vector3 (line 720) | Vector3 CsmModel::camera_center(Vector2 const& pix) const {
function applyTransformToState (line 731) | void applyTransformToState(ModelT const * model,
function applyTransformToState (line 760) | void applyTransformToState(csm::RasterGM const* gm_model,
function stripSign (line 852) | std::vector<double> stripSign(std::vector<double> const & vals) {
function DistortionType (line 1154) | DistortionType CsmModel::distortion_type() const {
FILE: src/asp/Camera/CsmModel.h
function namespace (line 34) | namespace vw {
function namespace (line 40) | namespace csm {
function virtual (line 81) | virtual vw::Quaternion<double> camera_pose(vw::Vector2 const& pix) const {
function setDesiredPrecision (line 143) | void setDesiredPrecision(double desired_precision) {
FILE: src/asp/Camera/CsmModelFit.cc
type asp (line 35) | namespace asp {
function linescanFitSaveResiduals (line 41) | void linescanFitSaveResiduals(ceres::Problem & problem, std::string co...
function axisAngleToCsmQuatVec (line 60) | void axisAngleToCsmQuatVec(int num_poses,
function csmQuatVecToAxisAngle (line 81) | void csmQuatVecToAxisAngle(int num_poses,
type SightMatError (line 99) | struct SightMatError {
method SightMatError (line 101) | SightMatError(SightMatT const& world_sight_mat, int row, int col, in...
function fitBestRotationsIntrinsics (line 164) | void fitBestRotationsIntrinsics(SightMatT const& world_sight_mat,
type SightMatLinescanError (line 275) | struct SightMatLinescanError {
method SightMatLinescanError (line 277) | SightMatLinescanError(SightMatT const& world_sight_mat,
function refineCsmLinescanFit (line 378) | void refineCsmLinescanFit(SightMatT const& world_sight_mat,
function fitCsmLinescan (line 471) | void fitCsmLinescan(std::string const& sensor_id,
function createPixelSamples (line 537) | void createPixelSamples(int width, int height, int num_pixel_samples,
function parseRefineIntrinsicsStr (line 575) | void parseRefineIntrinsicsStr(std::string const& refine_intrinsics,
type FrameCamReprojErr (line 626) | struct FrameCamReprojErr {
method FrameCamReprojErr (line 628) | FrameCamReprojErr(std::vector<vw::Vector2> const& pixels,
function computeCamStats (line 718) | void computeCamStats(std::vector<vw::Vector2> const& pixels,
function refineCsmFrameFit (line 746) | void refineCsmFrameFit(std::vector<vw::Vector2> const& pixels,
function fitCsmLinescanToOpticalBar (line 845) | void fitCsmLinescanToOpticalBar(std::string const& camFile,
FILE: src/asp/Camera/CsmModelFit.h
function namespace (line 27) | namespace vw {
function namespace (line 33) | namespace asp {
FILE: src/asp/Camera/CsmUtils.cc
type asp (line 37) | namespace asp {
function fixQuaternionSigns (line 40) | void fixQuaternionSigns(UsgsAstroLsSensorModel * ls_model) {
function normalizeQuaternions (line 68) | void normalizeQuaternions(UsgsAstroLsSensorModel * ls_model) {
function normalizeQuaternions (line 91) | void normalizeQuaternions(UsgsAstroFrameSensorModel * frame_model) {
function interpQuaternions (line 116) | void interpQuaternions(UsgsAstroLsSensorModel const* ls_model, double ...
function interpPositions (line 130) | void interpPositions(std::vector<double> const& positions,
function interpPositions (line 144) | void interpPositions(UsgsAstroLsSensorModel const* ls_model, double time,
function interpVelocities (line 153) | void interpVelocities(UsgsAstroLsSensorModel const* ls_model, double t...
function nearestNeibInterp (line 167) | void nearestNeibInterp(const int &numTimes, const double *valueArray,
function linearInterp (line 191) | vw::Vector3 linearInterp(double t1, double t2, vw::Vector3 const& P1,
function orbitInterpExtrap (line 208) | void orbitInterpExtrap(double t0_in, double dt_in, int platformFlag,
function orbitInterpExtrap (line 318) | void orbitInterpExtrap(UsgsAstroLsSensorModel const * ls_model,
function populateCsmLinescan (line 330) | void populateCsmLinescan(double first_line_time, double dt_line,
function applyAdjustmentToCsmCamera (line 456) | void applyAdjustmentToCsmCamera(std::string const& image_file,
function calcTimes (line 475) | void calcTimes(UsgsAstroLsSensorModel const* ls_model,
function calcFirstLastPositionLines (line 508) | void calcFirstLastPositionLines(UsgsAstroLsSensorModel const* ls_model,
function calcFirstLastOrientationLines (line 540) | void calcFirstLastOrientationLines(UsgsAstroLsSensorModel const* ls_mo...
function resampleVec3Lagrange (line 571) | void resampleVec3Lagrange(std::vector<double> const& in_times,
function resampleQuatLagrange (line 594) | void resampleQuatLagrange(std::vector<double> const& in_times,
function resampleQuatSlerp (line 617) | void resampleQuatSlerp(std::vector<double> const& in_times,
function resampleModel (line 645) | void resampleModel(int num_lines_per_position, int num_lines_per_orien...
function get_time_at_line (line 754) | double get_time_at_line(double line, UsgsAstroLsSensorModel const* ls_...
function get_line_at_time (line 764) | double get_line_at_time(double time, UsgsAstroLsSensorModel const* ls_...
function get_camera_center_at_time (line 783) | vw::Vector3 get_camera_center_at_time(double time, UsgsAstroLsSensorMo...
function get_camera_velocity_at_time (line 789) | vw::Vector3 get_camera_velocity_at_time(double time, UsgsAstroLsSensor...
function pixel_to_vector (line 796) | vw::Vector3 pixel_to_vector(vw::Vector2 const& pix, UsgsAstroLsSensorM...
function orbitalCorrections (line 812) | void orbitalCorrections(asp::CsmModel * csm_model,
FILE: src/asp/Camera/CsmUtils.h
function namespace (line 37) | namespace vw {
function namespace (line 44) | namespace asp {
FILE: src/asp/Camera/JitterSolveCostFuns.cc
type asp (line 48) | namespace asp {
type LsPixelReprojErr (line 54) | struct LsPixelReprojErr {
method LsPixelReprojErr (line 55) | LsPixelReprojErr(vw::Vector2 const& observation, double weight,
type FramePixelReprojErr (line 106) | struct FramePixelReprojErr {
method FramePixelReprojErr (line 107) | FramePixelReprojErr(vw::Vector2 const& observation, double weight,
function updateLsModelTriPt (line 145) | void updateLsModelTriPt(double const * const * parameters,
type weightedRollYawError (line 269) | struct weightedRollYawError {
function calcIndexBounds (line 423) | void calcIndexBounds(double time1, double time2, double t0, double dt,...
function calcPosQuatIndexBounds (line 452) | void calcPosQuatIndexBounds(double line_extra,
function addLsReprojectionErr (line 486) | void addLsReprojectionErr(asp::BaBaseOptions const& opt,
function addFrameReprojectionErr (line 522) | void addFrameReprojectionErr(asp::BaBaseOptions const & opt,
function addLsOrFrameReprojectionErr (line 548) | void addLsOrFrameReprojectionErr(asp::BaBaseOptions const & opt,
type weightedXyzError (line 572) | struct weightedXyzError {
method weightedXyzError (line 573) | weightedXyzError(vw::Vector3 const& observation, double weight):
type weightedRotationError (line 597) | struct weightedRotationError {
method weightedRotationError (line 598) | weightedRotationError(const double * init_quat, double weight):
type weightedTranslationError (line 629) | struct weightedTranslationError {
method weightedTranslationError (line 630) | weightedTranslationError(const double * init_position, double weight):
type weightedQuatNormError (line 661) | struct weightedQuatNormError {
method weightedQuatNormError (line 662) | weightedQuatNormError(double weight):
function addReprojCamErrs (line 688) | void addReprojCamErrs(asp::BaBaseOptions const & opt,
function addDemConstraint (line 822) | void addDemConstraint(asp::BaBaseOptions const& opt,
function addTriConstraint (line 878) | void addTriConstraint(asp::BaBaseOptions const& opt,
function addGcpConstraint (line 924) | void addGcpConstraint(asp::BaBaseOptions const& opt,
function addHardCamPositionConstraint (line 976) | void addHardCamPositionConstraint(asp::BaBaseOptions con...
function addSoftCamPositionConstraint (line 1070) | void addSoftCamPositionConstraint(asp::BaBaseOptions const& ...
function addQuatNormRotationConstraints (line 1156) | void addQuatNormRotationConstraints(
function addRollYawConstraint (line 1271) | void addRollYawConstraint(asp::BaBaseOptions const& opt,
function calcDispBasedError (line 1389) | bool calcDispBasedError(UsgsAstroLsSensorModel *left_ls,
type RefTerrainReprojErr (line 1450) | struct RefTerrainReprojErr {
method RefTerrainReprojErr (line 1451) | RefTerrainReprojErr(UsgsAstroLsSensorModel *left_ls,
function addRefTerrainReprojectionErr (line 1585) | bool addRefTerrainReprojectionErr(asp::BaBaseOptions const& opt,
function loadReferenceTerrain (line 1659) | void loadReferenceTerrain(asp::BaBaseOptions const& opt,
function addRefTerrainCostFun (line 1746) | void addRefTerrainCostFun(asp::BaBaseOptions const& opt,
function estimCurvature (line 1955) | void estimCurvature(UsgsAstroLsSensorModel * ls_model,
type QuatSmoothnessErr (line 2014) | struct QuatSmoothnessErr {
method QuatSmoothnessErr (line 2016) | QuatSmoothnessErr(double const* smoothnessWeight) {
function signed_exp (line 2053) | double signed_exp(double val) {
function addQuatSmoothnessErr (line 2078) | void addQuatSmoothnessErr(UsgsAstroLsSensorModel * ls_model,
function addSmoothnessConstraint (line 2116) | void addSmoothnessConstraint(asp::BaBaseOptions const& opt,
FILE: src/asp/Camera/JitterSolveCostFuns.h
function namespace (line 48) | namespace asp {
FILE: src/asp/Camera/JitterSolveRigCostFuns.cc
type asp (line 38) | namespace asp {
type RigLsPixelReprojErr (line 45) | struct RigLsPixelReprojErr {
method RigLsPixelReprojErr (line 46) | RigLsPixelReprojErr(vw::Vector2 const& curr_pix, double weight,
function addRigLsFrameReprojectionErr (line 194) | void addRigLsFrameReprojectionErr(asp::BaBaseOptions const & opt,
function addRigLsLsReprojectionErr (line 283) | void addRigLsLsReprojectionErr(asp::BaBaseOptions const & opt,
type RigFramePixelReprojErr (line 387) | struct RigFramePixelReprojErr {
method RigFramePixelReprojErr (line 388) | RigFramePixelReprojErr(vw::Vector2 const& curr_pix, double weight,
function addRigFrameFrameReprojectionErr (line 507) | void addRigFrameFrameReprojectionErr(asp::BaBaseOptions const & opt,
function addRigLsOrFrameReprojectionErr (line 558) | void addRigLsOrFrameReprojectionErr(asp::BaBaseOptions const & opt,
FILE: src/asp/Camera/JitterSolveRigCostFuns.h
function namespace (line 37) | namespace asp {
FILE: src/asp/Camera/JitterSolveRigUtils.cc
type asp (line 37) | namespace asp {
function linescanTimeBounds (line 54) | void linescanTimeBounds(UsgsAstroLsSensorModel const* ls_model,
function populateInitRigCamInfo (line 72) | void populateInitRigCamInfo(rig::RigSet const& rig,
function populateTimestampMap (line 165) | void populateTimestampMap(std::map<int, int> const& cam2group,
function populateFrameGroupMidTimestamp (line 183) | void populateFrameGroupMidTimestamp(std::vector<asp::CsmModel*> ...
function findClosestRefCamera (line 224) | void findClosestRefCamera(rig::RigSet const& rig,
function timestampBrackets (line 281) | bool timestampBrackets(double time,
function timestampBrackets (line 339) | bool timestampBrackets(asp::RigCamInfo const & rig_cam_info,
function interpPose (line 367) | void interpPose(double time1, double time2,
function interpCurrPose (line 389) | void interpCurrPose(double time1, double time2, double time,
function interpFramePose (line 415) | bool interpFramePose(std::vector<asp::CsmModel*> const& csm_models,
function calcInterpRefCamToWorld (line 446) | bool calcInterpRefCamToWorld(std::vector<asp::CsmModel*> const& csm_mo...
function calcRigTransforms (line 489) | void calcRigTransforms(rig::RigSet const& rig,
function updateRig (line 620) | void updateRig(std::vector<double> const& ref_to_curr_sensor_vec,
function populateRigCamInfo (line 632) | void populateRigCamInfo(rig::RigSet const& rig,
function linescanToCurrSensorTrans (line 668) | void linescanToCurrSensorTrans(UsgsAstroLsSensorModel const& ref_ls_cam,
function frameToCurrSensorTrans (line 694) | void frameToCurrSensorTrans(std::vector<double> const& frame_par...
function updateLinescanWithRig (line 724) | void updateLinescanWithRig(UsgsAstroLsSensorModel const& ref_ls_cam,
FILE: src/asp/Camera/JitterSolveRigUtils.h
function namespace (line 34) | namespace rig {
function namespace (line 38) | namespace asp {
FILE: src/asp/Camera/JitterSolveUtils.cc
type asp (line 36) | namespace asp {
function readGroupStructure (line 44) | void readGroupStructure(std::vector<std::string> const & image_lists,
function indexInGroup (line 92) | int indexInGroup(int icam, std::map<int, int> const& cam2group) {
function formPositionQuatVecPerGroup (line 123) | void formPositionQuatVecPerGroup(std::map<int, int> const& cam2group,
function initFrameCameraParams (line 165) | void initFrameCameraParams(std::vector<asp::CsmModel*> const& csm_models,
function updateCameras (line 189) | void updateCameras(bool have_rig,
FILE: src/asp/Camera/JitterSolveUtils.h
function namespace (line 34) | namespace rig {
function namespace (line 38) | namespace asp {
FILE: src/asp/Camera/LinescanASTERModel.cc
type asp (line 22) | namespace asp {
function load_ASTER_camera_model_from_xml (line 84) | boost::shared_ptr<ASTERCameraModel>
FILE: src/asp/Camera/LinescanASTERModel.h
function namespace (line 31) | namespace asp {
FILE: src/asp/Camera/LinescanDGModel.cc
type asp (line 33) | namespace asp {
function parse_dg_time (line 38) | boost::posix_time::ptime parse_dg_time(std::string str) {
function load_dg_camera_model_from_xml (line 51) | vw::CamPtr load_dg_camera_model_from_xml(std::string const& path) {
FILE: src/asp/Camera/LinescanDGModel.h
function namespace (line 38) | namespace asp {
FILE: src/asp/Camera/LinescanPeruSatModel.cc
type asp (line 27) | namespace asp {
function load_perusat_camera_model_from_xml (line 251) | boost::shared_ptr<PeruSatCsmCameraModel>
FILE: src/asp/Camera/LinescanPeruSatModel.h
function namespace (line 34) | namespace asp {
FILE: src/asp/Camera/LinescanPleiadesModel.cc
type asp (line 32) | namespace asp {
function load_pleiades_family_camera_model (line 337) | boost::shared_ptr<PleiadesCameraModel>
function load_pleiades_camera_model_from_xml (line 380) | boost::shared_ptr<PleiadesCameraModel>
function load_spot_camera_model_from_xml (line 395) | boost::shared_ptr<PleiadesCameraModel>
FILE: src/asp/Camera/LinescanPleiadesModel.h
function namespace (line 35) | namespace asp {
FILE: src/asp/Camera/LinescanSpotModel.cc
type asp (line 31) | namespace asp {
function Matrix3x3 (line 40) | Matrix3x3 get_local_orbital_frame(Vector3 const& position, Vector3 con...
function Matrix3x3 (line 56) | Matrix3x3 get_look_rotation_matrix(double yaw, double pitch, double ro...
function load_spot5_csm_camera_model_from_xml (line 75) | boost::shared_ptr<CsmModel>
FILE: src/asp/Camera/LinescanSpotModel.h
function namespace (line 29) | namespace asp {
FILE: src/asp/Camera/LinescanUtils.cc
type asp (line 23) | namespace asp {
function isLinescanCsmSession (line 26) | bool isLinescanCsmSession(std::string const& session) {
FILE: src/asp/Camera/LinescanUtils.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Camera/MapprojectImage.cc
type asp (line 41) | namespace asp {
function write_parallel_cond (line 47) | void write_parallel_cond(std::string const& filename,
function write_parallel_type (line 122) | void write_parallel_type(std::string const& filename,
function write_parallel_type_multichannel (line 171) | void write_parallel_type_multichannel(std::string const& ...
function project_image_nodata (line 208) | void project_image_nodata(asp::MapprojOptions & opt,
function project_image_alpha (line 286) | void project_image_alpha(asp::MapprojOptions & opt,
function project_image_nodata_pick_transform (line 327) | void project_image_nodata_pick_transform(asp::MapprojOptions & opt,
function project_image_alpha_pick_transform (line 355) | void project_image_alpha_pick_transform(asp::MapprojOptions & opt,
function project_image (line 387) | void project_image(asp::MapprojOptions & opt, GeoReference const& dem_...
FILE: src/asp/Camera/MapprojectImage.h
function namespace (line 31) | namespace asp {
FILE: src/asp/Camera/PRISM_XML.cc
type asp (line 46) | namespace asp {
function parse_profile (line 53) | void parse_profile(DOMElement* root, std::string & profile) {
function read_first_last_line_times (line 60) | void read_first_last_line_times(xercesc::DOMElement * data_node,
function DOMElement (line 81) | DOMElement* getFirstChildByTagName(DOMElement* node, const std::string...
function read_sources_info (line 96) | void read_sources_info(xercesc::DOMElement * root,
function read_ephemeris (line 163) | void read_ephemeris(xercesc::DOMElement * data_node,
function read_rpy (line 221) | void read_rpy(xercesc::DOMElement * data_node,
function parsePrismXml (line 270) | void parsePrismXml(std::string const& dim_file,
FILE: src/asp/Camera/PRISM_XML.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Camera/PeruSatXML.cc
type asp (line 52) | namespace asp {
function DOMElement (line 54) | DOMElement* PeruSatXML::open_xml_file(std::string const& xml_path) {
FILE: src/asp/Camera/PeruSatXML.h
function XERCES_CPP_NAMESPACE_END (line 45) | XERCES_CPP_NAMESPACE_END
FILE: src/asp/Camera/PleiadesXML.cc
type asp (line 54) | namespace asp {
function DOMElement (line 56) | DOMElement* PleiadesXML::open_xml_file(std::string const& xml_path) {
function calc_midnight_time (line 318) | void calc_midnight_time(std::string const& start_time, std::string& mi...
function extrapolateAtStartTime (line 566) | void extrapolateAtStartTime(double delta_time,
function extrapolateAtStartTime (line 585) | void extrapolateAtStartTime(double delta_time,
function extrapolateAtEndTime (line 611) | void extrapolateAtEndTime(double delta_time,
function extrapolateAtEndTime (line 630) | void extrapolateAtEndTime(double delta_time,
FILE: src/asp/Camera/PleiadesXML.h
function XERCES_CPP_NAMESPACE_END (line 46) | XERCES_CPP_NAMESPACE_END
FILE: src/asp/Camera/RPCModel.cc
type asp (line 37) | namespace asp {
function Vector2 (line 255) | Vector2 RPCModel::point_to_pixel(Vector3 const& point) const {
function Vector2 (line 259) | Vector2 RPCModel::geodetic_to_pixel(Vector3 const& geodetic) const {
function Vector2 (line 271) | Vector2 RPCModel::normalizedLlhToPix(Vector3 const& normalized_geodetic,
function Vector2 (line 286) | Vector2 RPCModel::normalizedLlhToPix(Vector3 const& normalized_geodeti...
type RpcFunJac (line 500) | struct RpcFunJac {
method RpcFunJac (line 502) | RpcFunJac(RPCModel const& rpc, double height): m_rpc(rpc) {
function Vector2 (line 533) | Vector2 RPCModel::image_to_ground(Vector2 const& pixel, double height,
function Vector3 (line 606) | Vector3 RPCModel::camera_center(Vector2 const& pix) const{
function Vector3 (line 615) | Vector3 RPCModel::pixel_to_vector(Vector2 const& pix) const {
FILE: src/asp/Camera/RPCModel.h
function namespace (line 40) | namespace vw {
function namespace (line 44) | namespace asp {
FILE: src/asp/Camera/RPCModelGen.cc
type asp (line 27) | namespace asp {
function unpackCoeffs (line 34) | void unpackCoeffs(Vector<double> const& C,
function packCoeffs (line 57) | void packCoeffs(RPCModel::CoeffVec const& lineNum, RPCModel::CoeffVec ...
function print_vec (line 125) | void print_vec(std::string const& name, Vector<double> const& vals) {
function print_vec_to_file (line 137) | void print_vec_to_file(std::string const& path, Vector<double> const& ...
function find_solution_from_seed (line 150) | int find_solution_from_seed(RpcSolveLMA const& lma_model,
function initRpcAsAffine (line 180) | void initRpcAsAffine(// Inputs
function normalizeLlhPix (line 234) | void normalizeLlhPix(std::vector<vw::Vector3> const& llh_vec,
function gen_rpc (line 266) | void gen_rpc(// Inputs
function extractRotTrans (line 316) | void extractRotTrans(vw::Matrix4x4 const& ecef_transform,
function transformLlhVec (line 329) | void transformLlhVec(std::vector<vw::Vector3> const& llh,
function transformLlhBox (line 352) | void transformLlhBox(vw::Vector3 const& llh_offset_in,
function transformRpc (line 383) | asp::RPCModel transformRpc(asp::RPCModel const& rpc_model,
FILE: src/asp/Camera/RPCModelGen.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Camera/RPCStereoModel.cc
type asp (line 32) | namespace asp {
function Vector3 (line 34) | Vector3 RPCStereoModel::operator()(std::vector<Vector2> const& pixVec,
function Vector3 (line 98) | Vector3 RPCStereoModel::operator()(vw::Vector2 const& pix1,
FILE: src/asp/Camera/RPCStereoModel.h
function namespace (line 27) | namespace vw {
function namespace (line 33) | namespace asp {
FILE: src/asp/Camera/RPC_XML.cc
function parse_index (line 96) | void parse_index(DOMElement* model, std::string const& prefix, size_t in...
FILE: src/asp/Camera/RPC_XML.h
function XERCES_CPP_NAMESPACE_END (line 45) | XERCES_CPP_NAMESPACE_END
FILE: src/asp/Camera/RpcUtils.cc
type asp (line 25) | namespace asp {
function sample_llh_pix_bbox (line 29) | void sample_llh_pix_bbox(vw::BBox2 const& ll_box,
function add_perimeter_diag_points (line 78) | void add_perimeter_diag_points(vw::BBox2 const& image_box,
FILE: src/asp/Camera/RpcUtils.h
function namespace (line 32) | namespace vw {
function namespace (line 39) | namespace asp {
FILE: src/asp/Camera/SPOT_XML.cc
type asp (line 52) | namespace asp {
function DOMElement (line 54) | DOMElement* SpotXML::open_xml_file(std::string const& xml_path) {
FILE: src/asp/Camera/SPOT_XML.h
function XERCES_CPP_NAMESPACE_END (line 48) | XERCES_CPP_NAMESPACE_END
FILE: src/asp/Camera/SatSim.cc
type asp (line 49) | namespace asp {
function calcEcefTrajPtAlongAcross (line 55) | void calcEcefTrajPtAlongAcross(vw::Vector3 const& curr_proj,
function calcCamPoseAndGroundPt (line 80) | bool calcCamPoseAndGroundPt(SatSimOptions const& opt,
function demPixelErr (line 144) | double demPixelErr(SatSimOptions const& opt,
class RayDemPixelLMA (line 186) | class RayDemPixelLMA : public vw::math::LeastSquaresModelBase<RayDemPi...
method RayDemPixelLMA (line 207) | RayDemPixelLMA(SatSimOptions const& opt,
method result_type (line 227) | inline result_type operator()(domain_type const& len) const {
function findBestProjCamLocation (line 249) | void findBestProjCamLocation(SatSimOptions const& opt,
function calcOrbitLength (line 416) | double calcOrbitLength(vw::Vector3 const& first_proj, vw::Vector3 cons...
function cameraAdjustment (line 448) | void cameraAdjustment(vw::Vector2 const& first_ground_pos,
function adjustForFrameRate (line 504) | void adjustForFrameRate(SatSimOptions const& opt,
function findDirectionAlongOrbit (line 598) | double findDirectionAlongOrbit(vw::Vector3 const& ref_proj,
function signedOrbitDistance (line 626) | double signedOrbitDistance(vw::Vector3 const& curr_proj,
function calcJitterAmplitude (line 640) | vw::Vector3 calcJitterAmplitude(SatSimOptions const& opt,
function parseSensorGroundOffsets (line 690) | void parseSensorGroundOffsets(std::string const& offsets_str,
function parseSensorRotationAngles (line 708) | void parseSensorRotationAngles(std::string const& angles_str,
function adjustRigForOffsets (line 727) | void adjustRigForOffsets(SatSimOptions const& opt,
function genCamPoses (line 826) | void genCamPoses(SatSimOptions & opt,
function camPrefix (line 1071) | std::string camPrefix(SatSimOptions const& opt, int iFrame, double tim...
function readPinholeCameras (line 1097) | void readPinholeCameras(SatSimOptions const& opt,
function perturbCameras (line 1117) | void perturbCameras(SatSimOptions const& opt,
function skipCamera (line 1223) | bool skipCamera(int i, SatSimOptions const& opt) {
function applyRigTransform (line 1233) | void applyRigTransform(Eigen::Affine3d const & ref_to_sensor,
function genPinholeCameras (line 1261) | void genPinholeCameras(SatSimOptions const& opt,
function setupCroppedDemAndOrtho (line 1379) | void setupCroppedDemAndOrtho(vw::Vector2 const& image_size,
class SynImageView (line 1447) | class SynImageView: public vw::ImageViewBase<SynImageView> {
method SynImageView (line 1460) | SynImageView(SatSimOptions const& opt,
method cols (line 1478) | inline vw::int32 cols() const { return m_opt.image_size[0]; }
method rows (line 1479) | inline vw::int32 rows() const { return m_opt.image_size[1]; }
method planes (line 1480) | inline vw::int32 planes() const { return 1; }
method pixel_accessor (line 1482) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 1484) | inline pixel_type operator()( double/*i*/, double/*j*/, vw::int32/*p...
method prerasterize_type (line 1491) | inline prerasterize_type prerasterize(vw::BBox2i const& bbox) const {
method rasterize (line 1587) | inline void rasterize(DestT const& dest, vw::BBox2i bbox) const {
function genImages (line 1593) | void genImages(SatSimOptions const& opt,
function handleSensorType (line 1663) | void handleSensorType(int num_sensors,
function genCamerasImages (line 1691) | void genCamerasImages(float ortho_nodata_val,
function genRigCamerasImages (line 1744) | void genRigCamerasImages(SatSimOptions & opt,
function writeRelRig (line 1802) | void writeRelRig(std::string const& out_prefix, rig::RigSet const& rig) {
FILE: src/asp/Camera/SatSim.h
function namespace (line 39) | namespace rig {
function namespace (line 43) | namespace asp {
FILE: src/asp/Camera/SyntheticLinescan.cc
type asp (line 33) | namespace asp {
function PinLinescanTest (line 59) | void PinLinescanTest(SatSimOptions const & opt,
function intersectDemWithRay (line 94) | bool intersectDemWithRay(SatSimOptions const& opt,
function pixelAspectRatio (line 127) | double pixelAspectRatio(SatSimOptions const & opt,
function populateCsmLinescanRig (line 206) | void populateCsmLinescanRig(double first_line_time, double dt_line,
function genLinescanCameras (line 248) | void genLinescanCameras(double first_l...
function readLinescanCameras (line 391) | void readLinescanCameras(SatSimOptions const& opt,
FILE: src/asp/Camera/SyntheticLinescan.h
function namespace (line 29) | namespace vw {
function namespace (line 35) | namespace asp {
FILE: src/asp/Camera/TimeProcessing.cc
type asp (line 20) | namespace asp {
function fix_millisecond (line 24) | std::string fix_millisecond(std::string const& in_str) {
function parse_time (line 87) | boost::posix_time::ptime parse_time(std::string const& s) {
function to_seconds (line 104) | double to_seconds(const boost::posix_time::ptime& pt) {
FILE: src/asp/Camera/TimeProcessing.h
function namespace (line 21) | namespace asp {
FILE: src/asp/Camera/XMLBase.h
function namespace (line 44) | namespace asp {
FILE: src/asp/Camera/tests/TestCsmCameraModel.cxx
function TEST (line 26) | TEST(CSM_camera, basic_check) {
FILE: src/asp/Camera/tests/TestDGCameraModel.cxx
function TEST (line 35) | TEST(StereoSessionDG, XMLReading) {
function TEST (line 114) | TEST(DGCameraModel, CreateCamera) {
FILE: src/asp/Camera/tests/TestRPCStereoModel.cxx
function load_rpc_camera_model (line 41) | boost::shared_ptr<vw::camera::CameraModel> load_rpc_camera_model(std::st...
function test_stereo_models (line 55) | void test_stereo_models(const std::string &path1, const std::string &pat...
function TEST (line 90) | TEST(RPCModel, rpb) {
function TEST (line 101) | TEST(RPCXML, ReadRPC) {
function TEST (line 128) | TEST(RPCStereoModel, mvpMatchTest) {
function TEST (line 134) | TEST(RPCStereoModel, greenlandMatchTest) {
function TEST (line 140) | TEST(StereoSessionRPC, InstantiateTest) {
function TEST (line 184) | TEST(StereoSessionRPC, CheckStereo) {
function TEST (line 206) | TEST(StereoSessionRPC, CheckRpcCrop) {
FILE: src/asp/Camera/tests/TestSpotCameraModel.cxx
function xml_reading_test (line 29) | void xml_reading_test() {
function TEST (line 86) | TEST(SPOT_camera, XMLReading) {
FILE: src/asp/Core/AffineEpipolar.cc
type asp (line 38) | namespace asp {
function linear_affine_fundamental_matrix (line 42) | Matrix<double>
function solve_y_scaling (line 75) | void solve_y_scaling(std::vector<ip::InterestPoint> const & ip1,
function solve_x_shear (line 93) | void solve_x_shear(std::vector<ip::InterestPoint> const & ip1,
type BestFitEpipolarAlignment (line 123) | struct BestFitEpipolarAlignment {
method BestFitEpipolarAlignment (line 128) | BestFitEpipolarAlignment(Vector2i const& left_image_dims,
method min_elements_needed_for_fit (line 139) | size_t min_elements_needed_for_fit(InterestPointT const& /*example*/...
type EpipolarAlignmentError (line 249) | struct EpipolarAlignmentError {
function ransac (line 267) | typename FittingFuncT::result_type ransac(std::vector<ContainerT1> con...
function Vector2i (line 288) | Vector2i affine_epipolar_rectification(Vector2i const& left_image_dims,
FILE: src/asp/Core/AffineEpipolar.h
function namespace (line 25) | namespace vw {
function namespace (line 31) | namespace asp {
FILE: src/asp/Core/AlignmentUtils.cc
type asp (line 26) | namespace asp {
function leftAlignFile (line 28) | std::string leftAlignFile(std::string const& out_prefix) {
function rightAlignFile (line 32) | std::string rightAlignFile(std::string const& out_prefix) {
function leftAlignExrFile (line 39) | std::string leftAlignExrFile(std::string const& out_prefix) {
function rightAlignExrFile (line 43) | std::string rightAlignExrFile(std::string const& out_prefix) {
function alignmentMatrix (line 48) | vw::Matrix<double> alignmentMatrix(std::string const& out_prefix,
FILE: src/asp/Core/AlignmentUtils.h
function namespace (line 26) | namespace asp {
FILE: src/asp/Core/AspLog.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Core/AspProgramOptions.cc
type boost (line 152) | namespace boost {
type program_options (line 153) | namespace program_options {
function validate (line 211) | void validate(boost::any& v,
function validate (line 236) | void validate(boost::any& v,
function validate (line 261) | void validate(boost::any& v,
function validate (line 287) | void validate(boost::any& v,
function validate (line 314) | void validate(boost::any& v,
function validate (line 341) | void validate(boost::any& v,
function validate (line 368) | void validate(boost::any& v,
FILE: src/asp/Core/AspProgramOptions.h
function namespace (line 47) | namespace vw {
function namespace (line 51) | namespace asp {
function namespace (line 68) | namespace boost {
FILE: src/asp/Core/AspStringUtils.cc
type asp (line 30) | namespace asp {
function parseCamTypes (line 33) | void parseCamTypes(std::string const& session_name,
function parseKeysVals (line 51) | void parseKeysVals(std::string const& file,
function parse_append_metadata (line 86) | void parse_append_metadata(std::string const& metadata,
FILE: src/asp/Core/AspStringUtils.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Core/AsterProc.cc
type asp (line 40) | namespace asp {
function findSubdataset (line 47) | std::string findSubdataset(char** subdatasets, std::string const& patt...
function extractBandImage (line 61) | void extractBandImage(char** subdatasets,
function extractMetadataArray (line 94) | void extractMetadataArray(char** subdatasets,
function computeLatLonLattice (line 187) | void computeLatLonLattice(char** subdatasets,
class RadioCorrectView (line 371) | class RadioCorrectView: public vw::ImageViewBase<RadioCorrectView> {
method RadioCorrectView (line 378) | RadioCorrectView(vw::DiskImageView<float> const &img,
method cols (line 387) | inline vw::int32 cols() const { return m_img.cols(); }
method rows (line 388) | inline vw::int32 rows() const { return m_img.rows(); }
method planes (line 389) | inline vw::int32 planes() const { return 1; }
method pixel_accessor (line 391) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 393) | inline pixel_type operator()(double /*i*/, double /*j*/, vw::int32 /...
method prerasterize_type (line 400) | inline prerasterize_type prerasterize(vw::BBox2i const &bbox) const {
method rasterize (line 418) | inline void rasterize(DestT const &dest, vw::BBox2i bbox) const {
function RadioCorrectView (line 424) | RadioCorrectView radioCorrect(vw::DiskImageView<float> const &img,
method RadioCorrectView (line 378) | RadioCorrectView(vw::DiskImageView<float> const &img,
method cols (line 387) | inline vw::int32 cols() const { return m_img.cols(); }
method rows (line 388) | inline vw::int32 rows() const { return m_img.rows(); }
method planes (line 389) | inline vw::int32 planes() const { return 1; }
method pixel_accessor (line 391) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 393) | inline pixel_type operator()(double /*i*/, double /*j*/, vw::int32 /...
method prerasterize_type (line 400) | inline prerasterize_type prerasterize(vw::BBox2i const &bbox) const {
method rasterize (line 418) | inline void rasterize(DestT const &dest, vw::BBox2i bbox) const {
function genTmpDir (line 439) | std::string genTmpDir(std::string const &output_prefix) {
function extractHdfData (line 457) | void extractHdfData(std::string const& hdf_file, std::string const& hd...
function applyRadiometricCorrections (line 504) | void applyRadiometricCorrections(std::string const& input_image,
FILE: src/asp/Core/AsterProc.h
function namespace (line 29) | namespace vw {
function namespace (line 33) | namespace asp {
FILE: src/asp/Core/BaBaseOptions.h
type BACameraType (line 43) | enum BACameraType {BaCameraType_Pinhole = 0,
type BaBaseOptions (line 49) | struct BaBaseOptions
FILE: src/asp/Core/BaseCameraUtils.cc
type asp (line 30) | namespace asp {
function bundle_adjust_file_name (line 35) | std::string bundle_adjust_file_name(std::string const& prefix,
function load_adjusted_model (line 62) | vw::CamPtr load_adjusted_model(vw::CamPtr cam,
function read_adjustments (line 141) | void read_adjustments(std::string const& filename,
function write_adjustments (line 172) | void write_adjustments(std::string const& filename,
function camera_pixel_offset (line 185) | vw::Vector2 camera_pixel_offset(bool isMapProjected,
FILE: src/asp/Core/BaseCameraUtils.h
function namespace (line 25) | namespace asp {
FILE: src/asp/Core/BathyPlaneCalc.cc
type asp (line 38) | namespace asp {
function formSinglePoly (line 41) | void formSinglePoly(vw::geometry::dPoly const& inPoly,
function addPointToPoly (line 56) | void addPointToPoly(vw::geometry::dPoly & poly, vw::Vector2 const& p) {
function addPoint (line 68) | void addPoint(vw::cartography::GeoReference const& dem_georef,
function find_projection (line 103) | void find_projection(// Inputs
function meanOfPoints (line 146) | vw::Vector2 meanOfPoints(std::vector<vw::Vector2> const& points) {
function calcSubpixBdPoint (line 162) | bool calcSubpixBdPoint(vw::ImageViewRef<float> const& mask,
class MaskBoundaryTask (line 194) | class MaskBoundaryTask: public vw::Task, private boost::noncopyable {
method MaskBoundaryTask (line 211) | MaskBoundaryTask(vw::BBox2i bbox,
function sampleMaskBd (line 310) | void sampleMaskBd(vw::ImageViewRef<float> mask,
function sampleOrthoMaskBd (line 451) | void sampleOrthoMaskBd(std::string const& mask_file,
function find_points_at_shape_corners (line 547) | void find_points_at_shape_corners(std::vector<vw::geometry::dPoly> con...
function find_points_from_meas_csv (line 596) | void find_points_from_meas_csv(std::string const& water_height_measure...
function find_points_from_lon_lat_csv (line 640) | void find_points_from_lon_lat_csv(std::string const& lon_lat_measureme...
function saveShape (line 686) | void saveShape(std::vector<Eigen::Vector3d> const& ecef_vec,
function best_plane_from_points (line 713) | std::pair<Eigen::Vector3d, Eigen::Vector3d>
type BestFitPlaneFunctor (line 739) | struct BestFitPlaneFunctor {
method BestFitPlaneFunctor (line 741) | BestFitPlaneFunctor() {}
method min_elements_needed_for_fit (line 747) | size_t min_elements_needed_for_fit(ContainerT const& /*example*/) co...
function dist_to_plane (line 793) | double dist_to_plane(vw::Matrix<double, 1, 4> const& plane, Vec3 const...
type BestFitPlaneErrorMetric (line 805) | struct BestFitPlaneErrorMetric {
function calcPlaneProperties (line 813) | void calcPlaneProperties(std::vector<Eigen::Vector3d> const& proj_vec,
function saveBathyPlane (line 845) | void saveBathyPlane(double proj_lat, double proj_lon,
class DemMinusPlaneView (line 871) | class DemMinusPlaneView: public vw::ImageViewBase<DemMinusPlaneView>{
method DemMinusPlaneView (line 881) | DemMinusPlaneView(vw::ImageViewRef<float> const& dem,
method cols (line 894) | inline vw::int32 cols() const { return m_dem.cols(); }
method rows (line 895) | inline vw::int32 rows() const { return m_dem.rows(); }
method planes (line 896) | inline vw::int32 planes() const { return 1; }
method pixel_accessor (line 898) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 900) | inline pixel_type operator()(double/*i*/, double/*j*/, vw::int32/*p*...
method prerasterize_type (line 907) | inline prerasterize_type prerasterize(vw::BBox2i const& bbox) const {
method rasterize (line 962) | inline void rasterize(DestT const& dest, vw::BBox2i bbox) const {
function demMinusPlane (line 967) | vw::ImageViewRef<float>
function calcBathyPlane (line 978) | void calcBathyPlane(int num_ransac_iterations,
FILE: src/asp/Core/BathyPlaneCalc.h
function namespace (line 36) | namespace asp {
FILE: src/asp/Core/Bathymetry.cc
type asp (line 31) | namespace asp {
function readBathyPlanesStrOrList (line 35) | std::string readBathyPlanesStrOrList(std::string const& bathy_plane_fi...
function readBathyData (line 64) | void readBathyData(int num_images,
function doBathy (line 94) | bool doBathy(asp::StereoSettings const& stereo_settings) {
function validateBathyData (line 105) | void validateBathyData(vw::BathyData const& bathy_data, int num_images) {
function hasBathy (line 134) | bool hasBathy(vw::BathyData const& bathy_data) {
function bathyChecks (line 143) | void bathyChecks(std::string const& session_name,
FILE: src/asp/Core/Bathymetry.h
function namespace (line 32) | namespace asp {
FILE: src/asp/Core/BitChecker.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Core/BundleAdjustUtils.cc
type asp (line 51) | namespace asp {
function camera_footprint (line 54) | void camera_footprint(std::string const& dem_file,
function buildOverlapList (line 133) | void buildOverlapList(std::string const& out_prefix,
function check_for_duplicates (line 219) | void check_for_duplicates(std::vector<std::string> const& image_files,
function updatePointHeightFromDem (line 254) | bool updatePointHeightFromDem(vw::cartography::GeoReference const& dem...
function updateTriPtsFromDem (line 300) | void updateTriPtsFromDem(vw::ba::ControlNetwork const& cnet,
function flag_initial_outliers (line 402) | void flag_initial_outliers(vw::ba::ControlNetwork const& cnet,
function csmStateFile (line 473) | std::string csmStateFile(std::string const& adjustFile) {
function rpcAdjustedFile (line 490) | std::string rpcAdjustedFile(std::string const& adjustFile) {
function formTriVec (line 506) | void formTriVec(std::vector<vw::Vector3> const& dem_xyz_vec,
function movingAverage (line 561) | void movingAverage(std::vector<double> & vec, int window_size, bool fi...
function stripLeadingNan (line 606) | void stripLeadingNan(std::vector<double> & vec) {
function stripTrailingNan (line 629) | void stripTrailingNan(std::vector<double> & vec) {
function residualsPerRow (line 651) | void residualsPerRow(vw::ba::ControlNetwork const& cnet,
function saveCnetAsGcp (line 755) | void saveCnetAsGcp(vw::ba::ControlNetwork const& cnet,
function saveCnetAsGcp (line 785) | void saveCnetAsGcp(vw::ba::ControlNetwork const& cnet,
FILE: src/asp/Core/BundleAdjustUtils.h
function namespace (line 38) | namespace vw {
function namespace (line 56) | namespace asp {
FILE: src/asp/Core/CamPoseUtils.cc
type asp (line 27) | namespace asp {
function satSimDelta (line 33) | double satSimDelta() {
function assembleCam2WorldMatrix (line 40) | void assembleCam2WorldMatrix(vw::Vector3 const& along,
function calcProjAlongAcross (line 56) | void calcProjAlongAcross(vw::Vector3 const& first_proj,
function normalizeOrthogonalizeAlongAcross (line 77) | void normalizeOrthogonalizeAlongAcross(vw::Vector3 & along, vw::Vector...
function calcEcefAlongAcross (line 93) | void calcEcefAlongAcross(vw::cartography::GeoReference const& dem_georef,
FILE: src/asp/Core/CamPoseUtils.h
function namespace (line 28) | namespace vw { namespace cartography {
function namespace (line 32) | namespace asp {
FILE: src/asp/Core/CameraTransforms.cc
type asp (line 25) | namespace asp {
function rotationXY (line 28) | vw::Matrix3x3 rotationXY() {
function vwToEigenMat (line 44) | Eigen::Matrix3d vwToEigenMat(vw::Matrix3x3 const& m) {
function eigenToVwMat (line 53) | vw::Matrix3x3 eigenToVwMat(Eigen::Matrix3d const& m) {
function matrixToQuaternion (line 64) | void matrixToQuaternion(vw::Matrix3x3 const& R,
function quaternionToMatrix (line 79) | vw::Matrix3x3 quaternionToMatrix(double const* q) {
function rollPitchYaw (line 95) | vw::Matrix3x3 rollPitchYaw(double roll, double pitch, double yaw) {
function rollPitchYawFromRotationMatrix (line 119) | void rollPitchYawFromRotationMatrix(vw::Matrix3x3 const& R,
FILE: src/asp/Core/CameraTransforms.h
function namespace (line 29) | namespace asp {
FILE: src/asp/Core/CartographyUtils.cc
type asp (line 24) | namespace asp {
function setAutoProj (line 29) | void setAutoProj(double lat, double lon,
function snapBBox2ToGrid (line 52) | void snapBBox2ToGrid(vw::BBox2 &bbox, double spacing) {
function snapBBox3ToGrid (line 58) | void snapBBox3ToGrid(vw::BBox3 &bbox, double spacing) {
FILE: src/asp/Core/CartographyUtils.h
function namespace (line 26) | namespace asp {
FILE: src/asp/Core/DataLoader.cc
type asp (line 27) | namespace asp {
function load_csv_or_dem (line 29) | void load_csv_or_dem(std::string const& csv_format_str, std::string co...
FILE: src/asp/Core/DataLoader.h
function namespace (line 31) | namespace vw {
function namespace (line 37) | namespace asp {
FILE: src/asp/Core/DemDisparity.cc
type asp (line 45) | namespace asp {
function lowResPixToDemXyz (line 51) | inline bool
class DemDisparity (line 98) | class DemDisparity: public ImageViewBase<DemDisparity> {
method DemDisparity (line 113) | DemDisparity(ImgRefT const& left_image,
method int32 (line 141) | inline int32 cols () const { return m_left_image.cols(); }
method int32 (line 142) | inline int32 rows () const { return m_left_image.rows(); }
method int32 (line 143) | inline int32 planes() const { return 1; }
method pixel_accessor (line 145) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 147) | inline pixel_type operator()(double /*i*/, double /*j*/, int32 /*p*/...
method prerasterize_type (line 153) | inline prerasterize_type prerasterize(BBox2i const& bbox) const {
method rasterize (line 328) | inline void rasterize(DestT const& dest, BBox2i bbox) const {
function produce_dem_disparity (line 334) | void produce_dem_disparity(ASPGlobalOptions & opt,
FILE: src/asp/Core/DemDisparity.h
function namespace (line 30) | namespace asp {
function namespace (line 33) | namespace vw {
function namespace (line 40) | namespace asp {
FILE: src/asp/Core/DemMosaic.cc
type asp (line 33) | namespace asp {
function blurWeights (line 44) | void blurWeights(vw::ImageView<double> & weights, double sigma) {
function applyExternalWeights (line 81) | void applyExternalWeights(std::string const& weight_file,
function computePlateauedWeights (line 144) | double computePlateauedWeights(vw::Vector2 const& pix, bool horizontal,
function centerlineWeightsWithHoles (line 185) | void centerlineWeightsWithHoles(vw::ImageView<vw::PixelMask<double>> c...
function erfSmoothStep (line 276) | double erfSmoothStep(double x, double M, double L) {
function pointToPixelBboxSnapped (line 285) | vw::BBox2 pointToPixelBboxSnapped(vw::cartography::GeoReference const&...
function readGeorefOrThrow (line 309) | vw::cartography::GeoReference readGeorefOrThrow(std::string const& fil...
function DoubleGrayA (line 321) | DoubleGrayA interpDem(double x, double y,
function invalidateByThreshold (line 378) | void invalidateByThreshold(double threshold, double nodata_value,
function invalidateNaN (line 388) | void invalidateNaN(double nodata_value,
function setNoDataByWeight (line 398) | void setNoDataByWeight(double out_nodata_value,
function clampWeights (line 409) | void clampWeights(double bias, vw::ImageView<double> & weight) {
function raiseToPower (line 417) | void raiseToPower(double exponent, vw::ImageView<double> & weight) {
function setWeightsAsAlphaChannel (line 425) | void setWeightsAsAlphaChannel(vw::ImageView<double> const& weights,
function divideByWeight (line 434) | void divideByWeight(vw::ImageView<double> & tile,
function demMosaicDatumCheck (line 444) | void demMosaicDatumCheck(std::vector<vw::cartography::GeoReference> co...
function accumWeightedTiles (line 472) | void accumWeightedTiles(double out_nodata_value,
function computeWeightedAverage (line 502) | void computeWeightedAverage(int save_dem_weight,
function saveTileWeight (line 518) | void saveTileWeight(int dem_iter, vw::BBox2i const& bbox,
FILE: src/asp/Core/DemMosaic.h
function namespace (line 32) | namespace vw {
function namespace (line 38) | namespace asp {
FILE: src/asp/Core/DemMosaicOptions.h
function GdalWriteOptions (line 34) | struct DemMosaicOptions: vw::GdalWriteOptions {
FILE: src/asp/Core/DemMosaicParse.cc
type asp (line 37) | namespace asp {
function handleDemMosaicArgs (line 39) | void handleDemMosaicArgs(int argc, char *argv[], asp::DemMosaicOptions...
FILE: src/asp/Core/DemMosaicParse.h
function namespace (line 26) | namespace asp {
FILE: src/asp/Core/DemUtils.cc
type asp (line 31) | namespace asp {
function queryPixel (line 34) | void queryPixel(std::string const& dem_file, vw::CamPtr camera_model,
function setupDem (line 92) | void setupDem(vw::ImageViewRef<float> img,
function setupOrCheckDem (line 168) | void setupOrCheckDem(vw::GdalWriteOptions const& options,
class MGeodeticToMAltitude (line 238) | class MGeodeticToMAltitude: public vw::ReturnFixedType<vw::PixelMask<d...
class MaskNaN (line 249) | class MaskNaN: public vw::ReturnFixedType<vw::PixelMask<double>> {
function warpCrop (line 261) | vw::ImageViewRef<vw::PixelMask<double>>
function calcGsd (line 299) | void calcGsd(vw::ImageViewRef<double> const& dem,
FILE: src/asp/Core/DemUtils.h
function namespace (line 30) | namespace vw {
function namespace (line 37) | namespace asp {
FILE: src/asp/Core/DisparityProcessing.cc
type asp (line 36) | namespace asp {
function load_D_sub (line 39) | bool load_D_sub(std::string const& d_sub_file,
function load_D_sub_and_scale (line 57) | void load_D_sub_and_scale(std::string const ...
function filter_D_sub (line 75) | void filter_D_sub(ASPGlobalOptions const& opt,
function dispSpreadFilter (line 347) | int dispSpreadFilter(vw::ImageView<vw::PixelMask<vw::Vector2f>> & sub_...
function dispSpreadFilterIO (line 426) | void dispSpreadFilterIO(ASPGlobalOptions const& opt, std::string const...
class UnalignDisparityView (line 449) | class UnalignDisparityView: public ImageViewBase<UnalignDisparityView>{
method UnalignDisparityView (line 460) | UnalignDisparityView(bool is_map_projected,
method int32 (line 550) | inline int32 cols () const { return m_num_cols; }
method int32 (line 551) | inline int32 rows () const { return m_num_rows; }
method int32 (line 552) | inline int32 planes() const { return 1; }
method pixel_accessor (line 554) | inline pixel_accessor origin() const { return pixel_accessor(*this, ...
method pixel_type (line 556) | inline pixel_type operator()(double /*i*/, double /*j*/, int32 /*p*/...
method prerasterize_type (line 562) | inline prerasterize_type prerasterize(BBox2i const& bbox) const {
method rasterize (line 716) | inline void rasterize(DestT const& dest, BBox2i bbox) const {
function unalign_disparity (line 722) | void unalign_disparity(bool is_map_projected,
type DispMap (line 753) | struct DispMap {
method DispMap (line 768) | DispMap(DispImageType const& disp): m_disp(disp) {
method cols (line 777) | int cols() const {
method rows (line 781) | int rows() const {
method mapSetup (line 808) | void mapSetup() {
method findBin (line 900) | vw::Vector2i findBin(vw::Vector2 const& right_pix) const {
method approxInverse (line 918) | vw::Vector2 approxInverse(vw::Vector2 const& right_pix) const {
function noTripletsMatches (line 946) | void noTripletsMatches(ASPGlobalOptions const& opt,
function tripletsMatches (line 1016) | void tripletsMatches(ASPGlobalOptions const& opt,
function matchesFromDisp (line 1228) | void matchesFromDisp(ASPGlobalOptions const& opt,
FILE: src/asp/Core/DisparityProcessing.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Core/EigenTransformUtils.cc
type asp (line 24) | namespace asp {
function calcTransform (line 27) | Eigen::Affine3d calcTransform(double x, double y, double z,
FILE: src/asp/Core/EigenTransformUtils.h
function namespace (line 25) | namespace asp {
FILE: src/asp/Core/EigenUtils.cc
type asp (line 31) | namespace asp {
function cartesian_to_geodetic_adj (line 33) | vw::Vector3 cartesian_to_geodetic_adj(vw::cartography::GeoReference co...
function null_check (line 46) | void null_check(const char* token, std::string const& line){
function pick_at_most_m_unique_elems_from_n_elems (line 55) | void pick_at_most_m_unique_elems_from_n_elems(std::int64_t m, std::int...
function random_pc_subsample (line 81) | void random_pc_subsample(std::int64_t m, Eigen::MatrixXd& points){
function load_csv_aux (line 95) | std::int64_t load_csv_aux(std::string const& file_name, std::int64_t n...
function load_csv (line 336) | void load_csv(std::string const& file_name,
function load_dem_pixel_type (line 373) | void load_dem_pixel_type(std::string const& file_name,
function load_dem (line 475) | void load_dem(std::string const& file_name,
function load_pc_aux (line 498) | vw::int64 load_pc_aux(std::string const& file_name,
function load_pc (line 565) | void load_pc(std::string const& file_name,
function bestFitPlane (line 595) | void bestFitPlane(const std::vector<Eigen::Vector3d>& points, Eigen::V...
function computeRigidTransform (line 624) | void computeRigidTransform(const std::vector<Eigen::Vector3d>& src,
function read_transform (line 669) | void read_transform(Eigen::MatrixXd & T, std::string const& transFile){
function write_transform (line 693) | void write_transform(Eigen::MatrixXd const& T, std::string const& tran...
function apply_transform_to_vec (line 706) | vw::Vector3 apply_transform_to_vec(Eigen::MatrixXd const& transform,
FILE: src/asp/Core/EigenUtils.h
function namespace (line 32) | namespace asp {
FILE: src/asp/Core/EnvUtils.cc
type asp (line 33) | namespace asp {
function setEnvVar (line 37) | void setEnvVar(std::string const& var, std::string const& val) {
function set_asp_env_vars (line 52) | void set_asp_env_vars() {
FILE: src/asp/Core/EnvUtils.h
function namespace (line 23) | namespace asp {
FILE: src/asp/Core/FileUtils.cc
type asp (line 36) | namespace asp {
function first_is_newer (line 39) | bool first_is_newer(std::string const& test_file,
function first_is_newer (line 56) | bool first_is_newer(std::string const& test_file, std::string const& f...
function first_is_newer (line 61) | bool first_is_newer(std::string const& test_file,
function first_is_newer (line 67) | bool first_is_newer(std::string const& test_file,
function read_vec (line 77) | void read_vec(std::string const& filename, std::vector<double> & vals) {
function read_2d_points (line 89) | void read_2d_points(std::string const& file, std::vector<vw::Vector2> ...
function read_3d_points (line 103) | void read_3d_points(std::string const& file,
function write_list (line 119) | void write_list(std::string const& file, std::vector<std::string> cons...
function read_list (line 128) | void read_list(std::string const& file, std::vector<std::string> & lis...
function read_target_name (line 144) | std::string read_target_name(std::string const& filename) {
function readImagesCamsOrLists (line 200) | void readImagesCamsOrLists(std::vector<std::string> const & in,
function separate_images_from_cameras (line 240) | void separate_images_from_cameras(std::vector<std::string> const& inputs,
function read_matrix_from_stream (line 375) | void read_matrix_from_stream(std::string const& source, std::istream &...
function convertToVec2 (line 419) | void convertToVec2(std::vector<std::vector<std::vector<double>>> const...
function convertToVec3 (line 430) | void convertToVec3(std::vector<std::vector<std::vector<double>>> const...
function read_matrix_from_file (line 440) | void read_matrix_from_file(std::string const& file,
function read_matrix_from_file (line 448) | void read_matrix_from_file(std::string const& file,
function read_matrix_from_string (line 456) | void read_matrix_from_string(std::string const& str,
function read_matrix_from_string (line 464) | void read_matrix_from_string(std::string const& str,
function createSymLinks (line 474) | void createSymLinks(std::string const& left_input_file,
FILE: src/asp/Core/FileUtils.h
function namespace (line 26) | namespace asp {
FILE: src/asp/Core/GCP.cc
type asp (line 27) | namespace asp {
function writeGcp (line 31) | void writeGcp(std::string const& gcpFile,
function genWriteGcp (line 91) | void genWriteGcp(std::vector<std::string> const& image_files,
FILE: src/asp/Core/GCP.h
function namespace (line 30) | namespace asp {
FILE: src/asp/Core/GdalUtils.h
function namespace (line 31) | namespace asp {
function m_rounding_error (line 103) | RoundImagePixels(double rounding_error):m_rounding_error(rounding_error){
function VecT (line 107) | VecT operator() (VecT const& pt) const {
FILE: src/asp/Core/ImageNormalization.cc
type asp (line 35) | namespace asp {
function get_nodata_values (line 39) | void get_nodata_values(boost::shared_ptr<vw::DiskImageResource> left_r...
function openCvDetectMethod (line 72) | bool openCvDetectMethod() {
function doNotExceedMinMax (line 79) | bool doNotExceedMinMax() {
function calcImageSeqMinMax (line 85) | void calcImageSeqMinMax(bool force_use_entire_range,
function normalize_images (line 193) | void normalize_images(bool force_use_entire_range,
function normalizeImage (line 230) | void normalizeImage(std::string const& image_file,
function calcNormalizationBounds (line 256) | void calcNormalizationBounds(std::string const& out_prefix,
function readNormalizationBounds (line 297) | void readNormalizationBounds(std::string const& boundsFile,
FILE: src/asp/Core/ImageNormalization.h
function namespace (line 30) | namespace vw {
function namespace (line 34) | namespace asp {
FILE: src/asp/Core/ImageUtils.cc
type asp (line 38) | namespace asp {
function load_image (line 41) | void load_image(std::string const& image_file,
function create_masked_dem (line 65) | void create_masked_dem(std::string const& dem_file,
function create_interp_dem (line 91) | void create_interp_dem(std::string const& dem_file,
function projected_ip_to_raw_ip (line 107) | bool projected_ip_to_raw_ip(vw::ip::InterestPoint &P,
function read_cam2map_pvl (line 143) | void read_cam2map_pvl(std::string const& map_file,
function read_mapproj_header (line 178) | void read_mapproj_header(std::string const& map_file,
function for_each_pixel_rowwise (line 222) | void for_each_pixel_rowwise(const vw::ImageViewBase<ViewT> &view_, Fun...
function for_each_pixel_columnwise (line 249) | void for_each_pixel_columnwise(const vw::ImageViewBase<ViewT> &view_, ...
function gather_stats (line 282) | vw::Vector<vw::float32,6>
function hasByteChannels (line 390) | bool hasByteChannels(const std::string& image_path) {
function expand_box_by_pct (line 403) | void expand_box_by_pct(vw::BBox2 & box, double pct) {
FILE: src/asp/Core/ImageUtils.h
function namespace (line 28) | namespace vw {
function namespace (line 34) | namespace asp {
FILE: src/asp/Core/InterestPointMatching.cc
type asp (line 48) | namespace asp {
function detect_ip (line 54) | void detect_ip(vw::ip::InterestPointList& ip,
function detect_ip_pair (line 200) | bool detect_ip_pair(vw::ip::InterestPointList& ip1,
function detect_match_ip (line 239) | void detect_match_ip(std::vector<vw::ip::InterestPoint>& matched_ip1,
function check_homography_matrix (line 265) | void check_homography_matrix(Matrix<double> const& H,
function rough_homography_fit (line 295) | Matrix<double>
function filter_ip_homog (line 399) | void filter_ip_homog(std::vector<vw::ip::InterestPoint> const& ip1_in,
function Vector2i (line 446) | Vector2i homography_rectification(bool adjust_left_image_size,
function remove_ip_bbox (line 535) | size_t remove_ip_bbox(vw::BBox2i const& roi, vw::ip::InterestPointList...
function side_ip_filtering (line 551) | void side_ip_filtering(vw::ip::InterestPointList& ip1,
function tri_ip_filtering (line 575) | bool tri_ip_filtering(std::vector<ip::InterestPoint> const& matched_ip1,
function stddev_ip_filtering (line 683) | bool stddev_ip_filtering(std::vector<vw::ip::InterestPoint> const& ip1,
function filter_ip_by_lonlat_and_elevation (line 772) | size_t filter_ip_by_lonlat_and_elevation(vw::TransformPtr tx_l...
function filter_ip_using_cameras (line 870) | void filter_ip_using_cameras(std::vector<vw::ip::InterestPoint> & ip1,
function ip_filter_using_dem (line 983) | void ip_filter_using_dem(std::string const & ip_filter_us...
function search_range_using_spread (line 1094) | vw::BBox2 search_range_using_spread(double max_disp_spread,
function aligned_ip_from_D_sub (line 1121) | void aligned_ip_from_D_sub(vw::ImageViewRef<vw::PixelMask<vw::Vector2f...
function translation_ip_matching (line 1152) | vw::Matrix<double> translation_ip_matching(vw::ImageView<vw::PixelGray...
function homography_ip_matching (line 1211) | bool homography_ip_matching(vw::ImageViewRef<float> const& image1,
function detect_ip_aligned_pair (line 1296) | bool detect_ip_aligned_pair(vw::camera::CameraModel* cam1,
function write_match_image (line 1382) | void write_match_image(std::string const& out_file_name,
FILE: src/asp/Core/InterestPointMatching.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Core/InterestPointMatching2.cc
type asp (line 40) | namespace asp {
class EpipolarLinePointMatcher (line 52) | class EpipolarLinePointMatcher {
function Vector3 (line 102) | Vector3 EpipolarLinePointMatcher::epipolar_line(Vector2 const& feature,
class EpipolarLineMatchTask (line 167) | class EpipolarLineMatchTask: public Task, private boost::noncopyable {
method EpipolarLineMatchTask (line 180) | EpipolarLineMatchTask(bool single_threaded_camera,
function epipolar_ip_matching_task (line 378) | void epipolar_ip_matching_task(bool single_threaded_camera,
function tile_extra_indices (line 447) | void tile_extra_indices(double x, int tile_size, int extra, std::vecto...
function group_ip_in_tiles (line 476) | void group_ip_in_tiles(std::vector<vw::ip::InterestPoint> const& ip1_c...
function append_new_matches (line 535) | void append_new_matches(
function pick_subset (line 562) | void pick_subset(int max_pairwise_matches,
function match_ip_no_datum (line 583) | void match_ip_no_datum(std::vector<vw::ip::InterestPoint> const& ip1_c...
class MatchPerTileTask (line 611) | class MatchPerTileTask: public Task, private boost::noncopyable {
method MatchPerTileTask (line 633) | MatchPerTileTask(int start_tile, int num_tiles_per_job,
function matches_per_tile (line 746) | void matches_per_tile(bool have_datum,
function epipolar_ip_matching (line 808) | bool epipolar_ip_matching(bool single_threaded_camera,
function match_ip_with_datum (line 959) | bool match_ip_with_datum(bool single_threaded_camera,
function match_ip_no_datum (line 1077) | void match_ip_no_datum(vw::ip::InterestPointList const& ip1,
FILE: src/asp/Core/IpMatchingAlgs.cc
type asp (line 35) | namespace asp {
function stereoMatchFile (line 39) | std::string stereoMatchFile(std::string const& left_cropped_file,
function compute_ip_LR (line 72) | void compute_ip_LR(std::string const & out_prefix) {
function filter_ip_by_disparity (line 185) | void filter_ip_by_disparity(double pct, // for example, 90.0
function calc_ip_coverage_fraction (line 225) | double calc_ip_coverage_fraction(std::vector<ip::InterestPoint> const&...
function align_ip (line 271) | void align_ip(vw::TransformPtr const& tx_left,
function unalign_ip (line 298) | void unalign_ip(vw::TransformPtr tx_left,
function matchMultiPrefix (line 356) | std::string matchMultiPrefix(std::string const& clean_match_files_prefix,
function matchFileMultiPrefix (line 368) | std::string matchFileMultiPrefix(std::string const& clean_match_files_...
function unwarped_disp_file (line 386) | std::string unwarped_disp_file(std::string const& prefix, std::string ...
function convergence_angles (line 397) | void convergence_angles(vw::camera::CameraModel const * left_cam,
function listExistingMatchFiles (line 428) | void listExistingMatchFiles(std::string const& prefix,
function matchesForPair (line 473) | void matchesForPair(vw::ba::ControlNetwork const& cnet,
function determineImagePairs (line 513) | void determineImagePairs(// Inputs
function findMatchFiles (line 600) | void findMatchFiles(// Inputs
FILE: src/asp/Core/IpMatchingAlgs.h
function namespace (line 36) | namespace vw {
function namespace (line 49) | namespace asp {
FILE: src/asp/Core/LocalAlignment.cc
type asp (line 58) | namespace asp {
function grow_box_to_square (line 61) | vw::BBox2i grow_box_to_square(vw::BBox2i const& box, int max_size) {
function grow_box_to_square_with_constraint (line 76) | vw::BBox2i grow_box_to_square_with_constraint(vw::BBox2i const& box, i...
function estimate_right_trans_crop_win (line 108) | void estimate_right_trans_crop_win(ASPGlobalOptions const & opt,
function filter_local_ip_using_cameras (line 243) | void filter_local_ip_using_cameras(ASPGlobalOptions const ...
function apply_transforms_to_ip (line 319) | void apply_transforms_to_ip(std::vector<vw::ip::InterestPoint> const &...
function local_alignment (line 365) | void local_alignment(// Inputs
function unalign_1d_disparity (line 860) | void unalign_1d_disparity(// Inputs
function unalign_2d_disparity (line 923) | void unalign_2d_disparity(// Inputs
function unalign_masked_image (line 984) | void unalign_masked_image(// Inputs
function parse_plugins_list (line 1018) | void parse_plugins_list(std::map<std::string, std::string> & plugins,
function parse_stereo_alg_name_and_opts (line 1097) | void parse_stereo_alg_name_and_opts(std::string const& stereo_alg,
function is_option_name (line 1116) | bool is_option_name(std::string const& val) {
function is_env_var_and_val (line 1121) | bool is_env_var_and_val(std::string const& val) {
function rm_trailing_whitespace (line 1130) | void rm_trailing_whitespace(std::string & val) {
function get_env_var_name_and_val (line 1136) | void get_env_var_name_and_val(std::string const& in,
function concatenate_optons (line 1163) | std::string concatenate_optons(std::map<std::string, std::string> cons...
function extract_opts_and_env_vars (line 1190) | void extract_opts_and_env_vars(std::string const& input_str,
function call_opencv_bm_or_sgbm (line 1298) | void call_opencv_bm_or_sgbm(std::string const& left_file,
FILE: src/asp/Core/LocalAlignment.h
function namespace (line 32) | namespace vw {
function namespace (line 41) | namespace asp {
FILE: src/asp/Core/MatchList.cc
type asp (line 28) | namespace asp {
function populateMatchFiles (line 272) | void populateMatchFiles(std::vector<std::string> const& image_files,
FILE: src/asp/Core/MatchList.h
function namespace (line 36) | namespace asp {
FILE: src/asp/Core/Nvm.cc
type asp (line 34) | namespace asp {
function readNvm (line 38) | void readNvm(std::string const & input_filename,
function offsetsFilename (line 125) | std::string offsetsFilename(std::string const& nvm_filename) {
function readNvmOffsets (line 137) | void readNvmOffsets(std::string const& offset_path,
function writeNvmOffsets (line 163) | void writeNvmOffsets(std::string const& offset_path,
function writeNvm (line 182) | void writeNvm(std::vector<Eigen::Matrix2Xd> const& cid_to_keypoint_map,
function writeNvm (line 281) | void writeNvm(std::vector<Eigen::Matrix2Xd> const& cid_to_keypoint_map,
function remapNvm (line 299) | void remapNvm(std::map<int, int> const& cid2cid,
function ExtractSubmap (line 394) | void ExtractSubmap(std::vector<std::string> const& images_to_keep,
function readNvm (line 466) | void readNvm(std::string const& input_filename,
function readNvm (line 526) | void readNvm(std::string const& input_filename,
function writeNvm (line 541) | void writeNvm(asp::nvmData const& nvm, std::string const& output_filen...
function nvmToCnet (line 553) | void nvmToCnet(asp::nvmData const& nvm,
function cnetToNvm (line 592) | void cnetToNvm(vw::ba::ControlNetwork const& cnet,
function remapNvm (line 707) | void remapNvm(std::vector<std::string> const& image_files,
function readNvmAsCnet (line 748) | void readNvmAsCnet(std::string const& input_filename,
function writeCnetAsNvm (line 770) | void writeCnetAsNvm(vw::ba::ControlNetwork const& cnet,
FILE: src/asp/Core/Nvm.h
function namespace (line 31) | namespace vw {
function namespace (line 37) | namespace asp {
FILE: src/asp/Core/OpenCVUtils.cc
type asp (line 26) | namespace asp {
function cvMatType (line 29) | std::string cvMatType(cv::Mat const& M) {
function cvMatToVwMat (line 57) | vw::Matrix<double> cvMatToVwMat(cv::Mat const& M) {
function formScaledByteCVImage (line 83) | void formScaledByteCVImage(vw::ImageViewRef<float> in, cv::Mat & out) {
function maskedToScaledByteCvImage (line 107) | void maskedToScaledByteCvImage(vw::ImageViewRef<vw::PixelMask<float>> ...
function cvInsertBlock (line 113) | void cvInsertBlock(cv::Mat const& input_image, int extra_x,
FILE: src/asp/Core/OpenCVUtils.h
function namespace (line 31) | namespace asp {
FILE: src/asp/Core/OrthoRasterizer.cc
type asp (line 46) | namespace asp{
class compare_bboxes (line 50) | class compare_bboxes { // simple comparison function
function dump_image (line 57) | void dump_image(std::string const& prefix, BBox2i const& box,
class SubBlockBoundaryTask (line 84) | class SubBlockBoundaryTask: public Task, private boost::noncopyable {
type GrowBBoxAccumulator (line 101) | struct GrowBBoxAccumulator {
type ErrorHistAccumulator (line 109) | struct ErrorHistAccumulator{
method ErrorHistAccumulator (line 112) | ErrorHistAccumulator(std::vector<double>& hist, double max_val):
method SubBlockBoundaryTask (line 127) | SubBlockBoundaryTask(ImageViewRef<Vector3> const& view,
function remove_outliers (line 244) | void remove_outliers(ImageView<Vector3> & image, ImageViewRef<double> ...
function filter_by_median (line 268) | void filter_by_median(ImageView<Vector3> & image, Vector2 const& media...
function erode_image (line 310) | void erode_image(ImageView<Vector3> & image, int erode_len) {
function percentile_error (line 369) | double percentile_error(std::vector<double> const& hist, double max_va...
function BOOST_FOREACH (line 560) | BOOST_FOREACH(BBoxPair const& boundary, m_point_image_boundaries) {
function BBox3 (line 649) | BBox3 OrthoRasterizerView::pixel_to_point_bbox(BBox2 const& inbox) con...
function BOOST_FOREACH (line 723) | BOOST_FOREACH(BBoxPair const& boundary, m_point_image_boundaries) {
function BBox3 (line 900) | BBox3 OrthoRasterizerView::bounding_box() const { return m_snapped_bbo...
FILE: src/asp/Core/OrthoRasterizer.h
function namespace (line 37) | namespace asp{
FILE: src/asp/Core/OutlierProcessing.cc
type asp (line 27) | namespace asp {
function estimate_inliers_bbox (line 32) | void estimate_inliers_bbox(double pct_factor_x, double pct_factor_y, d...
function estimate_points_bdbox (line 66) | void estimate_points_bdbox(vw::ImageViewRef<vw::Vector3> const& proj_p...
class ErrorRangeEstimAccum (line 118) | class ErrorRangeEstimAccum: public ReturnFixedType<void> {
method ErrorRangeEstimAccum (line 124) | ErrorRangeEstimAccum() { m_vals.clear(); }
method size (line 132) | int size(){
method value_type (line 136) | value_type value(Vector2 const& remove_outliers_params){
function estim_max_tri_error_and_proj_box (line 166) | double estim_max_tri_error_and_proj_box(vw::ImageViewRef<vw::Vector3> ...
FILE: src/asp/Core/OutlierProcessing.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Core/PdalUtils.cc
type pdal (line 51) | namespace pdal {
class PDAL_DLL (line 57) | class PDAL_DLL
function point_count_t (line 153) | point_count_t StreamedCloud::read(PointViewPtr view, point_count_t numPt...
class PDAL_DLL (line 248) | class PDAL_DLL
function StreamProcessor (line 264) | StreamProcessor(const StreamProcessor&) = delete;
function StreamProcessor (line 265) | StreamProcessor(const StreamProcessor&&) = delete;
type asp (line 297) | namespace asp {
function georef_from_las (line 299) | bool georef_from_las(std::string const& las_file,
function las_file_size (line 320) | std::int64_t las_file_size(std::string const& las_file) {
function isCopc (line 333) | bool isCopc(std::string const& file) {
function write_las (line 356) | void write_las(bool has_georef, vw::cartography::GeoReference const& g...
class PDAL_DLL (line 451) | class PDAL_DLL
function getName (line 490) | virtual std::string getName() const { return "sample streamer"; }
function addArgs (line 514) | virtual void addArgs(pdal::ProgramArgs& args) {}
function initialize (line 515) | virtual void initialize() {}
function processOne (line 518) | virtual bool processOne(pdal::PointRef& point) {
function writeView (line 565) | virtual void writeView(const pdal::PointViewPtr view) {
function done (line 570) | virtual void done(pdal::PointTableRef table) {
function LasProcessor (line 578) | LasProcessor(const LasProcessor&) = delete;
function LasProcessor (line 579) | LasProcessor(const LasProcessor&&) = delete;
class PDAL_DLL (line 586) | class PDAL_DLL
function done (line 648) | virtual void done(pdal::PointTableRef table) {
function setupLasOrCopcReader (line 663) | void setupLasOrCopcReader(std::string const& in_file,
function load_las_aux (line 709) | std::int64_t load_las_aux(std::string const& file_name,
function load_las (line 752) | void load_las(std::string const& file_name,
function apply_transform_to_las (line 786) | void apply_transform_to_las(std::string const& input_file,
FILE: src/asp/Core/PdalUtils.h
function namespace (line 35) | namespace vw {
function namespace (line 41) | namespace pdal {
function namespace (line 46) | namespace asp {
FILE: src/asp/Core/PhotometricOutlier.h
function namespace (line 29) | namespace vw{
function namespace (line 33) | namespace asp {
FILE: src/asp/Core/Point2Grid.cc
type asp (line 27) | namespace asp {
FILE: src/asp/Core/Point2Grid.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Core/PointCloudAlignment.cc
type asp (line 39) | namespace asp {
class PDAL_DLL (line 44) | class PDAL_DLL
function getName (line 82) | virtual std::string getName() const { return "sample streamer"; }
function addArgs (line 106) | virtual void addArgs(pdal::ProgramArgs& args) {}
function initialize (line 107) | virtual void initialize() {}
function processOne (line 110) | virtual bool processOne(pdal::PointRef& point) {
function writeView (line 157) | virtual void writeView(const pdal::PointViewPtr view) {
function done (line 162) | virtual void done(pdal::PointTableRef table) {
function LasProcessor (line 170) | LasProcessor(const LasProcessor&) = delete;
function LasProcessor (line 171) | LasProcessor(const LasProcessor&&) = delete;
class PDAL_DLL (line 178) | class PDAL_DLL
function done (line 240) | virtual void done(pdal::PointTableRef table) {
function load_las_aux (line 257) | std::int64_t load_las_aux(std::string const& file_name,
function apply_transform_to_las (line 296) | void apply_transform_to_las(std::string const& input_file,
FILE: src/asp/Core/PointCloudAlignment.h
function namespace (line 34) | namespace vw {
function namespace (line 42) | namespace asp {
FILE: src/asp/Core/PointCloudProcessing.cc
type asp (line 42) | namespace asp {
class PDAL_DLL (line 44) | class PDAL_DLL
function processBuf (line 93) | void processBuf() {
function processOne (line 124) | virtual bool processOne(pdal::PointRef& point) {
function done (line 140) | virtual void done(pdal::PointTableRef table) {
function writeView (line 146) | virtual void writeView(const pdal::PointViewPtr view) {
function addArgs (line 149) | virtual void addArgs(pdal::ProgramArgs& args) {}
function initialize (line 150) | virtual void initialize() {}
function ChipMaker (line 152) | ChipMaker(const ChipMaker&) = delete;
function ChipMaker (line 153) | ChipMaker(const ChipMaker&&) = delete;
class CsvReader (line 157) | class CsvReader: public BaseReader {
method CsvReader (line 167) | CsvReader(std::string const & csv_file,
method ReadNextPoint (line 188) | virtual bool ReadNextPoint() {
method GetPoint (line 223) | virtual vw::Vector3 GetPoint() {
class TifReader (line 235) | class TifReader: public BaseReader {
method TifReader (line 249) | TifReader(std::string const & tif_file):
method ReadNextPoint (line 276) | virtual bool ReadNextPoint() {
method GetPoint (line 326) | virtual vw::Vector3 GetPoint() {
function pcd_file_size (line 479) | std::int64_t pcd_file_size(std::string const& file) {
class CloudToTif (line 491) | class CloudToTif: public vw::ImageViewBase<CloudToTif> {
method CloudToTif (line 505) | CloudToTif(asp::BaseReader * reader, int image_rows,
method cols (line 510) | inline vw::int32 cols () const { return m_cols; }
method rows (line 511) | inline vw::int32 rows () const { return m_rows; }
method planes (line 512) | inline vw::int32 planes() const { return 1; }
method pixel_accessor (line 514) | inline pixel_accessor origin() const { return pixel_accessor(*this); }
method result_type (line 516) | inline result_type operator()(size_t i, size_t j, size_t p=0) const {
method prerasterize_type (line 523) | inline prerasterize_type prerasterize(vw::BBox2i const& bbox) const {
method rasterize (line 559) | inline void rasterize(DestT const& dest, vw::BBox2i const& bbox) const {
function las_or_csv_to_tif (line 572) | void las_or_csv_to_tif(std::string const& in_file,
function georef_from_pc_files (line 676) | bool georef_from_pc_files(std::vector<std::string> const& files,
FILE: src/asp/Core/PointCloudProcessing.h
function namespace (line 31) | namespace vw {
function namespace (line 38) | namespace asp {
FILE: src/asp/Core/PointCloudRead.cc
type asp (line 29) | namespace asp {
function read_asp_point_cloud_3 (line 31) | vw::ImageViewRef<vw::Vector<double, 3>>
function read_asp_point_cloud_4 (line 36) | vw::ImageViewRef<vw::Vector<double, 4>>
function read_asp_point_cloud_6 (line 41) | vw::ImageViewRef<vw::Vector<double, 6>>
FILE: src/asp/Core/PointCloudRead.h
function namespace (line 30) | namespace asp {
FILE: src/asp/Core/PointToDem.cc
type asp (line 35) | namespace asp {
function parse_input_clouds_textures (line 52) | void parse_input_clouds_textures(std::vector<std::string> const& files,
function chip_convert_to_tif (line 133) | void chip_convert_to_tif(DemOptions const& opt,
function setProjection (line 236) | void setProjection(DemOptions const& opt, cartography::GeoReference & ...
FILE: src/asp/Core/PointToDem.h
function namespace (line 27) | namespace vw {
function namespace (line 34) | namespace asp {
FILE: src/asp/Core/PointToDem2.cc
type asp (line 37) | namespace asp {
function save_image (line 41) | void save_image(DemOptions & opt, ImageT img, vw::cartography::GeoRefe...
type RoundImagePixelsSkipNoData (line 78) | struct RoundImagePixelsSkipNoData: public vw::ReturnFixedType<PixelT> {
method RoundImagePixelsSkipNoData (line 82) | RoundImagePixelsSkipNoData(double scale, double nodata):
method PixelT (line 85) | PixelT operator() (PixelT const& pt) const {
type NaN2Mask (line 106) | struct NaN2Mask: public ReturnFixedType<PixelMask<VectorT>> {
method NaN2Mask (line 107) | NaN2Mask() {}
type Mask2NaN (line 118) | struct Mask2NaN: public ReturnFixedType<VectorT> {
method Mask2NaN (line 119) | Mask2NaN() {}
method VectorT (line 120) | VectorT operator() (PixelMask<VectorT> const& pvec) const {
type NaN2NoData (line 129) | struct NaN2NoData: public ReturnFixedType<Vector3> {
method NaN2NoData (line 130) | NaN2NoData(float nodata_val):m_nodata_val(nodata_val) {}
method Vector3 (line 132) | Vector3 operator() (Vector3 const& vec) const {
type ErrorToNED (line 142) | struct ErrorToNED: public ReturnFixedType<Vector3> {
method ErrorToNED (line 144) | ErrorToNED(vw::cartography::GeoReference const& georef):m_georef(geo...
method Vector3 (line 146) | Vector3 operator() (Vector6 const& pt) const {
function error_to_NED (line 159) | UnaryPerPixelView<ImageT, ErrorToNED>
function round_image_pixels_skip_nodata (line 166) | vw::UnaryPerPixelView<ImageT, RoundImagePixelsSkipNoData<typename Imag...
class CombinedAbsView (line 175) | class CombinedAbsView: public ImageViewBase<CombinedAbsView> {
method CombinedAbsView (line 187) | CombinedAbsView(double nodata_value,
method int32 (line 196) | inline int32 cols () const { return m_image1.cols(); }
method int32 (line 197) | inline int32 rows () const { return m_image1.rows(); }
method int32 (line 198) | inline int32 planes() const { return 1; }
method pixel_accessor (line 200) | inline pixel_accessor origin() const { return pixel_accessor(*this); }
method result_type (line 202) | inline result_type operator()(size_t i, size_t j, size_t p=0) const {
method prerasterize_type (line 215) | inline prerasterize_type prerasterize(BBox2i const& bbox) const {
method rasterize (line 222) | inline void rasterize(DestT const& dest, BBox2i const& bbox) const {
function CombinedAbsView (line 226) | CombinedAbsView combine_abs_channels(double nodata_value,
method CombinedAbsView (line 187) | CombinedAbsView(double nodata_value,
method int32 (line 196) | inline int32 cols () const { return m_image1.cols(); }
method int32 (line 197) | inline int32 rows () const { return m_image1.rows(); }
method int32 (line 198) | inline int32 planes() const { return 1; }
method pixel_accessor (line 200) | inline pixel_accessor origin() const { return pixel_accessor(*this); }
method result_type (line 202) | inline result_type operator()(size_t i, size_t j, size_t p=0) const {
method prerasterize_type (line 215) | inline prerasterize_type prerasterize(BBox2i const& bbox) const {
method rasterize (line 222) | inline void rasterize(DestT const& dest, BBox2i const& bbox) const {
function save_dem (line 240) | void save_dem(DemOptions & opt,
function save_intersection_error (line 301) | void save_intersection_error(DemOptions & opt,
function save_stddev (line 346) | void save_stddev(DemOptions & opt,
function save_ortho (line 384) | void save_ortho(DemOptions & opt,
function rasterize_cloud (line 467) | void rasterize_cloud(asp::OrthoRasterizerView& rasterizer,
FILE: src/asp/Core/PointUtils.cc
function parse_color (line 293) | bool parse_color(std::string const& line, std::string & color) {
function Vector3 (line 481) | Vector3 asp::CsvConv::csv_to_cartesian_or_point_height(CsvRecord const& ...
function Vector3 (line 607) | Vector3 asp::CsvConv::cartesian_to_csv(Vector3 const& xyz,
function read_point_cloud_compatible_file (line 1087) | typename boost::enable_if<boost::is_same<PixelT, PixelGray<float>>,
function read_point_cloud_compatible_file (line 1093) | typename boost::disable_if<boost::is_same<PixelT, PixelGray<float>>,
FILE: src/asp/Core/PointUtils.h
function namespace (line 36) | namespace vw{
function namespace (line 49) | namespace asp {
function class (line 302) | class BaseReader {
function class (line 317) | class PcdReader: public BaseReader{
function const (line 367) | double operator() (VectorT const& vec) const {
FILE: src/asp/Core/ProjectiveCamApprox.cc
type asp (line 26) | namespace asp {
function calcProjTrans (line 30) | void calcProjTrans(std::vector<vw::Vector2> const& imagePts,
function applyProjTrans (line 81) | vw::Vector2 applyProjTrans(vw::Vector3 const& xyz,
FILE: src/asp/Core/ProjectiveCamApprox.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Core/ReportUtils.cc
type asp (line 29) | namespace asp {
function readReportFile (line 32) | void readReportFile(std::string const& report_file,
FILE: src/asp/Core/ReportUtils.h
function namespace (line 33) | namespace asp {
FILE: src/asp/Core/StereoSettings.cc
function init_stereo_settings (line 44) | void init_stereo_settings() {
type asp (line 49) | namespace asp {
function StereoSettings (line 51) | StereoSettings& stereo_settings() {
function addAspGlobalOptions (line 690) | void addAspGlobalOptions(boost::program_options::options_description &...
function generate_config_file_options (line 701) | po::options_description generate_config_file_options(vw::GdalWriteOpti...
FILE: src/asp/Core/StereoSettings.h
function GdalWriteOptions (line 32) | struct ASPGlobalOptions: vw::GdalWriteOptions {
FILE: src/asp/Core/StereoSettingsDesc.h
function namespace (line 29) | namespace asp {
FILE: src/asp/Core/StereoSettingsParse.cc
type asp (line 33) | namespace asp {
class asp_config_file_iterator (line 36) | class asp_config_file_iterator: public boost::program_options::detail:...
method asp_config_file_iterator (line 41) | asp_config_file_iterator() {
function parse_asp_config_file (line 104) | po::basic_parsed_options<char>
function parse_asp_config_file (line 130) | po::basic_parsed_options<char>
FILE: src/asp/Core/StereoSettingsParse.h
function namespace (line 27) | namespace asp {
FILE: src/asp/Core/StereoTiling.cc
type asp (line 31) | namespace asp {
function appendTileToPoly (line 34) | void appendTileToPoly(int beg_x, int beg_y, int curr_tile_x, int curr_...
function produceTiles (line 77) | void produceTiles(bool is_map_projected,
function produceDistTileList (line 199) | void produceDistTileList(std::string const& in_file1,
function handleDistCropWins (line 335) | void handleDistCropWins(std::string const& left_image,
FILE: src/asp/Core/StereoTiling.h
function namespace (line 28) | namespace asp {
FILE: src/asp/Core/ThreadedEdgeMask.h
function namespace (line 26) | namespace asp {
type typename (line 196) | typedef typename boost::remove_cv<typename
type vw (line 197) | typedef vw::PixelMask<unmasked_pixel_type> pixel_type;
type vw (line 198) | typedef vw::PixelMask<unmasked_pixel_type> result_type;
type vw (line 199) | typedef vw::ProceduralPixelAccessor<ThreadedEdgeMaskView> pixel_accessor;
function pixel_accessor (line 254) | inline pixel_accessor origin() const { return pixel_accessor(*this); }
type vw (line 270) | typedef vw::CropView<ThreadedEdgeMaskView<vw::CropView<typename
function prerasterize_type (line 271) | inline prerasterize_type prerasterize(vw::BBox2i const& bbox) const {
function rasterize (line 281) | void rasterize(DestT const& dest, vw::BBox2i const& bbox) const {
function namespace (line 300) | namespace vw {
FILE: src/asp/Core/tests/TestAspProgramOptions.cxx
function TEST (line 25) | TEST( Common, separate_images_from_cameras_rpb ) {
function TEST (line 40) | TEST( Common, StereoMultiCmdCheck ) {
FILE: src/asp/Core/tests/TestIntegralAutoGainDetector.cxx
function TEST (line 33) | TEST( IntegralAutoGainDetector, VerifyMaxima ) {
FILE: src/asp/Core/tests/TestInterestPointMatching.cxx
function TEST (line 28) | TEST( InterestPointMatching, DatumIntersection ) {
FILE: src/asp/Core/tests/TestPointUtils.cxx
function TEST (line 25) | TEST( PointUtils, CsvConv ) {
function TEST (line 131) | TEST( PointUtils, PcdReader ) {
FILE: src/asp/Core/tests/TestThreadedEdgeMask.cxx
function TEST (line 32) | TEST( ThreadedEdgeMask, active_area ) {
FILE: src/asp/GUI/AppData.cc
type asp (line 28) | namespace asp {
FILE: src/asp/GUI/AppData.h
function namespace (line 34) | namespace asp { // User requested namespace 'asp'
FILE: src/asp/GUI/ChooseFilesDlg.cc
type asp (line 30) | namespace asp {
FILE: src/asp/GUI/ChooseFilesDlg.h
function namespace (line 31) | namespace asp {
FILE: src/asp/GUI/DiskImagePyramidMultiChannel.cc
type asp (line 36) | namespace asp {
function init_temporary_files (line 40) | void init_temporary_files() {
function TemporaryFiles (line 44) | TemporaryFiles& temporary_files() {
function formQimageFloat (line 52) | void formQimageFloat(bool highlight_nodata, double nodata_val,
function formQimageGrayAlpha (line 97) | void formQimageGrayAlpha(ImageView<Vector<vw::uint8, 2>> const& clip,
function formQimageRGB (line 115) | void formQimageRGB(ImageView<PixelT> const& clip, QImage & qimg) {
FILE: src/asp/GUI/DiskImagePyramidMultiChannel.h
function namespace (line 51) | namespace vw {
function namespace (line 55) | namespace asp {
FILE: src/asp/GUI/EventWidget.cc
type asp (line 37) | namespace asp {
FILE: src/asp/GUI/GuiArgs.cc
type asp (line 30) | namespace asp {
function preprocessArgs (line 34) | void preprocessArgs(int &argc, char** argv,
function lookupPropertyIndices (line 133) | void lookupPropertyIndices(std::vector<std::map<std::string, std::stri...
function filterImages (line 168) | void filterImages(std::vector<std::string> & image_files) {
function rmOptionVals (line 196) | void rmOptionVals(int argc, char ** argv, std::string const& opt, int ...
FILE: src/asp/GUI/GuiArgs.h
function namespace (line 31) | namespace asp {
FILE: src/asp/GUI/GuiBase.cc
type asp (line 22) | namespace asp {
function popUp (line 24) | void popUp(std::string const& msg){
FILE: src/asp/GUI/GuiBase.h
function namespace (line 26) | namespace asp {
FILE: src/asp/GUI/GuiConstants.h
function namespace (line 25) | namespace asp {
FILE: src/asp/GUI/GuiGeom.cc
type asp (line 24) | namespace asp {
function findClosestPolyVertex (line 26) | void findClosestPolyVertex(double world_x0, double world_y0,
function findClosestPolyVertex (line 66) | void findClosestPolyVertex(double x0, double y0,
function findClosestPolyEdge (line 92) | void findClosestPolyEdge(double world_x0, double world_y0,
function findClosestPolyEdge (line 132) | void findClosestPolyEdge(double x0, double y0,
function formPoly (line 159) | void formPoly(std::string const& override_color,
function mergePolys (line 208) | void mergePolys(asp::AppData & app_data, int beg_image_id, int end_ima...
function deleteVerticesInBox (line 289) | void deleteVerticesInBox(asp::AppData & app_data, vw::BBox2 const& box,
FILE: src/asp/GUI/GuiGeom.h
function namespace (line 26) | namespace asp {
FILE: src/asp/GUI/GuiUtilities.cc
type asp (line 54) | namespace asp {
function isPolyZeroDim (line 56) | bool isPolyZeroDim(const QPolygon & pa){
function getStringFromGui (line 66) | bool getStringFromGui(QWidget * parent,
function supplyOutputPrefixIfNeeded (line 82) | bool supplyOutputPrefixIfNeeded(QWidget * parent, std::string & output...
function fileDialog (line 95) | std::string fileDialog(std::string title, std::string start_folder){
function QRect (line 104) | QRect bbox2qrect(BBox2 const& B){
function write_hillshade (line 113) | bool write_hillshade(vw::GdalWriteOptions const& opt,
function contour_image (line 177) | void contour_image(DiskImagePyramidMultiChannel const& img,
function read_georef_from_shapefile (line 245) | bool read_georef_from_shapefile(vw::cartography::GeoReference & georef,
function read_georef_from_image_or_shapefile (line 259) | bool read_georef_from_image_or_shapefile(vw::cartography::GeoReference...
function QPoint2Vec (line 267) | vw::Vector2 QPoint2Vec(QPoint const& qpt) {
function QPointF2Vec (line 271) | vw::Vector2 QPointF2Vec(QPointF const& qpt) {
function QPoint (line 275) | QPoint Vec2QPoint(vw::Vector2 const& V) {
function flip_in_y (line 279) | vw::Vector2 flip_in_y(vw::Vector2 const& P) {
function flip_in_y (line 283) | vw::BBox2 flip_in_y(vw::BBox2 const& B) {
function qrect2bbox (line 290) | vw::BBox2 qrect2bbox(QRect const& R) {
function write_in_orig_or_curr_dir (line 326) | std::string write_in_orig_or_curr_dir(vw::GdalWriteOptions const& opt,
function sideBySideWithDialog (line 360) | bool sideBySideWithDialog() {
function previewOrSideBySideWithDialog (line 366) | bool previewOrSideBySideWithDialog() {
function setNoSideBySideWithDialog (line 371) | void setNoSideBySideWithDialog() {
FILE: src/asp/GUI/GuiUtilities.h
function namespace (line 26) | namespace asp {
function namespace (line 68) | namespace asp {
FILE: src/asp/GUI/ImageData.cc
type asp (line 45) | namespace asp {
function hasCsv (line 51) | bool hasCsv(std::string const& fileName) {
function read_datum_from_csv (line 60) | bool read_datum_from_csv(std::string const& file, vw::cartography::Dat...
function read_csv_metadata (line 81) | void read_csv_metadata(std::string const& csv_file,
function readEntryVal (line 262) | void readEntryVal(std::string line, std::string & key, std::string & v...
function parseCsvHeader (line 286) | void parseCsvHeader(std::string const& file, std::string & wkt,
function findRobustBounds (line 474) | void findRobustBounds(std::vector<vw::Vector3> const& scattered_data,
function calcJointBounds (line 497) | vw::Vector2 calcJointBounds(std::vector<imageData> const& images,
FILE: src/asp/GUI/ImageData.h
function namespace (line 39) | namespace asp {
FILE: src/asp/GUI/MainWidget.cc
type asp (line 54) | namespace asp {
function BBox2 (line 308) | BBox2 MainWidget::firstImagePixelBox() const{
function BBox2 (line 319) | BBox2 MainWidget::firstImageWorldBox(BBox2 const& image_box) const{
function buildColormap (line 770) | vw::Colormap buildColormap(std::string const& colormap_style) {
FILE: src/asp/GUI/MainWidget.h
function setEditingMatches (line 110) | void setEditingMatches(bool editingMatches) { m_match_mgr.m_editingMatch...
function setThreshMode (line 112) | void setThreshMode(bool turnOn) { m_threshold.calcMode = turnOn; }
type HillshadeSettings (line 249) | struct HillshadeSettings {
type ProfileState (line 268) | struct ProfileState {
type ThresholdState (line 296) | struct ThresholdState {
FILE: src/asp/GUI/MainWindow.cc
class chooseFilesFilterDelegate (line 69) | class chooseFilesFilterDelegate: public QStyledItemDelegate {
method chooseFilesFilterDelegate (line 71) | chooseFilesFilterDelegate(QObject *filter, QObject *parent = 0):
method QWidget (line 74) | virtual QWidget *createEditor(QWidget *parent,
function QWidget (line 345) | QWidget* createColorbarLayout(QWidget* widget,
FILE: src/asp/GUI/MainWindow.h
function namespace (line 46) | namespace asp {
FILE: src/asp/GUI/MatchPointMgr.cc
type asp (line 31) | namespace asp {
FILE: src/asp/GUI/MatchPointMgr.h
function namespace (line 35) | namespace asp {
FILE: src/asp/GUI/PolyWidget.cc
type asp (line 39) | namespace asp {
FILE: src/asp/GUI/ProfileWidget.cc
type asp (line 28) | namespace asp {
FILE: src/asp/GUI/WidgetBase.cc
type vw (line 22) | namespace vw { namespace cartography {
type cartography (line 22) | namespace cartography {
class GeoTransform (line 23) | class GeoTransform
type asp (line 26) | namespace asp {
FILE: src/asp/GUI/WidgetBase.h
function namespace (line 42) | namespace asp {
FILE: src/asp/GUI/WidgetMenuMgr.cc
type asp (line 26) | namespace asp {
function QMenu (line 142) | QMenu* WidgetMenuMgr::formCustomMenu(MainWidget* wid,
FILE: src/asp/GUI/WidgetMenuMgr.h
function namespace (line 30) | namespace asp {
FILE: src/asp/GUI/WindowMenuMgr.cc
type asp (line 28) | namespace asp {
FILE: src/asp/GUI/WindowMenuMgr.h
function namespace (line 29) | namespace asp {
FILE: src/asp/Gotcha/ALSC.cc
type gotcha (line 23) | namespace gotcha {
FILE: src/asp/Gotcha/ALSC.h
function namespace (line 35) | namespace gotcha {
FILE: src/asp/Gotcha/CALSCParam.h
function namespace (line 21) | namespace gotcha {
FILE: src/asp/Gotcha/CBatchProc.cc
type gotcha (line 29) | namespace gotcha {
function aspMatToCvMat (line 34) | void aspMatToCvMat(vw::ImageView<float> const& in, cv::Mat & out) {
function cvMatToAspMat (line 43) | void cvMatToAspMat(cv::Mat const& in, vw::ImageView<float> & out) {
function Point3f (line 528) | Point3f CBatchProc::rotate(Point3f ptIn, Mat matQ, bool bInverse){
FILE: src/asp/Gotcha/CBatchProc.h
function namespace (line 37) | namespace gotcha {
FILE: src/asp/Gotcha/CDensify.cc
type gotcha (line 28) | namespace gotcha {
FILE: src/asp/Gotcha/CDensify.h
function namespace (line 36) | namespace gotcha {
FILE: src/asp/Gotcha/CDensifyParam.h
function namespace (line 25) | namespace gotcha {
FILE: src/asp/Gotcha/CGOTCHAParam.h
function namespace (line 24) | namespace gotcha {
FILE: src/asp/Gotcha/CProcBlock.cc
type gotcha (line 23) | namespace gotcha {
FILE: src/asp/Gotcha/CProcBlock.h
function namespace (line 37) | namespace gotcha {
FILE: src/asp/Gotcha/CTiePt.h
function namespace (line 23) | namespace gotcha {
FILE: src/asp/IceBridge/archive_functions.py
function robust_shiftc (line 51) | def robust_shiftc(cmd, logger, attempts = 120):
function stripHost (line 76) | def stripHost(val):
function get_remote_output_folder (line 84) | def get_remote_output_folder(user):
function get_remote_ortho_folder (line 93) | def get_remote_ortho_folder(user):
function retrieveRunData (line 124) | def retrieveRunData(run, unpackFolder, useTar, forceTapeFetch, skipTapeC...
function fetchProcessedByType (line 164) | def fetchProcessedByType(run, unpackFolder, logger, dataType):
function fetchCameraFolder (line 230) | def fetchCameraFolder(run, logger):
function packAndSendCameraFolder (line 287) | def packAndSendCameraFolder(run, logger):
function packAndSendAlignedCameras (line 324) | def packAndSendAlignedCameras(run, logger):
function packAndSendOrthos (line 350) | def packAndSendOrthos(run, logger):
function packAndSendSummaryFolder (line 375) | def packAndSendSummaryFolder(run, folder, logger, backupToL2=False):
function packAndSendCompletedRun (line 454) | def packAndSendCompletedRun(run, logger):
function packAndSendLabels (line 528) | def packAndSendLabels(run, logger):
FILE: src/asp/IceBridge/blend_dems.py
function getMeanDemDiff (line 70) | def getMeanDemDiff(dems, outputPrefix):
function runBlend (line 103) | def runBlend(frame, processFolder, lidarFile, fireballDEM, options,
function main (line 344) | def main(argsIn):
FILE: src/asp/IceBridge/camera_models_from_nav.py
function main (line 42) | def main(argsIn):
FILE: src/asp/IceBridge/correct_icebridge_l3_dem.cc
function main (line 38) | int main( int argc, char *argv[] ) {
FILE: src/asp/IceBridge/extract_icebridge_ATM_points.py
function extract_qi_points (line 24) | def extract_qi_points(inputPath):
function extract_hdf5_points (line 53) | def extract_hdf5_points(inputPath):
function main (line 100) | def main(argsIn):
FILE: src/asp/IceBridge/fetch_icebridge_data.py
function validateNavOrWipe (line 52) | def validateNavOrWipe(filename, logger):
function checkFound (line 72) | def checkFound(filename):
function checkIfUrlExists (line 85) | def checkIfUrlExists(url, baseCurlCmd):
function makeYearFolder (line 103) | def makeYearFolder(year, site):
function makeDateFolder (line 107) | def makeDateFolder(year, month, day, ext, fileType):
function hasGoodLat (line 117) | def hasGoodLat(latitude, isSouth):
function fetchAndParseIndexFileAux (line 123) | def fetchAndParseIndexFileAux(isSouth, separateByLat, dayVal,
function isInSeparateByLatTable (line 274) | def isInSeparateByLatTable(yyyymmdd):
function twoFlightsInOneDay (line 279) | def twoFlightsInOneDay(site, yyyymmdd):
function getFolderUrl (line 292) | def getFolderUrl(yyyymmdd, year, month, day,
function fetchAndParseIndexFile (line 350) | def fetchAndParseIndexFile(options, isSouth, baseCurlCmd, outputFolder):
function lidarFilesInRange (line 547) | def lidarFilesInRange(lidarDict, lidarFolder, startFrame, stopFrame):
function fetchNavData (line 604) | def fetchNavData(options, outputFolder):
function doFetch (line 659) | def doFetch(options, outputFolder):
function main (line 927) | def main(argsIn):
FILE: src/asp/IceBridge/fetcher_script.py
function start_time (line 58) | def start_time():
function stop_time (line 62) | def stop_time(job, logger):
function workDirs (line 68) | def workDirs():
function tarAndWipe (line 80) | def tarAndWipe(options, logger):
function startWithLouArchive (line 134) | def startWithLouArchive(options, logger):
function main (line 158) | def main(argsIn):
FILE: src/asp/IceBridge/full_processing_script.py
function fetchAllRunData (line 55) | def fetchAllRunData(options, startFrame, stopFrame,
function validateOrthosAndFireball (line 138) | def validateOrthosAndFireball(options, fileType, logger):
function runFetchConvert (line 226) | def runFetchConvert(options, isSouth, cameraFolder, imageFolder, jpegFol...
function processTheRun (line 342) | def processTheRun(options, imageFolder, cameraFolder, lidarFolder, ortho...
function solveIntrinsics_Part1 (line 376) | def solveIntrinsics_Part1(options, jpegFolder, cameraFolder, navCameraFo...
function solveIntrinsics_Part2 (line 456) | def solveIntrinsics_Part2(options, imageFolder, cameraFolder, lidarFolde...
function main (line 599) | def main(argsIn):
FILE: src/asp/IceBridge/gen_ortho.py
function createRotatedCameraFile (line 66) | def createRotatedCameraFile(cameraIn, cameraOut, cameraMounting):
function runOrtho (line 137) | def runOrtho(frame, processFolder, imageFile, bundleLength, cameraMounting,
function main (line 317) | def main(argsIn):
FILE: src/asp/IceBridge/generate_fake_camera_models.py
function main (line 53) | def main(argsIn):
FILE: src/asp/IceBridge/generate_flight_summary.py
function getLastLog (line 53) | def getLastLog(logPrefix):
function getFailureCause (line 80) | def getFailureCause(batchFolder):
function generateFlightSummary (line 164) | def generateFlightSummary(run, options):
function main (line 385) | def main(argsIn):
FILE: src/asp/IceBridge/get_date_list.py
function fetchAndParseIndexFile (line 43) | def fetchAndParseIndexFile(folderUrl, path, parsedPath, fileType):
function main (line 73) | def main(argsIn):
FILE: src/asp/IceBridge/icebridge_common.py
function switchWorkDir (line 36) | def switchWorkDir():
function getUser (line 47) | def getUser():
function fullPath (line 51) | def fullPath(script):
function outputFolder (line 56) | def outputFolder(site, yyyymmdd):
function makeSymLink (line 60) | def makeSymLink(oldFile, newFile, verbose=True):
function getSmallestFrame (line 75) | def getSmallestFrame():
function getLargestFrame (line 79) | def getLargestFrame():
function fileExtension (line 83) | def fileExtension(filename):
function hasImageExtension (line 87) | def hasImageExtension(filename):
function getRunStatsFile (line 95) | def getRunStatsFile():
function getCameraFolder (line 98) | def getCameraFolder(outputFolder):
function getImageFolder (line 101) | def getImageFolder(outputFolder):
function getJpegFolder (line 104) | def getJpegFolder(outputFolder):
function getOrthoFolder (line 107) | def getOrthoFolder(outputFolder):
function getFireballFolder (line 110) | def getFireballFolder(outputFolder):
function getCorrFireballFolder (line 113) | def getCorrFireballFolder(outputFolder):
function getLidarFolder (line 116) | def getLidarFolder(outputFolder):
function getProcessedFolder (line 119) | def getProcessedFolder(outputFolder):
function getPairedLidarFolder (line 122) | def getPairedLidarFolder(lidarFolder):
function getNavFolder (line 125) | def getNavFolder(outputFolder):
function getNavCameraFolder (line 128) | def getNavCameraFolder(outputFolder):
function getLabelFolder (line 131) | def getLabelFolder(outputFolder):
function getLabelOrthoFolder (line 134) | def getLabelOrthoFolder(outputFolder):
function getConvertedLidarIndexFile (line 137) | def getConvertedLidarIndexFile(lidarFolder):
function getPairedIndexFile (line 140) | def getPairedIndexFile(pairedFolder):
function folderToType (line 143) | def folderToType(folder):
function htmlIndexFile (line 147) | def htmlIndexFile(folder):
function csvIndexFile (line 151) | def csvIndexFile(folder):
function getJpegDateTime (line 155) | def getJpegDateTime(filepath):
function getPixelSize (line 178) | def getPixelSize(filepath):
function jpegToImageFile (line 194) | def jpegToImageFile(jpegFile, orthoFile):
function makeJpegFileName (line 221) | def makeJpegFileName(run, frame):
function makeLabelFileName (line 225) | def makeLabelFileName(run, frame):
function makeLabelOrthoFileName (line 229) | def makeLabelOrthoFileName(run, frame):
function projectionBoundsFile (line 233) | def projectionBoundsFile(folder):
function readProjectionBounds (line 236) | def readProjectionBounds(indexFile):
function writeProjectionBounds (line 262) | def writeProjectionBounds(indexFile, bounds):
function readLinesInSet (line 272) | def readLinesInSet(fileName):
function logFilePrefix (line 287) | def logFilePrefix():
function validFilesPrefix (line 290) | def validFilesPrefix():
function manager_log_prefix (line 294) | def manager_log_prefix():
function validFilesList (line 297) | def validFilesList(folder, startFrame, stopFrame):
function updateValidFilesListFromDisk (line 306) | def updateValidFilesListFromDisk(filesList, filesSet):
function writeValidFilesList (line 321) | def writeValidFilesList(filesList, filesSet):
function readIndexFile (line 328) | def readIndexFile(parsedIndexPath, prependFolder = False):
function writeIndexFile (line 349) | def writeIndexFile(indexPath, frameDict, urlDict):
function isValidImage (line 360) | def isValidImage(filename):
function isDEM (line 394) | def isDEM(filename):
function isLidar (line 399) | def isLidar(filename):
function isValidLidarCSV (line 405) | def isValidLidarCSV(filename):
function getLidarCsvFormat (line 444) | def getLidarCsvFormat(filename):
function getCameraGsdAndBounds (line 451) | def getCameraGsdAndBounds(imagePath, cameraPath, logger, referenceDem=No...
function getGsdFromMapproject (line 487) | def getGsdFromMapproject(imagePath, cameraPath, logger, lidarDem, refere...
function getCorrectedFireballDems (line 517) | def getCorrectedFireballDems(outputFolder):
function getCameraGsdAndBoundsRetry (line 559) | def getCameraGsdAndBoundsRetry(imagePath, cameraPath, logger, referenceD...
function getImageCameraPairs (line 573) | def getImageCameraPairs(imageFolder, cameraFolder, startFrame, stopFrame...
function batchFolderPrefix (line 637) | def batchFolderPrefix():
function batchFolderName (line 641) | def batchFolderName(startFrame, stopFrame, bundleLength):
function frameToFile (line 645) | def frameToFile(frame, suffix, processFolder, bundleLength):
function findInvalidFrames (line 670) | def findInvalidFrames(validFilesSet, outputFolder, fileType):
function orthoListToRerun (line 712) | def orthoListToRerun(validFilesSet, outputFolder, startFrame, stopFrame):
function getBatchFolderFromBatchLine (line 728) | def getBatchFolderFromBatchLine(line):
function getFrameRangeFromBatchFolder (line 736) | def getFrameRangeFromBatchFolder(folder):
function xmlFile (line 745) | def xmlFile(filename):
function xmlToImage (line 755) | def xmlToImage(filename):
function tfwFile (line 760) | def tfwFile(filename):
function isFloat (line 765) | def isFloat(value):
function hasValidChkSum (line 773) | def hasValidChkSum(filename, logger):
function isValidTfw (line 825) | def isValidTfw(filename, logger):
function parseLatitude (line 842) | def parseLatitude(filename):
function getCameraFileName (line 861) | def getCameraFileName(imageFileName):
function getFrameNumberFromFilename (line 867) | def getFrameNumberFromFilename(filename):
function getTifs (line 900) | def getTifs(folder, prependFolder=False):
function getJpegs (line 917) | def getJpegs(folder):
function getByExtension (line 933) | def getByExtension(folder, ext):
function getDems (line 948) | def getDems(folder):
function getLidar (line 962) | def getLidar(folder):
function getMatchingFrames (line 976) | def getMatchingFrames(inputFiles, candidateFiles):
function parseDateTimeStrings (line 1005) | def parseDateTimeStrings(dateString, timeString, useTimeFix, returnMinAn...
function secondsSinceMidnightToHHMMSS (line 1036) | def secondsSinceMidnightToHHMMSS(secondsSinceMidnight):
function formFilePrefix (line 1045) | def formFilePrefix(dateString, timeString, frame):
function parseParts (line 1053) | def parseParts(fileName):
function parseTimeStamps (line 1063) | def parseTimeStamps(fileName):
function lidarFiles (line 1131) | def lidarFiles(lidarFolder):
function alignFileName (line 1162) | def alignFileName():
function blendFileName (line 1166) | def blendFileName():
function orthoFileName (line 1170) | def orthoFileName():
function footprintFileName (line 1174) | def footprintFileName():
function orthoPreviewFileName (line 1178) | def orthoPreviewFileName():
function getAlignPrefix (line 1182) | def getAlignPrefix(outputFolder):
function getBundlePrefix (line 1185) | def getBundlePrefix(outputFolder):
function alignedBundleStr (line 1189) | def alignedBundleStr():
function getAlignedBundlePrefix (line 1194) | def getAlignedBundlePrefix(outputFolder):
function lidar_pair_prefix (line 1198) | def lidar_pair_prefix():
function findMatchingLidarFile (line 1201) | def findMatchingLidarFile(imageFile, lidarFolder):
function findMatchingLidarFileFromList (line 1225) | def findMatchingLidarFileFromList(imageFile, lidarFiles):
function fileNonEmpty (line 1310) | def fileNonEmpty(path):
function fetchFile (line 1314) | def fetchFile(url, outputPath):
function partitionArray (line 1329) | def partitionArray(arr, wid):
function fetchFilesInBatches (line 1353) | def fetchFilesInBatches(baseCurlCmd, batchSize, dryRun, outputFolder, fi...
class AlarmException (line 1385) | class AlarmException(Exception):
function alarmHandler (line 1387) | def alarmHandler(signum, frame):
function nonBlockingRawInput (line 1389) | def nonBlockingRawInput(prompt='', timeout=20):
function waitForTaskCompletionOrKeypress (line 1403) | def waitForTaskCompletionOrKeypress(taskHandles, logger = None, interact...
function stopTaskPool (line 1439) | def stopTaskPool(pool):
function setUpLogger (line 1449) | def setUpLogger(outputFolder, logLevel, logPathPrefix):
function logger_print (line 1478) | def logger_print(logger, msg):
function checkSite (line 1486) | def checkSite(site):
function getElevationLimits (line 1494) | def getElevationLimits(site):
function getEpsgCode (line 1504) | def getEpsgCode(isSouth, asString=True):
function getProjString (line 1513) | def getProjString(isSouth, addQuotes=False):
function getReferenceDemName (line 1526) | def getReferenceDemName(site):
function readStats (line 1545) | def readStats(inputPath):
function readGeodiffOutput (line 1573) | def readGeodiffOutput(inputPath):
function isBatchValid (line 1611) | def isBatchValid(batchFolder):
function gsdToDemRes (line 1625) | def gsdToDemRes(gsd):
FILE: src/asp/IceBridge/icebridge_kmz_to_csv.py
function convert (line 42) | def convert(inputPath, outputPath):
function unpackKmz (line 72) | def unpackKmz(inputPath):
function main (line 87) | def main(inputPath, outputPath):
FILE: src/asp/IceBridge/input_conversions.py
function convertJpegs (line 43) | def convertJpegs(jpegFolder, imageFolder, startFrame, stopFrame, skipVal...
function correctFireballDems (line 191) | def correctFireballDems(fireballFolder, corrFireballFolder, startFrame, ...
function getCalibrationFileForFrame (line 273) | def getCalibrationFileForFrame(cameraLoopkupFile, inputCalFolder, frame,...
function cameraFromOrthoWrapper (line 325) | def cameraFromOrthoWrapper(inputPath, orthoPath, inputCamFile, estimated...
function getCameraModelsFromOrtho (line 426) | def getCameraModelsFromOrtho(imageFolder, orthoFolder,
function getCameraModelsFromNav (line 579) | def getCameraModelsFromNav(imageFolder, orthoFolder,
function convertLidarDataToCsv (line 617) | def convertLidarDataToCsv(lidarFolder, startFrame, stopFrame,
function pairLidarFiles (line 724) | def pairLidarFiles(lidarFolder, skipValidate, logger):
FILE: src/asp/IceBridge/label_images.py
function get_camera (line 54) | def get_camera(cameraFolder, frame):
function label_images (line 82) | def label_images(outputFolder, frameNum, trainingPath, site, yyyymmdd, n...
function main (line 147) | def main(argsIn):
FILE: src/asp/IceBridge/lvis2kml.py
function readPositions (line 27) | def readPositions(positionFilePath):
function generatePointKml (line 87) | def generatePointKml(pointList, outputPath, pointSkip, name, color):
function generateBorderKml (line 140) | def generateBorderKml(pointList, outputPath, name, color):
function main (line 168) | def main(argsIn):
FILE: src/asp/IceBridge/merge_orbitviz.py
function main (line 45) | def main(args):
FILE: src/asp/IceBridge/multi_flight_label_runner.py
function updateLogFile (line 52) | def updateLogFile(path, run):
function checkLogFile (line 60) | def checkLogFile(path, run):
function main (line 73) | def main(argsIn):
FILE: src/asp/IceBridge/multi_process_command_runner.py
function runCommand (line 48) | def runCommand(command):
function main (line 53) | def main(argsIn):
FILE: src/asp/IceBridge/nav2cam.cc
function gps_seconds (line 91) | double gps_seconds(std::string const& orthoimage_path){
function scan_line (line 138) | void scan_line(std::string const& line,
function Matrix3x3 (line 148) | Matrix3x3 get_rotation_matrix_roll(double roll) {
function Matrix3x3 (line 156) | Matrix3x3 get_rotation_matrix_pitch(double pitch) {
function Matrix3x3 (line 164) | Matrix3x3 get_rotation_matrix_yaw(double yaw) {
function Matrix3x3 (line 173) | Matrix3x3 get_look_rotation_matrix(double yaw, double pitch, double roll...
function parse_camera_pose (line 193) | void parse_camera_pose(std::string const& line, Vector3 & xyz, Quat & lo...
type Options (line 214) | struct Options : public vw::GdalWriteOptions {
function handle_arguments (line 222) | void handle_arguments( int argc, char *argv[], Options& opt ) {
class ScrollingNavInterpolator (line 294) | class ScrollingNavInterpolator {
method ScrollingNavInterpolator (line 303) | ScrollingNavInterpolator(std::string const& path, Datum const& datum_in)
method load_next_chunk (line 327) | bool load_next_chunk(boost::shared_ptr<PosInterpType> &pos_interpolato...
method get_time_boundaries (line 375) | void get_time_boundaries(double &start, double &end) const {
method set_target_locs (line 381) | void set_target_locs(std::vector<Vector3> const& target_locs) {
method get_target_times (line 391) | void get_target_times(std::vector<double> &target_time_vector,
method read_next_line (line 415) | bool read_next_line(double &time, Vector3& loc, Vector3& rot) {
method update_target_locs (line 438) | void update_target_locs(Vector3 loc, double time) {
function print_matrix (line 453) | void print_matrix(Matrix3x3 const& m) {
function write_output_camera (line 465) | void write_output_camera(Vector3 const& center, Matrix3x3 const& pose,
function main (line 495) | int main(int argc, char* argv[]) {
FILE: src/asp/IceBridge/orbitviz_pinhole.cc
type Options (line 48) | struct Options : public vw::GdalWriteOptions {
method Options (line 49) | Options() {}
function handle_arguments (line 64) | void handle_arguments( int argc, char *argv[], Options& opt ) {
function main (line 115) | int main(int argc, char* argv[]) {
FILE: src/asp/IceBridge/ortho2pinhole.cc
type Options (line 77) | struct Options : public vw::GdalWriteOptions {
method Options (line 86) | Options(): camera_height(-1), orthoimage_height(0), ip_per_tile(0),
function write_gcp_file (line 92) | void write_gcp_file(Options const& opt,
function get_cam_height_estimate (line 128) | double get_cam_height_estimate(Options const& opt) {
function unpack_parameters (line 148) | void unpack_parameters(Vector<double> const &C,
class OtpSolveLMA (line 157) | class OtpSolveLMA : public vw::math::LeastSquaresModelBase<OtpSolveLMA> {
method OtpSolveLMA (line 174) | OtpSolveLMA(std::vector<vw::Vector3> const& gcc_coords,
method result_type (line 184) | inline result_type operator()(domain_type const& C) const {
function solve_for_cam_adjust (line 232) | int solve_for_cam_adjust(boost::shared_ptr<PinholeModel> camera_model,
function load_reference_dem (line 289) | void load_reference_dem(Options &opt, boost::shared_ptr<DiskImageResourc...
function load_camera_and_find_ip (line 407) | void load_camera_and_find_ip(Options const& opt,
function update_pinhole_from_nav_estimate (line 459) | void update_pinhole_from_nav_estimate(vw::camera::PinholeModel *pcam,
function get_estimated_camera_position (line 477) | void get_estimated_camera_position(Options const& opt,
function refine_camera_with_dem_pts (line 537) | double refine_camera_with_dem_pts(Options const& opt,
function ortho2pinhole (line 643) | void ortho2pinhole(Options & opt) {
function handle_rgb_input (line 884) | std::string handle_rgb_input(std::string const& input_path, Options cons...
function handle_arguments (line 911) | void handle_arguments(int argc, char *argv[], Options& opt) {
function main (line 1007) | int main(int argc, char* argv[]) {
FILE: src/asp/IceBridge/pbs_functions.py
function cleanJobID (line 37) | def cleanJobID(jobID):
function getActiveJobs (line 47) | def getActiveJobs(user):
function getNumCores (line 86) | def getNumCores(nodeType):
function submitJob (line 102) | def submitJob(jobName, queueName, maxHours, logger, minutesInDevelQueue,
function waitForJobCompletion (line 186) | def waitForJobCompletion(jobIDs, logger, name=None):
FILE: src/asp/IceBridge/pleiades_manager.py
function start_time (line 67) | def start_time():
function stop_time (line 71) | def stop_time(job, logger):
function getParallelParams (line 88) | def getParallelParams(nodeType, task):
function getLabelTrainingPath (line 128) | def getLabelTrainingPath(userName):
function getEmailAddress (line 137) | def getEmailAddress(userName):
function sendEmail (line 145) | def sendEmail(address, subject, body):
function readRunList (line 159) | def readRunList(path, options):
function addToRunList (line 173) | def addToRunList(path, run):
function getRunsToProcess (line 178) | def getRunsToProcess(allRuns, skipRuns, doneRuns):
function runFetch (line 192) | def runFetch(run, options, logger):
function runConversion (line 270) | def runConversion(run, options, conversionAttempt, logger):
function generateBatchList (line 480) | def generateBatchList(run, options, listPath, logger):
function getOutputFolderFromBatchCommand (line 520) | def getOutputFolderFromBatchCommand(batchCommand):
function filterBatchJobFile (line 528) | def filterBatchJobFile(run, batchListPath, logger):
function submitBatchJobs (line 552) | def submitBatchJobs(run, options, batchListPath, logger):
function launchJobs (line 622) | def launchJobs(run, mode, options, logger):
function checkResultsForType (line 703) | def checkResultsForType(run, options, batchListPath, batchOutputName, lo...
function checkLabelResults (line 737) | def checkLabelResults(run, options, logger):
function checkResults (line 774) | def checkResults(run, options, logger, batchListPath):
function checkRequiredTools (line 903) | def checkRequiredTools():
function main (line 922) | def main(argsIn):
FILE: src/asp/IceBridge/process_calibration_file.py
function main (line 42) | def main(argsIn):
FILE: src/asp/IceBridge/process_icebridge_batch.py
function formImageCameraString (line 51) | def formImageCameraString(inputPairs):
function makeDemAndCheckError (line 62) | def makeDemAndCheckError(options, projString, pointCloud,
function getOverlapAmount (line 91) | def getOverlapAmount(dem1, dem2, logger):
function robustPcAlign (line 126) | def robustPcAlign(options, outputPrefix, lidarFile, lidarDemPath,
function blurImage (line 322) | def blurImage(inputPath, outputPath, suppressOutput, redo):
function robustBundleAdjust (line 332) | def robustBundleAdjust(options, inputPairs,
function applyTransformToCameras (line 525) | def applyTransformToCameras(options, inputPairs, suppressOutput, redo,
function getMatchFiles (line 577) | def getMatchFiles(options, origInputPairs, index):
function consolidateGeodiffResults (line 617) | def consolidateGeodiffResults(inputFiles, outputPath=None):
function consolidateStats (line 655) | def consolidateStats(lidarDiffPath, interDiffPath, fireDiffPath, fireLid...
function readConsolidatedStatsFile (line 721) | def readConsolidatedStatsFile(consolidatedStatsPath):
function lidarCsvToDem (line 733) | def lidarCsvToDem(lidarFile, projBounds, projString, outputFolder, threa...
function cropGdalImage (line 766) | def cropGdalImage(projBounds, inputPath, outputPath, logger):
function estimateHeightRange (line 780) | def estimateHeightRange(projBounds, projString, lidarFile, options, thre...
function getWidthAndMemUsageFromStereoOutput (line 830) | def getWidthAndMemUsageFromStereoOutput(outputText, errorText):
function createDem (line 853) | def createDem(i, options, inputPairs, prefixes, demFiles, projString,
function cleanBatch (line 1023) | def cleanBatch(batchFolder, alignPrefix, stereoPrefixes,
function main (line 1099) | def main(argsIn):
function doWork (line 1194) | def doWork(options, args, logger):
FILE: src/asp/IceBridge/process_icebridge_run.py
function processBatch (line 63) | def processBatch(imageCameraPairs, lidarFolder, referenceDem, skipInterval,
function getImageSpacing (line 101) | def getImageSpacing(orthoFolder, availableFrames, startFrame, stopFrame,
function list_median (line 250) | def list_median(lst):
function getRunMedianGsd (line 260) | def getRunMedianGsd(imageCameraPairs, referenceDem, isSouth, frameSkip=1):
class NoDaemonProcess (line 289) | class NoDaemonProcess(multiprocessing.Process):
method _get_daemon (line 291) | def _get_daemon(self):
method _set_daemon (line 293) | def _set_daemon(self, value):
class NonDaemonPool (line 299) | class NonDaemonPool(multiprocessing.pool.Pool):
function main (line 303) | def main(argsIn):
FILE: src/asp/IceBridge/push_to_nsidc.py
function start_time (line 57) | def start_time():
function stop_time (line 60) | def stop_time(job, logger):
function fetchIndices (line 66) | def fetchIndices(options, logger):
function pushByType (line 79) | def pushByType(run, options, logger, dataType):
function main (line 201) | def main(argsIn):
FILE: src/asp/IceBridge/qi2txt.cc
function int4 (line 200) | int4 myswap(char *in, char* out, int4 len, int4 cnt) {
function testendianness (line 216) | int testendianness(void) {
function int4 (line 237) | int4 get_record_length(int4 *value, int4 *svalue, FILE *infile) {
function printData (line 269) | void printData(int word_format, char mode, double * bufout){
function main (line 338) | int main(int argc, char *argv[]) {
FILE: src/asp/IceBridge/regenerate_summary_images.py
function start_time (line 61) | def start_time():
function stop_time (line 65) | def stop_time(job, logger):
function getParallelParams (line 82) | def getParallelParams(nodeType):
function getEmailAddress (line 95) | def getEmailAddress(userName):
function sendEmail (line 103) | def sendEmail(address, subject, body):
function submitBatchJobs (line 118) | def submitBatchJobs(commandFileList, options, pbsLogFolder, run, logger):
function checkRequiredTools (line 158) | def checkRequiredTools():
function fetchTarball (line 166) | def fetchTarball(louPath, localPath):
function getSummaryFileCommand (line 180) | def getSummaryFileCommand(inFile, outFile, isOrtho):
function descendIfNeeded (line 195) | def descendIfNeeded(folder):
function getUnpackedFiles (line 206) | def getUnpackedFiles(folder):
function getMissingSummaryFiles (line 238) | def getMissingSummaryFiles(folder, summaryFolder, isOrtho):
function writeCommandFiles (line 297) | def writeCommandFiles(missingDemFiles, missingOrthoFiles, outputPrefix, ...
function main (line 351) | def main(argsIn):
FILE: src/asp/IceBridge/run_helper.py
class RunHelper (line 47) | class RunHelper():
method __init__ (line 50) | def __init__(self, site, yyyymmdd, parentFolder=''):
method __str__ (line 62) | def __str__(self):
method name (line 66) | def name(self):
method shortName (line 70) | def shortName(self):
method yyyy_mm_dd (line 74) | def yyyy_mm_dd(self):
method getInputTarName (line 79) | def getInputTarName(self):
method getCameraTarName (line 83) | def getCameraTarName(self):
method getAlignedCameraTarName (line 87) | def getAlignedCameraTarName(self):
method getOrthoTarName (line 92) | def getOrthoTarName(self, useWildCard = False):
method getSummaryTarName (line 99) | def getSummaryTarName(self):
method getOutputTarName (line 103) | def getOutputTarName(self, useWildCard = False):
method getLabelTarName (line 110) | def getLabelTarName(self):
method getFolder (line 114) | def getFolder(self):
method _internalLoc (line 118) | def _internalLoc(self, path):
method getJpegFolder (line 123) | def getJpegFolder(self):
method getImageFolder (line 125) | def getImageFolder(self):
method getLidarFolder (line 127) | def getLidarFolder(self):
method getLidarPairFolder (line 129) | def getLidarPairFolder(self):
method getNavFolder (line 131) | def getNavFolder(self):
method getNavCameraFolder (line 133) | def getNavCameraFolder(self):
method getCameraFolder (line 135) | def getCameraFolder(self):
method getOrthoFolder (line 137) | def getOrthoFolder(self):
method getProcessFolder (line 139) | def getProcessFolder(self):
method getAssemblyFolder (line 141) | def getAssemblyFolder(self):
method getPbsLogFolder (line 143) | def getPbsLogFolder(self):
method getSummaryFolder (line 145) | def getSummaryFolder(self):
method getLabelFolder (line 147) | def getLabelFolder(self):
method getLabelOrthoFolder (line 149) | def getLabelOrthoFolder(self):
method getJpegList (line 152) | def getJpegList(self, prependFolder=False):
method getImageList (line 161) | def getImageList(self, prependFolder=False):
method getLidarList (line 170) | def getLidarList(self, paired=False, prependFolder=False):
method getBatchFolderList (line 182) | def getBatchFolderList(self):
method getOutputFileList (line 198) | def getOutputFileList(self, fileType):
method existingFilesDict (line 209) | def existingFilesDict(self, fileType, startFrame, stopFrame):
method allSourceDataFetched (line 229) | def allSourceDataFetched(self, noNav, verbose=False):
method massRenameByGlob (line 277) | def massRenameByGlob(self, startFrame, stopFrame, orthoFrameDict,
method massRename (line 318) | def massRename(self, startFrame, stopFrame, logger):
method checkForImages (line 361) | def checkForImages(self, startFrame, stopFrame, logger):
method conversionIsFinished (line 428) | def conversionIsFinished(self, startFrame, stopFrame, verbose=False):
method getFrameRange (line 483) | def getFrameRange(self):
method setFlag (line 499) | def setFlag(self, flag):
method checkFlag (line 503) | def checkFlag(self, flag):
method clearFlag (line 507) | def clearFlag(self, flag):
method deleteLocalData (line 512) | def deleteLocalData(self):
FILE: src/asp/IceBridge/run_multiple_flights.py
function checkFileForFlight (line 52) | def checkFileForFlight(path, site, date):
function processAndLog (line 72) | def processAndLog(command, logPath, line, deleteFolder=None):
function main (line 93) | def main(argsIn):
FILE: src/asp/IsisIO/BaseEquation.h
function namespace (line 28) | namespace asp {
FILE: src/asp/IsisIO/DiskImageResourceIsis.cc
type vw (line 42) | namespace vw {
function Vector2i (line 48) | Vector2i DiskImageResourceIsis::block_read_size() const {
function DiskImageResource (line 139) | DiskImageResource* DiskImageResourceIsis::construct_open(std::string c...
function DiskImageResource (line 144) | DiskImageResource*
FILE: src/asp/IsisIO/DiskImageResourceIsis.h
function namespace (line 30) | namespace Isis {
function namespace (line 34) | namespace vw {
function virtual (line 48) | virtual ~DiskImageResourceIsis() {}
function std (line 51) | static std::string type_static() { return "ISIS"; }
function virtual (line 52) | virtual std::string type() { return type_static(); }
function virtual (line 59) | virtual Vector2i block_read_size() const;
FILE: src/asp/IsisIO/Equation.h
function namespace (line 26) | namespace asp {
FILE: src/asp/IsisIO/IsisCameraModel.h
function namespace (line 34) | namespace vw {
FILE: src/asp/IsisIO/IsisInterface.cc
type asp (line 49) | namespace asp {namespace isis {
type isis (line 49) | namespace isis {
function IsisInterface (line 71) | IsisInterface* IsisInterface::open(std::string const& filename) {
function IsisEnv (line 178) | bool IsisEnv() {
function deleteKeywords (line 191) | void deleteKeywords(Isis::Cube *cube) {
function IsisCubeHasCsmBlob (line 295) | bool IsisCubeHasCsmBlob(std::string const& cubeFile) {
function csmStateFromIsisCube (line 305) | std::string csmStateFromIsisCube(std::string const& cubeFile) {
function saveCsmStateToIsisCube (line 328) | void saveCsmStateToIsisCube(std::string const& cubeFile,
FILE: src/asp/IsisIO/IsisInterface.h
function namespace (line 42) | namespace Isis {
function namespace (line 48) | namespace isis {
FILE: src/asp/IsisIO/IsisInterfaceFrame.cc
function Vector2 (line 58) | Vector2
function Vector3 (line 79) | Vector3
function Vector3 (line 96) | Vector3
function Quat (line 101) | Quat
FILE: src/asp/IsisIO/IsisInterfaceFrame.h
function namespace (line 34) | namespace Isis {
function namespace (line 40) | namespace asp {
FILE: src/asp/IsisIO/IsisInterfaceLineScan.cc
class EphemerisLMA (line 73) | class EphemerisLMA : public vw::math::LeastSquaresModelBase<EphemerisLMA> {
method EphemerisLMA (line 83) | inline EphemerisLMA(vw::Vector3 const& point,
type asp (line 130) | namespace asp {
function secant_method (line 132) | double secant_method(ModelT const& model, double start, double tol) {
function Vector2 (line 171) | Vector2
function Vector3 (line 232) | Vector3
function Vector3 (line 251) | Vector3
function Quat (line 258) | Quat
FILE: src/asp/IsisIO/IsisInterfaceLineScan.h
function namespace (line 34) | namespace Isis {
function namespace (line 40) | namespace asp {
FILE: src/asp/IsisIO/IsisInterfaceMapFrame.cc
function Vector2 (line 64) | Vector2 IsisInterfaceMapFrame::point_to_pixel(Vector3 const& point) const {
function Vector3 (line 88) | Vector3 IsisInterfaceMapFrame::pixel_to_vector(Vector2 const& px) const {
function Vector3 (line 102) | Vector3 IsisInterfaceMapFrame::camera_center(Vector2 const& /*pix*/) con...
function Quat (line 106) | Quat IsisInterfaceMapFrame::camera_pose(Vector2 const& /*pix*/) const {
FILE: src/asp/IsisIO/IsisInterfaceMapFrame.h
function namespace (line 34) | namespace Isis {
function namespace (line 41) | namespace asp {
FILE: src/asp/IsisIO/IsisInterfaceMapLineScan.cc
class EphemerisLMA (line 65) | class EphemerisLMA : public vw::math::LeastSquaresModelBase<EphemerisLMA> {
method EphemerisLMA (line 75) | inline EphemerisLMA(vw::Vector3 const& point,
function Vector2 (line 115) | Vector2 IsisInterfaceMapLineScan::point_to_pixel(Vector3 const& point) c...
function Vector3 (line 161) | Vector3 IsisInterfaceMapLineScan::camera_center(Vector2 const& px) const {
function Vector3 (line 178) | Vector3 IsisInterfaceMapLineScan::pixel_to_vector(Vector2 const& px) con...
function Quat (line 185) | Quat IsisInterfaceMapLineScan::camera_pose(Vector2 const& px) const {
FILE: src/asp/IsisIO/IsisInterfaceMapLineScan.h
function namespace (line 36) | namespace asp {
FILE: src/asp/IsisIO/IsisInterfaceSAR.cc
function Vector2 (line 62) | Vector2 IsisInterfaceSAR::point_to_pixel(Vector3 const& point) const {
function Vector3 (line 83) | Vector3 IsisInterfaceSAR::pixel_to_vector(Vector2 const& pix) const {
function Vector3 (line 101) | Vector3 IsisInterfaceSAR::camera_center(Vector2 const& pix) const {
function Quat (line 115) | Quat IsisInterfaceSAR::camera_pose(Vector2 const& pix) const {
FILE: src/asp/IsisIO/IsisInterfaceSAR.h
function namespace (line 34) | namespace Isis {
function namespace (line 41) | namespace asp {
FILE: src/asp/IsisIO/IsisSpecialPixels.cc
type asp (line 36) | namespace asp {
class IsisSpecialPixelFunc (line 42) | class IsisSpecialPixelFunc: public vw::UnaryReturnSameType {
method IsisSpecialPixelFunc (line 48) | IsisSpecialPixelFunc(): m_replacement_low(0), m_replacement_high(0),...
method IsisSpecialPixelFunc (line 51) | IsisSpecialPixelFunc(PixelT const& pix_l, PixelT const& pix_h, Pixel...
type Helper (line 56) | struct Helper {
method IsSpecial (line 57) | static inline bool IsSpecial(ChannelT const& arg) { return false; }
method IsHighPixel (line 58) | static inline bool IsHighPixel(ChannelT const& arg) { return false; }
method IsNull (line 59) | static inline bool IsNull(ChannelT const& arg) { return false; }
type Helper<double, T> (line 61) | struct Helper<double, T> {
method IsSpecial (line 62) | static inline bool IsSpecial(double const& arg) {
method IsHighPixel (line 65) | static inline bool IsHighPixel(double const& arg) {
method IsNull (line 68) | static inline bool IsNull(double const& arg) {
type Helper<float, T> (line 72) | struct Helper<float, T> {
method IsSpecial (line 73) | static inline bool IsSpecial(float const& arg) {
method IsHighPixel (line 76) | static inline bool IsHighPixel(float const& arg) {
method IsNull (line 79) | static inline bool IsNull(float const& arg) {
type Helper<short, T> (line 83) | struct Helper<short, T>{
method IsSpecial (line 84) | static inline bool IsSpecial(short const& arg) {
method IsHighPixel (line 87) | static inline bool IsHighPixel(short const& arg) {
method IsNull (line 90) | static inline bool IsNull(short const& arg) {
type Helper<unsigned short, T> (line 94) | struct Helper<unsigned short, T> {
method IsSpecial (line 95) | static inline bool IsSpecial(unsigned short const& arg) {
method IsHighPixel (line 98) | static inline bool IsHighPixel(unsigned short const& arg) {
method IsNull (line 101) | static inline bool IsNull(unsigned short const& arg) {
type Helper<unsigned char, T> (line 105) | struct Helper<unsigned char, T> {
method IsSpecial (line 106) | static inline bool IsSpecial(unsigned char const& arg) {
method IsHighPixel (line 109) | static inline bool IsHighPixel(unsigned char const& arg) {
method IsNull (line 112) | static inline bool IsNull(unsigned char const& arg) {
method PixelT (line 117) | PixelT operator() (PixelT const& pix) const {
function removeIsisSpecialPixels (line 136) | vw::ImageViewRef<float>
function adjustIsisImage (line 144) | void adjustIsisImage(std::string const& input_file,
FILE: src/asp/IsisIO/IsisSpecialPixels.h
function namespace (line 23) | namespace asp {
FILE: src/asp/IsisIO/PolyEquation.h
function namespace (line 24) | namespace asp {
FILE: src/asp/IsisIO/RPNEquation.h
function namespace (line 27) | namespace asp {
FILE: src/asp/IsisIO/tests/TestEphemerisEquations.cxx
function TEST (line 29) | TEST(EphemerisEquations, polynomial_equal_order) {
function TEST (line 63) | TEST(EphemerisEquations, polynomial_variable_order) {
function TEST (line 78) | TEST(EphemerisEquations, polynomial_defined_const) {
function TEST (line 101) | TEST(EphemerisEquations, reversepolish) {
FILE: src/asp/IsisIO/tests/TestIsisCameraModel.cxx
function Vector2 (line 47) | Vector2 generate_random( int const& xsize,
function TEST (line 57) | TEST(IsisCameraModel, mapprojected) {
function TEST (line 109) | TEST(IsisCameraModel, groundmap_chk) {
function TEST (line 215) | TEST(IsisCameraModel, camera_model) {
FILE: src/asp/OpenMVG/flat_pair_map.hpp
type aspOpenMVG (line 15) | namespace aspOpenMVG {
class flat_pair_map (line 20) | class flat_pair_map
method find (line 26) | typename std::vector< P >::iterator find(const T1 & val) {
method T2 (line 30) | T2 & operator[](const T1 & val) {
method sort (line 34) | void sort() { std::sort(m_vec.begin(), m_vec.end(), sortPairAscend);}
method push_back (line 35) | void push_back(const P & val) { m_vec.push_back(val);}
method clear (line 36) | void clear() { m_vec.clear();}
method reserve (line 37) | void reserve(size_t count) { m_vec.reserve(count);}
method emplace_back (line 40) | void emplace_back( Args&&... args )
method size (line 45) | size_t size() const { return m_vec.size();}
method P (line 46) | const P& operator[](std::size_t idx) const { return m_vec[idx];}
method sortPairAscend (line 51) | static bool sortPairAscend(const P &a, const P &b) {return a.first<b...
method superiorToFirst (line 52) | static bool superiorToFirst(const P &a, const T1 &b) {return a.first...
FILE: src/asp/OpenMVG/indMatch.hpp
type aspOpenMVG (line 20) | namespace aspOpenMVG {
type matching (line 21) | namespace matching {
type IndMatch (line 25) | struct IndMatch
method IndMatch (line 27) | IndMatch(IndexT i = 0, IndexT j = 0) : i_(i), j_(j) {}
method getDeduplicated (line 43) | static bool getDeduplicated(std::vector<IndMatch> & vec_match) {
method serialize (line 53) | void serialize( Archive & ar ) {
class PairWiseMatchesContainer (line 72) | class PairWiseMatchesContainer
type PairWiseMatches (line 82) | struct PairWiseMatches :
method insert (line 86) | void insert(std::pair<Pair, IndMatches> && pairWiseMatches)override
method serialize (line 94) | void serialize( Archive & ar ) {
function Pair_Set (line 99) | inline Pair_Set getPairs(const PairWiseMatches & matches)
FILE: src/asp/OpenMVG/numeric.cpp
type aspOpenMVG (line 32) | namespace aspOpenMVG {
function Mat3 (line 34) | Mat3 CrossProductMatrix(const Vec3 &x) {
function Mat3 (line 42) | Mat3 RotationAroundX(double angle) {
function Mat3 (line 46) | Mat3 RotationAroundY(double angle) {
function Mat3 (line 50) | Mat3 RotationAroundZ(double angle) {
function getRotationMagnitude (line 54) | double getRotationMagnitude(const Mat3 & R2) {
function Mat3 (line 61) | Mat3 LookAt(const Vec3 ¢er, const Vec3 & up) {
function Mat3 (line 76) | Mat3 LookAt2(const Vec3 &eyePosition3D,
function MeanAndVarianceAlongRows (line 115) | void MeanAndVarianceAlongRows(const Mat &A,
function exportMatToTextFile (line 133) | bool exportMatToTextFile(const Mat & mat, const std::string & filename,
FILE: src/asp/OpenMVG/numeric.h
function namespace (line 50) | namespace aspOpenMVG
FILE: src/asp/OpenMVG/projection.cpp
type aspOpenMVG (line 30) | namespace aspOpenMVG {
function P_From_KRt (line 33) | void P_From_KRt(
function KRt_From_P (line 38) | void KRt_From_P(const Mat34 &P, Mat3 *Kp, Mat3 *Rp, Vec3 *tp) {
function Mat3 (line 132) | Mat3 F_from_P(const Mat34 & P1, const Mat34 & P2)
function Vec2 (line 159) | Vec2 Project(const Mat34 &P, const Vec3 &X) {
function Project (line 163) | void Project(const Mat34 &P, const Mat3X &X, Mat2X *x) {
function Project (line 170) | void Project(const Mat34 &P, const Mat4X &X, Mat2X *x) {
function Mat2X (line 178) | Mat2X Project(const Mat34 &P, const Mat3X &X) {
function Mat2X (line 184) | Mat2X Project(const Mat34 &P, const Mat4X &X) {
function HomogeneousToEuclidean (line 190) | void HomogeneousToEuclidean(const Vec4 &H, Vec3 *X) {
function EuclideanToHomogeneous (line 195) | void EuclideanToHomogeneous(const Mat &X, Mat *H) {
function Depth (line 203) | double Depth(const Mat3 &R, const Vec3 &t, const Vec3 &X) {
function HomogeneousToEuclidean (line 207) | void HomogeneousToEuclidean(const Mat &H, Mat *X) {
function Mat3X (line 219) | Mat3X EuclideanToHomogeneous(const Mat2X &x) {
function EuclideanToHomogeneous (line 226) | void EuclideanToHomogeneous(const Mat2X &x, Mat3X *h) {
function HomogeneousToEuclidean (line 232) | void HomogeneousToEuclidean(const Mat3X &h, Mat2X *e) {
function EuclideanToNormalizedCamera (line 238) | void EuclideanToNormalizedCamera(const Mat2X &x, const Mat3 &K, Mat2X ...
function HomogeneousToNormalizedCamera (line 245) | void HomogeneousToNormalizedCamera(const Mat3X &x, const Mat3 &K, Mat2...
function RootMeanSquareError (line 251) | double RootMeanSquareError(const Mat2X &x_image,
function RootMeanSquareError (line 260) | double RootMeanSquareError(const Mat2X &x_image,
FILE: src/asp/OpenMVG/projection.hpp
type aspOpenMVG (line 35) | namespace aspOpenMVG
FILE: src/asp/OpenMVG/tracks.hpp
type aspOpenMVG (line 47) | namespace aspOpenMVG {
type tracks (line 51) | namespace tracks {
type TracksBuilder (line 59) | struct TracksBuilder
method Build (line 67) | void Build( const PairWiseMatches & map_pair_wise_matches)
method Filter (line 122) | bool Filter(size_t nLengthSupTo = 2)
method NbTracks (line 176) | size_t NbTracks() const
method ExportToSTL (line 186) | void ExportToSTL(STLMAPTracks & map_tracks)
type TracksUtilsMap (line 207) | struct TracksUtilsMap
method GetTracksInImages (line 216) | static bool GetTracksInImages
method GetTracksIdVector (line 248) | static void GetTracksIdVector
method GetFeatIndexPerViewAndTrackId (line 262) | static bool GetFeatIndexPerViewAndTrackId
type FunctorMapFirstEqual (line 287) | struct FunctorMapFirstEqual {
method FunctorMapFirstEqual (line 289) | FunctorMapFirstEqual(size_t val):id(val){}
method TracksToIndexedMatches (line 308) | static void TracksToIndexedMatches
method TracksLength (line 336) | static void TracksLength
method ImageIdInTracks (line 358) | static void ImageIdInTracks
FILE: src/asp/OpenMVG/triangulation.cpp
type aspOpenMVG (line 31) | namespace aspOpenMVG {
function TriangulateDLT (line 34) | void TriangulateDLT(const Mat34 &P1, const Vec2 &x1,
function TriangulateDLT (line 47) | void TriangulateDLT(const Mat34 &P1, const Vec2 &x1,
FILE: src/asp/OpenMVG/triangulation.hpp
type aspOpenMVG (line 33) | namespace aspOpenMVG
FILE: src/asp/OpenMVG/triangulation_nview.cpp
type aspOpenMVG (line 31) | namespace aspOpenMVG {
function TriangulateNView (line 33) | void TriangulateNView(const Mat2X &x,
function Mat23 (line 52) | inline Mat23 SkewMatMinimal(const Vec2 &x) {
function TriangulateNViewAlgebraic (line 60) | void TriangulateNViewAlgebraic(const Mat2X &x,
function Vec3 (line 105) | Vec3 Triangulation::compute(int iter) const
FILE: src/asp/OpenMVG/triangulation_nview.hpp
type aspOpenMVG (line 33) | namespace aspOpenMVG {
class Triangulation (line 52) | class Triangulation
method minDepth (line 76) | double minDepth() const { return zmin; }
method maxDepth (line 77) | double maxDepth() const { return zmax; }
method error (line 78) | double error() const { return err; }
FILE: src/asp/OpenMVG/types.hpp
type aspOpenMVG (line 21) | namespace aspOpenMVG
FILE: src/asp/OpenMVG/union_find.hpp
type aspOpenMVG (line 14) | namespace aspOpenMVG {
type UnionFind (line 30) | struct UnionFind
method InitSets (line 41) | void InitSets
method GetNumNodes (line 56) | unsigned int GetNumNodes() const
method Find (line 62) | unsigned int Find
method Union (line 74) | void Union
FILE: src/asp/PcAlign/MaskedImageAlgs.cc
type vw (line 31) | namespace vw {
function validCount (line 34) | long long validCount(vw::ImageView<vw::PixelMask<float>> const& img) {
function maskedMedian (line 48) | double maskedMedian(vw::ImageView<vw::PixelMask<float>> const& img) {
function normalizedMad (line 68) | double normalizedMad(vw::ImageView<vw::PixelMask<float>> const& img,
function maskedMean (line 91) | double maskedMean(vw::ImageView<vw::PixelMask<float>> const& img) {
function maskedStdDev (line 111) | double maskedStdDev(vw::ImageView<vw::PixelMask<float>> const& img, do...
function rangeFilter (line 131) | void rangeFilter(vw::ImageView<vw::PixelMask<float>> & diff,
function intersectValid (line 145) | void intersectValid(vw::ImageView<vw::PixelMask<float>> & img1,
function madFilter (line 158) | void madFilter(vw::ImageView<vw::PixelMask<float>> & diff, double outl...
function binnedStatistics (line 171) | void binnedStatistics(vw::ImageView<vw::PixelMask<float>> const& x,
FILE: src/asp/PcAlign/MaskedImageAlgs.h
function namespace (line 28) | namespace vw {
FILE: src/asp/PcAlign/NuthAlignment.cc
type asp (line 52) | namespace asp {
function DegToRad (line 55) | inline double DegToRad(double deg) {
function prepareData (line 60) | void prepareData(NuthOptions const& opt,
function shiftWarp (line 157) | void shiftWarp(int ref_cols, int ref_rows,
function calcEcefTransform (line 206) | void calcEcefTransform(vw::ImageView<vw::PixelMask<float>> const& ref,
function computeNuthOffset (line 318) | void computeNuthOffset(NuthOptions const& opt,
function nuthAlignment (line 436) | Eigen::MatrixXd nuthAlignment(std::string const& ref_file,
FILE: src/asp/PcAlign/NuthAlignment.h
function namespace (line 27) | namespace asp {
FILE: src/asp/PcAlign/NuthAlignmentParse.cc
type asp (line 37) | namespace asp {
function handleNuthArgs (line 40) | void handleNuthArgs(int argc, char *argv[], NuthOptions& opt) {
function formArgcArgv (line 135) | void formArgcArgv(std::string const& cmd,
FILE: src/asp/PcAlign/NuthAlignmentParse.h
function namespace (line 26) | namespace asp {
FILE: src/asp/PcAlign/NuthFit.cc
type asp (line 24) | namespace asp {
function nuth_func (line 29) | inline double nuth_func(double x, double a, double b, double c) {
type NuthResidual (line 34) | struct NuthResidual {
method NuthResidual (line 36) | NuthResidual(double x, double y): m_x(x), m_y(y) {}
function nuthFit (line 65) | void nuthFit(std::vector<double> const& bin_count,
FILE: src/asp/PcAlign/NuthFit.h
function namespace (line 28) | namespace asp {
FILE: src/asp/PcAlign/SlopeAspect.cc
type vw (line 22) | namespace vw {
type cartography (line 23) | namespace cartography {
function SlopeAspectZevenbergenThorneAlg (line 31) | inline
function calcSlopeAspect (line 110) | void calcSlopeAspect(vw::ImageView<vw::PixelMask<float>> const& dem,
FILE: src/asp/PcAlign/SlopeAspect.h
function namespace (line 24) | namespace vw {
FILE: src/asp/PcAlign/pc_align_ceres.cc
type asp (line 27) | namespace asp {
type PointToDemError (line 35) | struct PointToDemError {
method PointToDemError (line 36) | PointToDemError(Vector3 const& point,
function least_squares_alignment (line 85) | Eigen::MatrixXd
FILE: src/asp/PcAlign/pc_align_ceres.h
function namespace (line 32) | namespace asp {
FILE: src/asp/PcAlign/pc_align_fgr.cc
type asp (line 30) | namespace asp {
function parse_fgr_options (line 36) | void parse_fgr_options(std::string const & options,
function export_to_fgr (line 77) | void export_to_fgr(DP const & data, fgr::Points& pts, fgr::Feature & f...
function fgr_alignment (line 96) | Eigen::MatrixXd fgr_alignment(DP const & source_point_cloud,
FILE: src/asp/PcAlign/pc_align_fgr.h
function namespace (line 26) | namespace asp {
FILE: src/asp/PcAlign/pc_align_utils.cc
type asp (line 32) | namespace asp {
type TransformPC (line 37) | struct TransformPC: public vw::UnaryReturnSameType {
method TransformPC (line 39) | TransformPC(Eigen::MatrixXd const& T): m_T(T){}
function PLabels (line 56) | PLabels form_labels(int dim) {
function load_cloud_as_mat (line 72) | void load_cloud_as_mat(std::string const& file_name,
function load_cloud (line 127) | void load_cloud(std::string const& file_name,
function calc_extended_lonlat_bbox (line 153) | void calc_extended_lonlat_bbox(vw::cartography::GeoReference const& geo,
function adjust_lonlat_bbox (line 265) | void adjust_lonlat_bbox(std::string const& file_name, vw::BBox2 & box) {
function calc_mean (line 290) | double calc_mean(std::vector<double> const& errs, int len) {
function calc_stddev (line 304) | double calc_stddev(std::vector<double> const& errs) {
function calc_rmse (line 319) | double calc_rmse(std::vector<double> const& errs) {
function calc_translation_vec (line 334) | void calc_translation_vec(Eigen::MatrixXd const& initT,
function calc_max_displacement (line 383) | double calc_max_displacement(DP const& source, DP const& trans_source) {
function save_trans_point_cloud_n (line 402) | void save_trans_point_cloud_n(vw::GdalWriteOptions const& opt,
function save_trans_point_cloud (line 436) | void save_trans_point_cloud(vw::GdalWriteOptions const& opt,
function InterpolationReadyDem (line 581) | InterpolationReadyDem load_interpolation_ready_dem(std::string const& ...
function read_georef (line 606) | void read_georef(std::vector<std::string> const& clouds,
function extract_rotation_translation (line 730) | void extract_rotation_translation(const double * transform, vw::Quat &...
function Vector3 (line 744) | Vector3 get_cloud_gcc_coord(DP const& point_cloud, vw::Vector3 const& ...
function interp_dem_height (line 751) | bool interp_dem_height(vw::ImageViewRef<vw::PixelMask<float> > const& ...
function apply_shift (line 786) | Eigen::MatrixXd apply_shift(Eigen::MatrixXd const& T, vw::Vector3 cons...
function filterPointsByError (line 805) | void filterPointsByError(DP & point_cloud, Eigen::MatrixXd &errors, do...
FILE: src/asp/PcAlign/pc_align_utils.h
function namespace (line 43) | namespace asp {
FILE: src/asp/PclIO/PclIO.cc
type asp (line 32) | namespace asp {
function writeCloud (line 34) | void writeCloud(vw::ImageViewRef<vw::Vector<double, 4>> cloud,
FILE: src/asp/PclIO/PclIO.h
function namespace (line 29) | namespace asp {
FILE: src/asp/Python/asp_alg_utils.py
class BBox (line 26) | class BBox:
method __init__ (line 27) | def __init__(self, x, y, width, height):
method add_collar (line 33) | def add_collar(self, size):
method name_str (line 40) | def name_str(self):
method as_array (line 43) | def as_array(self):
method __str__ (line 47) | def __str__(self):
function dirToTile (line 50) | def dirToTile(dir):
function readDirList (line 66) | def readDirList(out_prefix):
function readTiles (line 90) | def readTiles(out_prefix):
function intersect_boxes (line 104) | def intersect_boxes(A, B):
function generateTileDir (line 119) | def generateTileDir(startX, startY, stopX, stopY):
function generateTileName (line 125) | def generateTileName(startX, startY, stopX, stopY):
function genSegmentList (line 132) | def genSegmentList(length, size, padding):
function isVrt (line 158) | def isVrt(filename):
FILE: src/asp/Python/asp_cmd_utils.py
function wipe_option (line 26) | def wipe_option(options, opt, n):
function replace_opt_val (line 36) | def replace_opt_val(argv, opt, old_val, new_val):
function option_val (line 56) | def option_val(argv, opt):
class CmdRunException (line 71) | class CmdRunException(Exception):
function isCmdOption (line 75) | def isCmdOption(arg):
function escape_vals (line 88) | def escape_vals(vals):
function unescape_vals (line 95) | def unescape_vals(vals):
function clean_args (line 102) | def clean_args(args):
function get_option (line 108) | def get_option(options, opt, n):
function set_option (line 120) | def set_option(options, opt, new_values):
FILE: src/asp/Python/asp_dist_utils.py
function tileGridSize (line 28) | def tileGridSize(tiles):
function numMosaicJobs (line 35) | def numMosaicJobs(nodesListPath, numProcesses):
function buildMosaicBlockLists (line 45) | def buildMosaicBlockLists(outPrefix, numJobs, suffix='DEM'):
function queryMapproject (line 155) | def queryMapproject(dem, image, camera, outputImage, extraArgs):
function runMapprojection (line 166) | def runMapprojection(opt, settings, outPrefix, entryPoint):
function mapprojAndUpdateArgs (line 290) | def mapprojAndUpdateArgs(opt, settings, outPrefix, sep):
function runStereoTiles (line 335) | def runStereoTiles(opt, args, outPrefix, tileEntryPoint, tileStopPoint):
function runBlockMosaic (line 399) | def runBlockMosaic(opt, masterFile):
function mosaicProduct (line 458) | def mosaicProduct(opt, outPrefix, numJobs, suffix):
function mosaicDems (line 506) | def mosaicDems(opt, outPrefix):
FILE: src/asp/Python/asp_file_utils.py
function createFolder (line 27) | def createFolder(path):
function removeIfExists (line 34) | def removeIfExists(path):
function removeFolderIfExists (line 42) | def removeFolderIfExists(directory):
function replaceExtensionAndFolder (line 50) | def replaceExtensionAndFolder(inputPath, outputFolder, newExtension):
function fileIsNonZero (line 55) | def fileIsNonZero(path):
function getFileLineCount (line 63) | def getFileLineCount(filePath):
function tarFileList (line 73) | def tarFileList(fileList, outputPath, compress=True, replacementNameList...
FILE: src/asp/Python/asp_geo_utils.py
function getGdalInfoTagValue (line 27) | def getGdalInfoTagValue(text, tag):
function convertCoordinate (line 42) | def convertCoordinate(input_srs_string, output_srs_string, x, y):
function getLonLatProjString (line 53) | def getLonLatProjString(inputString):
function getImageGeoInfo (line 73) | def getImageGeoInfo(imagePath, getStats=True):
function doesImageHaveGeoData (line 170) | def doesImageHaveGeoData(imagePath):
function getProjectedBoundsFromIsisLabel (line 223) | def getProjectedBoundsFromIsisLabel(filePath):
function getProjectionFromIsisLabel (line 281) | def getProjectionFromIsisLabel(filePath):
function getBoundingBoxFromIsisLabel (line 298) | def getBoundingBoxFromIsisLabel(filePath):
function getIsisBoundingBox (line 354) | def getIsisBoundingBox(cubePath):
function getCubeCenterLatitude (line 386) | def getCubeCenterLatitude(cubePath, workDir='tmp'):
function getImageBoundingBox (line 422) | def getImageBoundingBox(filePath):
function build_vrt (line 439) | def build_vrt(fullImageSize, tileLocs, tilePaths, outputPath):
FILE: src/asp/Python/asp_image_utils.py
function stripRgbImageAlphaChannel (line 27) | def stripRgbImageAlphaChannel(inputPath, outputPath):
function getImageSize (line 35) | def getImageSize(imagePath):
function isIsisFile (line 58) | def isIsisFile(filePath):
function getImageStats (line 68) | def getImageStats(imagePath):
FILE: src/asp/Python/asp_rig_utils.py
function check_for_sub_images (line 10) | def check_for_sub_images(images):
function create_index_dict (line 35) | def create_index_dict(lst):
function read_list (line 45) | def read_list(file):
function read_image_pairs (line 58) | def read_image_pairs(file1, file2):
function mkdir_p (line 74) | def mkdir_p(path):
function which (line 86) | def which(program):
function find_tool (line 108) | def find_tool(tool_base_dir, tool):
function add_missing_quotes (line 122) | def add_missing_quotes(vals):
function run_cmd (line 134) | def run_cmd(cmd, quit_on_failure = True):
function readConfigVals (line 168) | def readConfigVals(handle, tag, num_vals):
function parseRigConfig (line 213) | def parseRigConfig(rig_config_file):
function imageExtension (line 287) | def imageExtension(images):
function parse_cameras (line 302) | def parse_cameras(image_list, subset_list, rig_sensor,
function undistort_images (line 369) | def undistort_images(args, rig_sensor, images, tools_base_dir, extension,
function read_intrinsics (line 419) | def read_intrinsics(intrinsics_file):
function write_tsai_camera_file (line 442) | def write_tsai_camera_file(tsai_file, f, cx, cy, cam_to_world):
function write_cam_to_world_matrix (line 468) | def write_cam_to_world_matrix(cam_to_world_file, cam_to_world):
function findSensorNames (line 482) | def findSensorNames(images, rig_config, image_sensor_list):
function genCalibrationFile (line 541) | def genCalibrationFile(args, rig_config, sym_images):
FILE: src/asp/Python/asp_stereo_utils.py
function stereo_alg_to_num (line 37) | def stereo_alg_to_num(alg):
class Step (line 58) | class Step:
function stereoProgName (line 70) | def stereoProgName(step):
function reduce_num_threads (line 95) | def reduce_num_threads(cmd):
function stereo_run (line 119) | def stereo_run(prog, args, opt, **kw):
function run_sparse_disp (line 151) | def run_sparse_disp(args, opt):
function calc_lowres_disp (line 196) | def calc_lowres_disp(args, opt, sep, resume = False):
function parse_corr_seed_mode (line 232) | def parse_corr_seed_mode(filename):
function resolve_seed_mode (line 252) | def resolve_seed_mode(opt, args):
function run_multiview (line 261) | def run_multiview(prog_name, args, extra_args, entry_point, stop_point,
function stereoTilesIndex (line 330) | def stereoTilesIndex(out_prefix):
function stereoStatusFile (line 336) | def stereoStatusFile(out_prefix):
function numTiles (line 343) | def numTiles(out_prefix):
function updateNumDoneTiles (line 361) | def updateNumDoneTiles(out_prefix, latest_stage_name, reset):
function produce_tiles (line 427) | def produce_tiles(opt, args, settings, tile_w, tile_h):
function tile_dir (line 455) | def tile_dir(prefix, tile):
function use_padded_tiles (line 458) | def use_padded_tiles(settings):
function grow_crop_tile_maybe (line 467) | def grow_crop_tile_maybe(settings, prog, tile):
function build_vrt (line 489) | def build_vrt(prog, opt, args, settings, georef, postfix, tile_postfix, ...
function create_subdirs_symlink (line 624) | def create_subdirs_symlink(opt, args, settings):
function rename_files (line 663) | def rename_files(settings, subdirs, postfix_in, postfix_out):
function set_collar_size (line 676) | def set_collar_size(new_collar_size, args, settings):
function normal_run (line 683) | def normal_run(prog, opt, args, out_prefix, **kw):
function readDistTileList (line 715) | def readDistTileList(outPrefix):
FILE: src/asp/Python/asp_string_utils.py
function isNumber (line 26) | def isNumber(text):
function convertToFloatIfNumber (line 35) | def convertToFloatIfNumber(text):
function getLineAfterText (line 44) | def getLineAfterText(text, prefix, startPos=0, includeText=False):
function getNumbersInParentheses (line 69) | def getNumbersInParentheses(text):
function getNumberAfterEqualSign (line 92) | def getNumberAfterEqualSign(text, lineStart=0):
function isString (line 103) | def isString(a):
function argListToString (line 114) | def argListToString(argList):
function stringToArgList (line 132) | def stringToArgList(string):
FILE: src/asp/Python/asp_system_utils.py
function raise_error (line 32) | def raise_error(msg, code=-1):
function verify_python_version_is_supported (line 37) | def verify_python_version_is_supported():
function print_version_and_exit (line 45) | def print_version_and_exit():
function get_prog_version (line 51) | def get_prog_version(prog):
function get_asp_version (line 79) | def get_asp_version():
function get_num_cpus (line 84) | def get_num_cpus():
function checkIfToolExists (line 96) | def checkIfToolExists(toolName):
function which (line 116) | def which(program, lookInLibexec = False):
function getNumNodesInList (line 149) | def getNumNodesInList(nodesListPath):
function check_parallel_version (line 175) | def check_parallel_version():
function escape_token (line 185) | def escape_token(token):
function runInGnuParallel (line 193) | def runInGnuParallel(numParallelProcesses, argumentFilePath, args,
function bin_path (line 251) | def bin_path(prog, **kw):
function libexec_path (line 263) | def libexec_path(prog, **kw):
function mkdir_p (line 288) | def mkdir_p(path):
function run_and_parse_output (line 299) | def run_and_parse_output(cmd, args, sep, verbose, return_full_lines = Fa...
function run_with_return_code (line 350) | def run_with_return_code(cmd, verbose=False):
function is_valid_image (line 371) | def is_valid_image(filename):
function timeout_alarm_handler (line 385) | def timeout_alarm_handler(signum, frame):
function executeCommand (line 389) | def executeCommand(cmd,
function generic_run (line 512) | def generic_run(cmd, verbose):
function findTheiaInstallDir (line 524) | def findTheiaInstallDir():
FILE: src/asp/Python/scale_linescan.py
function read_json (line 18) | def read_json(file):
function multiply (line 45) | def multiply(j, key, factor):
function process_json (line 57) | def process_json(j, outSamples, outLines):
function write_json (line 71) | def write_json(file, header, j):
FILE: src/asp/Rig/BasicAlgs.cc
type rig (line 31) | namespace rig {
function vec2eigen (line 34) | void vec2eigen(std::vector<std::pair<float, float>> const& vec,
function eigen2vec (line 44) | void eigen2vec(Eigen::Matrix2Xd const& mat,
function readList (line 55) | void readList(std::string const& file, std::set<std::string> & list) {
function changeFileSuffix (line 65) | std::string changeFileSuffix(std::string filename, std::string new_suf...
function print_vec (line 78) | std::string print_vec(double a) {
function print_vec (line 83) | std::string print_vec(Eigen::Vector3d a) {
FILE: src/asp/Rig/BasicAlgs.h
function namespace (line 32) | namespace rig {
FILE: src/asp/Rig/CameraImage.h
function namespace (line 27) | namespace rig {
FILE: src/asp/Rig/Detector.cc
type rig (line 44) | namespace rig {
class SurfDynamicDetector (line 82) | class SurfDynamicDetector : public DynamicDetector {
method SurfDynamicDetector (line 84) | SurfDynamicDetector(int min_features, int max_features, int max_retr...
method DetectImpl (line 91) | virtual void DetectImpl(const cv::Mat& image, std::vector<cv::KeyPoi...
method ComputeImpl (line 94) | virtual void ComputeImpl(const cv::Mat& image, std::vector<cv::KeyPo...
method TooMany (line 98) | virtual void TooMany(void) {
method TooFew (line 104) | virtual void TooFew(void) {
FILE: src/asp/Rig/Detector.h
function namespace (line 30) | namespace rig {
FILE: src/asp/Rig/ImageLookup.cc
type rig (line 40) | namespace rig {
function timestampLess (line 44) | bool timestampLess(cameraImage i, cameraImage j) {
function lookupImage (line 53) | bool lookupImage(// Inputs
function lookupFilesPoses (line 94) | void lookupFilesPoses(// Inputs
function lookupImagesAndBrackets (line 137) | void lookupImagesAndBrackets(// Inputs
function lookupImagesNoBrackets (line 423) | void lookupImagesNoBrackets(// Inputs
function lookupImagesOneRig (line 506) | void lookupImagesOneRig(// Inputs
function lookupImages (line 605) | void lookupImages(// Inputs
function calcBracketing (line 697) | void calcBracketing(// Inputs
FILE: src/asp/Rig/ImageLookup.h
function namespace (line 39) | namespace rig {
function namespace (line 44) | namespace asp {
function namespace (line 48) | namespace rig {
FILE: src/asp/Rig/InterestPoint.cc
type rig (line 72) | namespace rig {
function setFromCvKeypoint (line 75) | void setFromCvKeypoint(Eigen::Vector2d const& key, cv::Mat const& cv_d...
function detectFeatures (line 97) | void detectFeatures(const cv::Mat& image, bool verbose,
function reduceMatches (line 144) | void reduceMatches(std::vector<vw::ip::InterestPoint> & left_ip,
function FindMatches (line 167) | void FindMatches(const cv::Mat & img1_descriptor_map,
function matchFeatures (line 200) | void matchFeatures(std::mutex* match_mutex,
function matchFeaturesWithCams (line 277) | void matchFeaturesWithCams(std::mutex* match_mutex,
function addKeypoints (line 415) | void addKeypoints(// Append from these
function addMatchPairs (line 475) | void addMatchPairs(// Append from these
function findFid (line 547) | void findFid(std::pair<float, float> const & ip,
function keypointMapToVec (line 569) | void keypointMapToVec(KeyPointMap const& keypoint_map,
function detectMatchFeatures (line 594) | void detectMatchFeatures(// Inputs
function detectAddFeatures (line 743) | void detectAddFeatures(// Inputs
FILE: src/asp/Rig/InterestPoint.h
function namespace (line 40) | namespace rig {
function namespace (line 44) | namespace aspOpenMVG {
function namespace (line 50) | namespace asp {
function namespace (line 54) | namespace rig {
FILE: src/asp/Rig/InterpolationUtils.cc
type rig (line 26) | namespace rig {
function linearInterp (line 29) | Eigen::Affine3d linearInterp(double alpha, Eigen::Affine3d const& aff0,
function linearInterp (line 46) | Eigen::Affine3d linearInterp(double t0, double t, double t1, Eigen::Af...
function interpOrExtrap (line 67) | void interpOrExtrap(std::map<double, Eigen::Affine3d> const& input_poses,
FILE: src/asp/Rig/InterpolationUtils.h
function namespace (line 29) | namespace rig {
FILE: src/asp/Rig/MergeMaps.cc
type rig (line 60) | namespace rig {
function FindPidCorrespondences (line 72) | void FindPidCorrespondences(rig::PidCidFid const& A_cid_fid_to_pid,
function MergePoses (line 150) | void MergePoses(std::map<int, int> & cid2cid,
function setupLoadMatchingImages (line 198) | void setupLoadMatchingImages(std::vector<std::string> const& image_files,
function computeTransformFromBToA (line 273) | Eigen::Affine3d computeTransformFromBToA(const asp::nvmData& A,
function estimateCloseDistance (line 306) | double estimateCloseDistance(std::vector<Eigen::Vector3d> const& vec) {
type TranslationRotationScaleFittingFunctor (line 338) | struct TranslationRotationScaleFittingFunctor {
method min_elements_needed_for_fit (line 342) | size_t min_elements_needed_for_fit() const { return 3; }
method result_type (line 344) | result_type operator() (std::vector<Eigen::Vector3d> const& in_vec,
type TransformError (line 366) | struct TransformError {
function findMapToMapTransform (line 375) | Eigen::Affine3d findMapToMapTransform(const std::vector<Eigen::Vector3...
function findCidToCid (line 416) | void findCidToCid(std::vector<std::string> const& cid_to_filename,
function mergeCameraNames (line 445) | void mergeCameraNames(std::vector<std::string> & cid_to_filename,
function mergeCameraPoses (line 460) | void mergeCameraPoses(std::vector<rig::cameraImage> &C_cams,
function MergeMaps (line 489) | void MergeMaps(asp::nvmData const& A,
FILE: src/asp/Rig/MergeMaps.h
function namespace (line 6) | namespace rig {
function namespace (line 10) | namespace asp {
function namespace (line 14) | namespace rig {
FILE: src/asp/Rig/NvmUtils.cc
type rig (line 31) | namespace rig {
function findCidReorderMap (line 35) | void findCidReorderMap(asp::nvmData const& nvm,
function shiftKeypoints (line 81) | void shiftKeypoints(bool undo_shift, rig::RigSet const& R,
function transformNvm (line 110) | void transformNvm(// Inputs
function updateCidFindKeypoint (line 178) | bool updateCidFindKeypoint(std::map<int, int>::const_iterator map_it,
function transformAppendNvm (line 219) | void transformAppendNvm(// Append from these
FILE: src/asp/Rig/NvmUtils.h
function namespace (line 36) | namespace rig {
FILE: src/asp/Rig/Ransac.cc
type rig (line 27) | namespace rig {
function get_n_unique_integers (line 34) | void get_n_unique_integers(int min_val, int max_val, int num,
FILE: src/asp/Rig/Ransac.h
function namespace (line 33) | namespace rig {
FILE: src/asp/Rig/RigCameraParams.cc
function fishEyeDistortionNorm (line 158) | Eigen::Vector2d fishEyeDistortionNorm(Eigen::Vector2d const& P, Eigen::V...
function numericalJacobian (line 188) | Eigen::VectorXd numericalJacobian(Eigen::Vector2d const& P,
function newtonRaphson (line 213) | Eigen::Vector2d newtonRaphson(Eigen::Vector2d const& Y,
type rig (line 420) | namespace rig {
function DEFINE_CONVERSION (line 427) | DEFINE_CONVERSION(RAW, DISTORTED) {
function DEFINE_CONVERSION (line 430) | DEFINE_CONVERSION(DISTORTED, RAW) {
function DEFINE_CONVERSION (line 433) | DEFINE_CONVERSION(UNDISTORTED_C, DISTORTED_C) {
function DEFINE_CONVERSION (line 436) | DEFINE_CONVERSION(DISTORTED_C, UNDISTORTED_C) {
function DEFINE_CONVERSION (line 439) | DEFINE_CONVERSION(UNDISTORTED, UNDISTORTED_C) {
function DEFINE_CONVERSION (line 442) | DEFINE_CONVERSION(UNDISTORTED_C, UNDISTORTED) {
function DEFINE_CONVERSION (line 445) | DEFINE_CONVERSION(DISTORTED, UNDISTORTED) {
function DEFINE_CONVERSION (line 449) | DEFINE_CONVERSION(UNDISTORTED, DISTORTED) {
function DEFINE_CONVERSION (line 455) | DEFINE_CONVERSION(DISTORTED, DISTORTED_C) {
function DEFINE_CONVERSION (line 458) | DEFINE_CONVERSION(DISTORTED, UNDISTORTED_C) {
function DEFINE_CONVERSION (line 461) | DEFINE_CONVERSION(UNDISTORTED_C, DISTORTED) {
function DEFINE_CONVERSION (line 465) | DEFINE_CONVERSION(UNDISTORTED, DISTORTED_C) {
function DEFINE_INTRINSIC (line 479) | DEFINE_INTRINSIC(RAW) {
function DEFINE_INTRINSIC (line 484) | DEFINE_INTRINSIC(DISTORTED) {
function DEFINE_INTRINSIC (line 489) | DEFINE_INTRINSIC(DISTORTED_C) {
function DEFINE_INTRINSIC (line 494) | DEFINE_INTRINSIC(UNDISTORTED) {
function DEFINE_INTRINSIC (line 499) | DEFINE_INTRINSIC(UNDISTORTED_C) {
FILE: src/asp/Rig/RigCameraParams.h
function namespace (line 32) | namespace cv {
function namespace (line 37) | namespace rig {
FILE: src/asp/Rig/RigCameraUtils.cc
type rig (line 39) | namespace rig {
function write_param_vec (line 42) | void write_param_vec(std::string const& param_name, std::ofstream & os,
function pinholeFile (line 56) | std::string pinholeFile(std::string const& out_dir,
function createPinholeCamera (line 71) | void createPinholeCamera(rig::CameraParameters const& cam_params,
function writePinholeCamera (line 130) | void writePinholeCamera(rig::CameraParameters const& cam_params,
function writePinholeCameras (line 203) | void writePinholeCameras(std::vector<std::string> const& ...
function calcCamCtrDir (line 251) | void calcCamCtrDir(rig::CameraParameters const& cam_params,
FILE: src/asp/Rig/RigCameraUtils.h
function namespace (line 30) | namespace vw { namespace camera {
function namespace (line 34) | namespace rig {
FILE: src/asp/Rig/RigConfig.cc
type rig (line 37) | namespace rig {
function RigSet (line 159) | RigSet RigSet::subRig(int rig_id) const {
function writeRigConfig (line 185) | void writeRigConfig(std::string const& rig_config, bool model_rig, Rig...
function readConfigVals (line 270) | void readConfigVals(std::ifstream & f, std::string const& tag, int des...
function readConfigVals (line 333) | void readConfigVals(std::ifstream & f, std::string const& tag, int des...
function readRigConfig (line 365) | void readRigConfig(std::string const& rig_config, bool have_rig_transf...
FILE: src/asp/Rig/RigConfig.h
function namespace (line 31) | namespace rig {
FILE: src/asp/Rig/RigCostFunction.cc
type rig (line 29) | namespace rig {
function setUpFixRigOptions (line 32) | void setUpFixRigOptions(bool no_rig, bool fix_rig_translations, bool f...
FILE: src/asp/Rig/RigCostFunction.h
function namespace (line 38) | namespace rig {
FILE: src/asp/Rig/RigData.cc
type rig (line 23) | namespace rig {
function toOptState (line 26) | void toOptState(const Extrinsics& extrinsics, const RigSet& R, OptStat...
function fromOptState (line 80) | void fromOptState(const OptState& state, Extrinsics& extrinsics, RigSe...
FILE: src/asp/Rig/RigData.h
function namespace (line 28) | namespace rig {
FILE: src/asp/Rig/RigDem.cc
type rig (line 37) | namespace rig {
function updateTriPtsFromDem (line 42) | void updateTriPtsFromDem(std::vector<rig::CameraParameters> const& cam...
FILE: src/asp/Rig/RigDem.h
function namespace (line 30) | namespace rig {
FILE: src/asp/Rig/RigImageIO.cc
type rig (line 41) | namespace rig {
function adjustImageSize (line 49) | void adjustImageSize(rig::CameraParameters const& cam_params, cv::Mat ...
function readXyzImage (line 86) | void readXyzImage(std::string const& filename, cv::Mat & img) {
function readImageEntry (line 113) | void readImageEntry(// Inputs
function saveXyzImage (line 170) | void saveXyzImage(std::string const& filename, cv::Mat const& img) {
function saveImagesAndDepthClouds (line 203) | void saveImagesAndDepthClouds(std::vector<rig::cameraImage> const& cam...
function saveImageList (line 219) | void saveImageList(std::vector<rig::cameraImage> const& cams,
FILE: src/asp/Rig/RigImageIO.h
function namespace (line 29) | namespace rig {
FILE: src/asp/Rig/RigIo.cc
type rig (line 47) | namespace rig {
function readImageSensorTimestamp (line 52) | void readImageSensorTimestamp(std::string const& image_sensor_list,
function calcExtraPoses (line 95) | void calcExtraPoses(std::string const& extra_list, bool use_initial_ri...
function readCameraPoses (line 228) | void readCameraPoses(std::string const& camera_poses_file,
function readListOrNvm (line 272) | void readListOrNvm(// Inputs
function saveInlierMatchPairs (line 353) | void saveInlierMatchPairs(// Inputs
function savePairwiseConvergenceAngles (line 433) | void savePairwiseConvergenceAngles(// Inputs
FILE: src/asp/Rig/RigIo.h
function namespace (line 31) | namespace rig {
function namespace (line 37) | namespace asp {
function namespace (line 41) | namespace rig {
FILE: src/asp/Rig/RigMath.cc
type rig (line 26) | namespace rig {
function maxRotationAngle (line 31) | double maxRotationAngle(Eigen::Affine3d const& T) {
function normalToAzimuthAndElevation (line 42) | void normalToAzimuthAndElevation(Eigen::Vector3d const& normal,
function azimuthAndElevationToNormal (line 57) | void azimuthAndElevationToNormal(Eigen::Vector3d& normal, double azimu...
function snapPlaneNormal (line 65) | void snapPlaneNormal(Eigen::Vector3d& plane_normal) {
function bestFitPlane (line 78) | void bestFitPlane(const std::vector<Eigen::Vector3d>& points, Eigen::V...
function gamma (line 101) | double gamma(double x) {
function inv_gamma (line 109) | double inv_gamma(double x) {
function exposureCorrection (line 120) | void exposureCorrection(double max_iso_times_exposure, double iso, dou...
FILE: src/asp/Rig/RigMath.h
function namespace (line 26) | namespace rig {
FILE: src/asp/Rig/RigOptimizer.cc
type rig (line 41) | namespace rig {
type RigBlockSizes (line 44) | struct RigBlockSizes {
function set_up_block_sizes (line 52) | void set_up_block_sizes(int num_depth_params,
function evalResiduals (line 96) | void evalResiduals(// Inputs
function addRigReprojCostFun (line 124) | void addRigReprojCostFun(// Observation
function addRigDepthTriCostFun (line 252) | void addRigDepthTriCostFun(// Observation
function addRigDepthMeshCostFun (line 318) | void addRigDepthMeshCostFun(// Observation
function addRigMeshTriCostFun (line 378) | void addRigMeshTriCostFun(Eigen::Vector3d const& avg_mesh_xyz,
function addRigHeightsFromDemCostFun (line 405) | void addRigHeightsFromDemCostFun(Eigen::Vector3d const& dem_xyz,
function addRigTriCostFun (line 432) | void addRigTriCostFun(Eigen::Vector3d const& xyz_orig,
function addRigCamPosCostFun (line 460) | void addRigCamPosCostFun(// Observation
function setupRigOptProblem (line 529) | void setupRigOptProblem(// Inputs
function runOptPass (line 730) | void runOptPass(int pass,
FILE: src/asp/Rig/RigOptimizer.h
function namespace (line 32) | namespace rig {
FILE: src/asp/Rig/RigOptions.h
function namespace (line 30) | namespace rig {
FILE: src/asp/Rig/RigOutlier.cc
type rig (line 26) | namespace rig {
function flagOutlierByExclusionDist (line 28) | void flagOutlierByExclusionDist(// Inputs
function flagOutliers (line 75) | void flagOutliers(// Inputs
FILE: src/asp/Rig/RigOutlier.h
function namespace (line 26) | namespace rig {
FILE: src/asp/Rig/RigParseOptions.cc
type rig (line 38) | namespace rig {
function handleCamPosUncertainty (line 41) | void handleCamPosUncertainty(RigOptions& opt) {
function handleRigArgs (line 66) | void handleRigArgs(int argc, char *argv[], RigOptions& opt) {
function parameterValidation (line 303) | void parameterValidation(RigOptions const& opt) {
function parseAuxRigOptions (line 384) | void parseAuxRigOptions(RigOptions& opt, RigSet const& R) {
FILE: src/asp/Rig/RigParseOptions.h
function namespace (line 27) | namespace rig {
FILE: src/asp/Rig/RigParseUtils.cc
type rig (line 33) | namespace rig {
function camTypeFromName (line 36) | void camTypeFromName(std::string const& cam_name,
function parentSubdir (line 52) | std::string parentSubdir(std::string const& image_file) {
function findCamType (line 63) | size_t findCamType(std::string const& image_file,
function removeNonAlphaNum (line 111) | void removeNonAlphaNum(std::string & s) {
function findCamTypeAndTimestamp (line 130) | void findCamTypeAndTimestamp(std::string const& image_file,
function findCamTypeAndGroup (line 218) | void findCamTypeAndGroup(std::string const& image_file,
function parseImageSensorList (line 245) | bool parseImageSensorList(std::string const& image_sensor_list,
function replace_separators_with_space (line 327) | void replace_separators_with_space(std::string & str) {
function parse_intrinsics_to_float (line 337) | void parse_intrinsics_to_float(std::string const& intrinsics_to_float_...
function parse_camera_names (line 385) | void parse_camera_names(std::vector<std::string> const& cam_names,
function fileNameToTimestamp (line 420) | double fileNameToTimestamp(std::string const& file_name) {
function strToVec (line 433) | void strToVec(std::string const& str, std::vector<double> & vec) {
function ParseHuginControlPoints (line 444) | void ParseHuginControlPoints(std::string const& hugin_file,
function is_blank (line 511) | bool is_blank(std::string const& line) {
function ParseXYZ (line 516) | void ParseXYZ(std::string const& xyz_file,
FILE: src/asp/Rig/RigParseUtils.h
function namespace (line 28) | namespace rig {
FILE: src/asp/Rig/RigRpcDistortion.cc
type rig (line 41) | namespace rig {
function rpc_degree (line 44) | int rpc_degree(int num_dist_params) {
function num_dist_params (line 48) | int num_dist_params(int rpc_degree) {
function validate_distortion_params (line 54) | void validate_distortion_params(int num_params) {
function append_zeros_to_vector (line 61) | void append_zeros_to_vector(Eigen::VectorXd & vec, int num) {
function prepend_1 (line 76) | void prepend_1(Eigen::VectorXd & vec) {
function remove_1 (line 88) | void remove_1(Eigen::VectorXd & vec) {
function subvector (line 98) | Eigen::VectorXd subvector(Eigen::VectorXd const& vec, int start, int l...
function set_subvector (line 107) | void set_subvector(Eigen::VectorXd & vec, int start, int len, Eigen::V...
function compute_rpc (line 118) | Eigen::Vector2d compute_rpc(Eigen::Vector2d const& p, Eigen::VectorXd ...
function pack_params (line 166) | void pack_params(Eigen::VectorXd& params, Eigen::VectorXd const& num_x,
function unpack_params (line 186) | void unpack_params(Eigen::VectorXd const& params,
type RpcFitError (line 282) | struct RpcFitError {
function evalRpcResiduals (line 332) | void evalRpcResiduals(// Inputs
function genDistUndistPairs (line 356) | void genDistUndistPairs(int num_samples, rig::CameraParameters const& ca...
function fitCurrDegRPC (line 416) | void fitCurrDegRPC(std::vector<Eigen::Vector2d> const& undist_centered_p...
function fitRpcDist (line 479) | void fitRpcDist(int rpc_degree, int num_samples, rig::CameraParameters c...
function evalRpcDistUndist (line 516) | void evalRpcDistUndist(int num_samples, rig::CameraParameters const& cam...
FILE: src/asp/Rig/RigRpcDistortion.h
function namespace (line 27) | namespace rig {
function namespace (line 32) | namespace rig {
FILE: src/asp/Rig/RigThread.cc
type rig (lin
Copy disabled (too large)
Download .json
Condensed preview — 877 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,476K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bibliography-addition---.md",
"chars": 390,
"preview": "---\nname: \"Bibliography Addition \\U0001F5C3\"\nabout: Add a paper, abstract, or other reference that used ASP!\ntitle: ''\nl"
},
{
"path": ".github/ISSUE_TEMPLATE/bug-report---.md",
"chars": 851,
"preview": "---\nname: \"Bug Report \\U0001F41B\"\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**D"
},
{
"path": ".github/ISSUE_TEMPLATE/feature-request---.md",
"chars": 608,
"preview": "---\nname: \"Feature Request \\U0001F680\"\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n"
},
{
"path": ".github/pull_request_template.md",
"chars": 2510,
"preview": "<!--- Provide a general summary of your changes in the Title above -->\n\n## Description\n<!--- Describe your changes in de"
},
{
"path": ".github/workflows/build_helper.sh",
"chars": 29292,
"preview": "#!/bin/bash\n\n# This is a debugging script that builds ASP and its dependencies. It also shows\n# how the result of buildi"
},
{
"path": ".github/workflows/build_helper_linux.yml",
"chars": 5210,
"preview": "name: build_helper_linux\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: ubuntu-22.04\n steps:\n\n - uses: cond"
},
{
"path": ".github/workflows/build_test.sh",
"chars": 10353,
"preview": "#!/bin/bash\n\n# This is run by GitHub Actions to build and test the Mac version of ASP.\n# See build_helper.sh for detaile"
},
{
"path": ".github/workflows/build_test_mac_arm64.yml",
"chars": 1231,
"preview": "name: build_test_mac_arm64\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: macos-latest\n steps:\n - uses: act"
},
{
"path": ".github/workflows/build_test_mac_x64.yml",
"chars": 554,
"preview": "name: build_test_mac_x64\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: macos-15-intel\n steps:\n - uses: act"
},
{
"path": ".github/workflows/save_linux_deps.sh",
"chars": 984,
"preview": "#!/bin/bash\n\n# Run this on a local machine to save the current dependencies as a release.\n# This will wipe the old versi"
},
{
"path": ".github/workflows/save_mac_deps.sh",
"chars": 4833,
"preview": "#!/bin/bash\n\n# To update the Mac dependencies or create new ones, in manual (interactive)\n# mode, run the ssh_mac_x64.ym"
},
{
"path": ".github/workflows/ssh_linux_arm.yml",
"chars": 1224,
"preview": "name: ssh_linux_arm\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: ubuntu-22.04-arm\n steps:\n \n # Fetch m"
},
{
"path": ".github/workflows/ssh_mac_arm.yml",
"chars": 1218,
"preview": "name: ssh_mac_arm\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: macos-latest\n steps:\n \n # Fetch minicon"
},
{
"path": ".github/workflows/ssh_mac_x64.yml",
"chars": 1071,
"preview": "name: ssh_mac_x64\non:\n workflow_dispatch:\n\njobs:\n build:\n runs-on: macos-15-intel\n steps:\n \n # Fetch minic"
},
{
"path": ".github/workflows/update_mac_tests.sh",
"chars": 1918,
"preview": "#!/bin/bash\n\n# Given the latest test results for Mac, as fetched (automatically) from the\n# cloud as an artifact, update"
},
{
"path": ".gitignore",
"chars": 133,
"preview": "# Generally ignorable files.\n*~\n/build\n/build_linux\n/install\n/install_linux\ndocs/_build\nGitHubReleases.txt\n\n.vscode\n*.co"
},
{
"path": ".readthedocs.yml",
"chars": 678,
"preview": "# .readthedocs.yml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html fo"
},
{
"path": "AUTHORS.rst",
"chars": 6828,
"preview": "The Ames Stereo Pipeline (ASP) was originally developed by the\nIntelligent Robotics Group (IRG), in the Intelligent Syst"
},
{
"path": "CMakeLists.txt",
"chars": 3338,
"preview": "cmake_minimum_required (VERSION 3.15.5)\n\nproject(StereoPipeline)\n\nif(APPLE)\n cmake_policy(SET CMP0025 NEW) \n set(C"
},
{
"path": "CODE_OF_CONDUCT.rst",
"chars": 5492,
"preview": "====================================\nContributor Covenant Code of Conduct\n====================================\n\nOur Pled"
},
{
"path": "CONTRIBUTING.rst",
"chars": 4488,
"preview": "============\nContributing\n============\n\nContributions are welcome, and they are greatly appreciated! Every\nlittle bit he"
},
{
"path": "ChangeLog",
"chars": 0,
"preview": ""
},
{
"path": "INSTALLGUIDE.rst",
"chars": 9407,
"preview": "Installation\n============\n\nPrecompiled binaries are available for the stable releases and the current\ndevelopment build."
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NEWS.rst",
"chars": 153097,
"preview": "Changes since last release\n--------------------------\n\nAdded a new program for distributed stereo processing across comp"
},
{
"path": "README.rst",
"chars": 6810,
"preview": "==========================\nAmes Stereo Pipeline (ASP)\n==========================\n\n.. image:: https://zenodo.org/badge/DO"
},
{
"path": "RELEASEGUIDE",
"chars": 72,
"preview": "See https://stereopipeline.readthedocs.io/en/latest/building_asp.html. \n"
},
{
"path": "THIRDPARTYLICENSES.rst",
"chars": 4705,
"preview": "The NASA Ames Stereo Pipeline (ASP) would not be possible with out the\nuse of third party software that is also open sou"
},
{
"path": "cmake/FindCairo.cmake",
"chars": 2459,
"preview": "\n# TODO: This was copied from here: https://github.com/alacarte-maps/alacarte/tree/master/cmake\n# Which uses the"
},
{
"path": "cmake/FindCairomm.cmake",
"chars": 1919,
"preview": "\n# TODO: This was copied from here: https://github.com/alacarte-maps/alacarte/tree/master/cmake\n# Which uses the"
},
{
"path": "cmake/FindFreeType.cmake",
"chars": 3415,
"preview": "# - Locate FreeType library\n# This module defines\n# FREETYPE_LIBRARIES, the library to link against\n# FREETYPE_FOUND, "
},
{
"path": "cmake/FindSigC++.cmake",
"chars": 1267,
"preview": "\n# Copied from list post here: https://mail.gnome.org/archives/libsigc-list/2012-February/msg00005.html\n# Had to add sea"
},
{
"path": "cmake/LibFindMacros.cmake",
"chars": 4654,
"preview": "# Version 1.0 (2013-04-12)\n# Public Domain, originally written by Lasse Kärkkäinen <tronic@zi.fi>\n# Published at http://"
},
{
"path": "cmake/Utilities.cmake",
"chars": 7938,
"preview": "# This file contains functions used in other parts of the project.\n\n# Obtains a file list with all the files in a direct"
},
{
"path": "cmake/linux_cross_toolchain.cmake",
"chars": 3791,
"preview": "# Cross-compile toolchain for building on Mac ARM64 targeting Linux x86_64.\n#\n# Both VisionWorkbench and StereoPipeline "
},
{
"path": "conda/asp_2.7.0_linux_env.yaml",
"chars": 4795,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - _"
},
{
"path": "conda/asp_2.7.0_osx_env.yaml",
"chars": 4391,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - a"
},
{
"path": "conda/asp_3.0.0_linux_env.yaml",
"chars": 5051,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - _"
},
{
"path": "conda/asp_3.0.0_osx_env.yaml",
"chars": 4403,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - a"
},
{
"path": "conda/asp_3.1.0_linux_env.yaml",
"chars": 5648,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - _"
},
{
"path": "conda/asp_3.1.0_osx_env.yaml",
"chars": 4957,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - a"
},
{
"path": "conda/asp_3.2.0_linux_env.yaml",
"chars": 8825,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - _"
},
{
"path": "conda/asp_3.2.0_osx_env.yaml",
"chars": 7485,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - a"
},
{
"path": "conda/asp_3.3.0_linux_env.yaml",
"chars": 8122,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - _"
},
{
"path": "conda/asp_3.3.0_osx_env.yaml",
"chars": 6898,
"preview": "name: asp\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n - a"
},
{
"path": "conda/asp_3.5.0_linux_env.yaml",
"chars": 12610,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - nodefaults\n - https://"
},
{
"path": "conda/asp_3.5.0_osx_x64_env.yaml",
"chars": 10269,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - https://repo.anaconda.c"
},
{
"path": "conda/asp_deps_2.7.0_linux_env.yaml",
"chars": 7449,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_2.7.0_osx_env.yaml",
"chars": 6340,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.0.0_linux_env.yaml",
"chars": 5475,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.0.0_osx_env.yaml",
"chars": 4352,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.1.0_linux_env.yaml",
"chars": 5579,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.1.0_osx_env.yaml",
"chars": 4906,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.2.0_linux_env.yaml",
"chars": 8755,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.2.0_osx_env.yaml",
"chars": 7416,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.3.0_linux_env.yaml",
"chars": 8053,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.3.0_osx_env.yaml",
"chars": 7804,
"preview": "name: asp_deps\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\n - defaults\ndependencies:\n"
},
{
"path": "conda/asp_deps_3.4.0_alpha_linux_env.yaml",
"chars": 8882,
"preview": "name: asp_deps_3.4.0_alpha\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\ndependencies:\n "
},
{
"path": "conda/asp_deps_3.4.0_alpha_osx_env.yaml",
"chars": 7802,
"preview": "name: asp_deps_3.4.0_alpha\nchannels:\n - nasa-ames-stereo-pipeline\n - usgs-astrogeology\n - conda-forge\ndependencies:\n "
},
{
"path": "conda/environment.yml",
"chars": 355,
"preview": "# Placeholder minimal asp deps conda environement. Not yet fully fleshed out.\n# Use instead the ones at: conda/asp_deps_"
},
{
"path": "conda/update_versions.py",
"chars": 4215,
"preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n# __BEGIN_LICENSE__\n# Copyright (c) 2009-2013, United States Government a"
},
{
"path": "docs/Makefile",
"chars": 615,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHI"
},
{
"path": "docs/acknowledgements.rst",
"chars": 45,
"preview": "Credits\n=======\n\n.. include:: ../AUTHORS.rst\n"
},
{
"path": "docs/bathy_water_masking.rst",
"chars": 6042,
"preview": ".. _bathy_water_masking:\n\nBathy water masking\n===================\n\nFor shallow water bathymetry (:numref:`bathy_intro`) "
},
{
"path": "docs/bibliography.bib",
"chars": 52301,
"preview": "%% This BibTeX bibliography file was created using BibDesk.\n%% http://bibdesk.sourceforge.net/\n%% Created for Ross Beyer"
},
{
"path": "docs/building_asp.rst",
"chars": 15895,
"preview": ".. _building_asp:\n\nBuilding and releasing ASP\n==========================\n\nThis chapter will describe how ASP can be buil"
},
{
"path": "docs/bundle_adjustment.rst",
"chars": 76666,
"preview": ".. _bundle_adjustment:\n\nBundle adjustment\n=================\n\nOverview\n--------\n\nSatellite position and orientation error"
},
{
"path": "docs/conf.py",
"chars": 5991,
"preview": "# -*- coding: utf-8 -*-\n#\n# Configuration file for the Sphinx documentation builder.\n#\n# This file does only contain a s"
},
{
"path": "docs/contributing.rst",
"chars": 33,
"preview": ".. include:: ../CONTRIBUTING.rst\n"
},
{
"path": "docs/correlation.rst",
"chars": 39658,
"preview": ".. _correlation:\n\nAdvanced stereo topics\n======================\n\nIn this chapter we will dive much deeper into understan"
},
{
"path": "docs/environment.yml",
"chars": 136,
"preview": "# conda environment needed to build the docs.\n\nchannels:\n - conda-forge\n - defaults\ndependencies:\n - sphinx\n - sphin"
},
{
"path": "docs/error_propagation.rst",
"chars": 13488,
"preview": ".. _error_propagation:\n\nError propagation\n=================\n\nAt the triangulation stage, ``parallel_stereo`` can propaga"
},
{
"path": "docs/examples/apollo15.rst",
"chars": 1582,
"preview": ".. _apollo15_example:\n\nApollo 15 Metric Camera images\n------------------------------\n\nApollo Metric images were all take"
},
{
"path": "docs/examples/aster.rst",
"chars": 8051,
"preview": ".. _aster:\n\nASTER\n-----\n\n`Advanced Spaceborne Thermal Emission and Reflection Radiometer\n<https://en.wikipedia.org/wiki/"
},
{
"path": "docs/examples/bathy.rst",
"chars": 25299,
"preview": ".. include:: <isonum.txt>\n\n.. _bathy_intro:\n\nShallow-water bathymetry\n------------------------\n\nASP supports creation of"
},
{
"path": "docs/examples/cassini.rst",
"chars": 3306,
"preview": ".. _cassini_example:\n\nCassini ISS NAC\n---------------\n\nThis is a proof of concept showing the strength of building the S"
},
{
"path": "docs/examples/chandrayaan2.rst",
"chars": 8779,
"preview": ".. _chandrayaan2:\n\nChandrayaan-2 lunar orbiter\n---------------------------\n\nThe example here shows how to create a 3D te"
},
{
"path": "docs/examples/change3.rst",
"chars": 15401,
"preview": ".. _change3:\n\nChang'e 3 landing camera\n------------------------\n\nThis example discusses processing `Chang'e 3\n<https://e"
},
{
"path": "docs/examples/csm.rst",
"chars": 38728,
"preview": ".. _csm:\n\nCommunity Sensor Model\n----------------------\n\nThe Community Sensor Model (CSM), established by the U.S. defen"
},
{
"path": "docs/examples/ctx.rst",
"chars": 4174,
"preview": ".. _ctx_example:\n\nMars Reconnaissance Orbiter CTX\n-------------------------------\n\nOverview\n~~~~~~~~\n\nCTX is a moderatel"
},
{
"path": "docs/examples/dawn.rst",
"chars": 2534,
"preview": ".. _dawn_isis:\n\nDawn (FC) Framing Camera\n------------------------\n\nThis is a NASA mission to visit two of the largest ob"
},
{
"path": "docs/examples/dg.rst",
"chars": 325,
"preview": ".. _digital_globe_example:\n\nDigitalGlobe\n------------\n\nProcessing of DigitalGlobe/Maxar images is described extensively "
},
{
"path": "docs/examples/hirise.rst",
"chars": 5749,
"preview": ".. _hirise_example:\n\nMars Reconnaissance Orbiter HiRISE\n----------------------------------\n\nHiRISE is one of the most ch"
},
{
"path": "docs/examples/historical.rst",
"chars": 43399,
"preview": ".. _kh4:\n\nDeclassified satellite images: KH-4B\n------------------------------------\n\nASP has preliminary support for the"
},
{
"path": "docs/examples/hrsc.rst",
"chars": 3401,
"preview": ".. _hrsc_example:\n\nMars Express High Resolution Stereo Camera (HRSC)\n-------------------------------------------------\n\n"
},
{
"path": "docs/examples/isis_minirf.rst",
"chars": 251,
"preview": ".. _isis_minirf:\n\nLRO Mini-RF using ISIS camera models\n------------------------------------\n\nSee :numref:`csm_minirf`. T"
},
{
"path": "docs/examples/junocam.rst",
"chars": 13735,
"preview": ".. _junocam:\n\nJunoCam\n-------\n\nJunoCam is an optical camera on the Juno spacecraft. It has been taking images\nof Jupiter"
},
{
"path": "docs/examples/k10.rst",
"chars": 460,
"preview": ".. _k10example:\n\nK10\n---\n\nK10 is an Earth-based research rover within the Intelligent Robotics\nGroup at NASA Ames, the g"
},
{
"path": "docs/examples/kaguya.rst",
"chars": 11916,
"preview": ".. _kaguya_tc:\n\nKaguya Terrain Camera\n---------------------\n\nThe Kaguya Terrain Camera (TC) is a push-broom imager, with"
},
{
"path": "docs/examples/lronac.rst",
"chars": 5796,
"preview": ".. _lronac-example:\n\nLunar Reconnaissance Orbiter (LRO) NAC\n--------------------------------------\n\nThis section will de"
},
{
"path": "docs/examples/mer.rst",
"chars": 2156,
"preview": ".. _mer-example:\n\nMars Exploration Rovers\n-----------------------\n\nThe Mars Exploration Rovers (MER) have several camera"
},
{
"path": "docs/examples/moc.rst",
"chars": 2661,
"preview": ".. _moc_example:\n\nMars Global Surveyor MOC-NA\n---------------------------\n\nIn the Stereo Pipeline Tutorial in :numref:`m"
},
{
"path": "docs/examples/msl.rst",
"chars": 16165,
"preview": ".. _rig_msl:\n\nMSL navcam example\n------------------\n\nThis is an example of using the ASP tools to process images taken b"
},
{
"path": "docs/examples/orbital_rig.rst",
"chars": 6540,
"preview": ".. _orbital_rig:\n\nOrbital rig\n-----------\n\nThis example shows how to produce synthetic images and cameras that model an\n"
},
{
"path": "docs/examples/pbs_slurm.rst",
"chars": 3159,
"preview": ".. _pbs_slurm:\n\nUsing PBS and SLURM\n-------------------\n\nRunning ``parallel_stereo`` (:numref:`parallel_stereo`) can be "
},
{
"path": "docs/examples/perusat1.rst",
"chars": 5087,
"preview": ".. _perusat1:\n\nPeruSat-1\n---------\n\nPeruSat-1 (launched 2016) is a Peruvian Earth observation satellite with\n0.7-meter p"
},
{
"path": "docs/examples/pleiades.rst",
"chars": 8611,
"preview": ".. _pleiades:\n\nPleiades\n--------\n\nASP supports the 1A/1B and NEO satellites from Airbus Pleiades. For NEO, see\n:numref:`"
},
{
"path": "docs/examples/rig.rst",
"chars": 7378,
"preview": ".. _rig_calibrator_example:\n\nA 3-sensor rig example\n^^^^^^^^^^^^^^^^^^^^^^\n\nThis is an example using ``rig_calibrator`` "
},
{
"path": "docs/examples/rpc.rst",
"chars": 8464,
"preview": ".. _rpc:\n\nRPC camera models\n-----------------\n\nSome vendors, such as GeoEye with its Ikonos and two\nGeoEye satellites, A"
},
{
"path": "docs/examples/sfm_iss.rst",
"chars": 30883,
"preview": ".. _sfm_iss:\n\nMapping the ISS using 2 rigs with 3 cameras each\n------------------------------------------------\n\nThis ex"
},
{
"path": "docs/examples/sfs_ctx.rst",
"chars": 7125,
"preview": ".. _sfs_ctx:\n\nShape-from-Shading with CTX images\n----------------------------------\n\nThis example shows how to refine a "
},
{
"path": "docs/examples/sfs_earth.rst",
"chars": 10929,
"preview": ".. _sfs_earth:\n\nShape-from-Shading for Earth\n----------------------------\n\nThis example shows how to refine a terrain mo"
},
{
"path": "docs/examples/skysat.rst",
"chars": 37046,
"preview": ".. _skysat:\n\nSkySat Stereo and Video data\n----------------------------\n\nSkySat is a constellation of sub-meter resolutio"
},
{
"path": "docs/examples/spot5.rst",
"chars": 5884,
"preview": ".. _spot5:\n\nSPOT5\n-----\n\nSPOT5 is a CNES (Space Agency of France) satellite launched on May 2002\nand decommissioned in M"
},
{
"path": "docs/examples/spot67.rst",
"chars": 5244,
"preview": ".. _spot67:\n\nSPOT 6/7\n--------\n\nSPOT 6 (launched 2012) and SPOT 7 (launched 2014) are Airbus Earth observation\nsatellite"
},
{
"path": "docs/examples/stereo_pairs.rst",
"chars": 2917,
"preview": ".. _stereo_pairs:\n\nGuidelines for selecting stereo pairs\n-------------------------------------\n\nWhen choosing image pair"
},
{
"path": "docs/examples/umbra_sar.rst",
"chars": 7945,
"preview": ".. _umbra_sar:\n\nUmbra SAR\n---------\n\nHere we describe processing Synthetic Aperture Radar (SAR) images for Earth\nproduce"
},
{
"path": "docs/examples.rst",
"chars": 2144,
"preview": ".. include:: <isonum.txt>\n\n.. _examples:\n\nStereo processing examples\n==========================\n\nThis chapter showcases "
},
{
"path": "docs/experimental.rst",
"chars": 4316,
"preview": ".. _experimental:\n\nExperimental features\n=====================\n\n.. _casp_go:\n\nThe CASP-GO stereo processing system\n-----"
},
{
"path": "docs/glossary.rst",
"chars": 1373,
"preview": "Glossary\n========\n\n.. glossary::\n\n ASP\n Ames Stereo Pipeline\n\n CTX\n Context Camera\n\n DEM\n "
},
{
"path": "docs/index.rst",
"chars": 696,
"preview": ".. Ames Stereo Pipeline documentation master file.\n\nAmes Stereo Pipeline documentation (version |version|)\n============="
},
{
"path": "docs/installation.rst",
"chars": 6400,
"preview": ".. _installation:\n\n.. include:: ../INSTALLGUIDE.rst\n\n.. _vwrc:\n\nSettings optimization\n---------------------\n\nFinally, th"
},
{
"path": "docs/introduction.rst",
"chars": 15091,
"preview": "Introduction\n============\n\nThe NASA Ames Stereo Pipeline (ASP) is a suite of free and open source automated\ngeodesy and "
},
{
"path": "docs/news.rst",
"chars": 95,
"preview": ".. _news:\n\nNews and development history\n============================\n\n.. include:: ../NEWS.rst\n"
},
{
"path": "docs/next_steps.rst",
"chars": 71326,
"preview": ".. _nextsteps:\n\nThe next steps\n==============\n\nThis chapter will discuss in more detail ASP's stereo process and\nother t"
},
{
"path": "docs/outputfiles.rst",
"chars": 16690,
"preview": ".. _outputfiles:\n\nGuide to output files\n=====================\n\nThe ``parallel_stereo`` program (:numref:`parallel_stereo"
},
{
"path": "docs/papersusingasp.bib",
"chars": 93765,
"preview": "@article{2014NatCo...5E3417L,\n\tAdsnote = {Provided by the SAO/NASA Astrophysics Data System},\n\tAdsurl = {http://adsabs.h"
},
{
"path": "docs/papersusingasp.rst",
"chars": 658,
"preview": ".. _papersusingasp:\n\nPapers that used ASP\n====================\n\nThese works (papers and conference abstracts) have made "
},
{
"path": "docs/pinholemodels.rst",
"chars": 20507,
"preview": "Frame camera models\n===================\n\nAmes Stereo Pipeline supports a generic Pinhole camera model with several lens\n"
},
{
"path": "docs/requirements.txt",
"chars": 21,
"preview": "sphinxcontrib-bibtex\n"
},
{
"path": "docs/sfm.rst",
"chars": 31280,
"preview": ".. _sfm:\n\nAbout SfM\n---------\n\nThis chapter discusses how to create a terrain model (DEM) with\nStructure-from-Motion (Sf"
},
{
"path": "docs/sfs_usage.rst",
"chars": 101010,
"preview": ".. _sfs_usage:\n\nOverview of SfS\n---------------\n\nASP provides a tool, named ``sfs`` (:numref:`sfs`), that can improve th"
},
{
"path": "docs/stereo_algorithms.rst",
"chars": 27882,
"preview": ".. _stereo_algos_full:\n\nThe stereo algorithms in ASP in detail\n======================================\n\nHere we will disc"
},
{
"path": "docs/stereodefault.rst",
"chars": 44227,
"preview": ".. _stereodefault:\n\nThe ``stereo.default`` file\n===========================\n\nThe ``stereo.default`` file contains config"
},
{
"path": "docs/thirdparty.rst",
"chars": 82,
"preview": "Third party licenses\n====================\n\n.. include:: ../THIRDPARTYLICENSES.rst\n"
},
{
"path": "docs/tips_tricks.rst",
"chars": 4038,
"preview": ".. _tips:\n\nTips and tricks\n===============\n\nHere we summarize, in one place, some insights in how to get the most\nfrom A"
},
{
"path": "docs/tools/add_spot_rpc.rst",
"chars": 2018,
"preview": ".. _add_spot_rpc:\n\nadd_spot_rpc\n------------\n\nThe ``add_spot_rpc`` tool creates an RPC model to approximate a SPOT5\nsens"
},
{
"path": "docs/tools/aster2asp.rst",
"chars": 4042,
"preview": ".. _aster2asp:\n\naster2asp\n---------\n\nThe ``aster2asp`` tool takes as input an HDF file or a directory containing\nASTER L"
},
{
"path": "docs/tools/bathy_plane_calc.rst",
"chars": 19128,
"preview": ".. _bathy_plane_calc:\n\nbathy_plane_calc\n----------------\n\nThe ``bathy_plane_calc`` program estimates the surface of a bo"
},
{
"path": "docs/tools/bathy_threshold_calc.rst",
"chars": 1935,
"preview": ".. _bathy_threshold_calc:\n\nbathy_threshold_calc.py\n-----------------------\n\nThe ``bathy_threshold_calc.py`` program take"
},
{
"path": "docs/tools/bundle_adjust.rst",
"chars": 74915,
"preview": ".. _bundle_adjust:\n\nbundle_adjust\n-------------\n\nThe ``bundle_adjust`` program performs bundle adjustment on a given\nset"
},
{
"path": "docs/tools/cam2map4stereo.rst",
"chars": 2131,
"preview": ".. _cam2map4stereo.py:\n\ncam2map4stereo.py\n-----------------\n\nThis program takes similar arguments as the ISIS ``cam2map`"
},
{
"path": "docs/tools/cam2rpc.rst",
"chars": 6829,
"preview": ".. _cam2rpc:\n\ncam2rpc\n-------\n\nThis tool is used to generate an approximate RPC model (:numref:`rpc`) for any\ncamera mod"
},
{
"path": "docs/tools/cam_gen.rst",
"chars": 23258,
"preview": ".. _cam_gen:\n\ncam_gen\n-------\n\nThis program can create Pinhole (:numref:`pinholemodels`), Optical Bar\n(:numref:`panorami"
},
{
"path": "docs/tools/cam_test.rst",
"chars": 4571,
"preview": ".. _cam_test:\n\ncam_test\n--------\n\nThis tool compares two camera models for the same image, or a camera\nmodel against its"
},
{
"path": "docs/tools/camera_calibrate.rst",
"chars": 3085,
"preview": ".. _camera_calibrate:\n\ncamera_calibrate\n----------------\n\nOverview\n~~~~~~~~\n\nThe ``camera_calibrate`` tool can generate "
},
{
"path": "docs/tools/camera_footprint.rst",
"chars": 2945,
"preview": ".. _camera_footprint:\n\ncamera_footprint\n----------------\n\nThe ``camera_footprint`` program computes what the footprint o"
},
{
"path": "docs/tools/camera_solve.rst",
"chars": 4565,
"preview": ".. _camera_solve:\n\ncamera_solve\n------------\n\nThe ``camera_solve`` tool takes as input a set of images acquired with\na c"
},
{
"path": "docs/tools/cgal_tools.rst",
"chars": 1524,
"preview": ".. _cgal_tools:\n\nCGAL tools\n----------\n\nASP distributes in the ``bin`` directory the following CGAL tools for\nmanipulati"
},
{
"path": "docs/tools/colormap.rst",
"chars": 4892,
"preview": ".. _colormap:\n\ncolormap\n--------\n\nThe ``colormap`` tool reads a DEM or some other single-channel image,\nand writes a cor"
},
{
"path": "docs/tools/convert_pinhole_model.rst",
"chars": 3824,
"preview": ".. _convert_pinhole_model:\n\nconvert_pinhole_model\n---------------------\n\nThis tool can be used to approximately convert "
},
{
"path": "docs/tools/corr_eval.rst",
"chars": 4331,
"preview": ".. _corr_eval:\n\ncorr_eval\n---------\n\nThe ``corr_eval`` program takes as input left and right aligned images\nand a dispar"
},
{
"path": "docs/tools/correlator.rst",
"chars": 2411,
"preview": ".. _correlator-mode:\n\nImage correlator\n----------------\n\nThe ``parallel_stereo`` program (:numref:`parallel_stereo`) can"
},
{
"path": "docs/tools/dem2gcp.rst",
"chars": 18871,
"preview": ".. _dem2gcp:\n\ndem2gcp\n-------\n\nThis program generates GCP (:numref:`bagcp`) based on densely measuring the\nmisregistrati"
},
{
"path": "docs/tools/dem_geoid.rst",
"chars": 3835,
"preview": ".. _dem_geoid:\n\ndem_geoid\n---------\n\nThis program takes as input a DEM whose height values are relative to the datum\nell"
},
{
"path": "docs/tools/dem_mosaic.rst",
"chars": 17750,
"preview": ".. _dem_mosaic:\n\ndem_mosaic\n----------\n\nThe program ``dem_mosaic`` takes as input a list of DEM files and\ncreates a mosa"
},
{
"path": "docs/tools/dg_mosaic.rst",
"chars": 3949,
"preview": ".. _dg_mosaic:\n\ndg_mosaic\n---------\n\nThis tool can be used when processing Digital Globe images\n(:numref:`dg_tutorial`)."
},
{
"path": "docs/tools/disp2ip.rst",
"chars": 6921,
"preview": ".. _disp2ip:\n\ndisp2ip\n-------\n\nThis program has some rather specialized functionality. It is meant to solve the\nfollowin"
},
{
"path": "docs/tools/disparitydebug.rst",
"chars": 3288,
"preview": ".. _disparitydebug:\n\ndisparitydebug\n--------------\n\nThe ``disparitydebug`` program produces visualizable images from\ndis"
},
{
"path": "docs/tools/gcp_gen.rst",
"chars": 8059,
"preview": ".. _gcp_gen:\n\ngcp_gen\n-------\n\nThis program creates ground control points (GCP, :numref:`bagcp`) given a raw\ncamera imag"
},
{
"path": "docs/tools/gdal.rst",
"chars": 1349,
"preview": ".. _gdal_tools:\n\nGDAL tools\n----------\n\nASP distributes in the ``bin`` directory the following `GDAL\n<https://gdal.org/>"
},
{
"path": "docs/tools/geodiff.rst",
"chars": 3533,
"preview": ".. _geodiff:\n\ngeodiff\n-------\n\nThe ``geodiff`` program takes as input two DEMs, or a DEM and a CSV file, and\nsubtracts t"
},
{
"path": "docs/tools/hiedr2mosaic.rst",
"chars": 1394,
"preview": ".. _hiedr2mosaic:\n\nhiedr2mosaic.py\n---------------\n\nAssemble a collection of HiRISE EDR files into a single image. This "
},
{
"path": "docs/tools/hillshade.rst",
"chars": 2213,
"preview": ".. _hillshade:\n\nhillshade\n---------\n\nThe ``hillshade`` tool reads in a DEM and outputs an image of that DEM\nas though it"
},
{
"path": "docs/tools/historical_helper.rst",
"chars": 1380,
"preview": ".. _historical_helper:\n\nhistorical_helper.py\n--------------------\n\nThe ``historical_helper.py`` program is a helper scri"
},
{
"path": "docs/tools/icebridge_kmz_to_csv.rst",
"chars": 978,
"preview": ".. _icebridgekmztocsv:\n\nicebridge_kmz_to_csv\n--------------------\n\nThis is a simple tool for use with data from the NASA"
},
{
"path": "docs/tools/image2qtree.rst",
"chars": 3574,
"preview": ".. _image2qtree:\n\nimage2qtree\n-----------\n\n``image2qtree`` turns a georeferenced image (or images) into a quadtree\nwith "
},
{
"path": "docs/tools/image_align.rst",
"chars": 12797,
"preview": ".. _image_align:\n\nimage_align\n------------\n\nThe program ``image_align`` aligns a second image to a first image. In\nthe p"
},
{
"path": "docs/tools/image_calc.rst",
"chars": 9050,
"preview": ".. _image_calc:\n\nimage_calc\n----------\n\nThis tool can be used to perform simple, per-pixel arithmetic on one or\nmore inp"
},
{
"path": "docs/tools/image_mosaic.rst",
"chars": 4167,
"preview": ".. _image_mosaic:\n\nimage_mosaic\n------------\n\nThe program ``image_mosaic`` aligns multiple input images into a single ou"
},
{
"path": "docs/tools/image_subset.rst",
"chars": 4207,
"preview": ".. _image_subset:\n\nimage_subset\n------------\n\nGiven a set of overlapping georeferenced images, this program will extract"
},
{
"path": "docs/tools/ipfind.rst",
"chars": 3543,
"preview": ".. _ipfind:\n\nipfind\n------\n\nThe ``ipfind`` tool detects interest points (IPs) in images and writes\nthem out to .vwip fil"
},
{
"path": "docs/tools/ipmatch.rst",
"chars": 4589,
"preview": ".. _ipmatch:\n\nipmatch\n-------\n\nThe ``ipmatch`` program reads interest points (IPs) from ``.vwip`` files\nproduced with ``"
},
{
"path": "docs/tools/jitter_solve.rst",
"chars": 107180,
"preview": ".. _jitter_solve:\n\njitter_solve\n-------------\n\nThe ``jitter_solve`` program takes as input several overlapping images an"
},
{
"path": "docs/tools/lronac2mosaic.rst",
"chars": 1845,
"preview": ".. _lronac2mosaic:\n\nlronac2mosaic.py\n----------------\n\nThis tool takes in two LRONAC files (M*LE.IMG and M*RE.IMG) and p"
},
{
"path": "docs/tools/lvis2kml.rst",
"chars": 1548,
"preview": ".. _lvis2kml:\n\nlvis2kml\n--------\n\nA simple tool for use with LVIS (Land, Vegetation, and Ice Sensor) lidar\ndata from the"
},
{
"path": "docs/tools/mapproject.rst",
"chars": 18176,
"preview": ".. _mapproject:\n\nmapproject\n----------\n\nThe tool ``mapproject`` is used to orthorectify (mapproject) a camera image\nonto"
},
{
"path": "docs/tools/multi_stereo.rst",
"chars": 10462,
"preview": ".. _multi_stereo:\n\nmulti_stereo\n------------\n\nThe ``multi_stereo`` program takes as input a set of images and\ncameras, r"
},
{
"path": "docs/tools/n_align.rst",
"chars": 5114,
"preview": ".. _n_align:\n\nn_align\n-------\n\nThis tool can be used to jointly align a set of two or more point\nclouds, hence it extend"
},
{
"path": "docs/tools/orbit_plot.rst",
"chars": 11417,
"preview": ".. _orbit_plot:\n\norbit_plot.py\n-------------\n\nThe ``orbit_plot.py`` program is a Python script that takes an input one o"
},
{
"path": "docs/tools/orbitviz.rst",
"chars": 2913,
"preview": ".. _orbitviz:\n\norbitviz\n--------\n\nProduces a Google Earth KML file useful for visualizing camera\npositions. The input fo"
},
{
"path": "docs/tools/ortho2pinhole.rst",
"chars": 3415,
"preview": ".. _ortho2pinhole:\n\northo2pinhole\n-------------\n\nGiven an orthoimage, a raw image, and a sample pinhole camera model hav"
},
{
"path": "docs/tools/otsu_threshold.rst",
"chars": 2659,
"preview": ".. _otsu_threshold:\n\notsu_threshold\n--------------\n\nThe ``otsu_threshold`` program takes as input a single-channel image"
},
{
"path": "docs/tools/pansharp.rst",
"chars": 1590,
"preview": ".. _pansharp:\n\npansharp\n--------\n\nThis tool reads in a high resolution grayscale file and a low resolution\nRGB file and "
},
{
"path": "docs/tools/parallel_bundle_adjust.rst",
"chars": 3052,
"preview": ".. _parallel_bundle_adjust:\n\nparallel_bundle_adjust\n----------------------\n\nThe ``parallel_bundle_adjust`` program is a "
},
{
"path": "docs/tools/parallel_sfs.rst",
"chars": 2165,
"preview": ".. _parallel_sfs:\n\nparallel_sfs\n------------\n\nThe program ``parallel_sfs`` is a wrapper around ``sfs``\n(:numref:`sfs`) m"
},
{
"path": "docs/tools/parallel_stereo.rst",
"chars": 12748,
"preview": ".. _parallel_stereo:\n\nparallel_stereo\n---------------\n\nThe ``parallel_stereo`` program is the primary tool of the Ames S"
},
{
"path": "docs/tools/parse_match_file.rst",
"chars": 3336,
"preview": ".. _parse_match_file:\n\nparse_match_file.py\n-------------------\n\nThis tool reads an ASP match file in binary format as wr"
},
{
"path": "docs/tools/pc_align.rst",
"chars": 44233,
"preview": ".. _pc_align:\n\npc_align\n--------\n\nThe ``pc_align`` programs aligns two point clouds. The supported algorithms are\nIterat"
},
{
"path": "docs/tools/pc_filter.rst",
"chars": 6445,
"preview": ".. _pc_filter:\n\npc_filter\n---------\n\nThis program takes as input a four-band ``PC.tif`` point cloud as\ncreated by stereo"
},
{
"path": "docs/tools/pc_merge.rst",
"chars": 1569,
"preview": ".. _pc_merge:\n\npc_merge\n--------\n\nThis is a simple tool for combining multiple ASP-generated point cloud\nfiles into a si"
},
{
"path": "docs/tools/point2dem.rst",
"chars": 28255,
"preview": ".. _point2dem:\n\npoint2dem\n---------\n\nThe ``point2dem`` program produces a digital elevation model (DEM) in the\nGeoTIFF f"
},
{
"path": "docs/tools/point2las.rst",
"chars": 7173,
"preview": ".. _point2las:\n\npoint2las\n---------\n\nThis tool can convert point clouds generated by ASP\n(:numref:`triangulation_files`)"
},
{
"path": "docs/tools/point2mesh.rst",
"chars": 4070,
"preview": ".. _point2mesh:\n\npoint2mesh\n----------\n\nThe ``point2mesh`` tool produces a mesh file in ``.obj`` format that\ncan be visu"
},
{
"path": "docs/tools/refr_index.rst",
"chars": 3658,
"preview": ".. _refr_index:\n\nrefr_index\n----------\n\nThe ``refr_index`` program computes the effective refraction index of water for\n"
},
{
"path": "docs/tools/rig_calibrator.rst",
"chars": 42632,
"preview": ".. _rig_calibrator:\n\nrig_calibrator\n--------------\n\nThe ``rig_calibrator`` program takes as input image and/or depth+ima"
},
{
"path": "docs/tools/ros.rst",
"chars": 2441,
"preview": ".. _ros_tools:\n\nROS bag handling tools\n----------------------\n\nASP provides a couple of Python scripts that can query an"
},
{
"path": "docs/tools/sat_sim.rst",
"chars": 39418,
"preview": ".. _sat_sim:\n\nsat_sim\n-------\n\nThe ``sat_sim`` program simulates a satellite traveling around a planet and\ntaking pictur"
},
{
"path": "docs/tools/sfm_merge.rst",
"chars": 4868,
"preview": ".. _sfm_merge:\n\nsfm_merge\n---------\n\nThe ``sfm_merge`` program takes two or more Structure-from-Motion\n(SfM) maps in .nv"
},
{
"path": "docs/tools/sfm_proc.rst",
"chars": 958,
"preview": ".. _sfm_proc:\n\nsfm_proc\n--------\n\nThis helper program takes as input a list of images with EXIF data, such as\nproduced b"
},
{
"path": "docs/tools/sfm_submap.rst",
"chars": 1799,
"preview": ".. _sfm_submap:\n\nsfm_submap\n----------\n\nThe ``sfm_submap`` program takes as input a Structure-from-Motion\n(SfM) map in ."
},
{
"path": "docs/tools/sfm_view.rst",
"chars": 2002,
"preview": ".. _sfm_view:\n\nsfm_view\n--------\n\nThe ``sfm_view`` program displays the positions and orientations of a set of\norbital P"
},
{
"path": "docs/tools/sfs.rst",
"chars": 21364,
"preview": ".. _sfs:\n\nsfs\n---\n\nThe ``sfs`` tool can add more detail to a DEM using shape-from-shading\n(:cite:`alexandrov2018multivie"
},
{
"path": "docs/tools/sfs_blend.rst",
"chars": 2807,
"preview": ".. _sfs_blend:\n\nsfs_blend\n---------\n\nThe ``sfs_blend`` tool is a very specialized DEM blending program\ndeveloped for use"
},
{
"path": "docs/tools/stereo.rst",
"chars": 2497,
"preview": ".. _stereo:\n\nstereo\n------\n\nThe ``stereo`` program takes as input a stereo pair of images that\noverlap with correspondin"
},
{
"path": "docs/tools/stereo_dist.rst",
"chars": 7967,
"preview": ".. _stereo_dist:\n\nstereo_dist\n-----------\n\nThe ``stereo_dist`` program performs distributed stereo processing. Nearly a"
},
{
"path": "docs/tools/stereo_gui.rst",
"chars": 39437,
"preview": ".. _stereo_gui:\n\nstereo_gui\n----------\n\nThe ``stereo_gui`` program is a GUI frontend to ``stereo`` and\n``parallel_stereo"
},
{
"path": "docs/tools/stereo_sweep.rst",
"chars": 3245,
"preview": ".. _stereo_sweep:\n\nstereo_sweep\n------------\n\nThis program runs :ref:`parallel_stereo` with different parameter combinat"
},
{
"path": "docs/tools/stereo_tile.rst",
"chars": 2207,
"preview": ".. _stereo_tile:\n\nstereo_tile\n-----------\n\nThis is an auxiliary program invoked by :ref:`stereo_dist` to process a singl"
},
{
"path": "docs/tools/texrecon.rst",
"chars": 2742,
"preview": ".. _texrecon:\n\ntexrecon\n--------\n\nThe ``texrecon`` script takes as input several images, their camera\nposes, camera intr"
}
]
// ... and 677 more files (download for full content)
About this extraction
This page contains the full source code of the NeoGeographyToolkit/StereoPipeline GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 877 files (19.0 MB), approximately 5.0M tokens, and a symbol index with 3824 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.