cars 1.0.0rc1__cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.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 (200) hide show
  1. cars/__init__.py +74 -0
  2. cars/applications/__init__.py +37 -0
  3. cars/applications/application.py +117 -0
  4. cars/applications/application_constants.py +29 -0
  5. cars/applications/application_template.py +146 -0
  6. cars/applications/auxiliary_filling/__init__.py +29 -0
  7. cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +104 -0
  8. cars/applications/auxiliary_filling/auxiliary_filling_algo.py +475 -0
  9. cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +630 -0
  10. cars/applications/auxiliary_filling/auxiliary_filling_wrappers.py +90 -0
  11. cars/applications/dem_generation/__init__.py +30 -0
  12. cars/applications/dem_generation/abstract_dem_generation_app.py +116 -0
  13. cars/applications/dem_generation/bulldozer_config/base_config.yaml +42 -0
  14. cars/applications/dem_generation/bulldozer_dem_app.py +655 -0
  15. cars/applications/dem_generation/bulldozer_memory.py +55 -0
  16. cars/applications/dem_generation/dem_generation_algo.py +107 -0
  17. cars/applications/dem_generation/dem_generation_constants.py +32 -0
  18. cars/applications/dem_generation/dem_generation_wrappers.py +323 -0
  19. cars/applications/dense_match_filling/__init__.py +30 -0
  20. cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +242 -0
  21. cars/applications/dense_match_filling/fill_disp_algo.py +113 -0
  22. cars/applications/dense_match_filling/fill_disp_constants.py +39 -0
  23. cars/applications/dense_match_filling/fill_disp_wrappers.py +83 -0
  24. cars/applications/dense_match_filling/zero_padding_app.py +302 -0
  25. cars/applications/dense_matching/__init__.py +30 -0
  26. cars/applications/dense_matching/abstract_dense_matching_app.py +261 -0
  27. cars/applications/dense_matching/census_mccnn_sgm_app.py +1460 -0
  28. cars/applications/dense_matching/cpp/__init__.py +0 -0
  29. cars/applications/dense_matching/cpp/dense_matching_cpp.cpython-312-i386-linux-gnu.so +0 -0
  30. cars/applications/dense_matching/cpp/dense_matching_cpp.py +94 -0
  31. cars/applications/dense_matching/cpp/includes/dense_matching.hpp +58 -0
  32. cars/applications/dense_matching/cpp/meson.build +9 -0
  33. cars/applications/dense_matching/cpp/src/bindings.cpp +13 -0
  34. cars/applications/dense_matching/cpp/src/dense_matching.cpp +207 -0
  35. cars/applications/dense_matching/dense_matching_algo.py +401 -0
  36. cars/applications/dense_matching/dense_matching_constants.py +89 -0
  37. cars/applications/dense_matching/dense_matching_wrappers.py +951 -0
  38. cars/applications/dense_matching/disparity_grid_algo.py +588 -0
  39. cars/applications/dense_matching/loaders/__init__.py +23 -0
  40. cars/applications/dense_matching/loaders/config_census_sgm_default.json +31 -0
  41. cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +30 -0
  42. cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +30 -0
  43. cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +30 -0
  44. cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +36 -0
  45. cars/applications/dense_matching/loaders/config_census_sgm_urban.json +30 -0
  46. cars/applications/dense_matching/loaders/config_mapping.json +13 -0
  47. cars/applications/dense_matching/loaders/config_mccnn.json +28 -0
  48. cars/applications/dense_matching/loaders/global_land_cover_map.tif +0 -0
  49. cars/applications/dense_matching/loaders/pandora_loader.py +593 -0
  50. cars/applications/dsm_filling/__init__.py +32 -0
  51. cars/applications/dsm_filling/abstract_dsm_filling_app.py +101 -0
  52. cars/applications/dsm_filling/border_interpolation_app.py +270 -0
  53. cars/applications/dsm_filling/bulldozer_config/base_config.yaml +44 -0
  54. cars/applications/dsm_filling/bulldozer_filling_app.py +279 -0
  55. cars/applications/dsm_filling/exogenous_filling_app.py +333 -0
  56. cars/applications/grid_generation/__init__.py +30 -0
  57. cars/applications/grid_generation/abstract_grid_generation_app.py +142 -0
  58. cars/applications/grid_generation/epipolar_grid_generation_app.py +327 -0
  59. cars/applications/grid_generation/grid_correction_app.py +496 -0
  60. cars/applications/grid_generation/grid_generation_algo.py +388 -0
  61. cars/applications/grid_generation/grid_generation_constants.py +46 -0
  62. cars/applications/grid_generation/transform_grid.py +88 -0
  63. cars/applications/ground_truth_reprojection/__init__.py +30 -0
  64. cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +137 -0
  65. cars/applications/ground_truth_reprojection/direct_localization_app.py +629 -0
  66. cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +275 -0
  67. cars/applications/point_cloud_outlier_removal/__init__.py +30 -0
  68. cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +385 -0
  69. cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +392 -0
  70. cars/applications/point_cloud_outlier_removal/outlier_removal_constants.py +43 -0
  71. cars/applications/point_cloud_outlier_removal/small_components_app.py +527 -0
  72. cars/applications/point_cloud_outlier_removal/statistical_app.py +531 -0
  73. cars/applications/rasterization/__init__.py +30 -0
  74. cars/applications/rasterization/abstract_pc_rasterization_app.py +183 -0
  75. cars/applications/rasterization/rasterization_algo.py +534 -0
  76. cars/applications/rasterization/rasterization_constants.py +38 -0
  77. cars/applications/rasterization/rasterization_wrappers.py +634 -0
  78. cars/applications/rasterization/simple_gaussian_app.py +1152 -0
  79. cars/applications/resampling/__init__.py +28 -0
  80. cars/applications/resampling/abstract_resampling_app.py +187 -0
  81. cars/applications/resampling/bicubic_resampling_app.py +762 -0
  82. cars/applications/resampling/resampling_algo.py +614 -0
  83. cars/applications/resampling/resampling_constants.py +36 -0
  84. cars/applications/resampling/resampling_wrappers.py +309 -0
  85. cars/applications/sparse_matching/__init__.py +30 -0
  86. cars/applications/sparse_matching/abstract_sparse_matching_app.py +498 -0
  87. cars/applications/sparse_matching/sift_app.py +735 -0
  88. cars/applications/sparse_matching/sparse_matching_algo.py +360 -0
  89. cars/applications/sparse_matching/sparse_matching_constants.py +68 -0
  90. cars/applications/sparse_matching/sparse_matching_wrappers.py +238 -0
  91. cars/applications/triangulation/__init__.py +32 -0
  92. cars/applications/triangulation/abstract_triangulation_app.py +227 -0
  93. cars/applications/triangulation/line_of_sight_intersection_app.py +1243 -0
  94. cars/applications/triangulation/pc_transform.py +552 -0
  95. cars/applications/triangulation/triangulation_algo.py +371 -0
  96. cars/applications/triangulation/triangulation_constants.py +38 -0
  97. cars/applications/triangulation/triangulation_wrappers.py +259 -0
  98. cars/bundleadjustment.py +757 -0
  99. cars/cars.py +177 -0
  100. cars/conf/__init__.py +23 -0
  101. cars/conf/geoid/egm96.grd +0 -0
  102. cars/conf/geoid/egm96.grd.hdr +15 -0
  103. cars/conf/input_parameters.py +156 -0
  104. cars/conf/mask_cst.py +35 -0
  105. cars/core/__init__.py +23 -0
  106. cars/core/cars_logging.py +402 -0
  107. cars/core/constants.py +191 -0
  108. cars/core/constants_disparity.py +50 -0
  109. cars/core/datasets.py +140 -0
  110. cars/core/geometry/__init__.py +27 -0
  111. cars/core/geometry/abstract_geometry.py +1119 -0
  112. cars/core/geometry/shareloc_geometry.py +598 -0
  113. cars/core/inputs.py +568 -0
  114. cars/core/outputs.py +176 -0
  115. cars/core/preprocessing.py +722 -0
  116. cars/core/projection.py +843 -0
  117. cars/core/roi_tools.py +215 -0
  118. cars/core/tiling.py +774 -0
  119. cars/core/utils.py +164 -0
  120. cars/data_structures/__init__.py +23 -0
  121. cars/data_structures/cars_dataset.py +1541 -0
  122. cars/data_structures/cars_dict.py +74 -0
  123. cars/data_structures/corresponding_tiles_tools.py +186 -0
  124. cars/data_structures/dataframe_converter.py +185 -0
  125. cars/data_structures/format_transformation.py +297 -0
  126. cars/devibrate.py +689 -0
  127. cars/extractroi.py +264 -0
  128. cars/orchestrator/__init__.py +23 -0
  129. cars/orchestrator/achievement_tracker.py +125 -0
  130. cars/orchestrator/cluster/__init__.py +37 -0
  131. cars/orchestrator/cluster/abstract_cluster.py +244 -0
  132. cars/orchestrator/cluster/abstract_dask_cluster.py +375 -0
  133. cars/orchestrator/cluster/dask_cluster_tools.py +103 -0
  134. cars/orchestrator/cluster/dask_config/README.md +94 -0
  135. cars/orchestrator/cluster/dask_config/dask.yaml +21 -0
  136. cars/orchestrator/cluster/dask_config/distributed.yaml +70 -0
  137. cars/orchestrator/cluster/dask_config/jobqueue.yaml +26 -0
  138. cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +137 -0
  139. cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +26 -0
  140. cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +1009 -0
  141. cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +273 -0
  142. cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +212 -0
  143. cars/orchestrator/cluster/dask_jobqueue_utils.py +204 -0
  144. cars/orchestrator/cluster/local_dask_cluster.py +116 -0
  145. cars/orchestrator/cluster/log_wrapper.py +1075 -0
  146. cars/orchestrator/cluster/mp_cluster/__init__.py +27 -0
  147. cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +212 -0
  148. cars/orchestrator/cluster/mp_cluster/mp_objects.py +535 -0
  149. cars/orchestrator/cluster/mp_cluster/mp_tools.py +93 -0
  150. cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +505 -0
  151. cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +873 -0
  152. cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +399 -0
  153. cars/orchestrator/cluster/pbs_dask_cluster.py +207 -0
  154. cars/orchestrator/cluster/sequential_cluster.py +139 -0
  155. cars/orchestrator/cluster/slurm_dask_cluster.py +234 -0
  156. cars/orchestrator/orchestrator.py +905 -0
  157. cars/orchestrator/orchestrator_constants.py +29 -0
  158. cars/orchestrator/registry/__init__.py +23 -0
  159. cars/orchestrator/registry/abstract_registry.py +143 -0
  160. cars/orchestrator/registry/compute_registry.py +106 -0
  161. cars/orchestrator/registry/id_generator.py +116 -0
  162. cars/orchestrator/registry/replacer_registry.py +213 -0
  163. cars/orchestrator/registry/saver_registry.py +363 -0
  164. cars/orchestrator/registry/unseen_registry.py +118 -0
  165. cars/orchestrator/tiles_profiler.py +279 -0
  166. cars/pipelines/__init__.py +26 -0
  167. cars/pipelines/conf_resolution/conf_final_resolution.yaml +5 -0
  168. cars/pipelines/conf_resolution/conf_first_resolution.yaml +2 -0
  169. cars/pipelines/conf_resolution/conf_intermediate_resolution.yaml +2 -0
  170. cars/pipelines/default/__init__.py +26 -0
  171. cars/pipelines/default/default_pipeline.py +786 -0
  172. cars/pipelines/parameters/__init__.py +0 -0
  173. cars/pipelines/parameters/advanced_parameters.py +417 -0
  174. cars/pipelines/parameters/advanced_parameters_constants.py +69 -0
  175. cars/pipelines/parameters/application_parameters.py +71 -0
  176. cars/pipelines/parameters/depth_map_inputs.py +0 -0
  177. cars/pipelines/parameters/dsm_inputs.py +918 -0
  178. cars/pipelines/parameters/dsm_inputs_constants.py +25 -0
  179. cars/pipelines/parameters/output_constants.py +52 -0
  180. cars/pipelines/parameters/output_parameters.py +454 -0
  181. cars/pipelines/parameters/sensor_inputs.py +842 -0
  182. cars/pipelines/parameters/sensor_inputs_constants.py +49 -0
  183. cars/pipelines/parameters/sensor_loaders/__init__.py +29 -0
  184. cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +86 -0
  185. cars/pipelines/parameters/sensor_loaders/basic_image_loader.py +98 -0
  186. cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +90 -0
  187. cars/pipelines/parameters/sensor_loaders/pivot_image_loader.py +105 -0
  188. cars/pipelines/parameters/sensor_loaders/sensor_loader.py +93 -0
  189. cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +71 -0
  190. cars/pipelines/parameters/sensor_loaders/slurp_classif_loader.py +86 -0
  191. cars/pipelines/pipeline.py +119 -0
  192. cars/pipelines/pipeline_constants.py +31 -0
  193. cars/pipelines/pipeline_template.py +139 -0
  194. cars/pipelines/unit/__init__.py +26 -0
  195. cars/pipelines/unit/unit_pipeline.py +2850 -0
  196. cars/starter.py +167 -0
  197. cars-1.0.0rc1.dist-info/METADATA +292 -0
  198. cars-1.0.0rc1.dist-info/RECORD +200 -0
  199. cars-1.0.0rc1.dist-info/WHEEL +6 -0
  200. cars-1.0.0rc1.dist-info/entry_points.txt +8 -0
cars/starter.py ADDED
@@ -0,0 +1,167 @@
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
+ cars-starter: helper to create configuration file
23
+ """
24
+
25
+ # pylint: disable=import-outside-toplevel
26
+ # standard imports
27
+ import argparse
28
+ import json
29
+ import os
30
+
31
+ import yaml
32
+
33
+
34
+ def inputfilename_to_sensor(inputfilename):
35
+ """
36
+ Fill sensor dictionary according to an input filename
37
+ """
38
+ sensor = {}
39
+
40
+ absfilename = os.path.abspath(inputfilename)
41
+ dirname = os.path.dirname(absfilename)
42
+ basename = os.path.basename(absfilename)
43
+
44
+ if basename.startswith("DIM") and basename.endswith("XML"):
45
+ geomodel = os.path.join(dirname, "RPC" + basename[3:])
46
+ if os.path.exists(geomodel) is False:
47
+ geomodel = None
48
+
49
+ elif basename.endswith(".tif"):
50
+ geomodel = os.path.splitext(absfilename)[0] + ".geom"
51
+ if os.path.exists(geomodel) is False:
52
+ geomodel = None
53
+ else:
54
+ raise ValueError(absfilename + " not supported")
55
+
56
+ sensor["image"] = absfilename
57
+ if geomodel is not None:
58
+ sensor["geomodel"] = geomodel
59
+
60
+ return sensor
61
+
62
+
63
+ def cars_starter(cli_params: dict = None, **kwargs) -> None:
64
+ """
65
+ Main fonction. Expects a dictionary from the CLI (cli_params)
66
+ or directly the input parameters.
67
+ """
68
+ if cli_params and isinstance(cli_params, dict):
69
+ config = cli_params
70
+ else:
71
+ params_name = set(kwargs.keys())
72
+ required_params = {"il", "out"}
73
+ missing_params = required_params - params_name
74
+ if len(missing_params) > 0:
75
+ raise ValueError(
76
+ "The following parameters are required: {}".format(
77
+ ", ".join(list(missing_params))
78
+ )
79
+ )
80
+ config = kwargs
81
+
82
+ cars_config = {"input": {"sensors": {}}, "output": {}}
83
+ pipeline_name = "default"
84
+
85
+ for idx, inputfilename in enumerate(config["il"]):
86
+ cars_config["input"]["sensors"][str(idx)] = inputfilename_to_sensor(
87
+ inputfilename
88
+ )
89
+
90
+ # pairing with first image as reference
91
+ pairing = list(
92
+ zip( # noqa: B905
93
+ ["0"] * (len(config["il"]) - 1),
94
+ map(str, range(1, len(config["il"]))),
95
+ )
96
+ )
97
+
98
+ cars_config["input"]["pairing"] = pairing
99
+ cars_config["output"]["directory"] = config["out"]
100
+
101
+ check = config["check"] if "check" in config.keys() else False
102
+ full = config["full"] if "full" in config.keys() else False
103
+
104
+ if check or full:
105
+ # cars imports
106
+ from cars.pipelines.pipeline import Pipeline
107
+
108
+ used_pipeline = Pipeline(pipeline_name, cars_config, None)
109
+ if full:
110
+ cars_config = used_pipeline.used_conf
111
+
112
+ # output format handling
113
+ output_format = config.get("format", "yaml")
114
+ if output_format == "yaml":
115
+ print(yaml.safe_dump(cars_config, sort_keys=False))
116
+ elif output_format == "json":
117
+ print(json.dumps(cars_config, indent=2))
118
+ else:
119
+ raise ValueError(
120
+ "Invalid format: {}. Use 'json' or 'yaml'.".format(output_format)
121
+ )
122
+
123
+
124
+ def cli():
125
+ """
126
+ Main cars-starter entrypoint (Command Line Interface)
127
+ """
128
+ parser = argparse.ArgumentParser(
129
+ "cars-starter", description="Helper to create configuration file"
130
+ )
131
+ parser.add_argument(
132
+ "-il",
133
+ type=str,
134
+ nargs="*",
135
+ metavar="input.{tif,XML}",
136
+ help="Input sensor list",
137
+ required=True,
138
+ )
139
+
140
+ parser.add_argument(
141
+ "-out",
142
+ type=str,
143
+ metavar="out_dir",
144
+ help="Output directory",
145
+ required=True,
146
+ )
147
+
148
+ parser.add_argument(
149
+ "--full", action="store_true", help="Fill all default values"
150
+ )
151
+
152
+ parser.add_argument("--check", action="store_true", help="Check input")
153
+
154
+ parser.add_argument(
155
+ "--format",
156
+ type=str,
157
+ default="yaml",
158
+ choices=["json", "yaml"],
159
+ help="Output format (json or yaml). Default: yaml",
160
+ )
161
+
162
+ args = parser.parse_args()
163
+ cars_starter(vars(args))
164
+
165
+
166
+ if __name__ == "__main__":
167
+ cli()
@@ -0,0 +1,292 @@
1
+ Metadata-Version: 2.1
2
+ Name: cars
3
+ Version: 1.0.0rc1
4
+ Summary: A satellite multi view stereo pipeline
5
+ Keywords: cars,3D,DEM,pandora,photogrammetry
6
+ Author-Email: CNES <cars@cnes.fr>
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Intended Audience :: End Users/Desktop
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Environment :: Console
12
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Project-URL: Documentation, https://cars.readthedocs.io/en/latest/
18
+ Project-URL: Repository, https://github.com/CNES/cars
19
+ Requires-Python: >=3.9
20
+ Requires-Dist: numpy>=1.17.0
21
+ Requires-Dist: scipy!=1.10.0,>=1.7.1
22
+ Requires-Dist: matplotlib
23
+ Requires-Dist: affine
24
+ Requires-Dist: rasterio>=1.3.0
25
+ Requires-Dist: dask>=2021.10.0
26
+ Requires-Dist: distributed>=2021.10.0
27
+ Requires-Dist: dask-jobqueue>=0.7.3
28
+ Requires-Dist: json-checker
29
+ Requires-Dist: pyyaml
30
+ Requires-Dist: xarray
31
+ Requires-Dist: tqdm
32
+ Requires-Dist: netCDF4>=1.5.3
33
+ Requires-Dist: Shapely
34
+ Requires-Dist: Fiona
35
+ Requires-Dist: pyproj
36
+ Requires-Dist: utm
37
+ Requires-Dist: pandas
38
+ Requires-Dist: urllib3<2.0,>=1.21.1
39
+ Requires-Dist: laspy[laszip]
40
+ Requires-Dist: tbb==2020.3.254
41
+ Requires-Dist: numba
42
+ Requires-Dist: pandora[sgm]==1.7.2
43
+ Requires-Dist: cars-rasterize==0.2.*
44
+ Requires-Dist: cars-resample==0.1.*
45
+ Requires-Dist: cars-filter==0.2.*
46
+ Requires-Dist: vlsift==0.1.*
47
+ Requires-Dist: shareloc==0.2.11
48
+ Requires-Dist: bulldozer-dtm==1.1.*
49
+ Requires-Dist: xdem==0.1.*
50
+ Requires-Dist: geopandas<=1.0.1
51
+ Provides-Extra: dev
52
+ Requires-Dist: pytest; extra == "dev"
53
+ Requires-Dist: pytest-cov; extra == "dev"
54
+ Requires-Dist: pytest-check; extra == "dev"
55
+ Requires-Dist: pre-commit; extra == "dev"
56
+ Requires-Dist: isort>=5.8.0; extra == "dev"
57
+ Requires-Dist: black>=24.1a1; extra == "dev"
58
+ Requires-Dist: flake8>=3.9.1; extra == "dev"
59
+ Requires-Dist: flake8-pyproject; extra == "dev"
60
+ Requires-Dist: flake8-comprehensions>=3.4.0; extra == "dev"
61
+ Requires-Dist: flake8-bugbear<24.0.0,>=21.4.3; extra == "dev"
62
+ Requires-Dist: jupyter_contrib_nbextensions; extra == "dev"
63
+ Requires-Dist: pylint<4.0.0,>=2.8.12; extra == "dev"
64
+ Requires-Dist: setuptools_scm; extra == "dev"
65
+ Requires-Dist: virtualenv; extra == "dev"
66
+ Requires-Dist: configupdater; extra == "dev"
67
+ Requires-Dist: twine; extra == "dev"
68
+ Requires-Dist: notebook<7.0.0; extra == "dev"
69
+ Requires-Dist: bokeh==2.4.3; extra == "dev"
70
+ Requires-Dist: sphinx; extra == "dev"
71
+ Requires-Dist: sphinx-rtd-theme; extra == "dev"
72
+ Requires-Dist: graphviz; extra == "dev"
73
+ Requires-Dist: memory_profiler; extra == "dev"
74
+ Requires-Dist: memray; extra == "dev"
75
+ Requires-Dist: dash; extra == "dev"
76
+ Requires-Dist: plotly; extra == "dev"
77
+ Requires-Dist: build; extra == "dev"
78
+ Provides-Extra: docs
79
+ Requires-Dist: astroid<4.0.0; extra == "docs"
80
+ Requires-Dist: sphinx; extra == "docs"
81
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
82
+ Requires-Dist: sphinx_autoapi; extra == "docs"
83
+ Requires-Dist: graphviz; extra == "docs"
84
+ Requires-Dist: sphinx_tabs; extra == "docs"
85
+ Requires-Dist: sphinx-copybutton; extra == "docs"
86
+ Provides-Extra: notebook
87
+ Requires-Dist: notebook; extra == "notebook"
88
+ Requires-Dist: bokeh; extra == "notebook"
89
+ Requires-Dist: rise; extra == "notebook"
90
+ Provides-Extra: pandora-mccnn
91
+ Requires-Dist: pandora_plugin_mccnn==1.3.5; extra == "pandora-mccnn"
92
+ Provides-Extra: bundleadjustment
93
+ Requires-Dist: rpcfit; extra == "bundleadjustment"
94
+ Description-Content-Type: text/markdown
95
+
96
+ <div align="center">
97
+ <a target="_blank" href="https://github.com/CNES/cars">
98
+ <picture>
99
+ <img
100
+ src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/cars_picto.svg"
101
+ alt="CARS"
102
+ width="50%"
103
+ />
104
+ </picture>
105
+ </a>
106
+
107
+ <h4>CARS, a satellite multi view stereo framework </h4>
108
+
109
+ [![Python](https://img.shields.io/badge/python-v3.10+-blue.svg)](https://www.python.org/downloads/release/python-390/)
110
+ [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](CONTRIBUTING.md)
111
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0/)
112
+ [![Documentation](https://readthedocs.org/projects/cars/badge/?version=latest)](https://cars.readthedocs.io/?badge=latest)
113
+ [![Github Action](https://github.com/CNES/cars/actions/workflows/cars-ci.yml/badge.svg?branch=master)](https://github.com/CNES/cars/actions)
114
+ [![pypi](https://badge.fury.io/py/cars.svg)](https://pypi.org/project/cars/)
115
+ [![Docker pulls](https://img.shields.io/badge/dynamic/json?formatter=metric&color=blue&label=Docker%20pull&query=%24.pull_count&url=https://hub.docker.com/v2/repositories/cnes/cars)](https://hub.docker.com/r/cnes/cars)
116
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17406459.svg)](https://doi.org/10.5281/zenodo.17406459)
117
+
118
+ <p>
119
+ <a href="#overview">Overview</a> •
120
+ <a href="#quick-start">Quick Start</a> •
121
+ <a href="#documentation">Documentation</a> •
122
+ <a href="#license">License</a> •
123
+ <a href="#contribution">Contribution</a> •
124
+ <a href="#help">Help</a> •
125
+ <a href="#credits">Credits</a> •
126
+ <a href="#contact">Contact</a> •
127
+ <a href="#references">References</a>
128
+ </p>
129
+ </div>
130
+
131
+ # 🌐 **Overview**
132
+
133
+ <div align="center">
134
+ <table style="display: inline-block;">
135
+ <tr>
136
+ <td align="center">
137
+ <div style="font-size:2em; margin-bottom:10px;"><strong>🎞️ From Stereo Images</strong></div><br>
138
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/animation_sat.gif"
139
+ alt="Stereo images animation" width="95%"><br>
140
+ <em>Input stereo image pairs</em>
141
+ </td>
142
+ <td align="center">
143
+ <div style="font-size:2em; margin-bottom:10px;"><strong>🌍 To Digital Surface Model (DSM)</strong></div><br>
144
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/overview_dsm_3d.gif"
145
+ alt="DSM overview" width="95%"><br>
146
+ <em>Output 3D surface reconstruction</em>
147
+ </td>
148
+ </tr>
149
+ </table>
150
+ </div>
151
+
152
+ **CARS** is an open source 3D tool dedicated to produce **Digital Surface Models** from satellite imaging by photogrammetry.
153
+ This Multiview Stereo framework is intended for massive DSM production with a robust, performant and modular design.
154
+
155
+ **CARS** is currently under active development and integrated into various projects & missions:
156
+
157
+ <div align="center">
158
+ <p align="center">
159
+ <a href="https://co3d.cnes.fr/en/co3d-0" target="_blank">
160
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/logo_co3D_cnes.png"
161
+ alt="CO3D project" height="70">
162
+ </a>
163
+ &nbsp;&nbsp;&nbsp;&nbsp;
164
+ <a href="https://www.ai4geo.eu" target="_blank">
165
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/logo-ai4geo.png"
166
+ alt="AI4GEO project" height="75">
167
+ </a>
168
+ &nbsp;&nbsp;&nbsp;&nbsp;
169
+ <a href="https://www.evo-land.eu" target="_blank">
170
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/logo-evoland.png"
171
+ alt="Evoland project" height="60">
172
+ </a>
173
+ </p>
174
+ </div>
175
+
176
+ <br>
177
+
178
+ Its roadmap and implemented functionalities are evolving regularly depending on specific project requirements.
179
+
180
+ # 🚀 **Quick start**
181
+
182
+
183
+ ### △ On the way to the Pyramids...
184
+ ---
185
+
186
+ You want to build the pyramids by yourself?
187
+
188
+
189
+ <div align="center">
190
+ <table style="display: inline-block;">
191
+ <tr>
192
+ <td align="center">
193
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/dsm.png"
194
+ alt="Dsm" width="400"><br>
195
+ </td>
196
+ <td align="center">
197
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/clr.png"
198
+ alt="Color" width="400"><br>
199
+ </td>
200
+ <td align="center">
201
+ <img src="https://raw.githubusercontent.com/CNES/cars/master/docs/source/images/dsm_clr.png"
202
+ alt="Color" width="400"><br>
203
+ </td>
204
+ </tr>
205
+ </table>
206
+ </div>
207
+
208
+ Download our [open licence](https://www.etalab.gouv.fr/licence-ouverte-open-licence) Pleiades [data sample](https://raw.githubusercontent.com/CNES/cars/master/tutorials/data_gizeh.tar.bz2) to give CARS a try!
209
+
210
+
211
+ ### 🐋 with Docker
212
+ ---
213
+
214
+ #### 🛠 Installation
215
+
216
+ CARS is available on Docker Hub and can be downloaded by:
217
+ ``` bash
218
+ docker pull cnes/cars
219
+ ```
220
+
221
+ #### ⚙ Run CARS
222
+
223
+ You only need to launch one command:
224
+
225
+ ```
226
+ docker run -w /data -v "$(pwd)"/data_gizeh:/data cnes/cars /data/configfile.yaml
227
+ ```
228
+
229
+ ### 🐍 with pip
230
+ ---
231
+
232
+ #### 🛠 Installation
233
+
234
+ CARS can also be downloaded using the pip install command:
235
+
236
+ ``` bash
237
+ pip install cars
238
+ ```
239
+
240
+ #### ⚙ Run CARS
241
+
242
+ Once you moved to the data_gizeh directory:
243
+
244
+ ``` bash
245
+ cars configfile.yaml
246
+ ```
247
+
248
+ # 📚 **Documentation**
249
+
250
+ Go to [CARS Main Documentation](https://cars.readthedocs.io/?badge=latest).
251
+
252
+ # 📜 **License**
253
+
254
+ CARS is licensed under [Apache License v2.0](https://www.apache.org/licenses/LICENSE-2.0). Please refer to the [LICENSE](https://gitlab.cnes.fr/dali/cars-park/cars/-/blob/1214-mise-a-jour-du-readme-pour-la-nouvelle-version-1-0-0/LICENSE) file for more details.
255
+
256
+ # 🤝 **Contribution**
257
+
258
+ To do a contribution, see the [Contribution Guide](https://github.com/CNES/cars/blob/master/CONTRIBUTING.md). For project evolution, see [Changelog](https://github.com/CNES/cars/blob/master/CHANGELOG.md).
259
+
260
+ # 🆘 **Help**
261
+
262
+ For issues, questions, or feature requests, please open an issue on our [GitHub Issues](https://github.com/CNES/cars/issues) page or check the [documentation](https://cars.readthedocs.io/en/stable/index.html) for additional resources.
263
+
264
+ You can also ask your questions on the corresponding [slack](https://join.slack.com/t/cars-community/shared_invite/zt-2uw6usog1-~TT~m8BxO9faMXpP7tpz2Q).
265
+
266
+ # ✒️ **Credits**
267
+
268
+ If you use CARS in your research, please cite the following paper:
269
+
270
+ ```
271
+ @INPROCEEDINGS{9324020,
272
+ author={Youssefi, David and Michel, Julien and Sarrazin, Emmanuelle and Buffe, Fabrice and Cournet, Myriam and Delvit, Jean-Marc and L'Helguen, Céline and Melet, Olivier and Emilien, Aurélie and Bosman, Julien},
273
+ booktitle={IGARSS 2020 - 2020 IEEE International Geoscience and Remote Sensing Symposium},
274
+ title={CARS: A Photogrammetry Pipeline Using Dask Graphs to Construct A Global 3D Model},
275
+ year={2020},
276
+ volume={},
277
+ number={},
278
+ pages={453-456},
279
+ keywords={Automobiles;Geometry;Three-dimensional displays;Computational modeling;Estimation;Stereo image processing;Task analysis;Image processing;Photogrammetry;Stereovision;Digital Surface Model;High Performance Computing;Cloud Computing;Dask},
280
+ doi={10.1109/IGARSS39084.2020.9324020}}
281
+ ```
282
+
283
+ See [Authors file](https://github.com/CNES/cars/blob/master/AUTHORS.md)
284
+
285
+ # ✉️ **Contact**
286
+
287
+ You can contact us on the following mail adress: cars@cnes.fr
288
+
289
+ # 🔗 **References**
290
+
291
+ - [Youssefi D., Michel, J., Sarrazin, E., Buffe, F., Cournet, M., Delvit, J., L’Helguen, C., Melet, O., Emilien, A., Bosman, J., 2020. Cars: A photogrammetry pipeline using dask graphs to construct a global 3d model. IGARSS - IEEE International Geoscience and Remote Sensing Symposium.](https://ieeexplore.ieee.org/document/9324020)
292
+ - [Michel, J., Sarrazin, E., Youssefi, D., Cournet, M., Buffe, F., Delvit, J., Emilien, A., Bosman, J., Melet, O., L’Helguen, C., 2020. A new satellite imagery stereo pipeline designed for scalability, robustness and performance. ISPRS - International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences.](https://www.isprs-ann-photogramm-remote-sens-spatial-inf-sci.net/V-2-2020/171/2020/)