diff --git a/docs/source/exploring_the_field/3d_products.rst b/docs/source/exploring_the_field/3d_products.rst index 7127ad0d..3d0bbd86 100644 --- a/docs/source/exploring_the_field/3d_products.rst +++ b/docs/source/exploring_the_field/3d_products.rst @@ -2,8 +2,8 @@ =========== | CARS produces a geotiff file named ``dsm.tif`` that contains the Digital Surface Model in the required cartographic projection and the ground sampling distance defined by the user. -| If the user provides an additional input image, an ortho-image ``color.tif`` is also produced. The latter is stackable to the DSM (See :ref:`getting_started`). -| If the user saves points clouds as laz format (point_cloud_fusion, point_cloud_outliers_removing, point_cloud_rasterization), the points clouds are saved in laz compressed format with colors or graylevel image. +| If the user provides an additional input image, an ortho-image ``clr.tif`` is also produced. The latter is stackable to the DSM (See :ref:`getting_started`). +| If the user saves points clouds as `laz format `_ (point_cloud_fusion, point_cloud_outliers_removing, point_cloud_rasterization), the points clouds are saved in laz compressed format with colors or graylevel image. These two products can be visualized with `QGIS `_ for example. @@ -19,5 +19,5 @@ These two products can be visualized with `QGIS ` +--------------+-------------+-------------+-------------------+ | dsm.tif | color.tif | `QGIS`_ Mix | cloudcompare | +--------------+-------------+-------------+-------------------+ -| |dsm| | |color| | |dsmclr| | |pc| | +| |dsm| | |color| | |dsmclr| | |pc| | +--------------+-------------+-------------+-------------------+ diff --git a/docs/source/exploring_the_field/from_satellite_images_to_dsm.rst b/docs/source/exploring_the_field/from_satellite_images_to_dsm.rst index ee84ec4b..54010143 100644 --- a/docs/source/exploring_the_field/from_satellite_images_to_dsm.rst +++ b/docs/source/exploring_the_field/from_satellite_images_to_dsm.rst @@ -64,7 +64,8 @@ Generate a DSM step by step +--------------------------+---------------------------------------------+ | For each point in one image, the software searches the corresponding point in the other image. -| The color of the pixels (grayscale) in the image :ref:`below` corresponds to the shift value. Some pixels do not have a match (matching error due to moving objects, shadows etc.). +| The color of the pixels (grayscale) in the image :ref:`below` corresponds to the shift value. Some pixels do not have a match, which are represented as transparent pixels in the image. These matching errors can occur due to various reasons such as moving objects, shadows, occlusions, or areas with insufficient texture. +| The transparent pixels indicate areas where the matching algorithm couldn't find a reliable correspondence between the two images, highlighting regions of uncertainty in the matching process. .. _matching: @@ -81,6 +82,7 @@ Generate a DSM step by step | The displacements obtained are transformed into positions in both images. | This allows to deduce lines of sight. The intersection of these lines gives a point in space: longitude, latitude, altitude (see :ref:`below`). +| A line of sight is an imaginary straight line from the camera's perspective through a specific point in the image, extending into 3D space. It represents all possible 3D positions that could have produced that image point. .. _triangulation: diff --git a/docs/source/exploring_the_field/masks_and_classifications_usage.rst b/docs/source/exploring_the_field/masks_and_classifications_usage.rst index fcf0a3b3..2f98dcd8 100644 --- a/docs/source/exploring_the_field/masks_and_classifications_usage.rst +++ b/docs/source/exploring_the_field/masks_and_classifications_usage.rst @@ -2,8 +2,9 @@ Mask and Classification Usage ============================= | Photogrammetry is a technique that cannot reproduce altitude on water. This technique also has difficulties for moving elements or in shaded areas. -| For this reason, it is possible to mask out areas or apply ad hoc processing to aid the matching stage. +| For this reason, it is possible to mask out areas or apply ad hoc processing to aid the matching stage (see :ref:`mask_and_classification_usage`). +.. _mask_and_classification_usage: Masks ----- @@ -22,4 +23,4 @@ Classification | Please, see the section :ref:`convert_image_to_binary_image` to make a multiband binary image with 1 bit per band. | All non-zeros values of the classification image will be considered as invalid data. -| The classification can be used in each application by band name list selection parameter. See application ``classification`` parameter :ref:`configuration`.. +| The classification can be used in each application by band name list selection parameter. See application ``classification`` parameter :ref:`configuration`. diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 6bc4d9b3..05aa3fdb 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -14,6 +14,18 @@ Getting Started pip install cars +* Alternatively, you can use the provided Dockerfile to build a Docker image for CARS: + +.. code-block:: console + + # Clone the CARS repository + git clone https://github.com/CNES/cars.git + cd cars + + # Build the Docker image + docker build -t cars:latest . + + * Get and extract data samples from CARS repository: .. code-block:: console @@ -70,10 +82,10 @@ Open the ``dsm.tif`` DSM and ``color.tif`` color image in `QGIS`_ software. .. |dsmcolor| image:: images/dsm_clr.png :width: 100% -+--------------+-----------------+---------------+ -| dsm.tif | color.tif | `QGIS`_ Mix | -+--------------+-----------------+---------------+ -| |dsm| | |color| | |dsmcolor| | -+--------------+-----------------+---------------+ ++--------------+-------------+-------------+ +| dsm.tif | color.tif | `QGIS`_ Mix | ++--------------+-------------+-------------+ +| |dsm| | |color| | |dsmcolor| | ++--------------+-------------+-------------+ .. _`QGIS`: https://www.qgis.org/ diff --git a/docs/source/howto.rst b/docs/source/howto.rst index 1c73097e..39665249 100644 --- a/docs/source/howto.rst +++ b/docs/source/howto.rst @@ -26,7 +26,7 @@ Example files are available here: https://intelligence.airbus.com/imagery/sample Maxar WorldView example files ----------------------------- -| Example files are available on AWS S3 through the SpaceNet challenge here: s3://spacenet-dataset/Hosted-Datasets/MVS_dataset/WV3/PAN/. +| Example files are available on AWS S3 through the SpaceNet challenge here: `s3://spacenet-dataset/Hosted-Datasets/MVS_dataset/WV3/PAN/` | You need to install `aws-cli `_: .. code-block:: console @@ -104,6 +104,7 @@ For example, if you want to monitor the computation of a CARS run: .. _make_a_simple_pan_sharpening: + Make a simple pan sharpening ---------------------------- @@ -121,6 +122,24 @@ It can be recommended to apply a P+XS pansharpening with `OTB`_. .. _`OTB`: https://www.orfeo-toolbox.org/CookBook-8.0/C++/UserGuide.html#image-data-representation + +Convert RGB image to panchromatic image +-------------------------------------- + +CARS only uses panchromatic images for processing. + +If you have a multi-spectral image, you'll need to extract a single band to use, or convert it to a panchromatic image before using it with CARS. + +The line below use `"Grayscale Using Luminance" `_ expression with `OTB BandMath `_ + + +.. code-block:: console + + otbcli_BandMath -il image.tif -out image_panchromatic.tif -exp "(0.2126 * im1b1 + 0.7152 * im1b2 + 0.0722 * im1b3)" + + + + .. _make_a_water_mask: Make a water mask @@ -141,7 +160,7 @@ See next section to apply a gdal_translate to convert the mask with 1bit image s Convert image to binary image ----------------------------- -To translate single image or multiband image with several nbits per band to 1bit per band, it can be recommended to use gdal_translate as follows: +To translate single image or multiband image with several nbits per band to 1bit per band, it can be recommended to use `gdal_translate `_ as follows: .. code-block:: console @@ -171,7 +190,7 @@ Post process output Merge Laz files --------------- -CARS generates several laz files corresponding to the tiles processed. +CARS generates several `laz files `_ corresponding to the tiles processed. Merge can be done with `laszip`_. To merge them: diff --git a/docs/source/software_design/orchestrator.rst b/docs/source/software_design/orchestrator.rst index 76afc599..16aa5006 100644 --- a/docs/source/software_design/orchestrator.rst +++ b/docs/source/software_design/orchestrator.rst @@ -7,7 +7,7 @@ Goals ----- The *orchestrator* is the central element of CARS concepts. -Its role is to ensure the communication between the computing technology,the *applications* and *CarsDatasets*. +Its role is to ensure the communication between the *computing technology*, the *applications* and the *CarsDatasets*. Details ------- @@ -73,7 +73,7 @@ The cluster is the component which allows to realize the calculations. * `start_tasks` to compute each task that have been declared. * `future_iterator`: iterate over the `future` objects -There are already 4 plugins, each one representing a mode: +There are already 3 plugins, each one representing a mode: * *dask* diff --git a/docs/source/software_design/plugin.rst b/docs/source/software_design/plugin.rst index 76608c08..2df24507 100644 --- a/docs/source/software_design/plugin.rst +++ b/docs/source/software_design/plugin.rst @@ -6,7 +6,7 @@ Plugin Geometry plugin ^^^^^^^^^^^^^^^^^ -Geometry plugins aim to enable the use of different geometry libraries, typically libGEO or Shareloc to perform CARS geometric operations which require the interpretation of the geometric models of the pairs to process. +Geometry plugins aim to enable the use of different geometry libraries, typically `libGEO `_ or `Shareloc `_ to perform CARS geometric operations which require the interpretation of the geometric models of the pairs to process. Those operation are: * The epipolar grids computation @@ -44,10 +44,10 @@ For example, if the AbstractGeometry object is defined in file `cars_geometry_pl ) Mandatory methods - +++++++++++++++++++ Currently, the `AbstractGeometry` class requires the implementation of the following mandatory methods and properties: -* `conf_schema` which specify the user inputs json schema required by the geometric library +* `conf_schema` which specify the user inputs json schema required by the geometric library. .. code-block:: python @@ -104,7 +104,7 @@ Currently, the `AbstractGeometry` class requires the implementation of the follo :return: the long/lat/height numpy array in output of the triangulation """ -* `generate_epipolar_grids` which generates the left and right epipolar grids from the images of the pair and their geometrical models +* `generate_epipolar_grids` which generates the left and right epipolar grids from the images of the pair and their geometrical models. .. code-block:: python @@ -137,7 +137,7 @@ Currently, the `AbstractGeometry` class requires the implementation of the follo - the disparity to altitude ratio as a float """ -* `direct_loc` which performs direct localization operations +* `direct_loc` which performs direct localization operations. .. code-block:: python @@ -170,4 +170,4 @@ Available methods Some methods are available in the `AbstractGeometry` class that might be useful for any geometry plugin which would only perform the triangulation using sensor coordinates. CARS' API only provides as inputs of the geometry plugin triangulation method the epipolar coordinates for each image of the pair. Thus the `matches_to_sensor_coords` method enables any plugin to convert those coordinates into the corresponding sensor ones. -`AbstractGeometry` implements the method `image_envelope`. It computes the ground footprint of an image in sensor geometry by projecting its four corners using the direct localization method. This method can be overloaded by any geometry plugin if necessary. \ No newline at end of file +`AbstractGeometry` implements the method `image_envelope`. It computes the ground footprint of an image in sensor geometry by projecting its four corners using the direct localization method. This method can be overloaded by any geometry plugin if necessary. diff --git a/docs/source/troubleshooting_and_faqs.rst b/docs/source/troubleshooting_and_faqs.rst index 347f254e..070077f2 100644 --- a/docs/source/troubleshooting_and_faqs.rst +++ b/docs/source/troubleshooting_and_faqs.rst @@ -64,7 +64,7 @@ Output data How to generate output files overview ? --------------------------------------- -Considering bulky files, it can be recommended to generate an overview file with `GDAL`_ before opening it with QGIS: +Considering bulky files, it can be recommended to generate an overview file with `GDAL`_ before opening it with `QGIS `_: .. code-block:: console diff --git a/docs/source/usage.rst b/docs/source/usage.rst index a110a767..7f7c7a2f 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -49,8 +49,7 @@ Note that ``cars-starter`` script can be used to instantiate this configuration --full Fill all default values --check Check inputs -Finally, an output ``used_conf.json`` file will be created on the output directory. This file contains all the execution used -parameters and can be used as an input configuration file to re-run cars. +Finally, an output ``used_conf.json`` file will be created on the output directory. This file contains all the parameters used during execution and can be used as an input configuration file to re-run cars. .. _configuration: @@ -80,10 +79,10 @@ The structure follows this organisation: .. tab:: Inputs - Inputs depends on the pipeline used by CARS. CARS can be entered with Sensor Images or Depth Maps: + Inputs depends on the pipeline used by CARS. CARS can be entered with Sensor Images or Point Clouds: - * Sensor Images: used in "sensors_to_dense_dsm", "sensors_to_sparse_dsm", "sensors_to_dense_depth_maps" pipelines. - * Depth Maps: used in "dense_depth_maps_to_dense_dsm" pipeline. + * Sensor Images: used in "sensors_to_dense_dsm", "sensors_to_sparse_dsm", "sensors_to_dense_point_clouds" pipelines. + * Point Clouds: used in "dense_point_clouds_to_dense_dsm" pipeline. .. tabs:: @@ -97,15 +96,29 @@ The structure follows this organisation: +============================+=====================================================================+=======================+======================+==========+ | *sensor* | Stereo sensor images | See next section | No | Yes | +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *pairing* | Association of image to create pairs | list of *sensor* | No | Yes (*) | + | *pairing* | Association of image to create pairs | list of *sensor* | No | Yes | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *epsg* | EPSG code | int, should be > 0 | None | No | +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ | *initial_elevation* | Path to SRTM tiles (see :ref:`plugins` section for details) | string | None | No | | | If not provided, internal dem is generated with sparse matches | | | | +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *use_endogenous_elevation* | Use endogenous eleveation intead of provided initial_elevation | bool | False | No | + | | when endogenous elevation is available | | | | + | | If no initial_elevation, endogenous elevation is always used | | | | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ | *roi* | ROI: Vector file path or GeoJson | string, dict | None | No | +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ - - (*) `pairing` is required If there are more than two sensors (see pairing section below) + | *debug_with_roi* | Use ROI with the tiling of the entire image | Boolean | False | No | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *check_inputs* | Check inputs consistency (to be deprecated and changed) | Boolean | False | No | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *use_epipolar_a_priori* | Active epipolar a priori | bool | False | Yes | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *epipolar_a_priori* | Provide epipolar a priori information (see section below) | dict | | No | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *terrain_a_priori* | Provide terrain a priori information (see section below) | dict | | No | + +----------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ **Sensor** @@ -176,8 +189,6 @@ The structure follows this organisation: } } - This attribute is required when there are more than two input sensor images. If only two images ares provided, the pairing can be deduced by cars, considering the first image defined as the left image and second image as right image. - **Initial elevation** The attribute contains all informations about initial elevation: dem path, geoid and default altitude @@ -185,14 +196,16 @@ The structure follows this organisation: +-----------------------+--------------------------------+--------+----------------------+----------------------------+ | Name | Description | Type | Default value | Required | +=======================+================================+========+======================+============================+ - | *dem* | Path to DEM tiles | string | None | No | + | *dem_path* | Path to DEM tiles | string | None | No | +-----------------------+--------------------------------+--------+----------------------+----------------------------+ | *geoid* | Geoid path | string | Cars internal geoid | No | +-----------------------+--------------------------------+--------+----------------------+----------------------------+ + | *default_alt* | Default altitude | int | 0 | No | + +-----------------------+--------------------------------+--------+----------------------+----------------------------+ If no DEM path is provided, an internal dem is generated with sparse matches. If no geoid is provided, the default cars geoid is used (egm96). - When there is no DEM data available, a default height above ellipsoid of 0 is used (no coverage for some points or pixels with no_data in the DEM tiles) + `default_alt` is the default height above ellipsoid when there is no DEM available (no coverage for some points or pixels with no_data in the DEM tiles) Initial elevation can be provided as a dictionary with a field for each parameter, for example: @@ -202,8 +215,9 @@ The structure follows this organisation: { "inputs": { "initial_elevation": { - "dem": "/path/to/srtm.tif", - "geoid": "/path/to/geoid.tif" + "dem_path": "/path/to/srtm.tif", + "geoid": "/path/to/geoid.tif", + "default_alt": 30 } } } @@ -223,28 +237,74 @@ The structure follows this organisation: Elevation management is tightly linked to the geometry plugin used. See :ref:`plugins` section for details - .. tab:: Depth Maps inputs + **Epipolar a priori** + + The epipolar is usefull to accelerate the preliminary steps of the grid correction and the disparity range evaluation, + particularly for the sensor_to_full_resolution_dsm pipeline. + The epipolar_a_priori data dict is produced during low or full resolution dsm pipeline. + However, the epipolar_a_priori should be not activated for the sensor_to_low_resolution_dsm. + So, the sensor_to_low_resolution_dsm pipeline produces a refined_conf_full_res.json in the outdir + that contains the epipolar_a_priori information for each sensor image pairs. + The epipolar_a_priori is also saved in the used_conf.json with the sensor_to_full_resolution_dsm pipeline. + + For each sensor images, the epipolar a priori are filled as following: + + +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + | Name | Description | Type | Default value | Required | + +=======================+=============================================================+========+================+==================================+ + | *grid_correction* | The grid correction coefficients | list | | if use_epipolar_a_priori is True | + +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + | *disparity_range* | The disparity range [disp_min, disp_max] | list | | if use_epipolar_a_priori is True | + +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + .. note:: + + The grid correction coefficients are based on bilinear model with 6 parameters [x1,x2,x3,y1,y2,y3]. + The None value produces no grid correction (equivalent to parameters [0,0,0,0,0,0]). + + + **Terrain a priori** - +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ - | Name | Description | Type | Default value | Required | - +=========================+=====================================================================+=======================+======================+==========+ - | *depth_maps* | Depth maps to rasterize | dict | No | Yes | - +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *roi* | Region Of Interest: Vector file path or GeoJson | string, dict | None | No | - +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + The terrain a priori is used at the same time that epipolar a priori. + If use_epipolar_a_priori is activated, epipolar_a_priori and terrain_a_priori must be provided. + The terrain_a_priori data dict is produced during low or full resolution dsm pipeline. + + The terrain a priori is initially populated with DEM information. + + +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + | Name | Description | Type | Default value | Required | + +================+=============================================================+========+================+==================================+ + | *dem_median* | DEM generated with median function | str | | if use_epipolar_a_priori is True | + +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + | *dem_min* | DEM generated with min function | str | | if use_epipolar_a_priori is True | + +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + | *dem_max* | DEM generated with max function | str | | if use_epipolar_a_priori is True | + +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ + + .. tab:: Point Clouds inputs - **Depth Maps** + +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | Name | Description | Type | Default value | Required | + +=========================+=====================================================================+=======================+======================+==========+ + | *point_clouds* | Point Clouds to rasterize | dict | No | Yes | + +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *epsg* | EPSG code to use for DSM | int, should be > 0 | None | No | + +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ + | *roi* | Region Of Interest: Vector file path or GeoJson | string, dict | None | No | + +-------------------------+---------------------------------------------------------------------+-----------------------+----------------------+----------+ - For each depth map, give a particular name (what you want): + + **Point Clouds** + + For each point cloud, give a particular name (what you want): .. code-block:: json { - "depth_maps": { - "my_name_for_this_depth_map": + "point_clouds": { + "my_name_for_this_point_cloud": { "x" : "path_to_x.tif", "y" : "path_to_y.tif", @@ -256,39 +316,40 @@ The structure follows this organisation: "confidence": { "confidence_name1": "path_to_confidence1.tif", "confidence_name2": "path_to_confidence2.tif", - }, - "performance_map": "path_to_performance_map.tif", - "epsg": "depth_map_epsg" + "confidence_parformance_map": "path_to_performance_map.tif", + } + "epsg": "point_cloud_epsg" } - } + }, + "epsg": 32644 } - These input files can be generated with the `sensors_to_dense_depth_maps` pipeline, or `sensors_to_dense_dsm` pipeline activating the saving of depth_map using `save_intermediate_data` in the `triangulation` application. + These input files can be generated with the sensors_to_dense_point_clouds pipeline, or sensors_to_dense_dsm pipeline activating the saving of point clouds in `triangulation` application. .. note:: - To generate confidence maps and performance map, parameters `generate_performance_map` and `save_intermediate_data` of `dense_matching` application must be activated in `sensors_to_dense_depth_maps` pipeline. The output performance map is `performance_map.tif`. Then the parameter `save_confidence` of `point_cloud_rasterization` should be activated in dense_depth_maps_to_dense_dsm pipeline to save the performance map. + To generate confidence maps and performance map, parameters `generate_performance_map` and `save_disparity_map` of `dense_matching` application must be activated in sensors_to_dense_point_clouds pipeline. The output performance map is `epi_confidence_performance_map.tif`. Then the parameter `save_confidence` of `point_cloud_rasterization` should be activated in dense_point_clouds_to_dense_dsm pipeline to save the performance map. +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ | Name | Description | Type | Default value | Required | +==================+===================================================================+================+===============+==========+ - | *x* | Path to the x coordinates of depth map | string | | Yes | + | *x* | Path to the x coordinates of point cloud | string | | Yes | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *y* | Path to the y coordinates of depth map | string | | Yes | + | *y* | Path to the y coordinates of point cloud | string | | Yes | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *z* | Path to the z coordinates of depth map | string | | Yes | + | *z* | Path to the z coordinates of point cloud | string | | Yes | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *color* | Color of depth map | string | | Yes | + | *color* | Color of point cloud | string | | Yes | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *mask* | Validity mask of depth map : 0 values are considered valid data | string | | No | + | *mask* | Validity mask of point cloud : 0 values are considered valid data | string | | No | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *classification* | Classification of depth map | string | | No | + | *classification* | Classification of point cloud | string | | No | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *filling* | Filling map of depth map | string | | No | + | *filling* | Filling map of point cloud | string | | No | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *confidence* | Dict of paths to the confidences of depth map | dict | | No | + | *confidence* | Dict of paths to the confidences of point cloud | dict | | No | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ - | *epsg* | Epsg code of depth map | int | 4326 | No | + | *epsg* | Epsg code of point cloud | int | 4326 | No | +------------------+-------------------------------------------------------------------+----------------+---------------+----------+ **Region Of Interest (ROI)** @@ -328,7 +389,7 @@ The structure follows this organisation: } } - If the *debug_with_roi* advanced parameter (see dedicated tab) is enabled, the tiling of the entire image is kept but only the tiles intersecting + If the *debug_with_roi* parameter is enabled, the tiling of the entire image is kept but only the tiles intersecting the ROI are computed. MultiPolygon feature is only useful if the parameter *debug_with_roi* is activated, otherwise the total footprint of the @@ -382,10 +443,7 @@ The structure follows this organisation: } } }, - } - "advanced": - { - "debug_with_roi": true + "debug_with_roi": true, } } @@ -553,7 +611,7 @@ The structure follows this organisation: +----------------+-----------------------+--------+------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ | Name | Description | Type | Default value | Available values | Required | +================+=======================+========+====================================+======================================================================================================================================================================================================+==========+ - | *pipeline* | The pipeline to use | str | "sensors_to_dense_dsm_no_merging" | "sensors_to_dense_dsm", "sensors_to_sparse_dsm", "sensors_to_dense_depth_maps", "dense_depth_maps_to_dense_dsm", "sensors_to_dense_dsm_no_merging", "dense_depth_maps_to_dense_dsm_no_merging" | False | + | *pipeline* | The pipeline to use | str | "sensors_to_dense_dsm_no_merging" | "sensors_to_dense_dsm", "sensors_to_sparse_dsm", "sensors_to_dense_point_clouds", "dense_point_clouds_to_dense_dsm", "sensors_to_dense_dsm_no_merging", "dense_point_clouds_to_dense_dsm_no_merging" | False | +----------------+-----------------------+--------+------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ @@ -644,9 +702,9 @@ The structure follows this organisation: 8. Rasterize: Project these altitudes on a regular grid as well as the associated color. - .. tab:: Sensor to Dense Depth Maps + .. tab:: Sensor to Dense Point Clouds - **Name**: "sensors_to_dense_depth_maps" + **Name**: "sensors_to_dense_point_clouds" **Description** @@ -666,9 +724,9 @@ The structure follows this organisation: 8. Triangule the matches and get for each pixel of the reference image a latitude, longitude and altitude coordinate. - .. tab:: Dense Dense Depth Maps to Dense DSM + .. tab:: Dense Point Clouds to Dense DSM - **Name**: "dense_depth_maps_to_dense_dsm" + **Name**: "dense_point_clouds_to_dense_dsm" **Description** @@ -677,13 +735,13 @@ The structure follows this organisation: :align: center - 1. Merge depth maps coming from each stereo pairs. + 1. Merge points clouds coming from each stereo pairs. 2. Filter the resulting 3D points cloud via two consecutive filters: the first removes the small groups of 3D points, the second filters the points which have the most scattered neighbors. 3. Rasterize: Project these altitudes on a regular grid as well as the associated color. - .. tab:: Dense Depth Maps to Dense DSM no merging + .. tab:: Dense Point Clouds to Dense DSM no merging - **Name**: "dense_depth_maps_to_dense_dsm_no_merging" + **Name**: "dense_point_clouds_to_dense_dsm_no_merging" **Description** @@ -745,15 +803,15 @@ The structure follows this organisation: **Configuration** - +-------------------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ - | Name | Description | Type | Available values | Default value | Required | - +=========================+===============================================+=========+===================================+===============+==========+ - | method | Method for grid generation | string | "epipolar" | epipolar | No | - +-------------------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ - | epi_step | Step of the deformation grid in nb. of pixels | int | should be > 0 | 30 | No | - +-------------------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ - | save_intermediate_data | Save the generated grids | boolean | | false | No | - +-------------------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ + +-----------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ + | Name | Description | Type | Available values | Default value | Required | + +=================+===============================================+=========+===================================+===============+==========+ + | method | Method for grid generation | string | "epipolar" | epipolar | No | + +-----------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ + | epi_step | Step of the deformation grid in nb. of pixels | int | should be > 0 | 30 | No | + +-----------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ + | save_grids | Save the generated grids | boolean | | false | No | + +-----------------+-----------------------------------------------+---------+-----------------------------------+---------------+----------+ **Example** @@ -776,17 +834,19 @@ The structure follows this organisation: **Configuration** - +------------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ - | Name | Description | Type | Available value | Default value | Required | - +========================+========================================================+=========+=================+===============+==========+ - | method | Method for resampling | string | "bicubic" | "bicubic" | No | - +------------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ - | strip_height | Height of strip (only when tiling is done by strip) | int | should be > 0 | 60 | No | - +------------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ - | step | Horizontal step for resampling inside a strip | int | should be > 0 | 500 | No | - +------------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ - | save_intermediate_data | Save epipolar images and color | boolean | | false | No | - +------------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + | Name | Description | Type | Available value | Default value | Required | + +=====================+========================================================+=========+=================+===============+==========+ + | method | Method for resampling | string | "bicubic" | "bicubic" | No | + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + | strip_height | Height of strip (only when tiling is done by strip) | int | should be > 0 | 60 | No | + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + | step | Horizontal step for resampling inside a strip | int | should be > 0 | 500 | No | + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + | save_epipolar_image | Save the generated images in output folder | boolean | | false | No | + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ + | save_epipolar_color | Save the generated images (only if color is available) | boolean | | false | No | + +---------------------+--------------------------------------------------------+---------+-----------------+---------------+----------+ **Example** @@ -846,7 +906,7 @@ The structure follows this organisation: +--------------------------------------+------------------------------------------------------------------------------------------------+-------------+------------------------+---------------+----------+ | matches_filter_dev_factor | Factor of deviation of isolation of matches to compute threshold of outliers | int, float | should be > 0 | 3.0 | No | +--------------------------------------+------------------------------------------------------------------------------------------------+-------------+------------------------+---------------+----------+ - | save_intermediate_data | Save matches in epipolar geometry (4 first columns) and sensor geometry (4 last columns) | boolean | | false | No | + | save_matches | Save matches in epipolar geometry (4 first columns) and sensor geometry (4 last columns) | boolean | | false | No | +--------------------------------------+------------------------------------------------------------------------------------------------+-------------+------------------------+---------------+----------+ | strip_margin | Margin to use on strip | int | should be > 0 | 10 | No | +--------------------------------------+------------------------------------------------------------------------------------------------+-------------+------------------------+---------------+----------+ @@ -887,8 +947,6 @@ The structure follows this organisation: * min * max - The DEMs are generated in the application dump directory - **Configuration** +---------------------------------+------------------------------------------------------------+------------+-----------------+---------------+----------+ @@ -1033,7 +1091,7 @@ The structure follows this organisation: - - 0.6 - No - * - save_intermediate_data + * - save_disparity_map - Save disparity map and disparity confidence - boolean - @@ -1082,7 +1140,7 @@ The structure follows this organisation: * Disparity range can be global (same disparity range used for each tile), or local (disparity range is estimated for each tile with dem min/max). * When user activate the generation of performance map, this map transits until being rasterized. Performance map is managed as a confidence map. - * To save the confidence in the sensors_to_dense_point_clouds pipeline, the save_intermediate_data parameter should be activated. + * To save the confidence in the sensors_to_dense_point_clouds pipeline, the save_disparity_map parameter should be activated. .. tab:: Dense matches filling @@ -1101,7 +1159,7 @@ The structure follows this organisation: +=====================================+=================================+=========+=========================+====================+==========+ | method | Method for holes detection | string | "plane", "zero_padding" | "plane" | No | +-------------------------------------+---------------------------------+---------+-------------------------+--------------------+----------+ - | save_intermediate_data | Save disparity map | boolean | | False | No | + | save_disparity_map | Save disparity map | boolean | | False | No | +-------------------------------------+---------------------------------+---------+-------------------------+--------------------+----------+ @@ -1167,12 +1225,12 @@ The structure follows this organisation: "dense_matches_filling.1": { "method": "plane", "classification": ["water"], - "save_intermediate_data": true + "save_disparity_map": true }, "dense_matches_filling.2": { "method": "zero_padding", "classification": ["cloud", "snow"], - "save_intermediate_data": true + "save_disparity_map": true } }, @@ -1187,15 +1245,15 @@ The structure follows this organisation: **Configuration** - +------------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ - | Name | Description | Type | Available values | Default value | Required | - +========================+====================================================================================================================+=========+======================================+==============================+==========+ - | method | Method for triangulation | string | "line_of_sight_intersection" | "line_of_sight_intersection" | No | - +------------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ - | snap_to_img1 | If all pairs share the same left image, modify lines of sights of secondary images to cross those of the ref image | boolean | | false | No | - +------------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ - | save_intermediate_data | Save depth map | boolean | | false | No | - +------------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ + +-------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ + | Name | Description | Type | Available values | Default value | Required | + +===================+====================================================================================================================+=========+======================================+==============================+==========+ + | method | Method for triangulation | string | "line_of_sight_intersection" | "line_of_sight_intersection" | No | + +-------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ + | snap_to_img1 | If all pairs share the same left image, modify lines of sights of secondary images to cross those of the ref image | boolean | | false | No | + +-------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ + | save_points_cloud | Save points cloud | boolean | | false | No | + +-------------------+--------------------------------------------------------------------------------------------------------------------+---------+--------------------------------------+------------------------------+----------+ **Example** @@ -1204,7 +1262,7 @@ The structure follows this organisation: "applications": { "triangulation": { "method": "line_of_sight_intersection", - "snap_to_img1": true + "use_geoid_alt": true } }, @@ -1220,15 +1278,17 @@ The structure follows this organisation: **Configuration** - +------------------------------+------------------------------------------+---------+----------------------------+----------------------------+----------+ - | Name | Description | Type | Available value | Default value | Required | - +==============================+==========================================+=========+============================+============================+==========+ - | method | Method for fusion | string | "mapping_to_terrain_tiles" | "mapping_to_terrain_tiles" | No | - +------------------------------+------------------------------------------+---------+----------------------------+----------------------------+----------+ - | save_intermediate_data | Save points clouds as laz and csv format | boolean | | false | No | - +------------------------------+------------------------------------------+---------+----------------------------+----------------------------+----------+ - | save_by_pair | Enable points cloud saving by pair | boolean | | false | No | - +------------------------------+------------------------------------------+---------+----------------------------+----------------------------+----------+ + +------------------------------+-----------------------------------------+---------+----------------------------+----------------------------+----------+ + | Name | Description | Type | Available value | Default value | Required | + +==============================+=========================================+=========+============================+============================+==========+ + | method | Method for fusion | string | "mapping_to_terrain_tiles" | "mapping_to_terrain_tiles" | No | + +------------------------------+-----------------------------------------+---------+----------------------------+----------------------------+----------+ + | save_points_cloud_as_laz | Save points clouds as laz format | boolean | | false | No | + +------------------------------+-----------------------------------------+---------+----------------------------+----------------------------+----------+ + | save_points_cloud_as_csv | Save points clouds as csv format | boolean | | false | No | + +------------------------------+-----------------------------------------+---------+----------------------------+----------------------------+----------+ + | save_points_cloud_by_pair | Enable points cloud saving by pair | boolean | | false | No | + +------------------------------+-----------------------------------------+---------+----------------------------+----------------------------+----------+ **Example** @@ -1238,15 +1298,16 @@ The structure follows this organisation: "applications": { "point_cloud_fusion": { "method": "mapping_to_terrain_tiles", - "save_intermediate_data": true, - "save_by_pair": true, + "save_points_cloud_as_laz": true, + "save_points_cloud_as_csv": true, + "save_points_cloud_by_pair": true, } }, .. note:: - When `save_intermediate_data` is activated, multiple Laz and csv files are saved, corresponding to each processed terrain tiles. + When `save_points_cloud_as_laz` is activated, multiple Laz files are saved, corresponding to each processed terrain tiles. Please, see the section :ref:`merge_laz_files` to merge them into one single file. - `save_by_pair` parameter enables saving by input pair. The csv/laz name aggregates row, col and corresponding pair key. + `save_points_cloud_by_pair` parameter enables saving by input pair. The csv/laz name aggregates row, col and corresponding pair key. .. tab:: Point Cloud outliers removing @@ -1263,9 +1324,11 @@ The structure follows this organisation: +==============================+==========================================+=========+===================================+===============+==========+ | method | Method for point cloud outliers removing | string | "statistical", "small_components" | "statistical" | No | +------------------------------+------------------------------------------+---------+-----------------------------------+---------------+----------+ - | save_intermediate_data | Save points clouds as laz and csv format | boolean | | false | No | + | save_points_cloud_as_laz | Save points clouds as laz format | boolean | | false | No | + +------------------------------+------------------------------------------+---------+-----------------------------------+---------------+----------+ + | save_points_cloud_as_csv | Save points clouds as csv format | boolean | | false | No | +------------------------------+------------------------------------------+---------+-----------------------------------+---------------+----------+ - | save_by_pair | Enable points cloud saving by pair | boolean | | false | No | + | save_points_cloud_by_pair | Enable points cloud saving by pair | boolean | | false | No | +------------------------------+------------------------------------------+---------+-----------------------------------+---------------+----------+ If method is *statistical*: @@ -1317,13 +1380,14 @@ The structure follows this organisation: "point_cloud_outliers_removing.1": { "method": "small_components", "on_ground_margin": 10, - "save_intermediate_data": true + "save_points_cloud_as_laz": true, + "save_points_cloud_as_csv": false }, "point_cloud_outliers_removing.2": { "method": "statistical", "k": 10, - "save_intermediate_data": true, - "save_by_pair": true, + "save_points_cloud_as_laz": true, + "save_points_cloud_by_pair": true, } }, @@ -1371,6 +1435,12 @@ The structure follows this organisation: - - None - No + * - resolution + - Altitude grid step (dsm) + - float + - should be > 0 + - 0.5 + - No * - dsm_no_data - - int @@ -1397,8 +1467,67 @@ The structure follows this organisation: - - 255 - - * - save_intermediate_data - - Save all layers from input point cloud in application `dump_dir` + * - save_color + - Save color ortho-image + - boolean + - + - true + - No + * - save_stats + - + - boolean + - + - false + - No + * - save_mask + - Save mask raster + - boolean + - + - false + - No + * - save_classif + - Save classification mask raster + - boolean + - + - false + - No + * - save_dsm + - Save dsm + - boolean + - + - true + - No + * - save_confidence + - Save all the disparity confidence + - boolean + - + - false + - No + * - save_intervals + - | Save the propagated height confidence intervals + | Confidence disparity intervals must have been + | computed during the dense matching step. + - boolean + - + - false + - No + * - save_source_pc + - Save mask with data source + - boolean + - + - false + - No + * - save_filling + - Save mask with filling information + - boolean + - + - false + - No + * - compute_all + - | Compute all layers even + | if one or more layers + | are not saved (color + | , dsm, msk..) - boolean - - false @@ -1415,148 +1544,30 @@ The structure follows this organisation: } }, - .. tab:: Advanced parameters - - - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - | Name | Description | Type | Default value | Required | - +============================+=========================================================================+=======================+======================+==========+ - | *save_intermediate data* | Save intermediate data for all applications | bool | False | Yes | - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *use_epipolar_a_priori* | Active epipolar a priori | bool | False | Yes | - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *epipolar_a_priori* | Provide epipolar a priori information (see section below) | dict | | No | - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *terrain_a_priori* | Provide terrain a priori information (see section below) | dict | | No | - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - | *debug_with_roi* | Use input ROI with the tiling of the entire image (see Inputs section) | Boolean | False | No | - +----------------------------+-------------------------------------------------------------------------+-----------------------+----------------------+----------+ - - - **Save intermediate data** - - The `save_intermediate_data` flag can be used to activate and deactivate the saving of the possible output of applications. - - It is set in the `advanced` category and can be overloaded in each application separately. It default to false, meaning that no intermediate product in saved). Intermediate data are saved in the `dump_dir` folder found in cars output directory, with a subfolder corresponding to each application. - - For exemple setting `save_intermediate_data` to `true` in `advanced` and to `false` in `application/point_cloud_rasterization` will activate product saving in all applications excepting `point_cloud_rasterization`. Conversely, setting it to `false` in `advanced` and to `true` in `application/point_cloud_rasterization` will only save rasterization outputs. - - Intermediate data refers to all files that are not part of an output product. Files that compose an output product will not be found in the application dump directory. For exemple if `dsm` is requested as output product, the `dsm.tif` files and all activated dsm auxiliary files will not be found in `rasterization` dump directory. This directory will still contain the files generated by the `rasterization` application that are not part of the `dsm` product. - - - **Epipolar a priori** - - The epipolar is usefull to accelerate the preliminary steps of the grid correction and the disparity range evaluation, - particularly for the sensor_to_full_resolution_dsm pipeline. - The epipolar_a_priori data dict is produced during low or full resolution dsm pipeline. - However, the epipolar_a_priori should be not activated for the sensor_to_low_resolution_dsm. - So, the sensor_to_low_resolution_dsm pipeline produces a refined_conf_full_res.json in the outdir - that contains the epipolar_a_priori information for each sensor image pairs. - The epipolar_a_priori is also saved in the used_conf.json with the sensor_to_full_resolution_dsm pipeline. - - For each sensor images, the epipolar a priori are filled as following: - - +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - | Name | Description | Type | Default value | Required | - +=======================+=============================================================+========+================+==================================+ - | *grid_correction* | The grid correction coefficients | list | | if use_epipolar_a_priori is True | - +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - | *disparity_range* | The disparity range [disp_min, disp_max] | list | | if use_epipolar_a_priori is True | - +-----------------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - - .. note:: - - The grid correction coefficients are based on bilinear model with 6 parameters [x1,x2,x3,y1,y2,y3]. - The None value produces no grid correction (equivalent to parameters [0,0,0,0,0,0]). - - - **Terrain a priori** - - The terrain a priori is used at the same time that epipolar a priori. - If use_epipolar_a_priori is activated, epipolar_a_priori and terrain_a_priori must be provided. - The terrain_a_priori data dict is produced during low or full resolution dsm pipeline. - - The terrain a priori is initially populated with DEM information. - - +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - | Name | Description | Type | Default value | Required | - +================+=============================================================+========+================+==================================+ - | *dem_median* | DEM generated with median function | str | | if use_epipolar_a_priori is True | - +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - | *dem_min* | DEM generated with min function | str | | if use_epipolar_a_priori is True | - +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - | *dem_max* | DEM generated with max function | str | | if use_epipolar_a_priori is True | - +----------------+-------------------------------------------------------------+--------+----------------+----------------------------------+ - - - **Example** - - .. code-block:: json - - "advanced": { - "save_intermediate_data": true - } - }, - .. tab:: Outputs - - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | Name | Description | Type | Default value | Required | - +==================+=============================================================+====================+======================+==========+ - | *directory* | Output folder where results are stored | string | No | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *product_level* | Output requested products (dsm, point_cloud, depth_map) | list or string | "dsm" | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *resolution* | Output DSM grid strp (only for dsm product level) | float | 0.5 | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *auxiliary* | Selection of additional files in products | dict | See below | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *epsg* | EPSG code | int, should be > 0 | None | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *geoid* | Output geoid | bool or string | False | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - | *save_by_pair* | save output point clouds by pair | bool | False | No | - +------------------+-------------------------------------------------------------+--------------------+----------------------+----------+ - + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ + | Name | Description | Type | Default value | Required | + +================+=============================================================+================+================+==========+ + | out_dir | Output folder where results are stored | string | No | No | + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ + | dsm_basename | base name for dsm | string | "dsm.tif" | No | + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ + | geoid | output geoid | bool or string | False | No | + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ + | color_basename | base name for ortho-image | string | "color.tif | No | + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ + | info_basename | base name for file containing information about computation | string | "content.json" | No | + +----------------+-------------------------------------------------------------+----------------+----------------+----------+ **Output contents** The output directory, defined on the configuration file (see previous section) contains at the end of the computation: - * the required product levels (`depth_map`, `dsm` and/or `point_cloud`) - * the dump directory (`dump_dir`) containing intermediate data for all applications - * metadata json file containing: used parameters, information and numerical results related to computation, step by step and pair by pair. - * logs folder containing Cars log and profiling information - - - **Output products** - - The `product_level` attribute defines which product should be produced by cars. There are three available product type: `depth_map`, `point_cloud` and `dsm`. A single product can be requested by setting the parameter as string, several products can be requested by providing a list. For `depth_map` and `dsm`, additional auxiliary files can be produced with the product by setting the `auxiliary` dictionary attribute, it contains the following attributes: - - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | Name | Description | Type | Default value | Required | - +=======================+=============================================================+========+================+===========+ - | *color* | Save output color (dsm/depth_map) | bool | True | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | *mask* | Save output mask (dsm/depth map) | bool | False | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | *classification* | Save output classification (dsm/depth_map) | bool | False | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | *performance_map* | Save output performance map (dsm) | bool | False | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | *contributing_pair* | Save output contributing pair (dsm) | bool | False | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - | *filling* | Save output filling (dsm) | bool | False | No | - +-----------------------+-------------------------------------------------------------+--------+----------------+-----------+ - - Note that not all rasters associated to the DSM that cars can produce are available in the output product auxiliary data. For exemple, confidence intervals are not part of the output product but can be found in the rasterization `dump_dir` if `generate_confidence_intervals` is activated in the `dense_matching` application (to compute the confidence) and `save_intermediate_data` is activated in the `rasterization` application configuration (to write it on disk). - - **Point cloud output** - - The point cloud output product consists of a collection of laz files, each containing a tile of the point cloud. If the `save_by_pair` option is set, laz will be produced for each sensor pair defined in input pairing. - - The point cloud found in the product the highest level point cloud produced by cars. For exemple, if outlier removing and point cloud denoising are deactivated, the point cloud will correspond to the output of point cloud fusion. If only the first application of outlier removing is activated, this will be the output point cloud. + * the dsm + * color image (if *color image* has been given) + * information json file containing: used parameters, information and numerical results related to computation, step by step and pair by pair. + * subfolder for each defined pair which can contains intermediate data **Geoid** @@ -1605,7 +1616,7 @@ This section describes optional plugins possibilities of CARS. }, "pairing": [["one", "two"]], "initial_elevation": { - "dem": "path/to/srtm_file.tif" + "dem_path": "path/to/srtm_file.tif" }, }, "geometry_plugin": "SharelocGeometry", diff --git a/tutorials/data_gizeh.tar.bz2.md5sum b/tutorials/data_gizeh.tar.bz2.md5sum index 0d148d7e..a25ce71a 100644 --- a/tutorials/data_gizeh.tar.bz2.md5sum +++ b/tutorials/data_gizeh.tar.bz2.md5sum @@ -1 +1 @@ -6f2fc0d739cdc0296bd0c3d03c7d9be4 data_gizeh.tar.bz2 +54e915c71c1f0f9da4ce09c102988127 data_gizeh.tar.bz2 diff --git a/tutorials/data_gizeh_small.tar.bz2.md5sum b/tutorials/data_gizeh_small.tar.bz2.md5sum index 85f3205a..e51fa2fc 100644 --- a/tutorials/data_gizeh_small.tar.bz2.md5sum +++ b/tutorials/data_gizeh_small.tar.bz2.md5sum @@ -1 +1 @@ -6c3d85d319c54db80ac3005084edd918 data_gizeh_small.tar.bz2 +a09e89fc44d7b4f69f180a3b687e8682 data_gizeh_small.tar.bz2