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 
17  FilterBase, mrpt::rtti::CObject, mp2p_icp_filters)
18 
19 using namespace mp2p_icp_filters;
20 
21 FilterBase::FilterBase() : mrpt::system::COutputLogger("FilterBase") {}
22 
23 FilterBase::~FilterBase() = default;
24 
26  const FilterPipeline& filters, mp2p_icp::metric_map_t& inOut,
27  const mrpt::optional_ref<mrpt::system::CTimeLogger>& profiler)
28 {
29  for (const auto& f : filters)
30  {
31  ASSERT_(f.get() != nullptr);
32 
33  std::optional<mrpt::system::CTimeLoggerEntry> tle;
34  if (profiler) tle.emplace(*profiler, f->GetRuntimeClass()->className);
35 
36  f->filter(inOut);
37  }
38 }
39 
41  const mrpt::containers::yaml& c, const mrpt::system::VerbosityLevel& vLevel)
42 {
43  if (c.isNullNode()) return {};
44 
45  ASSERT_(c.isSequence());
46 
47  FilterPipeline filters;
48 
49  for (const auto& entry : c.asSequence())
50  {
51  const auto& e = entry.asMap();
52 
53  const auto sClass = e.at("class_name").as<std::string>();
54  auto o = mrpt::rtti::classFactory(sClass);
55  ASSERT_(o);
56 
57  auto f = std::dynamic_pointer_cast<FilterBase>(o);
58  ASSERTMSG_(
59  f, mrpt::format(
60  "`%s` class seems not to be derived from FilterBase",
61  sClass.c_str()));
62 
63  f->setMinLoggingLevel(vLevel);
64 
65  f->initialize(e.at("params"));
66  filters.push_back(f);
67  }
68 
69  return filters;
70 }
71 
73  const std::string& filename, const mrpt::system::VerbosityLevel& vLevel)
74 {
75  const auto yamlContent = mrpt::containers::yaml::FromFile(filename);
76 
77  ASSERT_(yamlContent.has("filters") && yamlContent["filters"].isSequence());
78 
79  return filter_pipeline_from_yaml(yamlContent["filters"], vLevel);
80 }
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:25
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:72
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:40
mp2p_icp_filters::FilterPipeline
std::vector< FilterBase::Ptr > FilterPipeline
Definition: FilterBase.h:70
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:48
IMPLEMENTS_VIRTUAL_MRPT_OBJECT
IMPLEMENTS_VIRTUAL_MRPT_OBJECT(FilterBase, mrpt::rtti::CObject, mp2p_icp_filters) using namespace mp2p_icp_filters
mp2p_icp_filters::FilterBase::FilterBase
FilterBase()
Definition: FilterBase.cpp:21
mp2p_icp_filters
Definition: FilterAdjustTimestamps.h:19
kitti-batch-convert.filename
filename
Definition: kitti-batch-convert.py:6


mp2p_icp
Author(s): Jose-Luis Blanco-Claraco
autogenerated on Fri Jul 5 2024 02:47:01