FilterBase.cpp
Go to the documentation of this file.
1 /* -------------------------------------------------------------------------
2  * A repertory of multi primitive-to-primitive (MP2P) ICP algorithms in C++
3  * Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
4  * See LICENSE for license information.
5  * ------------------------------------------------------------------------- */
14 #include <mrpt/system/CTimeLogger.h>
15 
16 IMPLEMENTS_VIRTUAL_MRPT_OBJECT(FilterBase, mrpt::rtti::CObject, mp2p_icp_filters)
17 
18 using namespace mp2p_icp_filters;
19 
20 FilterBase::FilterBase() : mrpt::system::COutputLogger("FilterBase") {}
21 
22 FilterBase::~FilterBase() = default;
23 
25  const FilterPipeline& filters, mp2p_icp::metric_map_t& inOut,
26  const mrpt::optional_ref<mrpt::system::CTimeLogger>& profiler)
27 {
28  for (const auto& f : filters)
29  {
30  ASSERT_(f.get() != nullptr);
31 
32  std::optional<mrpt::system::CTimeLoggerEntry> tle;
33  if (profiler) tle.emplace(*profiler, f->GetRuntimeClass()->className);
34 
35  f->filter(inOut);
36  }
37 }
38 
40  const mrpt::containers::yaml& c, const mrpt::system::VerbosityLevel& vLevel)
41 {
42  if (c.isNullNode()) return {};
43 
44  ASSERT_(c.isSequence());
45 
46  FilterPipeline filters;
47 
48  for (const auto& entry : c.asSequence())
49  {
50  const auto& e = entry.asMap();
51 
52  const auto sClass = e.at("class_name").as<std::string>();
53  auto o = mrpt::rtti::classFactory(sClass);
54  ASSERT_(o);
55 
56  auto f = std::dynamic_pointer_cast<FilterBase>(o);
57  ASSERTMSG_(
58  f, mrpt::format("`%s` class seems not to be derived from FilterBase", sClass.c_str()));
59 
60  f->setMinLoggingLevel(vLevel);
61 
62  f->initialize(e.at("params"));
63  filters.push_back(f);
64  }
65 
66  return filters;
67 }
68 
70  const std::string& filename, const mrpt::system::VerbosityLevel& vLevel)
71 {
72  const auto yamlContent = mrpt::containers::yaml::FromFile(filename);
73 
74  ASSERT_(yamlContent.has("filters") && yamlContent["filters"].isSequence());
75 
76  return filter_pipeline_from_yaml(yamlContent["filters"], vLevel);
77 }
mp2p_icp_filters::FilterBase::~FilterBase
virtual ~FilterBase()
kitti-run-seq.f
string f
Definition: kitti-run-seq.py:12
mp2p_icp_filters::apply_filter_pipeline
void apply_filter_pipeline(const FilterPipeline &filters, mp2p_icp::metric_map_t &inOut, const mrpt::optional_ref< mrpt::system::CTimeLogger > &profiler=std::nullopt)
Definition: FilterBase.cpp:24
mp2p_icp_filters::filter_pipeline_from_yaml_file
FilterPipeline filter_pipeline_from_yaml_file(const std::string &filename, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: FilterBase.cpp:69
mrpt
Definition: LogRecord.h:100
testing::internal::string
::std::string string
Definition: gtest.h:1979
mp2p_icp_filters::filter_pipeline_from_yaml
FilterPipeline filter_pipeline_from_yaml(const mrpt::containers::yaml &c, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: FilterBase.cpp:39
mp2p_icp_filters::FilterBase
Definition: FilterBase.h:46
mp2p_icp_filters::FilterPipeline
std::vector< FilterBase::Ptr > FilterPipeline
Definition: FilterBase.h:75
FilterBase.h
Base virtual class for point cloud filters.
mp2p_icp::metric_map_t
Generic container of pointcloud(s), extracted features and other maps.
Definition: metricmap.h:55
mp2p_icp_filters::FilterBase::FilterBase
FilterBase()
Definition: FilterBase.cpp:20
mp2p_icp_filters
Definition: FilterAdjustTimestamps.h:19
kitti-batch-convert.filename
filename
Definition: kitti-batch-convert.py:6


mp2p_icp
Author(s):
autogenerated on Mon May 26 2025 02:45:48