Imaging classes

class _2dcoordinate

An (x, y) pair in a 2-dimensional discrete surface

Comparison between these objects can be done with the <, <=, ==, !=, > and >= operators, but users should not that there is no way to order values based on these operators (that is, objects of this type are by themselves non-sortable).

Public Functions

bool operator>=(const _2dcoordinate &other) const

greater or equal comparison across both dimensions

bool operator>(const _2dcoordinate &other) const

greater than comparison across both dimensions

bool operator<=(const _2dcoordinate &other) const

less or equal comparison across both dimensions

bool operator<(const _2dcoordinate &other) const

less than comparison across both dimensions

typedef _2dcoordinate profit::Dimensions
typedef _2dcoordinate profit::Point
template<typename T, typename D>
class surface : public profit::surface_base

Base class for 2D-organized data

Public Functions

void zero()

Assigns zero to all elements of this Image.

D extend(Dimensions dimensions, Point start = Point()) const

Creates a new surface that is an extension of this object. The new dimensions must be greater or equal to the current dimensions. The current contents of this surface are placed at start, relative to the new surface’s dimension.

Return
The new extended surface
Parameters
  • dimensions: The dimensions of the new extended surface.
  • start: The starting point of the original surface relative to the new one

void extend(D &extended, Point start = Point()) const

Extends this object into the given surface. The new surface’s dimensions must be greater or equal to the current dimensions. The current contents of this surface are placed at start, relative to the new surface’s dimension.

Parameters
  • extended: The new surface to hold the extended version of this image. Its dimensions mandate how much the current image should extend.
  • start: The starting point of the original surface relative to the new one

D crop(Dimensions dimensions, Point start = Point()) const

Creates a new image that is a crop of this image. The cropped image starts at start (relative to this image) and has new dimensions dimensions.

Return
The new cropped image
Parameters
  • dimensions: The dimensions of the cropped image. They should be less or equal than the dimensions of this image.
  • start: The start of the new image relative to this image.

D reverse() const

Returns a copy of this surface with its underlying values in the reversed order, such that the top-right corner is now that bottom-left corner and vice-versa.

Return
A new object with reversed values

Box bounding_box() const

Returns a “value-interesting” bounding box for this surface; that is, the subset of this surface inside which all values are different from zero.

Return
The minimum bounding box within which all non-zero values of this surface are contained.

bool operator==(const surface &other) const

Comparison operator.

reference operator[](const size_type idx)

subscript operator

const_reference operator[](const size_type idx) const

subscript operator, const

reference operator[](const Point &p)

[] operator that works with a Point

iterator begin()

iterator to beginning of data

iterator end()

iterator to end of data

operator std::vector<T>() const

type casting to std::vector<T>

class Image : public profit::surface<double, Image>

An image is a surface of doubles.

Public Types

enum UpsamplingMode

Available image upsampling modes

Values:

SCALE = 0

Scales the value of the original pixel by factor * factor before copying it into each corresponding upsampled pixel. This has the effect of preserving the total flux of the original image

COPY

Copies the value of the original pixel unmodified into each corresponding upsampled pixel

enum DownsamplingMode

Available image downsampling modes

Values:

AVERAGE = 0

Pixel values on the resulting image are the average of the corresponding pixels on the original image.

SUM

Pixel values on the resulting image are the sum of the corresponding pixels on the original image.

SAMPLE

Pixel values on the resulting image are samples from the original image. Samples are taken from the lowest placed pixel, in both dimensions, of the corresponding pixels of the original image.

Public Functions

double total() const

Returns the sum of the image pixel’s values (or “total flux”).

Return
The sum of the image pixel’s values

Image upsample(unsigned int factor, UpsamplingMode mode = SCALE) const

Upsamples this image by the given factor.

The resulting image’s dimensions will be the original image’s times the upsampling factor. The particular upsampling method is determined by mode

Return
An upsampled image, without interpolation.
Parameters
  • factor: The upsampling factor. Must be greater than 0. If equals to 1, the upsampled image is equals to the original image.
  • mode: The upsampling mode to use

Image downsample(unsigned int factor, DownsamplingMode mode = SUM) const

Downsamples this image by the given factor.

The resulting image’s dimensions will be the ceiling of this image’s divided by the downsampling factor. The particular downsampling method is determined by mode

Return
A downsampled image, without interpolation.
Parameters
  • factor: The downsampling factor. Must be greater than 0. If equals to 1, the upsampled image is equals to the original image.
  • mode: The downsampling mode to use

void normalize()

Normalized this image; i.e., rescales its values so the sum of all its pixels’ values is 1. If all pixels are 0 the image is not changed.

Image normalize() const

Returns a normalized version of this image; i.e., one where the sum of all pixels’ values is 1. If all pixels are 0 the returned image is identical to this image.

value_type *data()

Exposes the underlying data pointer in case it becomes necessary to access it directly.

Return
The underlying data pointer

const value_type *data() const

Exposes the underlying data pointer in case it becomes necessary to access it directly

Return
The underlying data pointer

Image &operator+=(const Image &rhs)

Addition assignment of another Image.

Image operator+(const Image &rhs) const

Addition of another image.

Image &operator/=(double denominator)

Division assignment against a double denominator.

Image &operator*=(double denominator)

Multiplication assignment against a double multiplier.

Image operator/(double denominator) const

Division against a double denominator.

Image &operator&=(const Mask &mask)

Bitwise AND assignment with a Mask (applies the mask to the image).

const Image operator&(const Mask &mask) const

Bitwise AND with a Mask (applies the mask to the image).

class Mask : public profit::surface<bool, Mask>

A mask is surface of bools

Public Functions

Mask expand_by(Dimensions pad, int threads = 1) const

Returns a new Mask where the area covered by the new mask (i.e., where the new mask’s value is true) is an “expanded” version of this mask. This is similar in nature to a convolution, but simpler as it is a simpler boolean operation that requires no additions or further scaling.

Parameters
  • pad: the amount of cells to expand each input pixel on each dimension.
  • threads: threads to use to perform computation. Only valid if compiled with OpenMP support

Mask upsample(unsigned int factor) const

Upsamples this mask by the given factor.

The resulting mask’s dimensions will be the original mask’s times the upsampling factor. The original mask’s values are copied on the corresponding cells of the upsampled mask.

Return
The upsampled mask
Parameters
  • factor: The upsampling factor. Must be greater than 0. If equals to 1, the upsampled mask is equals to the original mask.