SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Background
SimpleBackgroundAnalyzer.cpp
Go to the documentation of this file.
1
17
/*
18
* Background.cpp
19
*
20
* Created on: Oct 11, 2016
21
* Author: mschefer
22
*/
23
24
#include "
SEFramework/Image/ImageAccessor.h
"
25
#include "
SEImplementation/Background/Utils.h
"
26
#include "
SEImplementation/Background/SimpleBackgroundAnalyzer.h
"
27
28
#include <memory>
29
#include <algorithm>
30
31
#include "
SEFramework/Image/ConstantImage.h
"
32
#include "
SEFramework/Image/VectorImage.h
"
33
#include "
SEFramework/Image/ProcessedImage.h
"
34
35
36
namespace
SourceXtractor
{
37
38
BackgroundModel
SimpleBackgroundAnalyzer::analyzeBackground
(
39
std::shared_ptr<DetectionImage>
image
,
40
std::shared_ptr<WeightImage>
/*variance_map*/
,
std::shared_ptr
<
Image<unsigned char>
>
/*mask*/
,
41
WeightImage::PixelType
/*variance_threshold*/
)
const
{
42
43
// FIXME we use a VectorImage the same size as input which won't allow larger than memory images to be processed
44
45
auto
image_copy
=
VectorImage<DetectionImage::PixelType>::create
(*
image
);
46
std::sort
(
image_copy
->getData().begin(),
image_copy
->getData().end());
47
bck_model_logger
.debug() <<
"Using the SimpleBackgroundLeverAnalyzer"
;
48
49
auto
background_level
=
image_copy
->getData()[
image_copy
->getData().size()/2];
// the median
50
auto
background_level_map
=
ConstantImage<SeFloat>::create
(
image
->getWidth(),
image
->getHeight(),
background_level
);
51
52
auto
subtracted_image
=
SubtractImage<SeFloat>::create
(
image
,
background_level_map
);
53
54
auto
background_variance
=
getVariance
(
subtracted_image
);
55
auto
background_variance_map
=
ConstantImage<SeFloat>::create
(
image
->getWidth(),
image
->getHeight(),
background_variance
);
56
bck_model_logger
.debug() <<
"bg: "
<<
background_level
<<
" var: "
<<
background_variance
;
57
58
return
BackgroundModel
(
background_level_map
,
background_variance_map
, 1.0,
std::sqrt
(
background_variance
));
59
}
60
61
62
SeFloat
SimpleBackgroundAnalyzer::getVariance
(
std::shared_ptr<DetectionImage>
image
) {
63
// Note: We compute the RMS by only taking into consideration pixels
64
// below the background value.
65
using
Accessor
=
ImageAccessor<DetectionImage::PixelType>
;
66
Accessor
accessor
(
image
, Accessor::TOP_LEFT, 256, 1);
67
68
double
variance
= 0;
69
int
pixels
= 0;
70
for
(
int
y
= 0;
y
<
accessor
.getHeight();
y
++) {
71
for
(
int
x
= 0;
x
<
accessor
.getWidth();
x
++) {
72
auto
value =
accessor
.getValue(
x
,
y
);
73
if
(value < 0) {
74
variance
+= value * value;
75
pixels
++;
76
}
77
}
78
}
79
80
if
(
pixels
> 0) {
81
variance
/=
pixels
;
82
}
83
84
return
variance
;
85
}
86
87
}
88
ConstantImage.h
ImageAccessor.h
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition
MoffatModelFittingTask.cpp:94
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition
MoffatModelFittingTask.cpp:94
ProcessedImage.h
SimpleBackgroundAnalyzer.h
Utils.h
VectorImage.h
SourceXtractor::BackgroundModel
Definition
BackgroundAnalyzer.h:33
SourceXtractor::ConstantImage::create
static std::shared_ptr< ConstantImage< T > > create(int width, int height, T constant_value)
Definition
ConstantImage.h:42
SourceXtractor::Image< SeFloat >::PixelType
SeFloat PixelType
Definition
Image.h:48
SourceXtractor::SimpleBackgroundAnalyzer::analyzeBackground
BackgroundModel analyzeBackground(std::shared_ptr< DetectionImage > image, std::shared_ptr< WeightImage > variance_map, std::shared_ptr< Image< unsigned char > > mask, WeightImage::PixelType variance_threshold) const override
Definition
SimpleBackgroundAnalyzer.cpp:38
SourceXtractor::SimpleBackgroundAnalyzer::getVariance
static SeFloat getVariance(std::shared_ptr< DetectionImage > image)
Definition
SimpleBackgroundAnalyzer.cpp:62
SourceXtractor::VectorImage::create
static std::shared_ptr< VectorImage< T > > create(Args &&... args)
Definition
VectorImage.h:100
std::function
SourceXtractor
Definition
Aperture.h:30
SourceXtractor::bck_model_logger
static Elements::Logging bck_model_logger
Definition
Utils.h:25
std::shared_ptr
std::sort
T sort(T... args)
std::sqrt
T sqrt(T... args)
Generated by
1.10.0