gtsam_points
Loading...
Searching...
No Matches
gaussian_voxel_data.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021 Kenji Koide (k.koide@aist.go.jp)
3
4#pragma once
5
6#include <gtsam_points/types/gaussian_voxelmap_cpu.hpp>
7
8namespace gtsam_points {
9
12public:
14
15 GaussianVoxelData(const Eigen::Vector3i& coord, const GaussianVoxel& voxel) {
16 const auto& mean = voxel.mean;
17 const auto& cov = voxel.cov;
18 const auto intensity = voxel.intensity;
19
20 this->coord = coord;
21 this->num_points = voxel.num_points;
22 this->mean << mean[0], mean[1], mean[2];
23 this->cov << cov(0, 0), cov(0, 1), cov(0, 2), cov(1, 1), cov(1, 2), cov(2, 2);
24 this->intensity = intensity;
25 }
26
27 std::shared_ptr<std::pair<VoxelInfo, GaussianVoxel>> uncompact() const {
28 auto uncompacted = std::make_shared<std::pair<VoxelInfo, GaussianVoxel>>();
29 uncompacted->first.lru = 0;
30 uncompacted->first.coord = coord;
31
32 auto& voxel = uncompacted->second;
33 voxel.finalized = true;
34 voxel.num_points = num_points;
35 voxel.mean << mean.cast<double>(), 1.0;
36
37 voxel.cov(0, 0) = cov[0];
38 voxel.cov(0, 1) = voxel.cov(1, 0) = cov[1];
39 voxel.cov(0, 2) = voxel.cov(2, 0) = cov[2];
40 voxel.cov(1, 1) = cov[3];
41 voxel.cov(1, 2) = voxel.cov(2, 1) = cov[4];
42 voxel.cov(2, 2) = cov[5];
43
44 voxel.intensity = intensity;
45 return uncompacted;
46 }
47
48public:
49 Eigen::Vector3i coord;
50 int num_points;
51 Eigen::Vector3f mean;
52 Eigen::Matrix<float, 6, 1> cov;
53 float intensity;
54};
55
56}
Compact Gaussian voxel data for IO.
Definition gaussian_voxel_data.hpp:11
Gaussian voxel that computes and stores voxel mean and covariance.
Definition gaussian_voxelmap_cpu.hpp:13