Go to the documentation of this file. 1 #ifndef PRIMITIVESHAPE_HEADER
2 #define PRIMITIVESHAPE_HEADER
37 virtual size_t Identifier()
const = 0;
39 virtual unsigned int RequiredSamples()
const = 0;
41 virtual float Distance(
const Vec3f& p)
const = 0;
42 virtual float SignedDistance(
const Vec3f& p)
const = 0;
43 virtual float NormalDeviation(
const Vec3f& p,
44 const Vec3f& n)
const = 0;
47 virtual void DistanceAndNormalDeviation(
49 std::pair< float, float >* dn)
const = 0;
51 virtual void Project(
const Vec3f& p,
Vec3f* pp)
const = 0;
53 virtual void Normal(
const Vec3f& p,
Vec3f* n)
const = 0;
58 virtual size_t ConnectedComponent(
const PointCloud&
pc,
float epsilon,
60 virtual unsigned int ConfidenceTests(
unsigned int numTests,
61 float epsilon,
float normalThresh,
float rms,
const PointCloud&
pc,
64 virtual void Description(std::string*
s)
const = 0;
73 std::pair< size_t, float >* score)
const = 0;
77 virtual void TrimmingPolygons(
const PointCloud&
pc,
float epsilon,
78 size_t begin,
size_t end,
79 std::deque< ComponentPolygons >* polys)
const = 0;
81 virtual void GenerateBitmapPoints(
const PointCloud&
pc,
float epsilon,
82 size_t begin,
size_t end,
PointCloud* bmpPc)
const = 0;
86 virtual void Serialize(std::ostream* o,
bool binary =
true)
const = 0;
87 virtual size_t SerializedSize()
const = 0;
89 virtual void Serialize(
float* array)
const = 0;
90 virtual size_t SerializedFloatSize()
const = 0;
91 virtual void Transform(
float scale,
const Vec3f& translate) = 0;
98 size_t begin,
size_t end,
float epsilon) {}
100 virtual void Parameters(
const Vec3f& p,
101 std::pair< float, float >* param)
const = 0;
103 virtual bool InSpace(
float u,
float v,
Vec3f* p,
Vec3f* n)
const = 0;
MiscLib::Vector< BitmapPolygon > ComponentPolygons
PrimtiveShape is a shape primitive in conjunction with a parametrization.
virtual void SuggestSimplifications(const PointCloud &pc, MiscLib::Vector< size_t >::const_iterator begin, MiscLib::Vector< size_t >::const_iterator end, float distThresh, MiscLib::Vector< MiscLib::RefCountPtr< PrimitiveShape > > *suggestions) const
MiscLib::Vector< GfxTL::VectorXD< 2, size_t > > BitmapPolygon
pcl::PointIndices::Ptr indices(const PCG &g)
Retrieve the indices of the points of the point cloud stored in a point cloud graph that actually bel...
virtual void OptimizeParametrization(const PointCloud &pc, size_t begin, size_t end, float epsilon)
double v(double t, double v0, double a0, double j)
Introduction Thank you for taking interest in our work and downloading this software This library implements the algorithm described in the paper R R R Klein Efficient RANSAC for Point Cloud Shape in Computer Graphics Blackwell June If you use this software you should cite the aforementioned paper in any resulting publication Please send comments or bug reports to Ruwen Roland BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY OR CONSEQUENTIAL WHETHER IN STRICT OR EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE Example usage This section shows how to use the library to detect the shapes in a point cloud PointCloud pc
double s(double t, double s0, double v0, double a0, double j)