SourceXtractorPlusPlus
1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Configuration
MultiThresholdPartitionConfig.cpp
Go to the documentation of this file.
1
17
/*
18
* MultiThresholdPartitionConfig.cpp
19
*
20
* Created on: Jan 18, 2017
21
* Author: mschefer
22
*/
23
24
#include "
SEImplementation/Configuration/MultiThresholdPartitionConfig.h
"
25
#include "
SEImplementation/Configuration/MinAreaPartitionConfig.h
"
26
#include "
SEImplementation/Configuration/PartitionStepConfig.h
"
27
#include "
SEImplementation/Configuration/RngConfig.h
"
28
#include "
SEImplementation/Configuration/DetectionFrameConfig.h
"
29
30
#include "
SEImplementation/Partition/MultiThresholdPartitionStep.h
"
31
32
using namespace
Euclid::Configuration
;
33
namespace
po
=
boost::program_options
;
34
35
namespace
SourceXtractor
{
36
37
static
const
std::string
MTHRESH_USE
{
"partition-multithreshold"
};
38
static
const
std::string
MTHRESH_THRESHOLDS_NB
{
"partition-threshold-count"
};
39
static
const
std::string
MTHRESH_MIN_AREA
{
"partition-minimum-area"
};
40
static
const
std::string
MTHRESH_MIN_CONTRAST
{
"partition-minimum-contrast"
};
41
42
MultiThresholdPartitionConfig::MultiThresholdPartitionConfig
(
long
manager_id) :
Configuration
(manager_id) {
43
declareDependency<PartitionStepConfig>
();
44
declareDependency<RngConfig>
();
45
declareDependency<DetectionFrameConfig>
();
46
47
// this is used to enforce the order the PartitionSteps are added and performed
48
ConfigManager::getInstance
(manager_id).
registerDependency
<
MultiThresholdPartitionConfig
,
MinAreaPartitionConfig
>();
49
}
50
51
auto
MultiThresholdPartitionConfig::getProgramOptions
() ->
std::map<std::string, OptionDescriptionList>
{
52
return
{ {
"Multi-thresholding"
, {
53
{
MTHRESH_USE
.c_str(), po::value<bool>()->default_value(
true
),
"activates/deactivates multithreshold partitioning"
},
54
{
MTHRESH_THRESHOLDS_NB
.c_str(), po::value<int>()->default_value(32),
"# of thresholds"
},
55
{
MTHRESH_MIN_AREA
.c_str(), po::value<int>()->default_value(3),
"min area in pixels to consider partitioning"
},
56
{
MTHRESH_MIN_CONTRAST
.c_str(), po::value<double>()->default_value(0.005),
"min contrast of for partitioning"
}
57
}}};
58
}
59
60
void
MultiThresholdPartitionConfig::initialize
(
const
UserValues
& args) {
61
// We can only use this if we have a detection image and it was on by default
62
if
(
getDependency<DetectionFrameConfig>
().getDetectionFrames().size() > 0) {
63
if
(args.
at
(
MTHRESH_USE
).as<
bool
>()) {
64
auto
threshold_nb = args.
at
(
MTHRESH_THRESHOLDS_NB
).as<
int
>();
65
auto
min_area = args.
at
(
MTHRESH_MIN_AREA
).as<
int
>();
66
auto
min_contrast = args.
at
(
MTHRESH_MIN_CONTRAST
).as<
double
>();
67
auto
seed =
getDependency<RngConfig>
().getSeed();
68
69
if
(min_area <= 0) {
70
throw
Elements::Exception
() <<
"Invalid "
<<
MTHRESH_MIN_AREA
<<
" value: "
<< min_area;
71
}
72
if
(threshold_nb <= 0) {
73
throw
Elements::Exception
() <<
"Invalid "
<<
MTHRESH_THRESHOLDS_NB
<<
" value: "
<< threshold_nb;
74
}
75
76
getDependency<PartitionStepConfig>
().addPartitionStepCreator(
77
[=](
std::shared_ptr<SourceFactory>
source_factory) {
78
return
std::make_shared<MultiThresholdPartitionStep>
(
79
source_factory, min_contrast, threshold_nb, min_area, seed);
80
});
81
}
82
}
83
}
84
85
}
// SourceXtractor namespace
DetectionFrameConfig.h
MinAreaPartitionConfig.h
MultiThresholdPartitionConfig.h
MultiThresholdPartitionStep.h
PartitionStepConfig.h
RngConfig.h
std::map::at
T at(T... args)
std::string
Elements::Exception
Euclid::Configuration::ConfigManager::registerDependency
void registerDependency()
SourceXtractor::ConfigManager::getInstance
static ConfigManager & getInstance(long id)
Euclid::Configuration::Configuration::declareDependency
void declareDependency()
Euclid::Configuration::Configuration::Configuration
Configuration(long manager_id)
Euclid::Configuration::Configuration::UserValues
std::map< std::string, boost::program_options::variable_value > UserValues
Euclid::Configuration::Configuration::getDependency
T & getDependency()
SourceXtractor::MinAreaPartitionConfig
Definition
MinAreaPartitionConfig.h:29
SourceXtractor::MultiThresholdPartitionConfig::initialize
void initialize(const UserValues &args) override
Definition
MultiThresholdPartitionConfig.cpp:60
SourceXtractor::MultiThresholdPartitionConfig::getProgramOptions
std::map< std::string, OptionDescriptionList > getProgramOptions() override
Definition
MultiThresholdPartitionConfig.cpp:51
SourceXtractor::MultiThresholdPartitionConfig::MultiThresholdPartitionConfig
MultiThresholdPartitionConfig(long manager_id)
Definition
MultiThresholdPartitionConfig.cpp:42
std::make_shared
T make_shared(T... args)
std::map
Euclid::Configuration
SourceXtractor
Definition
Aperture.h:30
SourceXtractor::MTHRESH_THRESHOLDS_NB
static const std::string MTHRESH_THRESHOLDS_NB
Definition
MultiThresholdPartitionConfig.cpp:38
SourceXtractor::MTHRESH_MIN_AREA
static const std::string MTHRESH_MIN_AREA
Definition
MultiThresholdPartitionConfig.cpp:39
SourceXtractor::MTHRESH_MIN_CONTRAST
static const std::string MTHRESH_MIN_CONTRAST
Definition
MultiThresholdPartitionConfig.cpp:40
SourceXtractor::MTHRESH_USE
static const std::string MTHRESH_USE
Definition
MultiThresholdPartitionConfig.cpp:37
boost::program_options
std::shared_ptr
Generated by
1.14.0