Go to the documentation of this file.
25 template <
class TPixel,
class TAllocator>
28 template <
class TPredicate,
class TAllocator>
31 template <
class TAllocator>
49 static_assert(std::is_nothrow_move_constructible<
52 template <
class TAllocator>
75 Eigen::aligned_allocator<uint8_t>>>());
77 template <
class TAllocator>
79 std::unique_ptr<uint8_t, MaybeLeakingUniqueDataAreaDeleter<TAllocator>>;
88 template <
class TPixel,
class TAllocator = Eigen::aligned_allocator<u
int8_t>>
91 template <
class TT,
class TAllocator2T>
94 template <
class TPredicate,
class TAllocator2T>
108 TAllocator().allocate(layout.
sizeBytes()),
112 this->ptr_ =
reinterpret_cast<TPixel*
>(this->
unique_.get());
127 image.copyDataFrom(view);
134 template <
class TOtherPixel,
class TUnaryOperation>
138 MutImage mut_image(view.imageSize());
139 mut_image.transformFrom(view, unary_op);
146 template <
class TLhsPixel,
class TRhsPixel,
class TBinaryOperation>
150 TBinaryOperation
const& binary_op) ->
MutImage {
151 MutImage mut_image(lhs.imageSize());
152 mut_image.transformFrom(lhs, rhs, binary_op);
171 this->ptr_ =
reinterpret_cast<TPixel*
>(
unique_.get());
172 img.setViewToEmpty();
178 this->layout_ = img.layout_;
179 this->
unique_ = std::move(img.unique_);
180 this->ptr_ =
reinterpret_cast<TPixel*
>(
unique_.get());
181 img.setViewToEmpty();
192 std::swap(img.layout_, this->layout_);
193 std::swap(img.ptr_, this->ptr_);
194 std::swap(img.
unique_, this->unique_);
202 this->setViewToEmpty();
210 *std::get_deleter<MaybeLeakingUniqueDataAreaDeleter<TAllocator>>(
MutImage(MutImage &&img) noexcept
Nothrow move constructor.
Definition: mut_image.h:169
Definition: mut_dyn_image.h:23
~MutImage()
Destructor.
Definition: mut_image.h:160
#define SOPHUS_ASSERT(...)
Definition: common.h:40
size_t num_bytes
Definition: mut_image.h:46
Image read-only access to pixels and shared ownership, hence cheap to copy. Type is nullable.
Definition: image.h:31
Layout of the image: width, height and pitch in bytes.
Definition: layout.h:23
Image MutImage, owning images types.
Definition: num_diff.h:20
std::unique_ptr< uint8_t, MaybeLeakingUniqueDataAreaDeleter< TAllocator > > UniqueDataArea
Definition: mut_image.h:79
A view of an (immutable) image, which does not own the data.
Definition: image_view.h:55
auto leakAndReturnDeleter() -> MaybeLeakingUniqueDataAreaDeleter< TAllocator >
Leaks memory and returns deleter.
Definition: mut_image.h:207
void swap(MutImage &img)
Swaps img and this.
Definition: mut_image.h:191
static auto makeFromTransform(ImageView< TOtherPixel > view, TUnaryOperation const &unary_op) -> MutImage
Creates new MutImage given view and unary transform function.
Definition: mut_image.h:135
Definition: mut_image.h:53
static auto makeFromTransform(ImageView< TLhsPixel > lhs, ImageView< TRhsPixel > rhs, TBinaryOperation const &binary_op) -> MutImage
Creates new MutImage given two views and binary transform function.
Definition: mut_image.h:147
MutImage(sophus::ImageSize size)
Creates new contiguous image with given size.
Definition: mut_image.h:118
MutImage()
Constructs empty image.
Definition: mut_image.h:98
void reset()
Clears image.
Definition: mut_image.h:200
std::optional< UniqueDataAreaDeleter< TAllocator > > image_deleter
Definition: mut_image.h:70
A image with write access to pixels and exclusive ownership. There is no copy constr / copy assignmen...
Definition: image_view.h:32
UniqueDataAreaDeleter(size_t num_bytes)
Definition: mut_image.h:35
UniqueDataArea< TAllocator > unique_
MutImage has unique ownership.
Definition: mut_image.h:218
auto viewMut() const -> MutImageView< TPixel >
Definition: mut_image.h:186
#define SOPHUS_ASSERT_EQ(...)
Definition: common.h:41
Definition: mut_image.h:32
auto operator=(MaybeLeakingUniqueDataAreaDeleter const &) -> MaybeLeakingUniqueDataAreaDeleter &=default
auto operator=(MutImage const &) -> MutImage &=delete
Not copy assignable.
MaybeLeakingUniqueDataAreaDeleter(UniqueDataAreaDeleter< TAllocator > image_deleter)
Definition: mut_image.h:55
auto operator=(MutImage &&img) noexcept -> MutImage &
Nothrow move assignment.
Definition: mut_image.h:176
static auto makeCopyFrom(ImageView< TPixel > const &view) -> MutImage
Creates contiguous copy from view.
Definition: mut_image.h:124
auto operator=(UniqueDataAreaDeleter const &) -> UniqueDataAreaDeleter &=default
void operator()(uint8_t *p) const
Definition: mut_image.h:36
void operator()(uint8_t *p) const
Definition: mut_image.h:64
View of a mutable image, which does not own the data.
Definition: mut_image_view.h:61
MaybeLeakingUniqueDataAreaDeleter()=default
MutImage(ImageLayout layout)
Creates new image with given layout.
Definition: mut_image.h:103
auto sizeBytes() const -> size_t
Definition: layout.h:62
Image size, hence its width and height.
Definition: image_size.h:21
UniqueDataAreaDeleter()=default