17#include "reusex/core/frame_visibility.hpp"
42 using std::runtime_error::runtime_error;
46 Eigen::Vector3d
centroid = Eigen::Vector3d::Zero();
62std::map<std::uint32_t, InstanceCentroid>
64 std::string_view positions_cloud =
"cloud");
93std::map<std::uint32_t, InstanceProbe>
95 std::string_view positions_cloud =
"cloud",
128std::map<std::uint32_t, InstanceEvidence>
131 std::string_view positions_cloud =
"cloud",
132 const std::atomic<bool> *cancel =
nullptr);
135std::map<std::uint32_t, PartPhotos>
138 std::string_view positions_cloud =
"cloud");
190std::vector<PanoramaSighting>
Mean position of one instance's points.
Wire form of one stored report PDF version — the ReportPdfVersion schema in ruxd's API contract (docs...
std::map< std::uint32_t, InstanceProbe > instance_probes(const ProjectDB &db, std::string_view label_cloud, std::string_view positions_cloud="cloud", std::size_t samples=PhotoQuery{}.samples_per_instance)
instance_centroids() plus up to samples points per instance, taken at evenly spaced positions in the ...
std::map< std::uint32_t, InstanceEvidence > instance_evidence(const ProjectDB &db, std::string_view label_cloud, const PhotoQuery &query={}, std::string_view positions_cloud="cloud", const std::atomic< bool > *cancel=nullptr)
The ranked, occlusion-aware frames of every instance of label_cloud that has points: visible_frames_o...
std::vector< PanoramaSighting > panoramas_for_point(const ProjectDB &db, const Eigen::Vector3d &world_point, const PanoramaQuery &query={})
Panoramas that can be placed in the world, nearest first, with where world_point appears in each.
PanoramaHeading
Where a panorama's orientation comes from (mirrors the frontend's PanoramaHeading in viewport/panoram...
@ resected
rux align 360 pose: position and heading measured.
@ levelled
Matched frame's position, heading unknown (LEVELLED basis).
Eigen::Vector2d equirect_uv(const Eigen::Vector3d &bearing)
Normalised equirect coordinates of a bearing in the panorama frame.
std::map< std::uint32_t, PartPhotos > instance_photos(const ProjectDB &db, std::string_view label_cloud, const PhotoQuery &query={}, std::string_view positions_cloud="cloud")
instance_evidence() reduced to count + best frame per instance.
std::map< std::uint32_t, InstanceCentroid > instance_centroids(const ProjectDB &db, std::string_view label_cloud, std::string_view positions_cloud="cloud")
Centroid of every instance id in an instance-label cloud.
std::size_t point_count
Finite points averaged.
Everything the photo evidence knows about one instance: where it is and the frames that see it,...
std::vector< FrameVisibility > frames
InstanceCentroid centroid
PartPhotos photos() const
An instance's centroid plus evenly spread samples of its points.
std::vector< Eigen::Vector3d > samples
InstanceCentroid centroid
VisibilityProbe probe() const
Tunables for visible_frames_occluded().
Tunables for panoramas_for_point().
double max_distance
Drop panoramas whose centre is farther than this from the point, in metres.
One panorama near a world point.
double u
Equirect column of the point, 0..1 (left to right).
int node_id
Matched sensor frame, -1 if none.
double v
Equirect row of the point, 0..1 (0 = north pole).
double distance
Panorama centre to the point, metres.
The photo evidence of one survey part.
std::size_t count
Sensor frames that see the instance.
std::optional< int > best_frame_id
Most central of them, if any.
Tunables for the photo evidence of an instance.
OcclusionQuery occlusion
How a frame decides it sees the instance (depth tolerance etc.).
std::size_t samples_per_instance
Surface points per instance tested besides the centroid (spread evenly over the instance's points).
What visible_frames_occluded() tests for one object: an anchor that decides the frustum test and the ...