Apollo  6.0
Open source self driving car software
pyramid_map_matrix.h
Go to the documentation of this file.
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 
25 namespace apollo {
26 namespace localization {
27 namespace msf {
28 namespace 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 
76  PyramidMapMatrix& operator=(const PyramidMapMatrix& map_matrix);
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;
290  inline const FloatMatrix* GetGroundAltitudeMatrix(
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 
344 inline bool PyramidMapMatrix::HasIntensity() const { return has_intensity_; }
345 
347  return has_intensity_var_;
348 }
349 
350 inline bool PyramidMapMatrix::HasAltitude() const { return has_altitude_; }
351 
352 inline bool PyramidMapMatrix::HasAltitudeVar() const {
353  return has_altitude_var_;
354 }
355 
357  return has_ground_altitude_;
358 }
359 
360 inline bool PyramidMapMatrix::HasCount() const { return has_count_; }
361 
362 inline bool PyramidMapMatrix::HasGroundCount() const {
363  return has_ground_count_;
364 }
365 
366 inline 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 
376 inline 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 
386 inline unsigned int PyramidMapMatrix::GetRows(unsigned int level) const {
387  return rows_mr_[level];
388 }
389 
390 inline unsigned int PyramidMapMatrix::GetCols(unsigned int level) const {
391  return cols_mr_[level];
392 }
393 
394 inline unsigned int PyramidMapMatrix::GetResolutionNum() const {
395  return resolution_num_;
396 }
397 
398 inline unsigned int PyramidMapMatrix::GetResolutionRatio() const {
399  return ratio_;
400 }
401 
402 inline 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 
427 inline 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 
453 inline 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 
465 inline 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 
476 inline 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 
482 inline 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 
493 inline 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 
498 inline 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 
503 inline FloatMatrix* PyramidMapMatrix::GetIntensityMatrix(unsigned int level) {
504  return &intensity_matrixes_[level];
505 }
506 
508  unsigned int level) {
509  return &intensity_var_matrixes_[level];
510 }
511 
512 inline FloatMatrix* PyramidMapMatrix::GetAltitudeMatrix(unsigned int level) {
513  return &altitude_matrixes_[level];
514 }
515 
516 inline FloatMatrix* PyramidMapMatrix::GetAltitudeVarMatrix(unsigned int level) {
517  return &altitude_var_matrixes_[level];
518 }
519 
521  unsigned int level) {
522  return &ground_altitude_matrixes_[level];
523 }
524 
525 inline UIntMatrix* PyramidMapMatrix::GetCountMatrix(unsigned int level) {
526  return &count_matrixes_[level];
527 }
528 
529 inline UIntMatrix* PyramidMapMatrix::GetGroundCountMatrix(unsigned int level) {
530  return &ground_count_matrixes_[level];
531 }
532 
533 inline const FloatMatrix* PyramidMapMatrix::GetIntensityMatrix(
534  unsigned int level) const {
535  return &intensity_matrixes_[level];
536 }
537 
538 inline const FloatMatrix* PyramidMapMatrix::GetIntensityVarMatrix(
539  unsigned int level) const {
540  return &intensity_var_matrixes_[level];
541 }
542 
543 inline const FloatMatrix* PyramidMapMatrix::GetAltitudeMatrix(
544  unsigned int level) const {
545  return &altitude_matrixes_[level];
546 }
547 
548 inline const FloatMatrix* PyramidMapMatrix::GetAltitudeVarMatrix(
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 
558 inline const UIntMatrix* PyramidMapMatrix::GetCountMatrix(
559  unsigned int level) const {
560  return &count_matrixes_[level];
561 }
562 
563 inline const UIntMatrix* PyramidMapMatrix::GetGroundCountMatrix(
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
AlignedMatrix< float > FloatMatrix
Definition: pyramid_map_matrix.h:30
void SetValueSafe(unsigned char intensity, float altitude, unsigned int row, unsigned int col, unsigned int level=0)
Set the several values by check.
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. type: count 0; ground cout 1;
void SetCountSafe(unsigned int count, unsigned int row, unsigned int col, unsigned int level=0)
Set a count value by check.
void SetAltitudeMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
UIntMatrix * GetGroundCountMatrixSafe(unsigned int level=0)
virtual void Reset()
Reset map cells data.
const float * GetGroundAltitude(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude ground value without check.
Definition: pyramid_map_matrix.h:488
unsigned int GetCols(unsigned int level=0) const
Get column number given the resolution.
Definition: pyramid_map_matrix.h:390
void ResetCell(unsigned int id, unsigned int level=0)
Reset a map cell in a specific resolution level.
virtual bool GetAltitudeImg(cv::Mat *altitude_img) const
get altitude image of node.
unsigned int GetRows(unsigned int level=0) const
Get row number given the resolution.
Definition: pyramid_map_matrix.h:386
void SetGroundCountMatrix(const unsigned int *input, unsigned int size, unsigned int start_index, unsigned int level=0)
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
bool HasAltitude() const
Definition: pyramid_map_matrix.h:350
const float * GetIntensitySafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity value by check.
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 * GetAltitudeVarSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude variance 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.
bool HasIntensityVar() const
Definition: pyramid_map_matrix.h:346
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.
void SetGroundCountSafe(unsigned int ground_count, unsigned int row, unsigned int col, unsigned int level=0)
Set a ground 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.
FloatMatrix * GetIntensityVarMatrixSafe(unsigned int level=0)
bool HasAltitudeVar() const
Definition: pyramid_map_matrix.h:352
FloatMatrix * GetIntensityMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:503
FloatMatrix * GetAltitudeVarMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:516
const float * GetGroundAltitudeSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude ground value by check.
virtual void Init(const BaseMapConfig &config)
Initialize the map matrix.
unsigned int GetRowsSafe(unsigned int level=0) const
Get row number given the resolution by check.
Definition: pyramid_map_matrix.h:366
const float * GetAltitude(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude value without check.
Definition: pyramid_map_matrix.h:476
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. just get count, intensity, intensity var and altitude.
Definition: pyramid_map_matrix.h:453
bool HasGroundCount() const
Definition: pyramid_map_matrix.h:362
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 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. only merge count, intensity, intensity var and altitude...
Definition: pyramid_map_matrix.h:427
void SetGroundAltitudeMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
const unsigned int * GetCount(unsigned int row, unsigned int col, unsigned int level=0) const
Get a count value without check.
Definition: pyramid_map_matrix.h:493
const float * GetIntensityVar(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity variance value by check.
Definition: pyramid_map_matrix.h:471
bool HasGroundAltitude() const
Definition: pyramid_map_matrix.h:356
void AddSampleSafe(float intensity, float altitude, unsigned int row, unsigned int col, unsigned int level)
Add sample to the map cell with check.
const float * GetIntensity(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity value without check.
Definition: pyramid_map_matrix.h:465
void BottomUpBase()
Propagate the data from fine level to the coarse resolution by check. only update count...
The data structure of the map cells in a map node.
Definition: base_map_matrix.h:30
unsigned int GetColsSafe(unsigned int level=0) const
Get column number given the resolution by check.
Definition: pyramid_map_matrix.h:376
double ComputeMeanIntensity(unsigned int level=0)
Compute mean intensity.
const unsigned int * GetGroundCountSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get a ground count value by check.
FloatMatrix * GetGroundAltitudeMatrixSafe(unsigned int level=0)
AlignedMatrix< unsigned int > UIntMatrix
Definition: pyramid_map_matrix.h:31
unsigned int GetResolutionNum() const
Get number of resolution.
Definition: pyramid_map_matrix.h:394
void SetCountMatrix(const unsigned int *input, unsigned int size, unsigned int start_index, unsigned int level=0)
FloatMatrix * GetAltitudeVarMatrixSafe(unsigned int level=0)
virtual bool GetIntensityImg(cv::Mat *intensity_img) const
get intensity image of node.
void SetAltitudeSafe(float altitude, unsigned int row, unsigned int col, unsigned int level=0)
Set an altitude value by check.
void SetIntensitySafe(float intensity, unsigned int row, unsigned int col, unsigned int level=0)
Set an intensity 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.
const float * GetIntensityVarSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an intensity variance value by check.
void SetIntensityMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
void SetAltitudeVarMatrix(const float *input, unsigned int size, unsigned int start_index, unsigned int level=0)
FloatMatrix * GetAltitudeMatrixSafe(unsigned int level=0)
unsigned int GetResolutionRatio() const
Get the resolution ratio.
Definition: pyramid_map_matrix.h:398
FloatMatrix * GetIntensityMatrixSafe(unsigned int level=0)
void Clear()
Release all memory in PyramidMapMatrix.
PyramidMapMatrix & operator=(const PyramidMapMatrix &map_matrix)
UIntMatrix * GetGroundCountMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:529
void AddSampleBase(float intensity, float altitude, unsigned int row, unsigned int col, unsigned int level)
Add sample to the map cell. only update count, intensity, intensity var and altitude.
Definition: pyramid_map_matrix.h:402
const float * GetAltitudeSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude value by check.
UIntMatrix * GetCountMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:525
void SetIntensityVarMatrix(const float *input, unsigned int size, unsigned int start_index, 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 BottomUpSafe()
Propagate the data from fine level to the coarse resolution by check.
apollo::cyber::base::std value
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. type: intensity 0; intensity_var 1; altitude 2; altitude_var 3; ground_a...
const unsigned int * GetGroundCount(unsigned int row, unsigned int col, unsigned int level=0) const
Get a ground count value without check.
Definition: pyramid_map_matrix.h:498
The options of the reflectance map.
Definition: base_map_config.h:42
FloatMatrix * GetGroundAltitudeMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:520
FloatMatrix * GetAltitudeMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:512
FloatMatrix * GetIntensityVarMatrix(unsigned int level=0)
Definition: pyramid_map_matrix.h:507
const unsigned int * GetCountSafe(unsigned int row, unsigned int col, unsigned int level=0) const
Get a count value 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.
UIntMatrix * GetCountMatrixSafe(unsigned int level=0)
const float * GetAltitudeVar(unsigned int row, unsigned int col, unsigned int level=0) const
Get an altitude variance value without check.
Definition: pyramid_map_matrix.h:482
bool HasIntensity() const
Definition: pyramid_map_matrix.h:344
Definition: rect2d.h:26
bool HasCount() const
Definition: pyramid_map_matrix.h:360