cars 1.0.0a2__cp313-cp313-win_amd64.whl → 1.0.0a4__cp313-cp313-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.

Files changed (144) hide show
  1. cars/__init__.py +3 -3
  2. cars/applications/__init__.py +0 -3
  3. cars/applications/application.py +14 -6
  4. cars/applications/application_template.py +42 -0
  5. cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +12 -2
  6. cars/applications/auxiliary_filling/auxiliary_filling_algo.py +2 -2
  7. cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +95 -46
  8. cars/applications/auxiliary_filling/auxiliary_filling_wrappers.py +7 -6
  9. cars/applications/dem_generation/abstract_dem_generation_app.py +9 -5
  10. cars/applications/dem_generation/dem_generation_algo.py +1 -1
  11. cars/applications/dem_generation/dem_generation_wrappers.py +44 -59
  12. cars/applications/dem_generation/dichotomic_generation_app.py +9 -6
  13. cars/applications/dem_generation/rasterization_app.py +112 -43
  14. cars/applications/dense_match_filling/__init__.py +1 -1
  15. cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +2 -15
  16. cars/applications/dense_match_filling/fill_disp_algo.py +32 -373
  17. cars/applications/dense_match_filling/fill_disp_wrappers.py +0 -343
  18. cars/applications/dense_match_filling/zero_padding_app.py +10 -5
  19. cars/applications/dense_matching/abstract_dense_matching_app.py +2 -1
  20. cars/applications/dense_matching/census_mccnn_sgm_app.py +48 -60
  21. cars/applications/dense_matching/cpp/dense_matching_cpp.cp313-win_amd64.dll.a +0 -0
  22. cars/applications/dense_matching/cpp/dense_matching_cpp.cp313-win_amd64.pyd +0 -0
  23. cars/applications/dense_matching/dense_matching_algo.py +48 -14
  24. cars/applications/dense_matching/dense_matching_wrappers.py +11 -3
  25. cars/applications/dense_matching/disparity_grid_algo.py +95 -79
  26. cars/applications/dense_matching/loaders/config_mapping.json +13 -0
  27. cars/applications/dense_matching/loaders/global_land_cover_map.tif +0 -0
  28. cars/applications/dense_matching/loaders/pandora_loader.py +169 -34
  29. cars/applications/dsm_filling/border_interpolation_app.py +11 -12
  30. cars/applications/dsm_filling/bulldozer_filling_app.py +16 -15
  31. cars/applications/dsm_filling/exogenous_filling_app.py +14 -14
  32. cars/applications/grid_generation/abstract_grid_generation_app.py +1 -1
  33. cars/applications/grid_generation/epipolar_grid_generation_app.py +4 -2
  34. cars/applications/grid_generation/grid_correction_app.py +4 -1
  35. cars/applications/grid_generation/grid_generation_algo.py +7 -2
  36. cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +1 -1
  37. cars/applications/ground_truth_reprojection/direct_localization_app.py +2 -2
  38. cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +2 -1
  39. cars/applications/point_cloud_fusion/abstract_pc_fusion_app.py +0 -155
  40. cars/applications/point_cloud_fusion/mapping_to_terrain_tiles_app.py +0 -658
  41. cars/applications/point_cloud_fusion/pc_fusion_algo.py +0 -1339
  42. cars/applications/point_cloud_fusion/pc_fusion_wrappers.py +0 -869
  43. cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +11 -6
  44. cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +9 -8
  45. cars/applications/point_cloud_outlier_removal/small_components_app.py +101 -270
  46. cars/applications/point_cloud_outlier_removal/statistical_app.py +120 -277
  47. cars/applications/rasterization/abstract_pc_rasterization_app.py +2 -1
  48. cars/applications/rasterization/rasterization_algo.py +18 -6
  49. cars/applications/rasterization/rasterization_wrappers.py +2 -1
  50. cars/applications/rasterization/simple_gaussian_app.py +88 -116
  51. cars/applications/resampling/abstract_resampling_app.py +1 -1
  52. cars/applications/resampling/bicubic_resampling_app.py +3 -1
  53. cars/applications/resampling/resampling_algo.py +60 -53
  54. cars/applications/resampling/resampling_wrappers.py +3 -1
  55. cars/applications/sparse_matching/abstract_sparse_matching_app.py +1 -1
  56. cars/applications/sparse_matching/sift_app.py +5 -25
  57. cars/applications/sparse_matching/sparse_matching_algo.py +3 -2
  58. cars/applications/sparse_matching/sparse_matching_wrappers.py +1 -1
  59. cars/applications/triangulation/abstract_triangulation_app.py +1 -1
  60. cars/applications/triangulation/line_of_sight_intersection_app.py +13 -11
  61. cars/applications/triangulation/pc_transform.py +552 -0
  62. cars/applications/triangulation/triangulation_algo.py +6 -4
  63. cars/applications/triangulation/triangulation_wrappers.py +1 -0
  64. cars/bundleadjustment.py +6 -6
  65. cars/cars.py +11 -9
  66. cars/core/cars_logging.py +80 -49
  67. cars/core/constants.py +0 -1
  68. cars/core/datasets.py +5 -2
  69. cars/core/geometry/abstract_geometry.py +364 -22
  70. cars/core/geometry/shareloc_geometry.py +112 -82
  71. cars/core/inputs.py +72 -19
  72. cars/core/outputs.py +1 -1
  73. cars/core/preprocessing.py +17 -3
  74. cars/core/projection.py +126 -6
  75. cars/core/tiling.py +10 -3
  76. cars/data_structures/cars_dataset.py +12 -10
  77. cars/data_structures/corresponding_tiles_tools.py +0 -103
  78. cars/data_structures/format_transformation.py +4 -1
  79. cars/devibrate.py +6 -3
  80. cars/extractroi.py +20 -21
  81. cars/orchestrator/cluster/abstract_cluster.py +15 -5
  82. cars/orchestrator/cluster/abstract_dask_cluster.py +6 -2
  83. cars/orchestrator/cluster/dask_jobqueue_utils.py +1 -1
  84. cars/orchestrator/cluster/log_wrapper.py +149 -22
  85. cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +12 -4
  86. cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +2 -2
  87. cars/orchestrator/cluster/pbs_dask_cluster.py +1 -1
  88. cars/orchestrator/cluster/sequential_cluster.py +5 -4
  89. cars/orchestrator/cluster/slurm_dask_cluster.py +1 -1
  90. cars/orchestrator/orchestrator.py +15 -4
  91. cars/orchestrator/registry/id_generator.py +1 -0
  92. cars/orchestrator/registry/saver_registry.py +2 -2
  93. cars/pipelines/conf_resolution/conf_final_resolution.json +5 -3
  94. cars/pipelines/default/default_pipeline.py +461 -1052
  95. cars/pipelines/parameters/advanced_parameters.py +91 -64
  96. cars/pipelines/parameters/advanced_parameters_constants.py +6 -5
  97. cars/pipelines/parameters/application_parameters.py +71 -0
  98. cars/pipelines/parameters/depth_map_inputs.py +0 -314
  99. cars/pipelines/parameters/dsm_inputs.py +40 -4
  100. cars/pipelines/parameters/output_parameters.py +44 -8
  101. cars/pipelines/parameters/sensor_inputs.py +122 -73
  102. cars/pipelines/parameters/sensor_inputs_constants.py +0 -2
  103. cars/pipelines/parameters/sensor_loaders/__init__.py +4 -3
  104. cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +106 -0
  105. cars/pipelines/parameters/sensor_loaders/{basic_sensor_loader.py → basic_image_loader.py} +16 -22
  106. cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +121 -0
  107. cars/pipelines/parameters/sensor_loaders/{pivot_sensor_loader.py → pivot_image_loader.py} +10 -21
  108. cars/pipelines/parameters/sensor_loaders/sensor_loader.py +4 -6
  109. cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +1 -3
  110. cars/pipelines/pipeline_template.py +1 -3
  111. cars/pipelines/unit/unit_pipeline.py +676 -1070
  112. cars/starter.py +4 -3
  113. cars-1.0.0a4.dist-info/DELVEWHEEL +2 -0
  114. {cars-1.0.0a2.dist-info → cars-1.0.0a4.dist-info}/METADATA +135 -53
  115. {cars-1.0.0a2.dist-info → cars-1.0.0a4.dist-info}/RECORD +120 -134
  116. cars.libs/libgcc_s_seh-1-b2494fcbd4d80cf2c98fdd5261f6d850.dll +0 -0
  117. cars.libs/libstdc++-6-e9b0d12ae0e9555bbae55e8dfd08c3f7.dll +0 -0
  118. cars.libs/libwinpthread-1-7882d1b093714ccdfaf4e0789a817792.dll +0 -0
  119. cars/applications/dense_match_filling/cpp/__init__.py +0 -0
  120. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp313-win_amd64.dll.a +0 -0
  121. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp313-win_amd64.pyd +0 -0
  122. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.py +0 -72
  123. cars/applications/dense_match_filling/cpp/includes/dense_match_filling.hpp +0 -46
  124. cars/applications/dense_match_filling/cpp/meson.build +0 -9
  125. cars/applications/dense_match_filling/cpp/src/bindings.cpp +0 -11
  126. cars/applications/dense_match_filling/cpp/src/dense_match_filling.cpp +0 -142
  127. cars/applications/dense_match_filling/plane_app.py +0 -556
  128. cars/applications/hole_detection/__init__.py +0 -30
  129. cars/applications/hole_detection/abstract_hole_detection_app.py +0 -125
  130. cars/applications/hole_detection/cloud_to_bbox_app.py +0 -346
  131. cars/applications/hole_detection/hole_detection_algo.py +0 -144
  132. cars/applications/hole_detection/hole_detection_wrappers.py +0 -53
  133. cars/applications/point_cloud_denoising/__init__.py +0 -29
  134. cars/applications/point_cloud_denoising/abstract_pc_denoising_app.py +0 -273
  135. cars/applications/point_cloud_fusion/__init__.py +0 -30
  136. cars/applications/point_cloud_fusion/cloud_fusion_constants.py +0 -39
  137. cars/applications/sparse_matching/pandora_sparse_matching_app.py +0 -0
  138. cars/pipelines/parameters/depth_map_inputs_constants.py +0 -25
  139. cars-1.0.0a2.dist-info/DELVEWHEEL +0 -2
  140. cars.libs/libgcc_s_seh-1-f2b6825d483bdf14050493af93b5997d.dll +0 -0
  141. cars.libs/libstdc++-6-6b0059df6bc601df5a0f18a5805eea05.dll +0 -0
  142. cars.libs/libwinpthread-1-e01b8e85fd67c2b861f64d4ccc7df607.dll +0 -0
  143. {cars-1.0.0a2.dist-info → cars-1.0.0a4.dist-info}/WHEEL +0 -0
  144. {cars-1.0.0a2.dist-info → cars-1.0.0a4.dist-info}/entry_points.txt +0 -0
@@ -159,7 +159,7 @@ class Sift(SparseMatching, short_name=["sift"]):
159
159
 
160
160
  # minimum number of matches to continue with
161
161
  overloaded_conf["minimum_nb_matches"] = conf.get(
162
- "minimum_nb_matches", 100
162
+ "minimum_nb_matches", 90
163
163
  )
164
164
 
165
165
  # sifts params
@@ -224,7 +224,7 @@ class Sift(SparseMatching, short_name=["sift"]):
224
224
  "sift_matching_threshold": And(float, lambda x: x > 0),
225
225
  "sift_n_octave": And(int, lambda x: x > 0),
226
226
  "sift_n_scale_per_octave": And(int, lambda x: x > 0),
227
- "sift_peak_threshold": Or(float, None),
227
+ "sift_peak_threshold": Or(float, int),
228
228
  "sift_edge_threshold": float,
229
229
  "sift_magnification": And(float, lambda x: x > 0),
230
230
  "sift_window_size": And(int, lambda x: x > 0),
@@ -430,7 +430,7 @@ class Sift(SparseMatching, short_name=["sift"]):
430
430
  """
431
431
  self.decimation_factor = value
432
432
 
433
- def run(
433
+ def run( # pylint: disable=too-many-positional-arguments
434
434
  self,
435
435
  epipolar_image_left,
436
436
  epipolar_image_right,
@@ -514,26 +514,6 @@ class Sift(SparseMatching, short_name=["sift"]):
514
514
  epipolar_disparity_map_left.attributes.update(
515
515
  epipolar_image_left.attributes
516
516
  )
517
- # check sift_peak_threshold with image type
518
- # only if sift_peak_threshold is None
519
- tmp_sift_peak_threshold = self.sift_peak_threshold
520
- if not self.sift_peak_threshold:
521
- logging.info("The sift_peak_threshold is set to auto-mode.")
522
- # sift_peak_threshold is None or not specified
523
- # check input type
524
- if np.issubdtype(
525
- epipolar_disparity_map_left.attributes["image_type"],
526
- np.uint8,
527
- ):
528
- tmp_sift_peak_threshold = 1
529
- else:
530
- tmp_sift_peak_threshold = 20
531
- logging.info(
532
- "The sift_peak_threshold will be set to {}.".format(
533
- tmp_sift_peak_threshold
534
- )
535
- )
536
- self.sift_peak_threshold = tmp_sift_peak_threshold
537
517
 
538
518
  # Save disparity maps
539
519
  if self.save_intermediate_data:
@@ -628,7 +608,7 @@ class Sift(SparseMatching, short_name=["sift"]):
628
608
  matching_threshold=self.sift_matching_threshold,
629
609
  n_octave=self.sift_n_octave,
630
610
  n_scale_per_octave=self.sift_n_scale_per_octave,
631
- peak_threshold=tmp_sift_peak_threshold,
611
+ peak_threshold=self.sift_peak_threshold,
632
612
  edge_threshold=self.sift_edge_threshold,
633
613
  magnification=self.sift_magnification,
634
614
  window_size=self.sift_window_size,
@@ -647,7 +627,7 @@ class Sift(SparseMatching, short_name=["sift"]):
647
627
  return epipolar_disparity_map_left, None
648
628
 
649
629
 
650
- def compute_matches_wrapper(
630
+ def compute_matches_wrapper( # pylint: disable=too-many-positional-arguments
651
631
  left_image_object: xr.Dataset,
652
632
  right_image_object: xr.Dataset,
653
633
  used_band="b0",
@@ -37,7 +37,7 @@ from cars.applications.sparse_matching.sparse_matching_wrappers import (
37
37
  )
38
38
 
39
39
 
40
- def compute_matches(
40
+ def compute_matches( # pylint: disable=too-many-positional-arguments
41
41
  left: np.ndarray,
42
42
  right: np.ndarray,
43
43
  left_mask: np.ndarray = None,
@@ -191,6 +191,7 @@ def compute_matches(
191
191
  right_id_offset = left_id
192
192
  else:
193
193
  right_descr_block = []
194
+ right_id_offset = 0
194
195
  else:
195
196
  right_descr_block = right_descr
196
197
  right_id_offset = 0
@@ -253,7 +254,7 @@ def compute_matches(
253
254
  return matches
254
255
 
255
256
 
256
- def dataset_matching(
257
+ def dataset_matching( # pylint: disable=too-many-positional-arguments
257
258
  ds1,
258
259
  ds2,
259
260
  used_band,
@@ -170,7 +170,7 @@ def compute_disp_min_disp_max(
170
170
  return dmin, dmax
171
171
 
172
172
 
173
- @cars_profile(name="filter_point_cloud_matches")
173
+ @cars_profile(name="Filter_point_cloud_matches")
174
174
  def filter_point_cloud_matches(
175
175
  pd_cloud,
176
176
  match_filter_knn=25,
@@ -94,7 +94,7 @@ class Triangulation(ApplicationTemplate, metaclass=ABCMeta):
94
94
  super().__init__(conf=conf)
95
95
 
96
96
  @abstractmethod
97
- def run( # noqa: C901
97
+ def run( # pylint: disable=too-many-positional-arguments # noqa: C901
98
98
  self,
99
99
  sensor_image_left,
100
100
  sensor_image_right,
@@ -39,11 +39,8 @@ from shareloc.geofunctions.rectification_grid import RectificationGrid
39
39
  import cars.orchestrator.orchestrator as ocht
40
40
  from cars.applications import application_constants
41
41
  from cars.applications.grid_generation import grid_generation_algo
42
- from cars.applications.point_cloud_fusion import (
43
- pc_fusion_algo,
44
- pc_fusion_wrappers,
45
- )
46
42
  from cars.applications.triangulation import (
43
+ pc_transform,
47
44
  triangulation_algo,
48
45
  triangulation_constants,
49
46
  )
@@ -58,6 +55,7 @@ from cars.core import constants as cst
58
55
  from cars.core import inputs, projection, tiling
59
56
  from cars.core.utils import safe_makedirs
60
57
  from cars.data_structures import cars_dataset
58
+ from cars.orchestrator.cluster.log_wrapper import cars_profile
61
59
  from cars.pipelines.parameters import sensor_inputs_constants as sens_cst
62
60
 
63
61
 
@@ -133,6 +131,8 @@ class LineOfSightIntersection(
133
131
 
134
132
  return overloaded_conf
135
133
 
134
+ # pylint: disable=too-many-positional-arguments
135
+ @cars_profile(name="Save triangulation output", interval=0.5)
136
136
  def save_triangulation_output( # noqa: C901 function is too complex
137
137
  self,
138
138
  epipolar_point_cloud,
@@ -355,7 +355,8 @@ class LineOfSightIntersection(
355
355
  optional_data=True,
356
356
  )
357
357
 
358
- def fill_index(
358
+ @cars_profile(name="Fill index", interval=0.5)
359
+ def fill_index( # pylint: disable=too-many-positional-arguments
359
360
  self,
360
361
  save_output_coordinates=True,
361
362
  save_output_color=True,
@@ -466,7 +467,7 @@ class LineOfSightIntersection(
466
467
 
467
468
  return csv_pc_dir_name, laz_pc_dir_name
468
469
 
469
- def run( # noqa: C901
470
+ def run( # pylint: disable=too-many-positional-arguments # noqa: C901
470
471
  self,
471
472
  sensor_image_left,
472
473
  sensor_image_right,
@@ -933,7 +934,7 @@ class LineOfSightIntersection(
933
934
  return epipolar_point_cloud
934
935
 
935
936
 
936
- def triangulation_wrapper(
937
+ def triangulation_wrapper( # pylint: disable=too-many-positional-arguments
937
938
  disparity_object: xr.Dataset,
938
939
  sensor1,
939
940
  sensor2,
@@ -1154,10 +1155,10 @@ def triangulation_wrapper(
1154
1155
  flatten_pc_dataset = None
1155
1156
  if point_cloud_csv_file_name or point_cloud_laz_file_name:
1156
1157
  # Convert epipolar array into point cloud
1157
- flatten_pc_dataset, cloud_epsg = pc_fusion_algo.create_combined_cloud(
1158
- [pc_dataset], [0], epsg
1158
+ flatten_pc_dataset, cloud_epsg = (
1159
+ pc_transform.depth_map_dataset_to_dataframe(pc_dataset, epsg)
1159
1160
  )
1160
- # Convert to UTM
1161
+ # Convert to wanted epsg
1161
1162
  if epsg is not None and cloud_epsg != epsg:
1162
1163
  projection.point_cloud_conversion_dataframe(
1163
1164
  flatten_pc_dataset, cloud_epsg, epsg
@@ -1165,7 +1166,7 @@ def triangulation_wrapper(
1165
1166
  cloud_epsg = epsg
1166
1167
 
1167
1168
  # Fill attributes for LAZ saving
1168
- color_type = pc_fusion_wrappers.get_color_type([pc_dataset])
1169
+ color_type = pc_transform.get_color_type([pc_dataset])
1169
1170
  attributes = {
1170
1171
  "epsg": cloud_epsg,
1171
1172
  "color_type": color_type,
@@ -1196,6 +1197,7 @@ def triangulation_wrapper(
1196
1197
  return pc_dataset, flatten_pc_dataset
1197
1198
 
1198
1199
 
1200
+ # pylint: disable=too-many-positional-arguments
1199
1201
  def triangulation_wrapper_matches(
1200
1202
  matches,
1201
1203
  sensor1,