cars 0.12.0rc1__tar.gz → 0.12.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cars might be problematic. Click here for more details.
- cars-0.12.1/.gitlab-ci.yml +179 -0
- {cars-0.12.0rc1 → cars-0.12.1}/CHANGELOG.md +9 -1
- {cars-0.12.0rc1 → cars-0.12.1}/PKG-INFO +3 -3
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/auxiliary_filling/auxiliary_filling_tools.py +1 -1
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/dichotomic_generation.py +2 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/rasterization.py +2 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/census_mccnn_sgm.py +19 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/dense_matching_cpp.py +11 -2
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/includes/dense_matching.hpp +4 -2
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/src/dense_matching.cpp +25 -7
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/dense_matching_tools.py +29 -4
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/orchestrator.py +18 -9
- cars-0.12.1/ci/cars-deps-env/Dockerfile +35 -0
- cars-0.12.1/ci/cars-docker-build.yml +37 -0
- cars-0.12.1/ci/cars-no-docker-build.yml +7 -0
- cars-0.12.1/ci/hadolint_RNC_A_B_C_D.yaml +42 -0
- {cars-0.12.0rc1 → cars-0.12.1}/meson.build +1 -1
- {cars-0.12.0rc1 → cars-0.12.1}/pyproject.toml +2 -2
- {cars-0.12.0rc1 → cars-0.12.1}/.coveragerc +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.dockerignore +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitattributes +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.github/workflows/cars-ci.yml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitignore +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitlab/issue_templates/Bug.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitlab/issue_templates/Proposal.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitlab/issue_templates/Refacto.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitlab/issue_templates/Release.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.gitlab/merge_request_templates/MR.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.pre-commit-config.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.pylintrc +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/.readthedocs.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/AUTHORS.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/CONTRIBUTING.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/Dockerfile +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/LICENSE +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/MANIFEST.in +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/Makefile +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/NOTICE +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/README.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/application.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/application_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/application_template.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/auxiliary_filling/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/auxiliary_filling/auxiliary_filling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/auxiliary_filling/auxiliary_filling_from_sensors.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/bulldozer_config/base_config.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/dem_generation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/dem_generation_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dem_generation/dem_generation_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/includes/dense_match_filling.hpp +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/meson.build +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/src/bindings.cpp +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/cpp/src/dense_match_filling.cpp +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/dense_match_filling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/fill_disp_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/fill_disp_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/plane.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_match_filling/zero_padding.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/meson.build +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/src/bindings.cpp +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/dense_matching.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/dense_matching_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_default.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_census_sgm_urban.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/config_mccnn.json +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/loaders/pandora_loader.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/border_interpolation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/bulldozer_config/base_config.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/bulldozer_filling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/dsm_filling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dsm_filling/exogenous_filling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/epipolar_grid_generation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/grid_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/grid_correction.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/grid_generation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/grid_generation/grids.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/ground_truth_reprojection/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/ground_truth_reprojection/direct_localization.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/ground_truth_reprojection/ground_truth_reprojection.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/ground_truth_reprojection/ground_truth_reprojection_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/hole_detection/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/hole_detection/cloud_to_bbox.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/hole_detection/hole_detection.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/hole_detection/hole_detection_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_denoising/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_denoising/point_cloud_denoising.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/cloud_fusion_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/mapping_to_terrain_tiles.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/pc_tif_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/point_cloud_fusion.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_fusion/point_cloud_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/outlier_removal_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/pc_out_removal.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/point_removal_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/small_components.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/point_cloud_outlier_removal/statistical.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/rasterization/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/rasterization/point_cloud_rasterization.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/rasterization/rasterization_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/rasterization/rasterization_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/rasterization/simple_gaussian.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/resampling/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/resampling/bicubic_resampling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/resampling/resampling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/resampling/resampling_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/resampling/resampling_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/pandora_sparse_matching.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/sift.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/sparse_matching.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/sparse_matching_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/sparse_matching/sparse_matching_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/triangulation/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/triangulation/line_of_sight_intersection.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/triangulation/triangulation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/triangulation/triangulation_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/applications/triangulation/triangulation_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/bundleadjustment.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/cars.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/conf/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/conf/geoid/egm96.grd +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/conf/geoid/egm96.grd.hdr +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/conf/input_parameters.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/conf/mask_cst.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/cars_logging.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/constants_disparity.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/datasets.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/geometry/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/geometry/abstract_geometry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/geometry/shareloc_geometry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/inputs.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/outputs.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/preprocessing.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/projection.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/roi_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/tiling.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/core/utils.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/cars_dataset.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/cars_dict.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/corresponding_tiles_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/dataframe_converter.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/data_structures/format_transformation.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/devibrate.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/extractroi.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/achievement_tracker.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/abstract_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/abstract_dask_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_cluster_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/README.md +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/dask.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/distributed.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/jobqueue.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/dask_jobqueue_utils.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/local_dask_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/log_wrapper.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/mp_objects.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/mp_tools.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/pbs_dask_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/sequential_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/cluster/slurm_dask_cluster.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/orchestrator_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/abstract_registry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/compute_registry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/id_generator.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/replacer_registry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/saver_registry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/registry/unseen_registry.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/orchestrator/tiles_profiler.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/default/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/default/default_pipeline.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/__init__.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/advanced_parameters.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/advanced_parameters_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/depth_map_inputs.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/depth_map_inputs_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/dsm_inputs.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/dsm_inputs_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/output_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/output_parameters.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/sensor_inputs.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/parameters/sensor_inputs_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/pipeline.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/pipeline_constants.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/pipelines/pipeline_template.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/cars/starter.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/pytest.ini +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/setup.py +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/sonar-project.properties +0 -0
- {cars-0.12.0rc1 → cars-0.12.1}/version.py +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
workflow:
|
|
2
|
+
rules:
|
|
3
|
+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
4
|
+
- if: $CI_COMMIT_REF_NAME == "master"
|
|
5
|
+
- if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
|
|
6
|
+
|
|
7
|
+
stages:
|
|
8
|
+
- init
|
|
9
|
+
- build
|
|
10
|
+
- test
|
|
11
|
+
- sonarqube
|
|
12
|
+
- sync
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
variables:
|
|
16
|
+
# Token used to push reports to SonarQube
|
|
17
|
+
SONARQUBE_TOKEN: "${CARS_CI_SONARQUBE_TOKEN}"
|
|
18
|
+
|
|
19
|
+
# Git variables
|
|
20
|
+
# Limit git depth to speed up cloning
|
|
21
|
+
GIT_DEPTH: 1
|
|
22
|
+
|
|
23
|
+
include:
|
|
24
|
+
# Sonarqube job
|
|
25
|
+
- project: "usinelogicielle/public/gitlab-ci-templates" # Inclut le stage de qualité sonarqube
|
|
26
|
+
ref: v1.1.3 # référence de tag
|
|
27
|
+
file: "jobs/sonarqube-gitlab-ci.yml"
|
|
28
|
+
# Variable defintion
|
|
29
|
+
- component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-variables@master
|
|
30
|
+
# Jobs for gitlab-github synchronisation
|
|
31
|
+
- component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-github@master
|
|
32
|
+
# Docker building and image selection
|
|
33
|
+
# First case: no need to update env, use latest version
|
|
34
|
+
- local: '/ci/cars-no-docker-build.yml'
|
|
35
|
+
rules:
|
|
36
|
+
# do not trigger this case if env has changed(see second case)
|
|
37
|
+
- changes:
|
|
38
|
+
- "ci/cars-deps-env/Dockerfile"
|
|
39
|
+
- "pyproject.toml"
|
|
40
|
+
when: never
|
|
41
|
+
# do not trigger this case on master (see third case)
|
|
42
|
+
- if: $CI_COMMIT_REF_NAME == "master"
|
|
43
|
+
when: never
|
|
44
|
+
- if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
|
|
45
|
+
when: never
|
|
46
|
+
- if: $CI_COMMIT_REF_NAME == "release_0_12_1"
|
|
47
|
+
when: never
|
|
48
|
+
# Second case: env should be generated on a dev branch, create a temporary
|
|
49
|
+
# image
|
|
50
|
+
- local: '/ci/cars-docker-build.yml'
|
|
51
|
+
inputs:
|
|
52
|
+
tag: ${CI_COMMIT_REF_NAME}
|
|
53
|
+
rules:
|
|
54
|
+
- changes:
|
|
55
|
+
- "ci/cars-deps-env/Dockerfile"
|
|
56
|
+
- "pyproject.toml"
|
|
57
|
+
# do not trigger this case on master (see third case)
|
|
58
|
+
- if: $CI_COMMIT_REF_NAME == "master"
|
|
59
|
+
when: never
|
|
60
|
+
- if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
|
|
61
|
+
- if: $CI_COMMIT_REF_NAME == "release_0_12_1"
|
|
62
|
+
# Third case: master branch pipeline: generate a "latest" image
|
|
63
|
+
- local: '/ci/cars-docker-build.yml'
|
|
64
|
+
inputs:
|
|
65
|
+
tag: "latest"
|
|
66
|
+
rules:
|
|
67
|
+
- if: $CI_COMMIT_REF_NAME == "master"
|
|
68
|
+
|
|
69
|
+
# Common part for jobs using python: use env image and install cars
|
|
70
|
+
.cars-python-job:
|
|
71
|
+
image: ${UL_ARTIFACTORY_HOST}/${CARS_ENV_IMAGE_NAME}:${CARS_ENV_IMAGE_TAG}
|
|
72
|
+
before_script:
|
|
73
|
+
- source /app/cars/venv/bin/activate
|
|
74
|
+
# All dependencies should already be installed in the docker env
|
|
75
|
+
- pip install --no-build-isolation --editable .[dev,docs,notebook]
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
# run unit tests before other tasks (lint, quality, end2end ...) to catch early
|
|
79
|
+
# errors
|
|
80
|
+
unit-test:
|
|
81
|
+
stage: test
|
|
82
|
+
extends:
|
|
83
|
+
- .cars-python-job
|
|
84
|
+
script:
|
|
85
|
+
- CARS_VENV="/app/cars/venv" make test/ci
|
|
86
|
+
artifacts:
|
|
87
|
+
paths:
|
|
88
|
+
- ./pytest-report.xml
|
|
89
|
+
- ./coverage.xml
|
|
90
|
+
expire_in: 1 day
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Job testing that notebooks run properly in Python
|
|
94
|
+
test-notebooks:
|
|
95
|
+
stage: test
|
|
96
|
+
needs:
|
|
97
|
+
- unit-test
|
|
98
|
+
extends:
|
|
99
|
+
- .cars-python-job
|
|
100
|
+
script:
|
|
101
|
+
# Install additional plugin dependencies required for the tests
|
|
102
|
+
- source /app/cars/venv/bin/activate
|
|
103
|
+
- pip install --no-build-isolation --editable .[pandora_mccnn,bundleadjustment]
|
|
104
|
+
- CARS_VENV="/app/cars/venv" make test/notebook
|
|
105
|
+
|
|
106
|
+
# test on full cars pipelines
|
|
107
|
+
test-end2end:
|
|
108
|
+
stage: test
|
|
109
|
+
needs:
|
|
110
|
+
- unit-test
|
|
111
|
+
# Use dedicated runner for end2end tests
|
|
112
|
+
tags:
|
|
113
|
+
- ${TEST_RUNNER_TAG}
|
|
114
|
+
timeout: 80 minutes
|
|
115
|
+
extends:
|
|
116
|
+
- .cars-python-job
|
|
117
|
+
script:
|
|
118
|
+
- source /app/cars/venv/bin/activate
|
|
119
|
+
- pytest -m "end2end_tests"
|
|
120
|
+
artifacts:
|
|
121
|
+
paths:
|
|
122
|
+
- tests/data/intermediate_data
|
|
123
|
+
when: always
|
|
124
|
+
expire_in: 1 day
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
# All lint tasks are performed in the same job to save up on job initialization
|
|
129
|
+
# time
|
|
130
|
+
lint:
|
|
131
|
+
stage: test
|
|
132
|
+
needs:
|
|
133
|
+
- unit-test
|
|
134
|
+
extends:
|
|
135
|
+
- .cars-python-job
|
|
136
|
+
allow_failure: true
|
|
137
|
+
script:
|
|
138
|
+
- CARS_VENV="/app/cars/venv" make lint
|
|
139
|
+
artifacts:
|
|
140
|
+
paths:
|
|
141
|
+
- ./pylint-report.txt
|
|
142
|
+
expire_in: 1 day
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
doc:
|
|
146
|
+
stage: test
|
|
147
|
+
needs:
|
|
148
|
+
- unit-test
|
|
149
|
+
extends:
|
|
150
|
+
- .cars-python-job
|
|
151
|
+
script:
|
|
152
|
+
- CARS_VENV="/app/cars/venv" make docs
|
|
153
|
+
artifacts:
|
|
154
|
+
# Export documentation in artifact, it can be opened directly from gitlab
|
|
155
|
+
paths:
|
|
156
|
+
- ./docs/build/html/
|
|
157
|
+
expire_in: 1 day
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# Push git project from gitlab to github
|
|
161
|
+
github-sync:
|
|
162
|
+
extends:
|
|
163
|
+
- .github-sync-base
|
|
164
|
+
|
|
165
|
+
variables:
|
|
166
|
+
BRANCH: "master"
|
|
167
|
+
GITHUB_URL: github.com/CNES/cars.git
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# Push git project from gitlab to github for the 0.12.X versions
|
|
171
|
+
github-sync-0.12:
|
|
172
|
+
extends:
|
|
173
|
+
- .github-sync-base
|
|
174
|
+
|
|
175
|
+
variables:
|
|
176
|
+
BRANCH: "cars_0_12_patches"
|
|
177
|
+
GITHUB_URL: github.com/CNES/cars.git
|
|
178
|
+
rules:
|
|
179
|
+
- if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.12.
|
|
3
|
+
## 0.12.1 Bugfix release (August 2025)
|
|
4
|
+
|
|
5
|
+
- Cleanup sequential orchestrator [#1123].
|
|
6
|
+
- Fix missing tiles in auxiliary filling outputs [#1061].
|
|
7
|
+
- Fix classification fusion artifacts in dense matching [#1109].
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## 0.12.0 Improving Dem generations (June 2025)
|
|
4
11
|
|
|
5
12
|
### Added
|
|
6
13
|
|
|
@@ -27,6 +34,7 @@
|
|
|
27
34
|
- Optimize explored disparity range of a priori computation [#1073].
|
|
28
35
|
- DEM type to float in dem generation [#1018].
|
|
29
36
|
- Numpy version need no longer <2 [#1003]
|
|
37
|
+
- Shareloc version update, to robustify direct localisation [#1089].
|
|
30
38
|
|
|
31
39
|
### Fixed
|
|
32
40
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cars
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.1
|
|
4
4
|
Summary: A satellite multi view stereo pipeline
|
|
5
5
|
Keywords: cars,3D,DEM,pandora,photogrammetry
|
|
6
6
|
Author-Email: CNES <cars@cnes.fr>
|
|
@@ -43,10 +43,10 @@ Requires-Dist: cars-rasterize==0.2.*
|
|
|
43
43
|
Requires-Dist: cars-resample==0.1.*
|
|
44
44
|
Requires-Dist: cars-filter==0.2.*
|
|
45
45
|
Requires-Dist: vlsift==0.1.*
|
|
46
|
-
Requires-Dist: shareloc==0.2.
|
|
46
|
+
Requires-Dist: shareloc==0.2.8
|
|
47
47
|
Requires-Dist: bulldozer-dtm==1.1.*
|
|
48
48
|
Requires-Dist: xdem==0.1.*
|
|
49
|
-
Requires-Dist: geopandas
|
|
49
|
+
Requires-Dist: geopandas<=1.0.1
|
|
50
50
|
Provides-Extra: dev
|
|
51
51
|
Requires-Dist: pytest; extra == "dev"
|
|
52
52
|
Requires-Dist: pytest-cov; extra == "dev"
|
{cars-0.12.0rc1 → cars-0.12.1}/cars/applications/auxiliary_filling/auxiliary_filling_tools.py
RENAMED
|
@@ -483,7 +483,7 @@ def compute_sensor_bounds(sensor_inputs, geom_plugin, output_epsg):
|
|
|
483
483
|
if reference_sensor_image is None:
|
|
484
484
|
continue
|
|
485
485
|
|
|
486
|
-
u_l, u_r,
|
|
486
|
+
u_l, u_r, l_l, l_r = geom_plugin.image_envelope(
|
|
487
487
|
reference_sensor_image, sensor["geomodel"]
|
|
488
488
|
)
|
|
489
489
|
|
|
@@ -444,6 +444,8 @@ class DichotomicGeneration(DemGeneration, short_name="dichotomic"):
|
|
|
444
444
|
|
|
445
445
|
# Save
|
|
446
446
|
self.orchestrator.breakpoint()
|
|
447
|
+
# cleanup
|
|
448
|
+
self.orchestrator.cleanup()
|
|
447
449
|
|
|
448
450
|
# after saving, fit initial elevation if required
|
|
449
451
|
if initial_elevation is not None and self.coregistration:
|
|
@@ -110,6 +110,10 @@ class CensusMccnnSgm(
|
|
|
110
110
|
# Ambiguity
|
|
111
111
|
self.generate_ambiguity = self.used_config["generate_ambiguity"]
|
|
112
112
|
|
|
113
|
+
self.classification_fusion_margin = self.used_config[
|
|
114
|
+
"classification_fusion_margin"
|
|
115
|
+
]
|
|
116
|
+
|
|
113
117
|
# Margins computation parameters
|
|
114
118
|
# Use local disp
|
|
115
119
|
self.use_global_disp_range = self.used_config["use_global_disp_range"]
|
|
@@ -175,6 +179,11 @@ class CensusMccnnSgm(
|
|
|
175
179
|
overloaded_conf["epipolar_tile_margin_in_percent"] = conf.get(
|
|
176
180
|
"epipolar_tile_margin_in_percent", 60
|
|
177
181
|
)
|
|
182
|
+
|
|
183
|
+
overloaded_conf["classification_fusion_margin"] = conf.get(
|
|
184
|
+
"classification_fusion_margin", -1
|
|
185
|
+
)
|
|
186
|
+
|
|
178
187
|
overloaded_conf["min_elevation_offset"] = conf.get(
|
|
179
188
|
"min_elevation_offset", None
|
|
180
189
|
)
|
|
@@ -321,6 +330,7 @@ class CensusMccnnSgm(
|
|
|
321
330
|
"perf_eta_max_ambiguity": float,
|
|
322
331
|
"perf_eta_max_risk": float,
|
|
323
332
|
"perf_eta_step": float,
|
|
333
|
+
"classification_fusion_margin": int,
|
|
324
334
|
"perf_ambiguity_threshold": float,
|
|
325
335
|
"use_cross_validation": Or(bool, str),
|
|
326
336
|
"denoise_disparity_map": bool,
|
|
@@ -1141,6 +1151,8 @@ class CensusMccnnSgm(
|
|
|
1141
1151
|
logging.error("grid min > grid max in {}".format(pair_folder))
|
|
1142
1152
|
raise RuntimeError("grid min > grid max in {}".format(pair_folder))
|
|
1143
1153
|
|
|
1154
|
+
# cleanup
|
|
1155
|
+
grid_orchestrator.cleanup()
|
|
1144
1156
|
return grid_disp_range
|
|
1145
1157
|
|
|
1146
1158
|
def run(
|
|
@@ -1412,6 +1424,9 @@ class CensusMccnnSgm(
|
|
|
1412
1424
|
epipolar_disparity_map.overlaps[row, col]
|
|
1413
1425
|
),
|
|
1414
1426
|
margins_to_keep=margins_to_keep,
|
|
1427
|
+
classification_fusion_margin=(
|
|
1428
|
+
self.classification_fusion_margin
|
|
1429
|
+
),
|
|
1415
1430
|
)
|
|
1416
1431
|
|
|
1417
1432
|
else:
|
|
@@ -1432,6 +1447,7 @@ def compute_disparity_wrapper(
|
|
|
1432
1447
|
crop_with_range=None,
|
|
1433
1448
|
left_overlaps=None,
|
|
1434
1449
|
margins_to_keep=0,
|
|
1450
|
+
classification_fusion_margin=-1,
|
|
1435
1451
|
) -> Dict[str, Tuple[xr.Dataset, xr.Dataset]]:
|
|
1436
1452
|
"""
|
|
1437
1453
|
Compute disparity maps from image objects.
|
|
@@ -1473,6 +1489,8 @@ def compute_disparity_wrapper(
|
|
|
1473
1489
|
:type: left_overlaps: dict
|
|
1474
1490
|
:param margins_to_keep: margin to keep after dense matching
|
|
1475
1491
|
:type margins_to_keep: int
|
|
1492
|
+
:param classification_fusion_margin: the margin to add for the fusion
|
|
1493
|
+
:type classification_fusion_margin: int
|
|
1476
1494
|
|
|
1477
1495
|
|
|
1478
1496
|
:return: Left to right disparity dataset
|
|
@@ -1536,6 +1554,7 @@ def compute_disparity_wrapper(
|
|
|
1536
1554
|
compute_disparity_masks=compute_disparity_masks,
|
|
1537
1555
|
cropped_range=mask_crop,
|
|
1538
1556
|
margins_to_keep=margins_to_keep,
|
|
1557
|
+
classification_fusion_margin=classification_fusion_margin,
|
|
1539
1558
|
)
|
|
1540
1559
|
|
|
1541
1560
|
# Fill with attributes
|
|
@@ -6,7 +6,12 @@ this module contains the headers of the dense_matching_cpp module.
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def estimate_right_classif_on_left(
|
|
9
|
-
right_classif,
|
|
9
|
+
right_classif,
|
|
10
|
+
disp_map,
|
|
11
|
+
disp_mask,
|
|
12
|
+
disp_min,
|
|
13
|
+
disp_max,
|
|
14
|
+
classification_fusion_margin=-1,
|
|
10
15
|
):
|
|
11
16
|
"""
|
|
12
17
|
Estimate right classif on left image
|
|
@@ -29,7 +34,11 @@ def estimate_right_classif_on_left(
|
|
|
29
34
|
|
|
30
35
|
|
|
31
36
|
def mask_left_classif_from_right_mask(
|
|
32
|
-
left_classif,
|
|
37
|
+
left_classif,
|
|
38
|
+
right_mask,
|
|
39
|
+
disp_min,
|
|
40
|
+
disp_max,
|
|
41
|
+
classification_fusion_margin=-1,
|
|
33
42
|
):
|
|
34
43
|
"""
|
|
35
44
|
Mask left classif with right mask.
|
{cars-0.12.0rc1 → cars-0.12.1}/cars/applications/dense_matching/cpp/includes/dense_matching.hpp
RENAMED
|
@@ -22,7 +22,8 @@ py::array_t<bool> estimate_right_classif_on_left(
|
|
|
22
22
|
py::array_t<float> disp_map,
|
|
23
23
|
std::optional<py::array_t<bool>> disp_mask,
|
|
24
24
|
int disp_min,
|
|
25
|
-
int disp_max
|
|
25
|
+
int disp_max,
|
|
26
|
+
int classification_fusion_margin
|
|
26
27
|
);
|
|
27
28
|
|
|
28
29
|
/**
|
|
@@ -38,7 +39,8 @@ py::array_t<bool> mask_left_classif_from_right_mask(
|
|
|
38
39
|
py::array_t<bool> left_classif,
|
|
39
40
|
py::array_t<bool> right_mask,
|
|
40
41
|
py::array_t<int> disp_min,
|
|
41
|
-
py::array_t<int> disp_max
|
|
42
|
+
py::array_t<int> disp_max,
|
|
43
|
+
int classification_fusion_margin
|
|
42
44
|
);
|
|
43
45
|
|
|
44
46
|
/**
|
|
@@ -11,7 +11,8 @@ py::array_t<bool> estimate_right_classif_on_left(
|
|
|
11
11
|
py::array_t<float> disp_map,
|
|
12
12
|
std::optional<py::array_t<bool>> disp_mask,
|
|
13
13
|
int disp_min,
|
|
14
|
-
int disp_max
|
|
14
|
+
int disp_max,
|
|
15
|
+
int classification_fusion_margin
|
|
15
16
|
) {
|
|
16
17
|
auto r_right_classif = right_classif.unchecked<3>();
|
|
17
18
|
auto r_disp_map = disp_map.unchecked<2>();
|
|
@@ -53,11 +54,20 @@ py::array_t<bool> estimate_right_classif_on_left(
|
|
|
53
54
|
|
|
54
55
|
// else: estimate with global range
|
|
55
56
|
for (size_t band = 0; band < n_bands; band++) {
|
|
56
|
-
|
|
57
|
+
|
|
57
58
|
bool found = false;
|
|
59
|
+
int margin_min = disp_min;
|
|
60
|
+
int margin_max = disp_max;
|
|
61
|
+
if (classification_fusion_margin != -1) {
|
|
62
|
+
margin_min = -classification_fusion_margin;
|
|
63
|
+
margin_max = classification_fusion_margin;
|
|
64
|
+
}
|
|
58
65
|
for (
|
|
59
|
-
size_t col_classif = std::max(0, static_cast<int>(col)+
|
|
60
|
-
col_classif < std::min(
|
|
66
|
+
size_t col_classif = std::max(0, static_cast<int>(col)+margin_min);
|
|
67
|
+
col_classif < std::min(
|
|
68
|
+
static_cast<int>(n_col),
|
|
69
|
+
static_cast<int>(col)+margin_max
|
|
70
|
+
);
|
|
61
71
|
col_classif++
|
|
62
72
|
) {
|
|
63
73
|
if (r_right_classif(band, row, col_classif)) {
|
|
@@ -74,11 +84,13 @@ py::array_t<bool> estimate_right_classif_on_left(
|
|
|
74
84
|
return left_from_right_classif;
|
|
75
85
|
}
|
|
76
86
|
|
|
87
|
+
|
|
77
88
|
py::array_t<bool> mask_left_classif_from_right_mask(
|
|
78
89
|
py::array_t<bool> left_classif,
|
|
79
90
|
py::array_t<bool> right_mask,
|
|
80
91
|
py::array_t<int> disp_min,
|
|
81
|
-
py::array_t<int> disp_max
|
|
92
|
+
py::array_t<int> disp_max,
|
|
93
|
+
int classification_fusion_margin
|
|
82
94
|
) {
|
|
83
95
|
|
|
84
96
|
auto rw_left_classif = left_classif.mutable_unchecked<3>();
|
|
@@ -95,10 +107,16 @@ py::array_t<bool> mask_left_classif_from_right_mask(
|
|
|
95
107
|
|
|
96
108
|
// estimate with global range
|
|
97
109
|
bool all_masked = true;
|
|
98
|
-
|
|
110
|
+
int margin_min = r_disp_min(row, col);
|
|
111
|
+
int margin_max = r_disp_max(row, col);
|
|
112
|
+
if (classification_fusion_margin != -1) {
|
|
113
|
+
margin_min = -classification_fusion_margin;
|
|
114
|
+
margin_max = classification_fusion_margin;
|
|
115
|
+
}
|
|
116
|
+
size_t lower_bound = std::max(0, static_cast<int>(col)+margin_min);
|
|
99
117
|
size_t upper_bound = std::min(
|
|
100
118
|
static_cast<int>(n_col),
|
|
101
|
-
static_cast<int>(col)+
|
|
119
|
+
static_cast<int>(col)+margin_max
|
|
102
120
|
);
|
|
103
121
|
for (size_t col_classif = lower_bound; col_classif < upper_bound; col_classif++) {
|
|
104
122
|
if (!r_right_mask(row, col_classif)) {
|
|
@@ -296,6 +296,7 @@ def create_disp_dataset( # noqa: C901
|
|
|
296
296
|
disp_max_grid=None,
|
|
297
297
|
cropped_range=None,
|
|
298
298
|
margins_to_keep=0,
|
|
299
|
+
classification_fusion_margin=-1,
|
|
299
300
|
) -> xr.Dataset:
|
|
300
301
|
"""
|
|
301
302
|
Create the disparity dataset.
|
|
@@ -393,6 +394,7 @@ def create_disp_dataset( # noqa: C901
|
|
|
393
394
|
epi_msk_right == msk_cst.NO_DATA_IN_EPIPOLAR_RECTIFICATION,
|
|
394
395
|
np.floor(disp_min_grid).astype(np.int16),
|
|
395
396
|
np.ceil(disp_max_grid).astype(np.int16),
|
|
397
|
+
classification_fusion_margin,
|
|
396
398
|
)
|
|
397
399
|
|
|
398
400
|
left_from_right_classif = None
|
|
@@ -407,6 +409,7 @@ def create_disp_dataset( # noqa: C901
|
|
|
407
409
|
pandora_masks[cst_disp.VALID],
|
|
408
410
|
int(np.floor(np.min(disp_min_grid))),
|
|
409
411
|
int(np.ceil(np.max(disp_max_grid))),
|
|
412
|
+
classification_fusion_margin,
|
|
410
413
|
)
|
|
411
414
|
|
|
412
415
|
# mask outside left sensor
|
|
@@ -511,7 +514,12 @@ def add_crop_info(disp_ds, cropped_range):
|
|
|
511
514
|
|
|
512
515
|
|
|
513
516
|
def estimate_right_classif_on_left(
|
|
514
|
-
right_classif,
|
|
517
|
+
right_classif,
|
|
518
|
+
disp_map,
|
|
519
|
+
disp_mask,
|
|
520
|
+
disp_min,
|
|
521
|
+
disp_max,
|
|
522
|
+
classifiation_fusion_margin,
|
|
515
523
|
):
|
|
516
524
|
"""
|
|
517
525
|
Estimate right classif on left image
|
|
@@ -531,12 +539,21 @@ def estimate_right_classif_on_left(
|
|
|
531
539
|
:rtype: np nadarray
|
|
532
540
|
"""
|
|
533
541
|
return dense_matching_cpp.estimate_right_classif_on_left(
|
|
534
|
-
right_classif,
|
|
542
|
+
right_classif,
|
|
543
|
+
disp_map,
|
|
544
|
+
disp_mask,
|
|
545
|
+
disp_min,
|
|
546
|
+
disp_max,
|
|
547
|
+
classifiation_fusion_margin,
|
|
535
548
|
)
|
|
536
549
|
|
|
537
550
|
|
|
538
551
|
def mask_left_classif_from_right_mask(
|
|
539
|
-
left_classif,
|
|
552
|
+
left_classif,
|
|
553
|
+
right_mask,
|
|
554
|
+
disp_min,
|
|
555
|
+
disp_max,
|
|
556
|
+
classifiation_fusion_margin,
|
|
540
557
|
):
|
|
541
558
|
"""
|
|
542
559
|
Mask left classif with right mask.
|
|
@@ -554,7 +571,11 @@ def mask_left_classif_from_right_mask(
|
|
|
554
571
|
:rtype: np nadarray
|
|
555
572
|
"""
|
|
556
573
|
return dense_matching_cpp.mask_left_classif_from_right_mask(
|
|
557
|
-
left_classif,
|
|
574
|
+
left_classif,
|
|
575
|
+
right_mask,
|
|
576
|
+
disp_min,
|
|
577
|
+
disp_max,
|
|
578
|
+
classifiation_fusion_margin,
|
|
558
579
|
)
|
|
559
580
|
|
|
560
581
|
|
|
@@ -731,6 +752,7 @@ def compute_disparity(
|
|
|
731
752
|
compute_disparity_masks=False,
|
|
732
753
|
cropped_range=None,
|
|
733
754
|
margins_to_keep=0,
|
|
755
|
+
classification_fusion_margin=-1,
|
|
734
756
|
) -> Dict[str, xr.Dataset]:
|
|
735
757
|
"""
|
|
736
758
|
This function will compute disparity.
|
|
@@ -753,6 +775,8 @@ def compute_disparity(
|
|
|
753
775
|
:type cropped_range: numpy array
|
|
754
776
|
:param margins_to_keep: margin to keep after dense matching
|
|
755
777
|
:type margins_to_keep: int
|
|
778
|
+
:param classification_fusion_margin: the margin to add for the fusion
|
|
779
|
+
:type classification_fusion_margin: int
|
|
756
780
|
|
|
757
781
|
:return: Disparity dataset
|
|
758
782
|
"""
|
|
@@ -839,6 +863,7 @@ def compute_disparity(
|
|
|
839
863
|
disp_max_grid=disp_max_grid,
|
|
840
864
|
cropped_range=cropped_range,
|
|
841
865
|
margins_to_keep=margins_to_keep,
|
|
866
|
+
classification_fusion_margin=classification_fusion_margin,
|
|
842
867
|
)
|
|
843
868
|
|
|
844
869
|
return disp_dataset
|
|
@@ -605,6 +605,22 @@ class Orchestrator:
|
|
|
605
605
|
# reset registries
|
|
606
606
|
self.reset_registries()
|
|
607
607
|
|
|
608
|
+
def cleanup(self):
|
|
609
|
+
"""
|
|
610
|
+
Cleanup orchestrator
|
|
611
|
+
|
|
612
|
+
"""
|
|
613
|
+
|
|
614
|
+
# close cluster
|
|
615
|
+
logging.info("Close cluster ...")
|
|
616
|
+
if self.launch_worker:
|
|
617
|
+
self.cluster.cleanup()
|
|
618
|
+
|
|
619
|
+
# # clean tmp dir
|
|
620
|
+
for tmp_dir in self.tmp_dir_list:
|
|
621
|
+
if tmp_dir is not None and os.path.exists(tmp_dir):
|
|
622
|
+
shutil.rmtree(tmp_dir)
|
|
623
|
+
|
|
608
624
|
def __enter__(self):
|
|
609
625
|
"""
|
|
610
626
|
Function run on enter
|
|
@@ -630,15 +646,8 @@ class Orchestrator:
|
|
|
630
646
|
|
|
631
647
|
# TODO : check_json
|
|
632
648
|
|
|
633
|
-
#
|
|
634
|
-
|
|
635
|
-
if self.launch_worker:
|
|
636
|
-
self.cluster.cleanup()
|
|
637
|
-
|
|
638
|
-
# # clean tmp dir
|
|
639
|
-
for tmp_dir in self.tmp_dir_list:
|
|
640
|
-
if tmp_dir is not None and os.path.exists(tmp_dir):
|
|
641
|
-
shutil.rmtree(tmp_dir)
|
|
649
|
+
# cleanup
|
|
650
|
+
self.cleanup()
|
|
642
651
|
|
|
643
652
|
|
|
644
653
|
def merge_dicts(dict1, dict2):
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
ARG BASE_IMAGE
|
|
2
|
+
|
|
3
|
+
FROM ${BASE_IMAGE}
|
|
4
|
+
|
|
5
|
+
ARG PIP_INDEX_URL
|
|
6
|
+
|
|
7
|
+
WORKDIR /app/cars
|
|
8
|
+
|
|
9
|
+
# The Dockerfile only use pyproject.toml to build the environment image
|
|
10
|
+
COPY pyproject.toml .
|
|
11
|
+
|
|
12
|
+
COPY certs certs
|
|
13
|
+
|
|
14
|
+
# for pip
|
|
15
|
+
ENV PIP_CERT="/app/cars/certs/ca-bundle.crt"
|
|
16
|
+
|
|
17
|
+
# for uv
|
|
18
|
+
ENV SSL_CERT_FILE="/app/cars/certs/ca-bundle.crt"
|
|
19
|
+
ENV UV_DEFAULT_INDEX="${PIP_INDEX_URL}"
|
|
20
|
+
|
|
21
|
+
# install uv which will then be used to find and install dependencies
|
|
22
|
+
RUN pip install uv
|
|
23
|
+
|
|
24
|
+
# Generate a requirements.txt file from pyproject.toml containing cars dependencies
|
|
25
|
+
# without having to compile and install cars
|
|
26
|
+
RUN uv pip compile pyproject.toml --extra dev \
|
|
27
|
+
--extra notebook \
|
|
28
|
+
--extra docs \
|
|
29
|
+
--output-file requirements.txt
|
|
30
|
+
|
|
31
|
+
# uv variable defining default env
|
|
32
|
+
ENV VIRTUAL_ENV=/app/cars/venv
|
|
33
|
+
|
|
34
|
+
# Install cars requirements
|
|
35
|
+
RUN uv venv ${VIRTUAL_ENV} && uv pip install --no-cache meson-python meson ninja setuptools_scm setuptools wheel pybind11 -r requirements.txt
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
spec:
|
|
2
|
+
inputs:
|
|
3
|
+
tag:
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
variables:
|
|
7
|
+
# CARS environment image configuration
|
|
8
|
+
DOCKERFILE: "ci/cars-deps-env/Dockerfile"
|
|
9
|
+
CARS_ENV_IMAGE_NAME: "${CARS_DOCKER_REGISTRY}/cars-deps-env"
|
|
10
|
+
#CARS_ENV_IMAGE_TAG: "latest"
|
|
11
|
+
CARS_ENV_DOCKERFILE: "${CI_PROJECT_DIR}/${DOCKERFILE}"
|
|
12
|
+
CARS_ENV_IMAGE_TAG: "$[[ inputs.tag ]]"
|
|
13
|
+
|
|
14
|
+
# Jobs building cars-deps-env docker image
|
|
15
|
+
include:
|
|
16
|
+
- component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-docker@master
|
|
17
|
+
inputs:
|
|
18
|
+
init_stage: init
|
|
19
|
+
build_stage: build
|
|
20
|
+
|
|
21
|
+
# Build cars env
|
|
22
|
+
cars-dep-env-build:
|
|
23
|
+
extends:
|
|
24
|
+
- .kaniko_build
|
|
25
|
+
variables:
|
|
26
|
+
# docker generation
|
|
27
|
+
ENV_IMAGE_NAME: "${CARS_ENV_IMAGE_NAME}"
|
|
28
|
+
ENV_IMAGE_TAG: "${CARS_ENV_IMAGE_TAG}"
|
|
29
|
+
ENV_DOCKERFILE: "${CARS_ENV_DOCKERFILE}"
|
|
30
|
+
DOCKER_BUILD_OPTIONS: "--build-arg PIP_INDEX_URL=${PIP_INDEX_URL} --build-arg BASE_IMAGE=${PYTHON_IMAGE}"
|
|
31
|
+
|
|
32
|
+
# Set variables for templated hadolint build
|
|
33
|
+
hadolint:
|
|
34
|
+
variables:
|
|
35
|
+
HADOLINT_CONFIG_FILE: ci/hadolint_RNC_A_B_C_D.yaml
|
|
36
|
+
ENV_DOCKERFILE: "${CARS_ENV_DOCKERFILE}"
|
|
37
|
+
allow_failure: true
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
variables:
|
|
2
|
+
CARS_ENV_IMAGE_TAG: latest
|
|
3
|
+
# CARS environment image configuration
|
|
4
|
+
DOCKERFILE: "ci/cars-deps-env/Dockerfile"
|
|
5
|
+
CARS_ENV_IMAGE_NAME: "cars-ci-docker-snapshot-local/cars-deps-env"
|
|
6
|
+
#CARS_ENV_IMAGE_TAG: "latest"
|
|
7
|
+
CARS_ENV_DOCKERFILE: "${CI_PROJECT_DIR}/${DOCKERFILE}"
|