cars 1.0.0a3__cp39-cp39-win_amd64.whl → 1.0.0a4__cp39-cp39-win_amd64.whl
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/__init__.py +5 -5
- cars/applications/__init__.py +0 -3
- cars/applications/application_template.py +20 -0
- cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +12 -2
- cars/applications/auxiliary_filling/auxiliary_filling_algo.py +2 -2
- cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +80 -36
- cars/applications/dem_generation/dem_generation_algo.py +1 -1
- cars/applications/dem_generation/dem_generation_wrappers.py +23 -57
- cars/applications/dem_generation/dichotomic_generation_app.py +3 -3
- cars/applications/dem_generation/rasterization_app.py +100 -41
- cars/applications/dense_match_filling/__init__.py +1 -1
- cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +2 -15
- cars/applications/dense_match_filling/fill_disp_algo.py +32 -373
- cars/applications/dense_match_filling/fill_disp_wrappers.py +0 -343
- cars/applications/dense_match_filling/zero_padding_app.py +10 -5
- cars/applications/dense_matching/abstract_dense_matching_app.py +2 -1
- cars/applications/dense_matching/census_mccnn_sgm_app.py +38 -39
- cars/applications/dense_matching/cpp/dense_matching_cpp.cp39-win_amd64.dll.a +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.cp39-win_amd64.pyd +0 -0
- cars/applications/dense_matching/dense_matching_algo.py +48 -14
- cars/applications/dense_matching/dense_matching_wrappers.py +11 -3
- cars/applications/dense_matching/disparity_grid_algo.py +84 -62
- cars/applications/dense_matching/loaders/pandora_loader.py +91 -33
- cars/applications/dsm_filling/border_interpolation_app.py +1 -7
- cars/applications/dsm_filling/bulldozer_filling_app.py +2 -8
- cars/applications/dsm_filling/exogenous_filling_app.py +4 -9
- cars/applications/grid_generation/abstract_grid_generation_app.py +1 -1
- cars/applications/grid_generation/epipolar_grid_generation_app.py +4 -2
- cars/applications/grid_generation/grid_correction_app.py +4 -1
- cars/applications/grid_generation/grid_generation_algo.py +7 -2
- cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +1 -1
- cars/applications/ground_truth_reprojection/direct_localization_app.py +2 -2
- cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +2 -1
- cars/applications/point_cloud_fusion/abstract_pc_fusion_app.py +0 -155
- cars/applications/point_cloud_fusion/mapping_to_terrain_tiles_app.py +0 -658
- cars/applications/point_cloud_fusion/pc_fusion_algo.py +0 -1339
- cars/applications/point_cloud_fusion/pc_fusion_wrappers.py +0 -869
- cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +2 -1
- cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +9 -8
- cars/applications/point_cloud_outlier_removal/small_components_app.py +96 -267
- cars/applications/point_cloud_outlier_removal/statistical_app.py +116 -275
- cars/applications/rasterization/abstract_pc_rasterization_app.py +1 -1
- cars/applications/rasterization/rasterization_algo.py +18 -6
- cars/applications/rasterization/rasterization_wrappers.py +2 -1
- cars/applications/rasterization/simple_gaussian_app.py +60 -113
- cars/applications/resampling/abstract_resampling_app.py +1 -1
- cars/applications/resampling/bicubic_resampling_app.py +3 -1
- cars/applications/resampling/resampling_algo.py +16 -4
- cars/applications/resampling/resampling_wrappers.py +3 -1
- cars/applications/sparse_matching/abstract_sparse_matching_app.py +1 -1
- cars/applications/sparse_matching/sift_app.py +3 -3
- cars/applications/sparse_matching/sparse_matching_algo.py +3 -2
- cars/applications/sparse_matching/sparse_matching_wrappers.py +1 -1
- cars/applications/triangulation/abstract_triangulation_app.py +1 -1
- cars/applications/triangulation/line_of_sight_intersection_app.py +13 -11
- cars/applications/triangulation/pc_transform.py +552 -0
- cars/applications/triangulation/triangulation_algo.py +6 -4
- cars/applications/triangulation/triangulation_wrappers.py +1 -0
- cars/bundleadjustment.py +6 -6
- cars/cars.py +11 -9
- cars/core/cars_logging.py +80 -49
- cars/core/constants.py +0 -1
- cars/core/datasets.py +5 -2
- cars/core/geometry/abstract_geometry.py +256 -25
- cars/core/geometry/shareloc_geometry.py +110 -82
- cars/core/inputs.py +57 -19
- cars/core/outputs.py +1 -1
- cars/core/preprocessing.py +17 -3
- cars/core/projection.py +9 -6
- cars/core/tiling.py +10 -3
- cars/data_structures/cars_dataset.py +5 -5
- cars/data_structures/corresponding_tiles_tools.py +0 -103
- cars/data_structures/format_transformation.py +4 -1
- cars/devibrate.py +6 -3
- cars/extractroi.py +20 -21
- cars/orchestrator/cluster/abstract_cluster.py +15 -5
- cars/orchestrator/cluster/abstract_dask_cluster.py +6 -2
- cars/orchestrator/cluster/dask_jobqueue_utils.py +1 -1
- cars/orchestrator/cluster/log_wrapper.py +148 -21
- cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +11 -3
- cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +2 -2
- cars/orchestrator/cluster/pbs_dask_cluster.py +1 -1
- cars/orchestrator/cluster/sequential_cluster.py +5 -4
- cars/orchestrator/cluster/slurm_dask_cluster.py +1 -1
- cars/orchestrator/orchestrator.py +14 -3
- cars/orchestrator/registry/id_generator.py +1 -0
- cars/orchestrator/registry/saver_registry.py +2 -2
- cars/pipelines/conf_resolution/conf_final_resolution.json +5 -3
- cars/pipelines/default/default_pipeline.py +462 -1073
- cars/pipelines/parameters/advanced_parameters.py +74 -64
- cars/pipelines/parameters/advanced_parameters_constants.py +2 -5
- cars/pipelines/parameters/application_parameters.py +71 -0
- cars/pipelines/parameters/depth_map_inputs.py +0 -314
- cars/pipelines/parameters/dsm_inputs.py +40 -4
- cars/pipelines/parameters/output_parameters.py +2 -2
- cars/pipelines/parameters/sensor_inputs.py +30 -75
- cars/pipelines/parameters/sensor_inputs_constants.py +0 -2
- cars/pipelines/parameters/sensor_loaders/__init__.py +4 -3
- cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +106 -0
- cars/pipelines/parameters/sensor_loaders/{basic_sensor_loader.py → basic_image_loader.py} +16 -22
- cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +121 -0
- cars/pipelines/parameters/sensor_loaders/{pivot_sensor_loader.py → pivot_image_loader.py} +10 -21
- cars/pipelines/parameters/sensor_loaders/sensor_loader.py +4 -6
- cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +1 -3
- cars/pipelines/pipeline_template.py +1 -3
- cars/pipelines/unit/unit_pipeline.py +527 -1016
- cars/starter.py +4 -3
- cars-1.0.0a4.dist-info/DELVEWHEEL +2 -0
- {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/METADATA +135 -53
- {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/RECORD +116 -132
- cars.libs/.load-order-cars-1.0.0a4 +3 -0
- cars.libs/libgcc_s_seh-1-b2494fcbd4d80cf2c98fdd5261f6d850.dll +0 -0
- cars.libs/libstdc++-6-e9b0d12ae0e9555bbae55e8dfd08c3f7.dll +0 -0
- cars.libs/libwinpthread-1-7882d1b093714ccdfaf4e0789a817792.dll +0 -0
- cars/applications/dense_match_filling/cpp/__init__.py +0 -0
- cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp39-win_amd64.dll.a +0 -0
- cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp39-win_amd64.pyd +0 -0
- cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.py +0 -72
- cars/applications/dense_match_filling/cpp/includes/dense_match_filling.hpp +0 -46
- cars/applications/dense_match_filling/cpp/meson.build +0 -9
- cars/applications/dense_match_filling/cpp/src/bindings.cpp +0 -11
- cars/applications/dense_match_filling/cpp/src/dense_match_filling.cpp +0 -142
- cars/applications/dense_match_filling/plane_app.py +0 -556
- cars/applications/hole_detection/__init__.py +0 -30
- cars/applications/hole_detection/abstract_hole_detection_app.py +0 -125
- cars/applications/hole_detection/cloud_to_bbox_app.py +0 -346
- cars/applications/hole_detection/hole_detection_algo.py +0 -144
- cars/applications/hole_detection/hole_detection_wrappers.py +0 -53
- cars/applications/point_cloud_denoising/__init__.py +0 -29
- cars/applications/point_cloud_denoising/abstract_pc_denoising_app.py +0 -273
- cars/applications/point_cloud_fusion/__init__.py +0 -30
- cars/applications/point_cloud_fusion/cloud_fusion_constants.py +0 -39
- cars/applications/sparse_matching/pandora_sparse_matching_app.py +0 -0
- cars/pipelines/parameters/depth_map_inputs_constants.py +0 -25
- cars-1.0.0a3.dist-info/DELVEWHEEL +0 -2
- cars.libs/.load-order-cars-1.0.0a3 +0 -3
- cars.libs/libgcc_s_seh-1-ca70890bbc5723b6d0ea31e9c9cded2b.dll +0 -0
- cars.libs/libstdc++-6-00ee19f73d5122a1277c137b1c218401.dll +0 -0
- cars.libs/libwinpthread-1-f5042e8e3d21edce20c1bc99445f551b.dll +0 -0
- {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/WHEEL +0 -0
- {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/entry_points.txt +0 -0
|
@@ -56,7 +56,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
56
56
|
|
|
57
57
|
# check conf
|
|
58
58
|
self.used_method = self.used_config["method"]
|
|
59
|
-
self.activated = self.used_config["activated"]
|
|
60
59
|
self.classification = self.used_config["classification"]
|
|
61
60
|
self.fill_with_geoid = self.used_config["fill_with_geoid"]
|
|
62
61
|
self.interpolation_method = self.used_config["interpolation_method"]
|
|
@@ -73,7 +72,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
73
72
|
|
|
74
73
|
# Overload conf
|
|
75
74
|
overloaded_conf["method"] = conf.get("method", "bulldozer")
|
|
76
|
-
overloaded_conf["activated"] = conf.get("activated", False)
|
|
77
75
|
overloaded_conf["classification"] = conf.get("classification", "nodata")
|
|
78
76
|
if isinstance(overloaded_conf["classification"], str):
|
|
79
77
|
overloaded_conf["classification"] = [
|
|
@@ -85,10 +83,11 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
85
83
|
)
|
|
86
84
|
|
|
87
85
|
if overloaded_conf["interpolation_method"] not in ["bilinear", "cubic"]:
|
|
86
|
+
# pylint: disable=inconsistent-quotes
|
|
88
87
|
raise RuntimeError(
|
|
89
|
-
"Invalid interpolation method"
|
|
88
|
+
f"Invalid interpolation method"
|
|
90
89
|
f"{overloaded_conf['interpolation_method']}, "
|
|
91
|
-
"supported modes are bilinear and cubic."
|
|
90
|
+
f"supported modes are bilinear and cubic."
|
|
92
91
|
)
|
|
93
92
|
|
|
94
93
|
overloaded_conf["save_intermediate_data"] = conf.get(
|
|
@@ -97,7 +96,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
97
96
|
|
|
98
97
|
rectification_schema = {
|
|
99
98
|
"method": str,
|
|
100
|
-
"activated": bool,
|
|
101
99
|
"classification": Or(None, [str]),
|
|
102
100
|
"fill_with_geoid": Or(None, [str]),
|
|
103
101
|
"interpolation_method": str,
|
|
@@ -111,7 +109,7 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
111
109
|
return overloaded_conf
|
|
112
110
|
|
|
113
111
|
@cars_profile(name="Exogeneous filling")
|
|
114
|
-
def run( # noqa C901
|
|
112
|
+
def run( # pylint: disable=too-many-positional-arguments # noqa C901
|
|
115
113
|
self,
|
|
116
114
|
dsm_file,
|
|
117
115
|
classif_file,
|
|
@@ -133,9 +131,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
|
|
|
133
131
|
- a Shapely Polygon
|
|
134
132
|
"""
|
|
135
133
|
|
|
136
|
-
if not self.activated:
|
|
137
|
-
return
|
|
138
|
-
|
|
139
134
|
if self.classification is None:
|
|
140
135
|
self.classification = ["nodata"]
|
|
141
136
|
|
|
@@ -31,7 +31,9 @@ from json_checker import And, Checker
|
|
|
31
31
|
|
|
32
32
|
import cars.orchestrator.orchestrator as ocht
|
|
33
33
|
from cars.applications import application_constants
|
|
34
|
-
from cars.applications.grid_generation import
|
|
34
|
+
from cars.applications.grid_generation import (
|
|
35
|
+
grid_generation_algo,
|
|
36
|
+
)
|
|
35
37
|
from cars.applications.grid_generation import (
|
|
36
38
|
grid_generation_constants as grid_constants,
|
|
37
39
|
)
|
|
@@ -119,7 +121,7 @@ class EpipolarGridGeneration(GridGeneration, short_name="epipolar"):
|
|
|
119
121
|
return self.save_intermediate_data
|
|
120
122
|
|
|
121
123
|
@cars_profile(name="Epi Grid Generation")
|
|
122
|
-
def run(
|
|
124
|
+
def run( # pylint: disable=too-many-positional-arguments
|
|
123
125
|
self,
|
|
124
126
|
image_left,
|
|
125
127
|
image_right,
|
|
@@ -37,7 +37,9 @@ from scipy.spatial import Delaunay # pylint: disable=E0611
|
|
|
37
37
|
|
|
38
38
|
import cars.orchestrator.orchestrator as ocht
|
|
39
39
|
from cars.applications import application_constants
|
|
40
|
-
from cars.applications.grid_generation import
|
|
40
|
+
from cars.applications.grid_generation import (
|
|
41
|
+
grid_generation_algo,
|
|
42
|
+
)
|
|
41
43
|
from cars.applications.grid_generation import (
|
|
42
44
|
grid_generation_constants as grid_constants,
|
|
43
45
|
)
|
|
@@ -165,6 +167,7 @@ def correct_grid(grid, grid_correction, pair_folder, save_grid=None):
|
|
|
165
167
|
return corrected_grid_right
|
|
166
168
|
|
|
167
169
|
|
|
170
|
+
# pylint: disable=too-many-positional-arguments
|
|
168
171
|
@cars_profile(name="Grid correction estimation")
|
|
169
172
|
def estimate_right_grid_correction(
|
|
170
173
|
matches,
|
|
@@ -43,6 +43,7 @@ from cars.applications.triangulation.triangulation_algo import (
|
|
|
43
43
|
)
|
|
44
44
|
from cars.core import constants as cst
|
|
45
45
|
from cars.core import inputs, projection, tiling
|
|
46
|
+
from cars.orchestrator.cluster.log_wrapper import cars_profile
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
def get_new_path(path):
|
|
@@ -106,7 +107,7 @@ def write_grid(grid, fname, origin, spacing):
|
|
|
106
107
|
dst.write_band(2, grid[:, :, 1])
|
|
107
108
|
|
|
108
109
|
|
|
109
|
-
def generate_epipolar_grids(
|
|
110
|
+
def generate_epipolar_grids( # pylint: disable=too-many-positional-arguments
|
|
110
111
|
sensor1, sensor2, geomodel1, geomodel2, geometry_plugin, epipolar_step
|
|
111
112
|
):
|
|
112
113
|
"""
|
|
@@ -140,6 +141,8 @@ def generate_epipolar_grids(
|
|
|
140
141
|
)
|
|
141
142
|
|
|
142
143
|
|
|
144
|
+
# pylint: disable=too-many-positional-arguments
|
|
145
|
+
@cars_profile(name="Compute epipolar grid min max", interval=0.5)
|
|
143
146
|
def compute_epipolar_grid_min_max(
|
|
144
147
|
geometry_plugin,
|
|
145
148
|
grid,
|
|
@@ -239,6 +242,7 @@ def compute_epipolar_grid_min_max(
|
|
|
239
242
|
grid1,
|
|
240
243
|
grid2,
|
|
241
244
|
matches_min,
|
|
245
|
+
interpolation_method="linear",
|
|
242
246
|
)
|
|
243
247
|
pc_max = triangulate_matches(
|
|
244
248
|
geometry_plugin,
|
|
@@ -249,6 +253,7 @@ def compute_epipolar_grid_min_max(
|
|
|
249
253
|
grid1,
|
|
250
254
|
grid2,
|
|
251
255
|
matches_max,
|
|
256
|
+
interpolation_method="linear",
|
|
252
257
|
)
|
|
253
258
|
|
|
254
259
|
# Convert to correct EPSG
|
|
@@ -278,7 +283,7 @@ def compute_epipolar_grid_min_max(
|
|
|
278
283
|
return grid_min, grid_max
|
|
279
284
|
|
|
280
285
|
|
|
281
|
-
def terrain_region_to_epipolar(
|
|
286
|
+
def terrain_region_to_epipolar( # pylint: disable=too-many-positional-arguments
|
|
282
287
|
region,
|
|
283
288
|
sensor1,
|
|
284
289
|
sensor2,
|
|
@@ -117,7 +117,7 @@ class DirectLocalization(
|
|
|
117
117
|
|
|
118
118
|
return overloaded_conf
|
|
119
119
|
|
|
120
|
-
def run( # noqa: C901
|
|
120
|
+
def run( # pylint: disable=too-many-positional-arguments # noqa: C901
|
|
121
121
|
self,
|
|
122
122
|
sensor_left,
|
|
123
123
|
sensor_right,
|
|
@@ -495,7 +495,7 @@ class DirectLocalization(
|
|
|
495
495
|
)
|
|
496
496
|
|
|
497
497
|
|
|
498
|
-
def maps_generation_wrapper(
|
|
498
|
+
def maps_generation_wrapper( # pylint: disable=too-many-positional-arguments
|
|
499
499
|
sensor_left,
|
|
500
500
|
grid_left,
|
|
501
501
|
geom_plugin,
|
|
@@ -32,7 +32,7 @@ from cars.core.projection import point_cloud_conversion
|
|
|
32
32
|
from cars.pipelines.parameters import sensor_inputs_constants as sens_cst
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
def get_ground_truth(
|
|
35
|
+
def get_ground_truth( # pylint: disable=too-many-positional-arguments
|
|
36
36
|
geom_plugin,
|
|
37
37
|
grid,
|
|
38
38
|
sensor,
|
|
@@ -76,6 +76,7 @@ def get_ground_truth(
|
|
|
76
76
|
|
|
77
77
|
(positions_col, positions_row) = np.meshgrid(cols, rows)
|
|
78
78
|
|
|
79
|
+
direct_loc = None
|
|
79
80
|
if target == "epipolar":
|
|
80
81
|
|
|
81
82
|
positions = np.stack([positions_col, positions_row], axis=2)
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# coding: utf8
|
|
3
|
-
#
|
|
4
|
-
# Copyright (c) 2020 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
-
#
|
|
6
|
-
# This file is part of CARS
|
|
7
|
-
# (see https://github.com/CNES/cars).
|
|
8
|
-
#
|
|
9
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
-
# you may not use this file except in compliance with the License.
|
|
11
|
-
# You may obtain a copy of the License at
|
|
12
|
-
#
|
|
13
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
-
#
|
|
15
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
-
# See the License for the specific language governing permissions and
|
|
19
|
-
# limitations under the License.
|
|
20
|
-
#
|
|
21
|
-
"""
|
|
22
|
-
this module contains the abstract PointCloudFusion application class.
|
|
23
|
-
"""
|
|
24
|
-
import logging
|
|
25
|
-
from abc import ABCMeta, abstractmethod
|
|
26
|
-
from typing import Dict
|
|
27
|
-
|
|
28
|
-
from cars.applications.application import Application
|
|
29
|
-
from cars.applications.application_template import ApplicationTemplate
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@Application.register("point_cloud_fusion")
|
|
33
|
-
class PointCloudFusion(ApplicationTemplate, metaclass=ABCMeta):
|
|
34
|
-
"""
|
|
35
|
-
PointCloudFusion
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
available_applications: Dict = {}
|
|
39
|
-
default_application = "mapping_to_terrain_tiles"
|
|
40
|
-
|
|
41
|
-
def __new__(cls, conf=None): # pylint: disable=W0613
|
|
42
|
-
"""
|
|
43
|
-
Return the required application
|
|
44
|
-
:raises:
|
|
45
|
-
- KeyError when the required application is not registered
|
|
46
|
-
|
|
47
|
-
:param conf: configuration for fusion
|
|
48
|
-
:return: a application_to_use object
|
|
49
|
-
"""
|
|
50
|
-
|
|
51
|
-
fusion_method = cls.default_application
|
|
52
|
-
if bool(conf) is False or "method" not in conf:
|
|
53
|
-
logging.info(
|
|
54
|
-
"Fusion method not specified, "
|
|
55
|
-
"default {} is used".format(fusion_method)
|
|
56
|
-
)
|
|
57
|
-
else:
|
|
58
|
-
fusion_method = conf.get("method", cls.default_application)
|
|
59
|
-
|
|
60
|
-
if fusion_method not in cls.available_applications:
|
|
61
|
-
logging.error(
|
|
62
|
-
"No Fusion application named {} registered".format(
|
|
63
|
-
fusion_method
|
|
64
|
-
)
|
|
65
|
-
)
|
|
66
|
-
raise KeyError(
|
|
67
|
-
"No Fusion application named {} registered".format(
|
|
68
|
-
fusion_method
|
|
69
|
-
)
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
logging.info(
|
|
73
|
-
"The PointCloudFusion({}) application will be used".format(
|
|
74
|
-
fusion_method
|
|
75
|
-
)
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
return super(PointCloudFusion, cls).__new__(
|
|
79
|
-
cls.available_applications[fusion_method]
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
def __init_subclass__(cls, short_name, **kwargs): # pylint: disable=E0302
|
|
83
|
-
super().__init_subclass__(**kwargs)
|
|
84
|
-
cls.available_applications[short_name] = cls
|
|
85
|
-
|
|
86
|
-
def __init__(self, conf=None):
|
|
87
|
-
"""
|
|
88
|
-
Init function of PointCloudFusion
|
|
89
|
-
|
|
90
|
-
:param conf: configuration
|
|
91
|
-
:return: an application_to_use object
|
|
92
|
-
"""
|
|
93
|
-
|
|
94
|
-
super().__init__(conf=conf)
|
|
95
|
-
|
|
96
|
-
@abstractmethod
|
|
97
|
-
def run(
|
|
98
|
-
self,
|
|
99
|
-
list_epipolar_point_clouds,
|
|
100
|
-
bounds,
|
|
101
|
-
epsg,
|
|
102
|
-
source_pc_names=None,
|
|
103
|
-
orchestrator=None,
|
|
104
|
-
margins=0,
|
|
105
|
-
optimal_terrain_tile_width=500,
|
|
106
|
-
roi=None,
|
|
107
|
-
):
|
|
108
|
-
"""
|
|
109
|
-
Run EpipolarCloudFusion application.
|
|
110
|
-
|
|
111
|
-
Creates a CarsDataset corresponding to the merged point clouds,
|
|
112
|
-
tiled with the terrain grid used during rasterization.
|
|
113
|
-
|
|
114
|
-
:param list_epipolar_point_clouds: list with point clouds\
|
|
115
|
-
Each CarsDataset contains:
|
|
116
|
-
|
|
117
|
-
- N x M Delayed tiles. \
|
|
118
|
-
Each tile will be a future xarray Dataset containing:
|
|
119
|
-
|
|
120
|
-
- data : with keys : "x", "y", "z", "corr_msk" \
|
|
121
|
-
optional: "texture", "msk", "z_inf", "z_sup"
|
|
122
|
-
- attrs with keys: "margins", "epi_full_size", "epsg"
|
|
123
|
-
- attributes containing: "disp_lower_bound", "disp_upper_bound" \
|
|
124
|
-
"elevation_delta_lower_bound", "elevation_delta_upper_bound"
|
|
125
|
-
:type list_epipolar_point_clouds: list(CarsDataset) filled with
|
|
126
|
-
xr.Dataset
|
|
127
|
-
:param bounds: terrain bounds
|
|
128
|
-
:type bounds: list
|
|
129
|
-
:param epsg: epsg to use
|
|
130
|
-
:type epsg: str
|
|
131
|
-
:param source_pc_names: source pc names
|
|
132
|
-
:type source_pc_names: list[str]
|
|
133
|
-
:param orchestrator: orchestrator used
|
|
134
|
-
:type orchestrator: Orchestrator
|
|
135
|
-
:param margins: margins needed for tiles, meter or degree
|
|
136
|
-
:type margins: float
|
|
137
|
-
:param optimal_terrain_tile_width: optimal terrain tile width
|
|
138
|
-
:type optimal_terrain_tile_width: int
|
|
139
|
-
|
|
140
|
-
:return: Merged point clouds
|
|
141
|
-
|
|
142
|
-
CarsDataset contains:
|
|
143
|
-
|
|
144
|
-
- Z x W Delayed tiles\
|
|
145
|
-
Each tile will be a future pandas DataFrame containing:
|
|
146
|
-
|
|
147
|
-
- data : with keys : "x", "y", "z", "corr_msk" \
|
|
148
|
-
optional: "clr", "msk", "data_valid","coord_epi_geom_i",\
|
|
149
|
-
"coord_epi_geom_j","idx_im_epi", "z_inf", "z_sup"
|
|
150
|
-
- attrs with keys: "epsg"
|
|
151
|
-
- attributes containing: "bounds", "epsg"
|
|
152
|
-
|
|
153
|
-
:rtype: CarsDataset filled with pandas.DataFrame
|
|
154
|
-
|
|
155
|
-
"""
|