55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <pcl/tracking/coherence.h>
|
|
#include <pcl/memory.h>
|
|
|
|
namespace pcl {
|
|
namespace tracking {
|
|
/** \brief @b DistanceCoherence computes coherence between two points from the distance
|
|
* between them. the coherence is calculated by 1 / (1 + weight * d^2 ).
|
|
* \author Ryohei Ueda
|
|
* \ingroup tracking
|
|
*/
|
|
template <typename PointInT>
|
|
class DistanceCoherence : public PointCoherence<PointInT> {
|
|
public:
|
|
using Ptr = shared_ptr<DistanceCoherence<PointInT>>;
|
|
using ConstPtr = shared_ptr<const DistanceCoherence<PointInT>>;
|
|
|
|
/** \brief initialize the weight to 1.0. */
|
|
DistanceCoherence() : PointCoherence<PointInT>(), weight_(1.0) {}
|
|
|
|
/** \brief set the weight of coherence.
|
|
* \param weight the value of the wehgit.
|
|
*/
|
|
inline void
|
|
setWeight(double weight)
|
|
{
|
|
weight_ = weight;
|
|
}
|
|
|
|
/** \brief get the weight of coherence.*/
|
|
inline double
|
|
getWeight()
|
|
{
|
|
return weight_;
|
|
}
|
|
|
|
protected:
|
|
/** \brief return the distance coherence between the two points.
|
|
* \param source instance of source point.
|
|
* \param target instance of target point.
|
|
*/
|
|
double
|
|
computeCoherence(PointInT& source, PointInT& target) override;
|
|
|
|
/** \brief the weight of coherence.*/
|
|
double weight_;
|
|
};
|
|
} // namespace tracking
|
|
} // namespace pcl
|
|
|
|
#ifdef PCL_NO_PRECOMPILE
|
|
#include <pcl/tracking/impl/distance_coherence.hpp>
|
|
#endif
|