Существует ли какой-либо алгоритм или предпочтительно фрагмент кода для организации и группировки почти расположенных точек (организованных в пределах радиуса или определенного числа соседей), созданных из изображения облака точек с помощью Kinect, и преобразования его в одну точку. Я хочу увеличить размер и тем самым уменьшить количество баллов.
Это широкая тема называется «кластерный анализ». Посмотрите Вот для получения дополнительной информации. Вы должны провести несколько экспериментов с несколькими методами кластеризации.
Один простой метод заключается в следующем:
в коде:
std::map<CellIndex, std::vector<P3d> > pmap;
for (int i=0,n=pts.size(); i<n; i++)
{
int ix = int(pts[i].x / eps);
int iy = int(pts[i].y / eps);
int iz = int(pts[i].z / eps);
pmap[CellIndex(ix, iy, iz)].push_back(pts[i]);
}
for (std::map<CellIndex, std::vector<P3d> >::iterator i=pmap.begin(),e=pmap.end();
i != e;
++i)
{
// get cluster center
int cx = i->first.ix;
int cy = i->first.iy;
int cz = i->first.iz;
// collect points from all 9 cluster with x index between cx-1 and cx+1
// between cy-1 and cy+1 and between cz-1 and cz+1 (inclusive).
// Not all clusters are guaranteed to be present in the map.
// You will be considering only points that are at most 1.5*sqrt(3)*eps from
// the center of the (cx, cy, cz) cell.
}
В зависимости от вычислений, которые вам нужно сделать, иногда можно выполнить всего один проход
сохраняя промежуточные результаты в самих ячейках вместо хранения точек в них.
Рассматривали ли вы использование значит сдвиг?