34#include "PhotogrammetryOptions.h"
35#include "PhotogrammetryGPSAlign.h"
36#include <NDEVR/BaseValues.h>
37#include <NDEVR/Buffer.h>
38#include <NDEVR/File.h>
40#include <NDEVR/String.h>
41#include <NDEVR/Vector.h>
42#include <NDEVR/Vertex.h>
45#include <unordered_map>
49namespace openMVG {
namespace sfm {
struct SfM_Data; } }
50namespace MVS {
class Interface;
class Scene; }
61 class DRONE_PHOTOGRAMMETRY_API PhotogrammetryDense
64 using ProgressFn = std::function<void(fltp04)>;
65 using ResultFn = std::function<void(PhotogrammetryResult)>;
73 const openMVG::sfm::SfM_Data& sfm_data,
74 const Buffer<File>& dense_images,
75 const Buffer<Vector<2, uint04>>& dense_sizes,
76 const GPSAlignmentResult& gps_alignment,
77 const std::unordered_map<uint32_t, std::array<double, 3>>& gps_lla,
78 const PhotogrammetryOptions& options,
79 const File& temp_folder,
81 ProgressFn progress_fn,
83 const bool& cancel_flag,
84 const Buffer<bool>& dense_keyframes = Buffer<bool>());
89 struct MVSInterfaceMappings
91 std::unordered_map<uint32_t, uint32_t> view_id_to_mvs_idx;
92 std::unordered_map<uint32_t, uint32_t> mvs_idx_to_view_id;
93 Vector<3, fltp08> sfm_centroid;
95 static bool buildMVSInterface(
96 MVS::Interface& mvs_interface,
97 MVSInterfaceMappings& mappings,
98 const openMVG::sfm::SfM_Data& sfm_data,
99 const Buffer<File>& dense_images,
100 const Buffer<Vector<2, uint04>>& dense_sizes,
104 static bool initializeMVSScene(
105 MVS::Scene& mvs_scene,
106 const MVS::Interface& mvs_interface,
107 const File& temp_mvs_file,
108 uint04 mvs_image_count,
112 static void configureOptDenseParameters(
113 const MVS::Interface& mvs_interface,
114 const PhotogrammetryOptions& options,
118 static bool runCpuDenseReconstruction(
119 MVS::Scene& mvs_scene,
120 const File& temp_mvs_file,
123#if defined(VULKAN_COMPUTE_DLL)
125 static void runGpuDepthEstimation(
126 const MVS::Interface& mvs_interface,
127 MVS::Scene& mvs_scene,
128 const File& temp_mvs_file,
130 ProgressFn progress_fn,
131 const bool& cancel_flag,
132 DenseReconstructionMode dense_mode,
133 const Buffer<bool>& dense_keyframe_mask = Buffer<bool>());
136 static void fuseGPUDepthMaps(
137 MVS::Scene& mvs_scene,
138 const MVS::Interface& mvs_interface,
139 const File& temp_mvs_file,
144 static void buildResultWithGPSAlignment(
145 PhotogrammetryResult& result,
146 const MVS::Scene& mvs_scene,
147 const MVS::Interface& mvs_interface,
148 const MVSInterfaceMappings& mappings,
149 const GPSAlignmentResult& gps_alignment,
150 const std::unordered_map<uint32_t, std::array<double, 3>>& gps_lla,
154 static void buildResultWithUprightOrientation(
155 PhotogrammetryResult& result,
156 const MVS::Scene& mvs_scene,
157 const MVS::Interface& mvs_interface,
158 const openMVG::sfm::SfM_Data& sfm_data,
The primary namespace for the NDEVR SDK.
Holds the raw output of a completed photogrammetry run before it is committed to the scene.