[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/mitnicki/OpenSplat/main/kdtree_tensor.cpp [Back]  [Original]

#include "kdtree_tensor.hpp"


torch::Tensor PointsTensor::scales(){
    // Compute scales by finding the average of the three nearest neighbors for each point
    const auto index = getIndex();
    torch::Tensor scales = torch::zeros({static_cast(tensor.size(0)), 1}, torch::kFloat32);
    const int count = 4;

    std::vector indices(count);
    std::vector sqr_dists(count);
    for (size_t i = 0; i < tensor.size(0); i++){
        index->knnSearch(reinterpret_cast(tensor[i].data_ptr()), count, indices.data(), sqr_dists.data());

        float sum = 0.0;
        for (size_t j = 1; j < count; j++) {
            sum += std::sqrt(sqr_dists[j]);
        }
        scales[i] = sum / (count - 1);
    }

    return scales;
}

PointsTensor::~PointsTensor(){
    freeIndex();
}

Web Proxy Viewer  |  New URL  |  Original Page