Ocean
Loading...
Searching...
No Matches
Layer.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_CV_SYNTHESIS_LAYER_H
9#define META_OCEAN_CV_SYNTHESIS_LAYER_H
10
13
14#include "ocean/base/Frame.h"
15
17
18namespace Ocean
19{
20
21namespace CV
22{
23
24namespace Synthesis
25{
26
27/**
28 * This class implements the base class for all inpainting layers.
29 * The inpainting layer holds one inpainting frame with a corresponding inpainting mask.<br>
30 * Frame and mask must have the same frame dimensions and pixel origins.<br>
31 * Optional, each layer can hold a bounding box enclosing the inpainting area to speedup the computation.
32 * @ingroup cvsynthesis
33 */
34class OCEAN_CV_SYNTHESIS_EXPORT Layer
35{
36 public:
37
38 /**
39 * Returns the width of this layer.
40 * @return Layer with in pixel, with range [0, infinity)
41 */
42 inline unsigned int width() const;
43
44 /**
45 * Returns the height of this layer.
46 * @return Layer height in pixel, with range [0, infinity)
47 */
48 inline unsigned int height() const;
49
50 /**
51 * Returns the frame of this layer.
52 * @return Layer frame
53 */
54 inline const Frame& frame() const;
55
56 /**
57 * Returns the frame of this layer.
58 * @return Layer frame
59 */
60 inline Frame& frame();
61
62 /**
63 * Returns the mask of this layer.
64 * @return Layer mask
65 */
66 inline const Frame& mask() const;
67
68 /**
69 * Returns the mask of this layer.
70 * @return Layer mask
71 */
72 inline Frame& mask();
73
74 /**
75 * Returns the optional bounding box of this layer.
76 * @return Bounding box covering all mask pixels, if defined
77 */
78 inline const PixelBoundingBox& boundingBox() const;
79
80 /**
81 * Returns the mapping of this synthesis layer.
82 * @return Synthesis mapping
83 */
84 virtual const Mapping& mapping() const = 0;
85
86 /**
87 * Returns the mapping of this synthesis layer.
88 * @return Synthesis mapping
89 */
90 virtual Mapping& mapping() = 0;
91
92 /**
93 * Returns whether this layer holds at least one pixel.
94 * @return True, if so
95 */
96 explicit inline operator bool() const;
97
98 protected:
99
100 /**
101 * Creates an empty inpainting layer.
102 */
103 Layer() = default;
104
105 /**
106 * Copy constructor.
107 * The resulting layer will hold a copy of the underlying image data.
108 * @param layer The layer to be copied
109 */
110 Layer(const Layer& layer);
111
112 /**
113 * Move constructor.
114 * @param layer The layer to be moved
115 */
116 Layer(Layer&& layer) noexcept;
117
118 /**
119 * Creates a new inpainting layer by a given frame and corresponding mask.
120 * @param frame Inpainting frame for this layer
121 * @param mask Inpainting mask of this layer
122 * @param boundingBox Optional inpainting bounding box covering all mask pixels, if defined
123 */
124 Layer(Frame& frame, const Frame& mask, const PixelBoundingBox& boundingBox = PixelBoundingBox());
125
126 /**
127 * Destructs the inpainting layer.
128 */
129 virtual ~Layer();
130
131 /**
132 * Assign operator.
133 * Afterwards, this layer will hold a copy of the underlying image data.
134 * @param layer The layer to be copied
135 * @return Reference to this layer
136 */
137 Layer& operator=(const Layer& layer);
138
139 /**
140 * Move operator.
141 * @param layer The layer to be moved
142 * @return Reference to this layer
143 */
144 Layer& operator=(Layer&& layer) noexcept;
145
146 protected:
147
148 /// Width of this synthesis layer in pixel, with range [0, infinity)
149 unsigned int width_ = 0u;
150
151 /// Height of this synthesis layer in pixel, with range [0, infinity)
152 unsigned int height_ = 0u;
153
154 /// Frame of the inpainting layer, never owning the memory.
156
157 /// Mask of the inpainting layer, with same dimension and pixel origin as the defined frame, always owning the memory.
159
160 /// Optional bounding box covering all mask pixels, if defined.
162};
163
164inline unsigned int Layer::width() const
165{
166 return width_;
167}
168
169inline unsigned int Layer::height() const
170{
171 return height_;
172}
173
174inline const Frame& Layer::frame() const
175{
176 return frame_;
177}
178
180{
181 return frame_;
182}
183
184inline const Frame& Layer::mask() const
185{
186 return mask_;
187}
188
190{
191 return mask_;
192}
193
195{
196 return boundingBox_;
197}
198
199inline Layer::operator bool() const
200{
201 return width_ != 0u && height_ != 0u;
202}
203
204}
205
206}
207
208}
209
210#endif // META_OCEAN_CV_SYNTHESIS_LAYER_1_H
This class implements the base class for all inpainting layers.
Definition Layer.h:35
PixelBoundingBox boundingBox_
Optional bounding box covering all mask pixels, if defined.
Definition Layer.h:161
unsigned int height() const
Returns the height of this layer.
Definition Layer.h:169
unsigned int width_
Width of this synthesis layer in pixel, with range [0, infinity)
Definition Layer.h:149
Layer()=default
Creates an empty inpainting layer.
Frame frame_
Frame of the inpainting layer, never owning the memory.
Definition Layer.h:155
virtual ~Layer()
Destructs the inpainting layer.
Layer & operator=(Layer &&layer) noexcept
Move operator.
const Frame & mask() const
Returns the mask of this layer.
Definition Layer.h:184
Layer & operator=(const Layer &layer)
Assign operator.
Layer(const Layer &layer)
Copy constructor.
virtual Mapping & mapping()=0
Returns the mapping of this synthesis layer.
Layer(Frame &frame, const Frame &mask, const PixelBoundingBox &boundingBox=PixelBoundingBox())
Creates a new inpainting layer by a given frame and corresponding mask.
unsigned int height_
Height of this synthesis layer in pixel, with range [0, infinity)
Definition Layer.h:152
Frame mask_
Mask of the inpainting layer, with same dimension and pixel origin as the defined frame,...
Definition Layer.h:158
unsigned int width() const
Returns the width of this layer.
Definition Layer.h:164
Layer(Layer &&layer) noexcept
Move constructor.
const Frame & frame() const
Returns the frame of this layer.
Definition Layer.h:174
virtual const Mapping & mapping() const =0
Returns the mapping of this synthesis layer.
const PixelBoundingBox & boundingBox() const
Returns the optional bounding box of this layer.
Definition Layer.h:194
This class is the base class for all mappings.
Definition Mapping.h:35
This class implements Ocean's image class.
Definition Frame.h:1808
The namespace covering the entire Ocean framework.
Definition Accessor.h:15