MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ membership() [2/2]

double MayaFlux::Kinesis::membership ( const EllipsoidExtent extent,
const Eigen::VectorXd &  point,
const FeatureMetric metric 
)
inline

Graded membership of a point in an ellipsoid extent.

Parameters
extentExtent to test against
pointObservation, same dimension as the extent
metricSupplies wrapping on the offset from the centre
Returns
1.0 at normalized distance one or below, falling to 0.0 at one plus softness

Definition at line 208 of file FeatureExtent.hpp.

212{
213 const Eigen::VectorXd d = metric.delta(point, extent.centre);
214 double acc = 0.0;
215 for (Eigen::Index i = 0; i < d.size(); ++i) {
216 const double r = (extent.radii(i) > 0.0) ? extent.radii(i) : 1e-12;
217 const double s = d(i) / r;
218 acc += s * s;
219 }
220 const double normalized = std::sqrt(acc);
221 if (normalized <= 1.0)
222 return 1.0;
223 return 1.0 - detail::ramp(1.0, 1.0 + std::max(extent.softness, 1e-12), normalized);
224}
std::vector< double > normalized(const std::vector< double > &data, double target_peak)
Normalize single-channel data (non-destructive)
Definition Yantra.cpp:588
Eigen::VectorXd radii
Per-axis extent at which normalized distance reaches one.
Eigen::VectorXd centre
Prototype point.
double softness
Additional normalized distance over which membership falls to zero.
Eigen::VectorXd delta(const Eigen::VectorXd &a, const Eigen::VectorXd &b) const
Componentwise difference, wrapped on any axis with a period.

References MayaFlux::Kinesis::EllipsoidExtent::centre, MayaFlux::Kinesis::FeatureMetric::delta(), MayaFlux::normalized(), MayaFlux::Kinesis::EllipsoidExtent::radii, MayaFlux::Kinesis::detail::ramp(), and MayaFlux::Kinesis::EllipsoidExtent::softness.

+ Here is the call graph for this function: