enum mola::ViewDirectionFilter
Overview
How nn_search_cov2cov() of KeyframePointCloudMap and IncrementalPointCloud uses per-point view directions (view_x, view_y, view_z : unit vectors pointing FROM each point TOWARD the sensor at acquisition time) to reject a cov-to-cov pair. More…
#include <ViewDirectionFilter.h> enum ViewDirectionFilter { None = 0, MaxAngle, SurfaceSide, };
Detailed Documentation
How nn_search_cov2cov() of KeyframePointCloudMap and IncrementalPointCloud uses per-point view directions (view_x, view_y, view_z : unit vectors pointing FROM each point TOWARD the sensor at acquisition time) to reject a cov-to-cov pair. The test only runs when both the map and the query cloud carry those fields, and a zero (missing) direction never rejects a pair.
Selected by the view_direction_filter creation option of both classes, subject to their use_view_direction_filter master switch.
Enum Values
None
No filtering.
MaxAngle
Reject a pair whose two view directions are more than max_view_angle_deg apart. Rejects the two faces of a thin structure, but also the same surface seen from very different directions on the same side, e.g. ground observed from opposite azimuths.
SurfaceSide
Reject a pair only when both views see the matched map point’s surface clearly (more than ~14.5 deg off its plane) and from opposite sides of it, as given by the normal of that point’s covariance, and the raw (not regularized) neighborhood of that point is actually flat. Points on foliage, edges or poles, whose regularized covariance also looks like a plane but whose normal says nothing about sides, are never rejected; neither is the same surface seen from very different azimuths on the same side, e.g. ground.