:py:mod:`cars.applications.triangulation.line_of_sight_intersection` ==================================================================== .. py:module:: cars.applications.triangulation.line_of_sight_intersection .. autoapi-nested-parse:: this module contains the LineOfSightIntersection application class. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: cars.applications.triangulation.line_of_sight_intersection.LineOfSightIntersection Functions ~~~~~~~~~ .. autoapisummary:: cars.applications.triangulation.line_of_sight_intersection.triangulation_wrapper cars.applications.triangulation.line_of_sight_intersection.triangulation_wrapper_matches .. py:class:: LineOfSightIntersection(conf=None) Bases: :py:obj:`cars.applications.triangulation.triangulation.Triangulation` Triangulation .. py:method:: check_conf(conf) Check configuration :param conf: configuration to check :type conf: dict :return: overloaded configuration :rtype: dict .. py:method:: save_triangulation_output(epipolar_point_cloud, sensor_image_left, output_dir, dump_dir=None, performance_maps_to_generate=None, save_output_coordinates=True, save_output_color=True, save_output_classification=False, save_output_mask=False, save_output_filling=False, save_output_performance_map=False, save_output_ambiguity=False) Save the triangulation output. The different TIFs composing the depth map are written to the output directory. Auxiliary products can be requested or not using the parameters. A dump directory can also be provided to write any additionnal files that have not been written to the output directory (because they are not part of the depth map definition, or because they have not been requested). :param epipolar_point_cloud: tiled epipolar left image :type epipolar_point_cloud: CarsDataset :param sensor_image_left: tiled sensor left image Dict Must contain keys : "image", "color", "geomodel", "no_data", "mask". Paths must be absolutes :type sensor_image_left: CarsDataset :param output_dir: directory to write triangulation output depth map. :type output_dir: None or str :param dump_dir: folder used as dump directory for current pair, None to deactivate intermediate data writing :type dump_dir: str :param performance_maps_to_generate: None or list containing "risk" or "intervals" :type performance_maps_to_generate: None or list containing "risk" or "intervals" :param save_output_coordinates: Save X, Y and Z coords in output_dir :type save_output_coordinates: bool :param save_output_color: Save color depth map in output_dir :type save_output_color: bool :param save_output_classification: Save classification depth map in output_dir :type save_output_classification: bool :param save_output_mask: Save mask depth map in output_dir :type save_output_mask: bool :param save_output_filling: Save filling depth map in output_dir :type save_output_filling: bool :param save_output_performance_map: Save performance map in output_dir :type save_output_performance_map: bool :param save_output_ambiguity: Save ambiguity in output_dir :type save_output_ambiguity: bool .. py:method:: fill_index(save_output_coordinates=True, save_output_color=True, save_output_classification=False, save_output_mask=False, save_output_filling=False, save_output_performance_map=False, save_output_ambiguity=False, pair_key='PAIR_0') Fill depth map index for current pair, according to which product should be saved :param save_output_coordinates: Save X, Y and Z coords in output_dir :type save_output_coordinates: bool :param save_output_color: Save color depth map in output_dir :type save_output_color: bool :param save_output_classification: Save classification depth map in output_dir :type save_output_classification: bool :param save_output_mask: Save mask depth map in output_dir :type save_output_mask: bool :param save_output_filling: Save filling depth map in output_dir :type save_output_filling: bool :param save_output_performance_map: Save performance map in output_dir :type save_output_performance_map: bool :param save_output_ambiguity: Save ambiguity in output_dir :type save_output_ambiguity: bool :param pair_key: name of the current pair :type pair_key: str .. py:method:: create_point_cloud_directories(pair_dump_dir, point_cloud_dir, point_cloud) Set and create directories for point cloud disk output (laz and csv) The function return None path if the point cloud should not be saved :param pair_dump_dir: folder used as dump directory for current pair :type pair_dump_dir: str :param point_cloud_dir: folder used for laz official product directory :type point_cloud_dir: str :param point_cloud: input point cloud (for orchestrator registration) :type point_cloud: Dataset .. py:method:: run(sensor_image_left, sensor_image_right, grid_left, grid_right, epipolar_disparity_map, geometry_plugin, epipolar_image, epsg=None, denoising_overload_fun=None, source_pc_names=None, orchestrator=None, pair_dump_dir=None, pair_key='PAIR_0', uncorrected_grid_right=None, geoid_path=None, cloud_id=None, performance_maps_param=None, depth_map_dir=None, point_cloud_dir=None, save_output_coordinates=False, save_output_color=False, save_output_classification=False, save_output_mask=False, save_output_filling=False, save_output_performance_map=False, save_output_ambiguity=False) Run Triangulation application. Created left and right CarsDataset filled with xarray.Dataset, corresponding to 3D point clouds, stored on epipolar geometry grid. :param sensor_image_left: tiled sensor left image Dict Must contain keys : "image", "color", "geomodel", "no_data", "mask". Paths must be absolutes :type sensor_image_left: CarsDataset :param sensor_image_right: tiled sensor right image Dict Must contain keys : "image", "color", "geomodel", "no_data", "mask". Paths must be absolutes :type sensor_image_right: CarsDataset :param grid_left: left epipolar grid. Grid CarsDataset contains : - A single tile stored in [0,0], containing a (N, M, 2) shape array in xarray Dataset - Attributes containing: "grid_spacing", "grid_origin", "epipolar_size_x", epipolar_size_y", "epipolar_origin_x", "epipolar_origin_y","epipolar_spacing_x", "epipolar_spacing", "disp_to_alt_ratio", :type grid_left: CarsDataset :param grid_right: right epipolar grid. Grid CarsDataset contains : - A single tile stored in [0,0], containing a (N, M, 2) shape array in xarray Dataset - Attributes containing: "grid_spacing", "grid_origin", "epipolar_size_x", epipolar_size_y", "epipolar_origin_x", "epipolar_origin_y","epipolar_spacing_x", "epipolar_spacing", "disp_to_alt_ratio", :type grid_right: CarsDataset :param epipolar_disparity_map: tiled left disparity map or sparse matches: - if CarsDataset is instance of "arrays", CarsDataset contains: - N x M Delayed tiles Each tile will be a future xarray Dataset containing: - data with keys : "disp", "disp_msk" - attrs with keys: profile, window, overlaps - attributes containing:"largest_epipolar_region" "opt_epipolar_tile_size" - if CarsDataset is instance of "points", CarsDataset contains: - N x M Delayed tiles Each tile will be a future pandas DataFrame containing: - data : (L, 4) shape matches - attributes containing:"disp_lower_bound","disp_upper_bound", "elevation_delta_lower_bound","elevation_delta_upper_bound" :type epipolar_disparity_map: CarsDataset :param epipolar_image: tiled epipolar left image :type epipolar_image: CarsDataset :param denoising_overload_fun: function to overload dataset :type denoising_overload_fun: fun :param source_pc_names: source pc names :type source_pc_names: list[str] :param orchestrator: orchestrator used :param pair_dump_dir: folder used as dump directory for current pair :type pair_dump_dir: str :param pair_key: pair key id :type pair_key: str :param uncorrected_grid_right: not corrected right epipolar grid used if self.snap_to_img1 :type uncorrected_grid_right: CarsDataset :param geoid_path: geoid path :type geoid_path: str :param performance_maps_param: parameters used to generate performance map :type performance_maps_param: dict or None :param depth_map_dir: directory to write triangulation output depth map. :type depth_map_dir: None or str :param save_output_coordinates: Save X, Y, Z coords in depth_map_dir :type save_output_coordinates: bool :param save_output_color: Save color depth map in depth_map_dir :type save_output_color: bool :param save_output_classification: Save classification depth map in depth_map_dir :type save_output_classification: bool :param save_output_mask: Save mask depth map in depth_map_dir :type save_output_mask: bool :param save_output_filling: Save filling depth map in depth_map_dir :type save_output_filling: bool :param save_output_performance_map: Save performance map in depth_map_dir :type save_output_performance_map: bool :param save_output_ambiguity: Save ambiguity in depth_map_dir :type save_output_ambiguity: bool :return: point cloud The CarsDataset contains: - N x M Delayed tiles Each tile will be a future xarray Dataset containing: - data : with keys : "x", "y", "z", "corr_msk" optional: "color", "msk", "z_inf", "z_sup" - attrs with keys: "margins", "epi_full_size", "epsg" - attributes containing: "disp_lower_bound", "disp_upper_bound", "elevation_delta_lower_bound","elevation_delta_upper_bound" :rtype: Tuple(CarsDataset, CarsDataset) .. py:function:: triangulation_wrapper(disparity_object: xarray.Dataset, sensor1, sensor2, geomodel1, geomodel2, grid1, grid2, geometry_plugin, epsg, geoid_path=None, denoising_overload_fun=None, cloud_id=None, performance_maps_to_generate=None, performance_maps_parameters=None, point_cloud_csv_file_name=None, point_cloud_laz_file_name=None, saving_info_epipolar=None, saving_info_flatten=None) -> Dict[str, Tuple[xarray.Dataset, xarray.Dataset]] Compute point clouds from image objects and disparity objects. :param disparity_object: Left disparity map dataset with : - cst_disp.MAP - cst_disp.VALID - cst.EPI_COLOR :type disparity_object: xr.Dataset :param sensor1: path to left sensor image :type sensor1: str :param sensor2: path to right sensor image :type sensor2: str :param geomodel1: path and attributes for left geomodel :type geomodel1: dict :param geomodel2: path and attributes for right geomodel :type geomodel2: dict :param grid1: dataset of the reference image grid file :type grid1: CarsDataset :param grid2: dataset of the secondary image grid file :type grid2: CarsDataset :param geometry_plugin: geometry plugin to use :type geometry_plugin: AbstractGeometry :param geoid_path: Geoid used for altimetric reference. Defaults to None for using ellipsoid as altimetric reference. :type geoid_path: str :param performance_maps_to_generate: None or list containing "risk" or "intervals" :param performance_maps_parameters: parameters used to generate performance map :type performance_maps_parameters: dict or None :param denoising_overload_fun: function to overload dataset :type denoising_overload_fun: fun :return: Left disparity object Returned object is composed of : - dataset with : - cst.X - cst.Y - cst.Z - cst.EPI_COLOR - cst.Z_INF (optional) - cst.Z_SUP (optional) .. py:function:: triangulation_wrapper_matches(matches, sensor1, sensor2, geomodel1, geomodel2, grid1, grid2, geometry_plugin, full_saving_info_matches, epsg) :param matches: matches :type matches: cars_dataset :param sensor1: path to left sensor image :type sensor1: str :param sensor2: path to right sensor image :type sensor2: str :param interpolated_grid1: rectification grid left :type interpolated_grid1: shareloc.rectificationGrid :param interpolated_grid2: rectification grid right :type interpolated_grid2: shareloc.rectificationGrid :param geometry_plugin: geometry plugin to use :type geometry_plugin: AbstractGeometry :param epsg: ground epsg :type epsg: int