Apollo 10.0
自动驾驶开放平台
pyramid_map_matrix.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2019 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16#pragma once
17
18#include <memory>
19#include <vector>
24
25namespace apollo {
26namespace localization {
27namespace msf {
28namespace pyramid_map {
29
32
34 public:
37 explicit PyramidMapMatrix(const PyramidMapMatrix& map_matrix);
38
39 virtual void Init(const BaseMapConfig& config);
41 virtual void Reset();
42
43 void Init(unsigned int rows, unsigned int cols, bool has_intensity = true,
44 bool has_intensity_var = true, bool has_altitude = true,
45 bool has_altitude_var = true, bool has_ground_altitude = true,
46 bool has_count = true, bool has_ground_count = true,
47 unsigned int resolution_num = 1, unsigned int ratio = 2);
48
50 void Reset(unsigned int level);
53 void ResetCells(unsigned int start_id, unsigned int end_id,
54 unsigned int level = 0);
56 void ResetCell(unsigned int id, unsigned int level = 0);
57
59 void Clear();
60
62 virtual bool GetIntensityImg(cv::Mat* intensity_img) const;
63 bool GetIntensityImg(unsigned int level, cv::Mat* intensity_img) const;
65 virtual bool GetAltitudeImg(cv::Mat* altitude_img) const;
66 bool GetAltitudeImg(unsigned int level, cv::Mat* altitude_img) const;
67
70 void BottomUpSafe();
74 void BottomUpBase();
75
77
79 const float* GetIntensitySafe(unsigned int row, unsigned int col,
80 unsigned int level = 0) const;
82 const float* GetIntensityVarSafe(unsigned int row, unsigned int col,
83 unsigned int level = 0) const;
85 const float* GetAltitudeSafe(unsigned int row, unsigned int col,
86 unsigned int level = 0) const;
88 const float* GetAltitudeVarSafe(unsigned int row, unsigned int col,
89 unsigned int level = 0) const;
91 const float* GetGroundAltitudeSafe(unsigned int row, unsigned int col,
92 unsigned int level = 0) const;
94 const unsigned int* GetCountSafe(unsigned int row, unsigned int col,
95 unsigned int level = 0) const;
97 const unsigned int* GetGroundCountSafe(unsigned int row, unsigned int col,
98 unsigned int level = 0) const;
99
101 void GetMapCellSafe(float** intensity, float** intensity_var,
102 float** altitude, float** altitude_var,
103 float** ground_altitude, unsigned int** count,
104 unsigned int** ground_count, unsigned int row,
105 unsigned int col, unsigned int level = 0);
106
107 FloatMatrix* GetIntensityMatrixSafe(unsigned int level = 0);
108 FloatMatrix* GetIntensityVarMatrixSafe(unsigned int level = 0);
109 FloatMatrix* GetAltitudeMatrixSafe(unsigned int level = 0);
110 FloatMatrix* GetAltitudeVarMatrixSafe(unsigned int level = 0);
111 FloatMatrix* GetGroundAltitudeMatrixSafe(unsigned int level = 0);
112 UIntMatrix* GetCountMatrixSafe(unsigned int level = 0);
113 UIntMatrix* GetGroundCountMatrixSafe(unsigned int level = 0);
114
115 const FloatMatrix* GetIntensityMatrixSafe(unsigned int level = 0) const;
116 const FloatMatrix* GetIntensityVarMatrixSafe(unsigned int level = 0) const;
117 const FloatMatrix* GetAltitudeMatrixSafe(unsigned int level = 0) const;
118 const FloatMatrix* GetAltitudeVarMatrixSafe(unsigned int level = 0) const;
119 const FloatMatrix* GetGroundAltitudeMatrixSafe(unsigned int level = 0) const;
120 const UIntMatrix* GetCountMatrixSafe(unsigned int level = 0) const;
121 const UIntMatrix* GetGroundCountMatrixSafe(unsigned int level = 0) const;
122
123 void SetIntensityMatrix(const float* input, unsigned int size,
124 unsigned int start_index, unsigned int level = 0);
125 void SetIntensityVarMatrix(const float* input, unsigned int size,
126 unsigned int start_index, unsigned int level = 0);
127 void SetAltitudeMatrix(const float* input, unsigned int size,
128 unsigned int start_index, unsigned int level = 0);
129 void SetAltitudeVarMatrix(const float* input, unsigned int size,
130 unsigned int start_index, unsigned int level = 0);
131 void SetGroundAltitudeMatrix(const float* input, unsigned int size,
132 unsigned int start_index,
133 unsigned int level = 0);
134 void SetCountMatrix(const unsigned int* input, unsigned int size,
135 unsigned int start_index, unsigned int level = 0);
136 void SetGroundCountMatrix(const unsigned int* input, unsigned int size,
137 unsigned int start_index, unsigned int level = 0);
138
143 void SetFloatMatrixRoi(const FloatMatrix* source_matrix,
144 const Rect2D<unsigned int>& source_roi,
145 const Rect2D<unsigned int>& target_roi,
146 unsigned int type, unsigned int level = 0);
147
151 void SetUintMatrixRoi(const UIntMatrix* source_matrix,
152 const Rect2D<unsigned int>& source_roi,
153 const Rect2D<unsigned int>& target_roi,
154 unsigned int type, unsigned int level = 0);
155
157 void SetIntensitySafe(float intensity, unsigned int row, unsigned int col,
158 unsigned int level = 0);
160 void SetIntensityVarSafe(float intensity_var, unsigned int row,
161 unsigned int col, unsigned int level = 0);
163 void SetAltitudeSafe(float altitude, unsigned int row, unsigned int col,
164 unsigned int level = 0);
166 void SetAltitudeVarSafe(float altitude_var, unsigned int row,
167 unsigned int col, unsigned int level = 0);
169 void SetGroundAltitudeSafe(float ground_altitude, unsigned int row,
170 unsigned int col, unsigned int level = 0);
172 void SetCountSafe(unsigned int count, unsigned int row, unsigned int col,
173 unsigned int level = 0);
175 void SetGroundCountSafe(unsigned int ground_count, unsigned int row,
176 unsigned int col, unsigned int level = 0);
177
182 void SetValueSafe(unsigned char intensity, float altitude, unsigned int row,
183 unsigned int col, unsigned int level = 0);
184
186 void MergeCellSafe(const float* intensity, const float* intensity_var,
187 const float* altitude, const float* altitude_var,
188 const float* ground_altitude, const unsigned int* count,
189 const unsigned int* ground_count, unsigned int row,
190 unsigned int col, unsigned int level);
191
193 void AddSampleSafe(float intensity, float altitude, unsigned int row,
194 unsigned int col, unsigned int level);
195
197 void AddGroundSample(float ground_altitude, unsigned int row,
198 unsigned int col, unsigned int level = 0);
199
201 double ComputeMeanIntensity(unsigned int level = 0);
202
204 static void Reduce(std::shared_ptr<PyramidMapMatrix> cells,
205 const PyramidMapMatrix& new_cells, unsigned int level = 0,
206 unsigned int new_level = 0);
207
208 inline bool HasIntensity() const;
209 inline bool HasIntensityVar() const;
210 inline bool HasAltitude() const;
211 inline bool HasAltitudeVar() const;
212 inline bool HasGroundAltitude() const;
213 inline bool HasCount() const;
214 inline bool HasGroundCount() const;
215
217 inline unsigned int GetRowsSafe(unsigned int level = 0) const;
218
220 inline unsigned int GetColsSafe(unsigned int level = 0) const;
221
223 inline unsigned int GetRows(unsigned int level = 0) const;
224
226 inline unsigned int GetCols(unsigned int level = 0) const;
227
229 inline unsigned int GetResolutionNum() const;
230
232 inline unsigned int GetResolutionRatio() const;
233
237 inline void AddSampleBase(float intensity, float altitude, unsigned int row,
238 unsigned int col, unsigned int level);
239
243 inline void MergeCellBase(const float* intensity, const float* intensity_var,
244 const float* altitude, const unsigned int* count,
245 unsigned int row, unsigned int col,
246 unsigned int level);
247
251 inline void GetMapCellBase(float** intensity, float** intensity_var,
252 float** altitude, unsigned int** count,
253 unsigned int row, unsigned int col,
254 unsigned int level = 0);
255
257 inline const float* GetIntensity(unsigned int row, unsigned int col,
258 unsigned int level = 0) const;
260 inline const float* GetIntensityVar(unsigned int row, unsigned int col,
261 unsigned int level = 0) const;
263 inline const float* GetAltitude(unsigned int row, unsigned int col,
264 unsigned int level = 0) const;
266 inline const float* GetAltitudeVar(unsigned int row, unsigned int col,
267 unsigned int level = 0) const;
269 inline const float* GetGroundAltitude(unsigned int row, unsigned int col,
270 unsigned int level = 0) const;
272 inline const unsigned int* GetCount(unsigned int row, unsigned int col,
273 unsigned int level = 0) const;
275 inline const unsigned int* GetGroundCount(unsigned int row, unsigned int col,
276 unsigned int level = 0) const;
277
278 inline FloatMatrix* GetIntensityMatrix(unsigned int level = 0);
279 inline FloatMatrix* GetIntensityVarMatrix(unsigned int level = 0);
280 inline FloatMatrix* GetAltitudeMatrix(unsigned int level = 0);
281 inline FloatMatrix* GetAltitudeVarMatrix(unsigned int level = 0);
282 inline FloatMatrix* GetGroundAltitudeMatrix(unsigned int level = 0);
283 inline UIntMatrix* GetCountMatrix(unsigned int level = 0);
284 inline UIntMatrix* GetGroundCountMatrix(unsigned int level = 0);
285
286 inline const FloatMatrix* GetIntensityMatrix(unsigned int level = 0) const;
287 inline const FloatMatrix* GetIntensityVarMatrix(unsigned int level = 0) const;
288 inline const FloatMatrix* GetAltitudeMatrix(unsigned int level = 0) const;
289 inline const FloatMatrix* GetAltitudeVarMatrix(unsigned int level = 0) const;
291 unsigned int level = 0) const;
292 inline const UIntMatrix* GetCountMatrix(unsigned int level = 0) const;
293 inline const UIntMatrix* GetGroundCountMatrix(unsigned int level = 0) const;
294
295 private:
297 bool CheckLegalityForGetData(unsigned int row, unsigned int col,
298 unsigned int level) const;
299
300 bool CheckLegalityForSetData(unsigned int level, unsigned int start_id,
301 unsigned int size) const;
302 bool CheckLegalityForSetDataRoi(unsigned int level,
303 unsigned int source_matrix_rows,
304 unsigned int source_matrix_cols,
305 const Rect2D<unsigned int>& source_roi,
306 const Rect2D<unsigned int>& target_roi) const;
307
308 private:
310 unsigned int resolution_num_ = 1;
312 unsigned int ratio_ = 2;
314 std::vector<unsigned int> rows_mr_;
316 std::vector<unsigned int> cols_mr_;
318 std::vector<unsigned int> ratio_multiplier_;
319
320 std::vector<FloatMatrix> intensity_matrixes_;
321 std::vector<FloatMatrix> intensity_var_matrixes_;
322 std::vector<FloatMatrix> altitude_matrixes_;
323 std::vector<FloatMatrix> altitude_var_matrixes_;
324 std::vector<FloatMatrix> ground_altitude_matrixes_;
325 std::vector<UIntMatrix> count_matrixes_;
326 std::vector<UIntMatrix> ground_count_matrixes_;
327
329 bool has_intensity_ = false;
331 bool has_intensity_var_ = false;
333 bool has_altitude_ = false;
335 bool has_altitude_var_ = false;
337 bool has_ground_altitude_ = false;
339 bool has_count_ = false;
341 bool has_ground_count_ = false;
342};
343
344inline bool PyramidMapMatrix::HasIntensity() const { return has_intensity_; }
345
347 return has_intensity_var_;
348}
349
350inline bool PyramidMapMatrix::HasAltitude() const { return has_altitude_; }
351
353 return has_altitude_var_;
354}
355
357 return has_ground_altitude_;
358}
359
360inline bool PyramidMapMatrix::HasCount() const { return has_count_; }
361
363 return has_ground_count_;
364}
365
366inline unsigned int PyramidMapMatrix::GetRowsSafe(unsigned int level) const {
367 if (level >= resolution_num_) {
368 std::cerr << "PyramidMapMatrix: [GetRows] The level id is illegal."
369 << std::endl;
370 return 0;
371 }
372
373 return rows_mr_[level];
374}
375
376inline unsigned int PyramidMapMatrix::GetColsSafe(unsigned int level) const {
377 if (level >= resolution_num_) {
378 std::cerr << "PyramidMapMatrix: [GetCols] The level id is illegal."
379 << std::endl;
380 return 0;
381 }
382
383 return cols_mr_[level];
384}
385
386inline unsigned int PyramidMapMatrix::GetRows(unsigned int level) const {
387 return rows_mr_[level];
388}
389
390inline unsigned int PyramidMapMatrix::GetCols(unsigned int level) const {
391 return cols_mr_[level];
392}
393
394inline unsigned int PyramidMapMatrix::GetResolutionNum() const {
395 return resolution_num_;
396}
397
398inline unsigned int PyramidMapMatrix::GetResolutionRatio() const {
399 return ratio_;
400}
401
402inline void PyramidMapMatrix::AddSampleBase(float intensity, float altitude,
403 unsigned int row, unsigned int col,
404 unsigned int level) {
405 ++count_matrixes_[level][row][col];
406
407 float v1 = 0.0;
408 float v2 = 0.0;
409 float value = 0.0;
410
411 v1 = intensity - intensity_matrixes_[level][row][col];
412 value = v1 / static_cast<float>(count_matrixes_[level][row][col]);
413 intensity_matrixes_[level][row][col] += value;
414
415 v2 = intensity - intensity_matrixes_[level][row][col];
416 intensity_var_matrixes_[level][row][col] =
417 (static_cast<float>(count_matrixes_[level][row][col] - 1) *
418 intensity_var_matrixes_[level][row][col] +
419 v1 * v2) /
420 static_cast<float>(count_matrixes_[level][row][col]);
421
422 v1 = altitude - altitude_matrixes_[level][row][col];
423 value = v1 / static_cast<float>(count_matrixes_[level][row][col]);
424 altitude_matrixes_[level][row][col] += value;
425}
426
427inline void PyramidMapMatrix::MergeCellBase(const float* intensity,
428 const float* intensity_var,
429 const float* altitude,
430 const unsigned int* count,
431 unsigned int row, unsigned int col,
432 unsigned int level) {
433 unsigned int new_count = count_matrixes_[level][row][col] + *count;
434 float p0 = static_cast<float>(count_matrixes_[level][row][col]) /
435 static_cast<float>(new_count);
436 float p1 = static_cast<float>(*count) / static_cast<float>(new_count);
437
438 float intensity_diff = 0.0f;
439 intensity_diff = intensity_matrixes_[level][row][col] - *intensity;
440 intensity_matrixes_[level][row][col] =
441 intensity_matrixes_[level][row][col] * p0 + *intensity * p1;
442
443 intensity_var_matrixes_[level][row][col] =
444 intensity_var_matrixes_[level][row][col] * p0 + *intensity_var * p1 +
445 intensity_diff * intensity_diff * p0 * p1;
446
447 altitude_matrixes_[level][row][col] =
448 altitude_matrixes_[level][row][col] * p0 + *altitude * p1;
449
450 count_matrixes_[level][row][col] = new_count;
451}
452
453inline void PyramidMapMatrix::GetMapCellBase(float** intensity,
454 float** intensity_var,
455 float** altitude,
456 unsigned int** count,
457 unsigned int row, unsigned int col,
458 unsigned int level) {
459 *intensity = &intensity_matrixes_[level][row][col];
460 *intensity_var = &intensity_var_matrixes_[level][row][col];
461 *altitude = &altitude_matrixes_[level][row][col];
462 *count = &count_matrixes_[level][row][col];
463}
464
465inline const float* PyramidMapMatrix::GetIntensity(unsigned int row,
466 unsigned int col,
467 unsigned int level) const {
468 return &intensity_matrixes_[level][row][col];
469}
470
472 unsigned int row, unsigned int col, unsigned int level) const {
473 return &intensity_var_matrixes_[level][row][col];
474}
475
476inline const float* PyramidMapMatrix::GetAltitude(unsigned int row,
477 unsigned int col,
478 unsigned int level) const {
479 return &altitude_matrixes_[level][row][col];
480}
481
482inline const float* PyramidMapMatrix::GetAltitudeVar(unsigned int row,
483 unsigned int col,
484 unsigned int level) const {
485 return &altitude_var_matrixes_[level][row][col];
486}
487
489 unsigned int row, unsigned int col, unsigned int level) const {
490 return &ground_altitude_matrixes_[level][row][col];
491}
492
493inline const unsigned int* PyramidMapMatrix::GetCount(
494 unsigned int row, unsigned int col, unsigned int level) const {
495 return &count_matrixes_[level][row][col];
496}
497
498inline const unsigned int* PyramidMapMatrix::GetGroundCount(
499 unsigned int row, unsigned int col, unsigned int level) const {
500 return &ground_count_matrixes_[level][row][col];
501}
502
504 return &intensity_matrixes_[level];
505}
506
508 unsigned int level) {
509 return &intensity_var_matrixes_[level];
510}
511
513 return &altitude_matrixes_[level];
514}
515
517 return &altitude_var_matrixes_[level];
518}
519
521 unsigned int level) {
522 return &ground_altitude_matrixes_[level];
523}
524
525inline UIntMatrix* PyramidMapMatrix::GetCountMatrix(unsigned int level) {
526 return &count_matrixes_[level];
527}
528
530 return &ground_count_matrixes_[level];
531}
532
534 unsigned int level) const {
535 return &intensity_matrixes_[level];
536}
537
539 unsigned int level) const {
540 return &intensity_var_matrixes_[level];
541}
542
544 unsigned int level) const {
545 return &altitude_matrixes_[level];
546}
547
549 unsigned int level) const {
550 return &altitude_var_matrixes_[level];
551}
552
554 unsigned int level) const {
555 return &ground_altitude_matrixes_[level];
556}
557
559 unsigned int level) const {
560 return &count_matrixes_[level];
561}
562
564 unsigned int level) const {
565 return &ground_count_matrixes_[level];
566}
567
568} // namespace pyramid_map
569} // namespace msf
570} // namespace localization
571} // namespace apollo
The data structure of the map cells in a map node.
const unsigned int * GetGroundCountSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get a ground count value by check.
void SetValueSafe(unsigned char intensity, float altitude, unsigned int row, unsigned int col, unsigned int level=0)
Set the several values by check.
virtual bool GetAltitudeImg(cv::Mat *altitude_img) const
get altitude image of node.
void SetUintMatrixRoi(const UIntMatrix *source_matrix, const Rect2D< unsigned int > &source_roi, const Rect2D< unsigned int > &target_roi, unsigned int type, unsigned int level=0)
set unsigned int matrix with a ROI.
PyramidMapMatrix & operator=(const PyramidMapMatrix &map_matrix)
const float * GetGroundAltitude(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude ground value without check.
const float * GetIntensityVarSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity variance value by check.
const float * GetIntensitySafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity value by check.
void SetGroundAltitudeSafe(float ground_altitude, unsigned int row, unsigned int col, unsigned int level=0)
Set an altitude ground value by check.
virtual bool GetIntensityImg(cv::Mat *intensity_img) const
get intensity image of node.
void BottomUpSafe()
Propagate the data from fine level to the coarse resolution by check.
void BottomUpBase()
Propagate the data from fine level to the coarse resolution by check.
unsigned int GetRows(unsigned int level=0) const
Get row number given the resolution.
const float * GetAltitudeSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude value by check.
void SetAltitudeVarMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void SetIntensityMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void GetMapCellBase(float **intensity, float **intensity_var, float **altitude, unsigned int **count, unsigned int row, unsigned int col, unsigned int level=0)
Get cell values.
double ComputeMeanIntensity(unsigned int level=0)
Compute mean intensity.
void SetAltitudeSafe(float altitude, unsigned int row, unsigned int col, unsigned int level=0)
Set an altitude value by check.
void SetCountSafe(unsigned int count, unsigned int row, unsigned int col, unsigned int level=0)
Set a count value by check.
void SetGroundCountMatrix(const unsigned int *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void Clear()
Release all memory in PyramidMapMatrix.
const unsigned int * GetGroundCount(unsigned int row, unsigned int col, unsigned int level=0) const
Get a ground count value without check.
void MergeCellBase(const float *intensity, const float *intensity_var, const float *altitude, const unsigned int *count, unsigned int row, unsigned int col, unsigned int level)
Merge the data from another map cell.
const unsigned int * GetCountSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get a count value by check.
void SetIntensityVarSafe(float intensity_var, unsigned int row, unsigned int col, unsigned int level=0)
Set an intensity variance value by check.
const float * GetAltitudeVarSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude variance value by check.
void SetFloatMatrixRoi(const FloatMatrix *source_matrix, const Rect2D< unsigned int > &source_roi, const Rect2D< unsigned int > &target_roi, unsigned int type, unsigned int level=0)
set float matrix with a ROI.
FloatMatrix * GetIntensityVarMatrixSafe(unsigned int level=0)
void SetAltitudeMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void ResetCell(unsigned int id, unsigned int level=0)
Reset a map cell in a specific resolution level.
static void Reduce(std::shared_ptr< PyramidMapMatrix > cells, const PyramidMapMatrix &new_cells, unsigned int level=0, unsigned int new_level=0)
Combine two PyramidMapMatrix instances (Reduce).
void SetIntensityVarMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
const float * GetAltitude(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude value without check.
void SetGroundAltitudeMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void AddSampleBase(float intensity, float altitude, unsigned int row, unsigned int col, unsigned int level)
Add sample to the map cell.
unsigned int GetResolutionNum() const
Get number of resolution.
unsigned int GetColsSafe(unsigned int level=0) const
Get column number given the resolution by check.
FloatMatrix * GetGroundAltitudeMatrixSafe(unsigned int level=0)
const float * GetGroundAltitudeSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude ground value by check.
const float * GetAltitudeVar(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude variance value without check.
FloatMatrix * GetGroundAltitudeMatrix(unsigned int level=0)
void AddGroundSample(float ground_altitude, unsigned int row, unsigned int col, unsigned int level=0)
Add ground sample to the map cell.
void AddSampleSafe(float intensity, float altitude, unsigned int row, unsigned int col, unsigned int level)
Add sample to the map cell with check.
void SetGroundCountSafe(unsigned int ground_count, unsigned int row, unsigned int col, unsigned int level=0)
Set a ground count value by check.
void SetIntensitySafe(float intensity, unsigned int row, unsigned int col, unsigned int level=0)
Set an intensity value by check.
void SetCountMatrix(const unsigned int *input, unsigned int size, unsigned int start_index, unsigned int level=0)
const float * GetIntensity(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity value without check.
unsigned int GetCols(unsigned int level=0) const
Get column number given the resolution.
virtual void Init(const BaseMapConfig &config)
Initialize the map matrix.
void ResetCells(unsigned int start_id, unsigned int end_id, unsigned int level=0)
Reset map cells data from start_id to end_id in a specific resolution level
const float * GetIntensityVar(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity variance value by check.
void SetAltitudeVarSafe(float altitude_var, unsigned int row, unsigned int col, unsigned int level=0)
Set an altitude variance value by check.
unsigned int GetRowsSafe(unsigned int level=0) const
Get row number given the resolution by check.
void GetMapCellSafe(float **intensity, float **intensity_var, float **altitude, float **altitude_var, float **ground_altitude, unsigned int **count, unsigned int **ground_count, unsigned int row, unsigned int col, unsigned int level=0)
Get cell values by check.
unsigned int GetResolutionRatio() const
Get the resolution ratio.
const unsigned int * GetCount(unsigned int row, unsigned int col, unsigned int level=0) const
Get a count value without check.
void MergeCellSafe(const float *intensity, const float *intensity_var, const float *altitude, const float *altitude_var, const float *ground_altitude, const unsigned int *count, const unsigned int *ground_count, unsigned int row, unsigned int col, unsigned int level)
Merge the data from another map cell by check.
AlignedMatrix< unsigned int > UIntMatrix
class register implement
Definition arena_queue.h:37