SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEFramework
SEFramework
Image
MaskedImage.h
Go to the documentation of this file.
1
17
/*
18
* MaskedImage.h
19
*
20
* Created on: Feb 13, 2020
21
* Author: Alejandro Alvarez Ayllon
22
*/
23
24
#ifndef SEFRAMEWORK_SEFRAMEWORK_IMAGE_MASKEDIMAGE_H_
25
#define SEFRAMEWORK_SEFRAMEWORK_IMAGE_MASKEDIMAGE_H_
26
27
#include "
SEFramework/Image/Image.h
"
28
#include "
SEFramework/Image/ImageChunk.h
"
29
30
namespace
SourceXtractor
{
31
44
template
<
typename
T,
typename
M,
template
<
typename
>
class
Operator =
std::bit_and
>
45
class
MaskedImage
:
public
Image
<T> {
46
private
:
47
MaskedImage
(
const
std::shared_ptr
<
Image<T>
>&
image
,
const
std::shared_ptr
<
Image<M>
>& mask,
48
T
replacement
,
M
mask_flag
) :
m_image
{
image
},
m_mask
{mask},
m_replacement
{
replacement
},
49
m_mask_flag
{
mask_flag
},
m_n_masked
{0},
m_n_total
{0} {
50
}
51
52
std::shared_ptr<Image<T>
>
m_image
;
53
std::shared_ptr<Image<M>
>
m_mask
;
54
T
m_replacement
;
55
M
m_mask_flag
;
56
Operator<M>
m_operator
;
57
58
mutable
std::size_t
m_n_masked
;
59
mutable
std::size_t
m_n_total
;
60
61
public
:
62
virtual
~MaskedImage
() =
default
;
63
77
static
std::shared_ptr<MaskedImage<T, M, Operator>
>
78
create
(
const
std::shared_ptr
<
Image<T>
>&
image
,
const
std::shared_ptr
<
Image<M>
>& mask,
79
T
replacement
,
M
mask_flag
= 0x01) {
80
assert
(
image
->getWidth() == mask->getWidth() &&
image
->getHeight() == mask->getHeight());
81
return
std::shared_ptr<MaskedImage<T, M, Operator>
>(
new
MaskedImage<T, M, Operator>
(
image
, mask,
replacement
,
mask_flag
));
82
}
83
84
std::string
getRepr
()
const
final
{
85
if
(
m_n_total
== (
m_image
->getWidth()*
m_image
->getHeight())){
86
char
char_fract
[8];
87
// determine the percentage of masked pixels
88
std::snprintf
(
char_fract
, 7,
"%.1f%"
, 100.0*this->
getNMasked
()/(m_image->getWidth()*
m_image
->getHeight()));
89
return
std::string
(
"Masked("
+
m_image
->getRepr() +
") with "
+
std::string
(
char_fract
)+
" weight image masked pixels;"
);
90
}
91
else
92
return
std::string
(
"Masked("
+
m_image
->getRepr() +
")"
);
93
}
94
95
int
getWidth
()
const
final
{
96
return
m_image
->getWidth();
97
}
98
99
int
getHeight
()
const
final
{
100
return
m_image
->getHeight();
101
}
102
103
std::size_t
getNMasked
()
const
{
104
return
m_n_masked
;
105
}
106
107
std::size_t
getNTotal
()
const
{
108
return
m_n_total
;
109
}
110
111
std::shared_ptr<ImageChunk<T>
>
getChunk
(
int
x
,
int
y
,
int
width,
int
height)
const
final
{
112
auto
chunk
=
UniversalImageChunk<T>::create
(
std::move
(*
m_image
->getChunk(
x
,
y
, width, height)));
113
auto
mask_chunk
=
m_mask
->getChunk(
x
,
y
, width, height);
114
for
(
int
iy
= 0;
iy
< height; ++
iy
) {
115
for
(
int
ix
= 0;
ix
< width; ++
ix
) {
116
m_n_total
+= 1;
117
if
(
m_operator
(
mask_chunk
->getValue(
ix
,
iy
),
m_mask_flag
)){
118
chunk
->setValue(
ix
,
iy
,
m_replacement
);
119
m_n_masked
+=1;
120
}
121
}
122
}
123
return
chunk
;
124
}
125
126
};
127
128
}
// end of namespace SourceXtractor
129
130
#endif
// SEFRAMEWORK_SEFRAMEWORK_IMAGE_MASKEDIMAGE_H_
ImageChunk.h
Image.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
std::string
std::bit_and
SourceXtractor::Image
Interface representing an image.
Definition
Image.h:44
SourceXtractor::MaskedImage
Definition
MaskedImage.h:45
SourceXtractor::MaskedImage::getHeight
int getHeight() const final
Returns the height of the image in pixels.
Definition
MaskedImage.h:99
SourceXtractor::MaskedImage::getNTotal
std::size_t getNTotal() const
Definition
MaskedImage.h:107
SourceXtractor::MaskedImage::getWidth
int getWidth() const final
Returns the width of the image in pixels.
Definition
MaskedImage.h:95
SourceXtractor::MaskedImage::getRepr
std::string getRepr() const final
Get a string identifying this image in a human readable manner.
Definition
MaskedImage.h:84
SourceXtractor::MaskedImage::MaskedImage
MaskedImage(const std::shared_ptr< Image< T > > &image, const std::shared_ptr< Image< M > > &mask, T replacement, M mask_flag)
Definition
MaskedImage.h:47
SourceXtractor::MaskedImage::m_n_masked
std::size_t m_n_masked
Definition
MaskedImage.h:58
SourceXtractor::MaskedImage::create
static std::shared_ptr< MaskedImage< T, M, Operator > > create(const std::shared_ptr< Image< T > > &image, const std::shared_ptr< Image< M > > &mask, T replacement, M mask_flag=0x01)
Definition
MaskedImage.h:78
SourceXtractor::MaskedImage::m_operator
Operator< M > m_operator
Definition
MaskedImage.h:56
SourceXtractor::MaskedImage::getNMasked
std::size_t getNMasked() const
Definition
MaskedImage.h:103
SourceXtractor::MaskedImage::m_mask_flag
M m_mask_flag
Definition
MaskedImage.h:55
SourceXtractor::MaskedImage::m_n_total
std::size_t m_n_total
Definition
MaskedImage.h:59
SourceXtractor::MaskedImage::~MaskedImage
virtual ~MaskedImage()=default
SourceXtractor::MaskedImage::m_replacement
T m_replacement
Definition
MaskedImage.h:54
SourceXtractor::MaskedImage::getChunk
std::shared_ptr< ImageChunk< T > > getChunk(int x, int y, int width, int height) const final
Definition
MaskedImage.h:111
SourceXtractor::MaskedImage::m_mask
std::shared_ptr< Image< M > > m_mask
Definition
MaskedImage.h:53
SourceXtractor::MaskedImage::m_image
std::shared_ptr< Image< T > > m_image
Definition
MaskedImage.h:52
SourceXtractor::UniversalImageChunk::create
static std::shared_ptr< UniversalImageChunk< T > > create(Args &&... args)
Definition
ImageChunk.h:144
std::snprintf
T snprintf(T... args)
std::function
std::move
T move(T... args)
SourceXtractor
Definition
Aperture.h:30
std::shared_ptr
std::size_t
Generated by
1.10.0