本文整理汇总了C++中DataPoints::setColFrom方法的典型用法代码示例。如果您正苦于以下问题:C++ DataPoints::setColFrom方法的具体用法?C++ DataPoints::setColFrom怎么用?C++ DataPoints::setColFrom使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataPoints
的用法示例。
在下文中一共展示了DataPoints::setColFrom方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InvalidField
void DataPointsFiltersImpl<T>::MaxDensityDataPointsFilter::inPlaceFilter(
DataPoints& cloud)
{
typedef typename DataPoints::View View;
typedef typename DataPoints::ConstView ConstView;
// Force densities to be computed
if (!cloud.descriptorExists("densities"))
{
throw InvalidField("MaxDensityDataPointsFilter: Error, no densities found in descriptors.");
}
const int nbPointsIn = cloud.features.cols();
View densities = cloud.getDescriptorViewByName("densities");
const T lastDensity = densities.maxCoeff();
const int nbSaturatedPts = (densities.cwise() == lastDensity).count();
// fill cloud values
int j = 0;
for (int i = 0; i < nbPointsIn; i++)
{
const T density(densities(0,i));
if (density > maxDensity)
{
const float r = (float)std::rand()/(float)RAND_MAX;
float acceptRatio = maxDensity/density;
// Handle saturation value of density
if (density == lastDensity)
{
acceptRatio = acceptRatio * (1-nbSaturatedPts/nbPointsIn);
}
if (r < acceptRatio)
{
cloud.setColFrom(j, cloud, i);
j++;
}
}
else
{
cloud.setColFrom(j, cloud, i);
j++;
}
}
cloud.conservativeResize(j);
}
示例2: InvalidParameter
void DataPointsFiltersImpl<T>::MaxQuantileOnAxisDataPointsFilter::inPlaceFilter(
DataPoints& cloud)
{
if (int(dim) >= cloud.features.rows())
throw InvalidParameter((boost::format("MaxQuantileOnAxisDataPointsFilter: Error, filtering on dimension number %1%, larger than feature dimensionality %2%") % dim % cloud.features.rows()).str());
const int nbPointsIn = cloud.features.cols();
const int nbPointsOut = nbPointsIn * ratio;
// build array
vector<T> values;
values.reserve(cloud.features.cols());
for (int x = 0; x < cloud.features.cols(); ++x)
values.push_back(cloud.features(dim, x));
// get quartiles value
nth_element(values.begin(), values.begin() + (values.size() * ratio), values.end());
const T limit = values[nbPointsOut];
// copy towards beginning the elements we keep
int j = 0;
for (int i = 0; i < nbPointsIn; i++)
{
if (cloud.features(dim, i) < limit)
{
assert(j <= i);
cloud.setColFrom(j, cloud, i);
j++;
}
}
assert(j <= nbPointsOut);
cloud.conservativeResize(j);
}
示例3: point
void DataPointsFiltersImpl<T>::BoundingBoxDataPointsFilter::inPlaceFilter(
DataPoints& cloud)
{
const int nbPointsIn = cloud.features.cols();
const int nbRows = cloud.features.rows();
int j = 0;
for (int i = 0; i < nbPointsIn; i++)
{
bool keepPt = false;
const Vector point = cloud.features.col(i);
// FIXME: improve performance by using Eigen array operations
const bool x_in = (point(0) > xMin && point(0) < xMax);
const bool y_in = (point(1) > yMin && point(1) < yMax);
const bool z_in = (point(2) > zMin && point(2) < zMax) || nbRows == 3;
const bool in_box = x_in && y_in && z_in;
if(removeInside)
keepPt = !in_box;
else
keepPt = in_box;
if(keepPt)
{
cloud.setColFrom(j, cloud, i);
j++;
}
}
cloud.conservativeResize(j);
}
示例4:
void DataPointsFiltersImpl<T>::RandomSamplingDataPointsFilter::inPlaceFilter(
DataPoints& cloud)
{
const int nbPointsIn = cloud.features.cols();
int j = 0;
for (int i = 0; i < nbPointsIn; i++)
{
const float r = (float)std::rand()/(float)RAND_MAX;
if (r < prob)
{
cloud.setColFrom(j, cloud, i);
j++;
}
}
cloud.conservativeResize(j);
}
示例5: BOOST_AUTO
void RemoveNaNDataPointsFilter<T>::inPlaceFilter(
DataPoints& cloud)
{
const int nbPointsIn = cloud.features.cols();
int j = 0;
for (int i = 0; i < nbPointsIn; ++i)
{
const BOOST_AUTO(colArray, cloud.features.col(i).array());
const BOOST_AUTO(hasNaN, !(colArray == colArray).all());
if (!hasNaN)
{
cloud.setColFrom(j, cloud, i);
++j;
}
}
cloud.conservativeResize(j);
}
示例6: iStep
void DataPointsFiltersImpl<T>::FixStepSamplingDataPointsFilter::inPlaceFilter(
DataPoints& cloud)
{
const int iStep(step);
const int nbPointsIn = cloud.features.cols();
const int phase(rand() % iStep);
int j = 0;
for (int i = phase; i < nbPointsIn; i += iStep)
{
cloud.setColFrom(j, cloud, i);
j++;
}
cloud.conservativeResize(j);
const double deltaStep(startStep * stepMult - startStep);
step *= stepMult;
if (deltaStep < 0 && step < endStep)
step = endStep;
if (deltaStep > 0 && step > endStep)
step = endStep;
}