Main MRPT website > C++ reference for MRPT 1.9.9
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
mrpt::img::CImage Class Reference

Detailed Description

A class for storing images as grayscale or RGB bitmaps.

File I/O is supported as:

How to create color/grayscale images:

CImage img1(width, height, CH_GRAY ); // Grayscale image (8U1C)
CImage img2(width, height, CH_RGB ); // RGB image (8U3C)

Additional notes:

Some functions are implemented in MRPT with highly optimized SSE2/SSE3 routines, in suitable platforms and compilers. To see the list of optimizations refer to this page. If optimized versions are not available in some platform it falls back to default OpenCV methods.

For many computer vision functions that use CImage as its image data type, see mrpt::vision.

Note
This class acts as a wrapper class to a small subset of OpenCV functions. IplImage is the internal storage structure.
See also
mrpt::vision, mrpt::vision::CFeatureExtractor, mrpt::vision::CImagePyramid, CSerializable, CCanvas

Definition at line 130 of file img/CImage.h.

#include <mrpt/img/CImage.h>

Inheritance diagram for mrpt::img::CImage:
Inheritance graph

Public Types

enum  TPenStyle {
  psSolid = 0, psDash, psDot, psDashDot,
  psDashDotDot
}
 Definition of pen styles. More...
 

Public Member Functions

voidoperator new (size_t size)
 
voidoperator new[] (size_t size)
 
void operator delete (void *ptr) noexcept
 
void operator delete[] (void *ptr) noexcept
 
void operator delete (void *memory, void *ptr) noexcept
 
voidoperator new (size_t size, const std::nothrow_t &) noexcept
 
void operator delete (void *ptr, const std::nothrow_t &) noexcept
 
virtual mxArraywriteToMatlab () const
 Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More...
 
void rectangle (int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width=1)
 Draws a rectangle (an empty rectangle, without filling) More...
 
void triangle (int x0, int y0, int size, const mrpt::img::TColor color, bool inferior=true, unsigned int width=1)
 Draws a triangle. More...
 
virtual void filledRectangle (int x0, int y0, int x1, int y1, const mrpt::img::TColor color)
 Draws a filled rectangle. More...
 
virtual void textOut (int x0, int y0, const std::string &str, const mrpt::img::TColor color)
 Renders 2D text using bitmap fonts. More...
 
virtual void selectTextFont (const std::string &fontName)
 Select the current font used when drawing text. More...
 
virtual void drawImage (int x, int y, const mrpt::img::CImage &img)
 Draws an image as a bitmap at a given position. More...
 
virtual void drawImage (int x, int y, const mrpt::img::CImage &img, float rotation, float scale)
 Draws an image as a bitmap at a given position, with some custom scale and rotation changes. More...
 
void cross (int x0, int y0, const mrpt::img::TColor color, char type, unsigned int size=5, unsigned int width=1)
 Draw a cross. More...
 
template<class MATRIX2X2 >
void ellipseGaussian (const MATRIX2X2 *cov2D, const double mean_x, const double mean_y, double confIntervalStds=2, const mrpt::img::TColor &color=mrpt::img::TColor(255, 255, 255), unsigned int width=1, int nEllipsePoints=20)
 Draws an ellipse representing a given confidence interval of a 2D Gaussian distribution. More...
 
template<class FEATURELIST >
void drawFeaturesSimple (const FEATURELIST &list, const TColor &color=TColor::red(), const int cross_size=5)
 Draws a set of marks onto the image, given a generic container of entities having just "x" and "y" fields. More...
 
template<class FEATURELIST >
void drawFeatures (const FEATURELIST &list, const TColor &color=TColor::red(), const bool showIDs=false, const bool showResponse=false)
 Draws a set of marks (or scaled circles for features with scale) onto the image, given a generic container of features. More...
 
Constructors & destructor
 CImage ()
 Default constructor: initialize an 1x1 RGB image. More...
 
 CImage (unsigned int width, unsigned int height, TImageChannels nChannels=CH_RGB, bool originTopLeft=true)
 Constructor for a given image size and type. More...
 
 CImage (const CImage &o)
 Copy constructor, makes a full copy of the original image contents (unless it was externally stored, in that case, this new image will just point to the same image file). More...
 
 CImage (TConstructorFlags_CImage)
 Fast constructor that leaves the image uninitialized (the internal IplImage pointer set to nullptr). More...
 
 CImage (const CImage &other_img, TConstructorFlags_CImage constructor_flag)
 Fast constructor of a grayscale version of another image, making a reference to the original image if it already was in grayscale, or otherwise creating a new grayscale image and converting the original image into it. More...
 
 CImage (void *iplImage)
 Constructor from an IPLImage*, making a copy of the image. More...
 
template<typename Derived >
 CImage (const Eigen::MatrixBase< Derived > &m, bool matrix_is_normalized)
 Explicit constructor from a matrix, interpreted as grayscale intensity values, in the range [0,1] (normalized=true) or [0,255] (normalized=false) More...
 
virtual ~CImage ()
 Destructor: More...
 
Manipulate the image contents or size, various computer-vision

methods (image filters, undistortion, etc.)

void resize (unsigned int width, unsigned int height, TImageChannels nChannels, bool originTopLeft)
 Changes the size of the image, erasing previous contents (does NOT scale its current content, for that, see scaleImage). More...
 
void scaleImage (unsigned int width, unsigned int height, TInterpolationMethod interp=IMG_INTERP_CUBIC)
 Scales this image to a new size, interpolating as needed. More...
 
void scaleImage (CImage &out_img, unsigned int width, unsigned int height, TInterpolationMethod interp=IMG_INTERP_CUBIC) const
 Scales this image to a new size, interpolating as needed, saving the new image in a different output object. More...
 
void rotateImage (double angle_radians, unsigned int center_x, unsigned int center_y, double scale=1.0)
 Rotates the image by the given angle around the given center point, with an optional scale factor. More...
 
void setPixel (int x, int y, size_t color) override
 Changes the value of the pixel (x,y). More...
 
void setOriginTopLeft (bool val)
 Changes the property of the image stating if the top-left corner (vs. More...
 
void line (int x0, int y0, int x1, int y1, const mrpt::img::TColor color, unsigned int width=1, TPenStyle penStyle=psSolid) override
 Draws a line. More...
 
void drawCircle (int x, int y, int radius, const mrpt::img::TColor &color=mrpt::img::TColor(255, 255, 255), unsigned int width=1) override
 Draws a circle of a given radius. More...
 
void equalizeHistInPlace ()
 Equalize the image histogram, replacing the original image. More...
 
void equalizeHist (CImage &outImg) const
 Equalize the image histogram, saving the new image in the given output object. More...
 
CImage scaleHalf () const
 Returns a new image scaled down to half its original size. More...
 
void scaleHalf (CImage &out_image) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
CImage scaleHalfSmooth () const
 Returns a new image scaled down to half its original size (averaging between every two rows) More...
 
void scaleHalfSmooth (CImage &out_image) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
CImage scaleDouble () const
 Returns a new image scaled up to double its original size. More...
 
void scaleDouble (CImage &out_image) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
void update_patch (const CImage &patch, const unsigned int col, const unsigned int row)
 Update a part of this image with the "patch" given as argument. More...
 
void extract_patch (CImage &patch, const unsigned int col=0, const unsigned int row=0, const unsigned int width=1, const unsigned int height=1) const
 Extract a patch from this image, saveing it into "patch" (its previous contents will be overwritten). More...
 
float correlate (const CImage &img2int, int width_init=0, int height_init=0) const
 Computes the correlation coefficient (returned as val), between two images This function use grayscale images only img1, img2 must be same size (by AJOGD @ DEC-2006) More...
 
void cross_correlation (const CImage &patch_img, size_t &u_max, size_t &v_max, double &max_val, int u_search_ini=-1, int v_search_ini=-1, int u_search_size=-1, int v_search_size=-1, CImage *out_corr_image=nullptr) const
 Computes the correlation between this image and another one, encapsulating the openCV function cvMatchTemplate. More...
 
void cross_correlation_FFT (const CImage &in_img, math::CMatrixFloat &out_corr, int u_search_ini=-1, int v_search_ini=-1, int u_search_size=-1, int v_search_size=-1, float biasThisImg=0, float biasInImg=0) const
 Computes the correlation matrix between this image and another one. More...
 
void normalize ()
 Optimize the brightness range of an image without using histogram Only for one channel images. More...
 
void flipVertical (bool also_swapRB=false)
 Flips the image vertically. More...
 
void flipHorizontal ()
 Flips the image horizontally. More...
 
void swapRB ()
 Swaps red and blue channels. More...
 
void rectifyImage (CImage &out_img, const mrpt::img::TCamera &cameraParams) const
 Rectify (un-distort) the image according to some camera parameters, and returns an output un-distorted image. More...
 
void rectifyImageInPlace (const mrpt::img::TCamera &cameraParams)
 Rectify (un-distort) the image according to a certain camera matrix and vector of distortion coefficients, replacing "this" with the rectified image. More...
 
void rectifyImageInPlace (void *mapX, void *mapY)
 Rectify an image (undistorts and rectification) from a stereo pair according to a pair of precomputed rectification maps. More...
 
void filterMedian (CImage &out_img, int W=3) const
 Filter the image with a Median filter with a window size WxW, returning the filtered image in out_img
More...
 
void filterMedianInPlace (int W=3)
 Filter the image with a Median filter with a window size WxH, replacing "this" image by the filtered one. More...
 
void filterGaussianInPlace (int W=3, int H=3)
 Filter the image with a Gaussian filter with a window size WxH, returning the filtered image in out_img
More...
 
void filterGaussian (CImage &out_img, int W=3, int H=3) const
 Filter the image with a Gaussian filter with a window size WxH, replacing "this" image by the filtered one. More...
 
bool drawChessboardCorners (std::vector< TPixelCoordf > &cornerCoords, unsigned int check_size_x, unsigned int check_size_y, unsigned int lines_width=1, unsigned int circles_radius=4)
 Draw onto this image the detected corners of a chessboard. More...
 
void joinImagesHorz (const CImage &im1, const CImage &im2)
 Joins two images side-by-side horizontally. More...
 
float KLT_response (const unsigned int x, const unsigned int y, const unsigned int half_window_size) const
 Compute the KLT response at a given pixel (x,y) - Only for grayscale images (for efficiency it avoids converting to grayscale internally). More...
 
Copy, move & swap operations
CImageoperator= (const CImage &o)
 Copy operator (if the image is externally stored, the writen image will be such as well). More...
 
void copyFromForceLoad (const CImage &o)
 Copies from another image, and, if that one is externally stored, the image file will be actually loaded into memory in "this" object. More...
 
void copyFastFrom (CImage &o)
 Moves an image from another object, erasing the origin image in the process (this is much faster than copying) More...
 
void swap (CImage &o)
 Very efficient swap of two images (just swap the internal pointers) More...
 
Access to image contents (IplImage structure and raw pixels).
template<typename T >
const T * getAs () const
 Returns a pointer to a const T* containing the image - the idea is to call like "img.getAs<IplImage>()" so we can avoid here including OpenCV's headers. More...
 
template<typename T >
T * getAs ()
 Returns a pointer to a T* containing the image - the idea is to call like "img.getAs<IplImage>()" so we can avoid here including OpenCV's headers. More...
 
unsigned char * get_unsafe (unsigned int col, unsigned int row, unsigned int channel=0) const
 Access to pixels without checking boundaries - Use normally the () operator better, which checks the coordinates. More...
 
float getAsFloat (unsigned int col, unsigned int row, unsigned int channel) const
 Returns the contents of a given pixel at the desired channel, in float format: [0,255]->[0,1] The coordinate origin is pixel(0,0)=top-left corner of the image. More...
 
float getAsFloat (unsigned int col, unsigned int row) const
 Returns the contents of a given pixel (for gray-scale images, in color images the gray scale equivalent is computed for the pixel), in float format: [0,255]->[0,1] The coordinate origin is pixel(0,0)=top-left corner of the image. More...
 
unsigned char * operator() (unsigned int col, unsigned int row, unsigned int channel=0) const
 Returns a pointer to a given pixel information. More...
 
Query image properties
size_t getWidth () const override
 Returns the width of the image in pixels. More...
 
size_t getHeight () const override
 Returns the height of the image in pixels. More...
 
void getSize (TImageSize &s) const
 Return the size of the image. More...
 
TImageSize getSize () const
 Return the size of the image. More...
 
size_t getRowStride () const
 Returns the row stride of the image: this is the number of bytes between two consecutive rows. More...
 
float getMaxAsFloat () const
 Return the maximum pixel value of the image, as a float value in the range [0,1]. More...
 
bool isColor () const
 Returns true if the image is RGB, false if it is grayscale. More...
 
bool isOriginTopLeft () const
 Returns true if the coordinates origin is top-left, or false if it is bottom-left
More...
 
const char * getChannelsOrder () const
 Returns a string of the form "BGR","RGB" or "GRAY" indicating the channels ordering. More...
 
void setChannelsOrder_RGB ()
 Marks the channel ordering in a color image as "RGB" (this doesn't actually modify the image data, just the format description) More...
 
void setChannelsOrder_BGR ()
 Marks the channel ordering in a color image as "BGR" (this doesn't actually modify the image data, just the format description) More...
 
TImageChannels getChannelCount () const
 Returns the number of channels, typically 1 (GRAY) or 3 (RGB) More...
 
void getAsMatrix (mrpt::math::CMatrixFloat &outMatrix, bool doResize=true, int x_min=0, int y_min=0, int x_max=-1, int y_max=-1) const
 Returns the image as a matrix with pixel grayscale values in the range [0,1]. More...
 
void getAsRGBMatrices (mrpt::math::CMatrixFloat &outMatrixR, mrpt::math::CMatrixFloat &outMatrixG, mrpt::math::CMatrixFloat &outMatrixB, bool doResize=true, int x_min=0, int y_min=0, int x_max=-1, int y_max=-1) const
 Returns the image as RGB matrices with pixel values in the range [0,1]. More...
 
void getAsMatrixTiled (math::CMatrix &outMatrix) const
 Returns the image as a matrix, where the image is "tiled" (repeated) the required number of times to fill the entire size of the matrix on input. More...
 
Color/Grayscale conversion
CImage grayscale () const
 Returns a grayscale version of the image, or itself if it is already a grayscale image. More...
 
void grayscale (CImage &ret) const
 Returns a grayscale version of the image, or itself if it is already a grayscale image. More...
 
void colorImage (CImage &ret) const
 Returns a RGB version of the grayscale image, or itself if it is already a RGB image. More...
 
void colorImageInPlace ()
 Replaces this grayscale image with a RGB version of it. More...
 
void grayscaleInPlace ()
 Replaces the image with a grayscale version of it. More...
 

Static Public Member Functions

static voidoperator new (size_t size, void *ptr)
 

Static Public Attributes

Serialization format global flags
static bool DISABLE_ZIP_COMPRESSION = false
 By default, when storing images through the CSerializable interface, grayscale images will be ZIP compressed if they are larger than 16Kb: this flag can be turn on to disable ZIP compression and gain speed versus occupied space. More...
 
static bool DISABLE_JPEG_COMPRESSION = false
 By default, when storing images through the CSerializable interface, RGB images are JPEG-compressed to save space. More...
 
static int SERIALIZATION_JPEG_QUALITY = 95
 Unless DISABLE_JPEG_COMPRESSION=true, this sets the JPEG quality (range 1-100) of serialized RGB images. More...
 

Protected Member Functions

void changeSize (unsigned int width, unsigned int height, TImageChannels nChannels, bool originTopLeft)
 Resize the buffers in "img" to accomodate a new image size and/or format. More...
 
void releaseIpl (bool thisIsExternalImgUnload=false) noexcept
 Release the internal IPL image, if not nullptr or read-only. More...
 
void makeSureImageIsLoaded () const
 Checks if the image is of type "external storage", and if so and not loaded yet, load it. More...
 
CSerializable virtual methods
uint8_t serializeGetVersion () const override
 Must return the current versioning number of the object. More...
 
void serializeTo (mrpt::serialization::CArchive &out) const override
 Pure virtual method for writing (serializing) to an abstract archive. More...
 
void serializeFrom (mrpt::serialization::CArchive &in, uint8_t serial_version) override
 Pure virtual method for reading (deserializing) from an abstract archive. More...
 

Protected Attributes

std::string m_selectedFont
 The selected font name. More...
 
const uint32_tm_selectedFontBitmaps
 Direct access to character bitmaps. More...
 
Data members
voidimg
 The internal IplImage pointer to the actual image content. More...
 
bool m_imgIsReadOnly
 Set to true only when using setFromIplImageReadOnly. More...
 
bool m_imgIsExternalStorage
 Set to true only when using setExternalStorage. More...
 
std::string m_externalFile
 The file name of a external storage image. More...
 

RTTI stuff


using Ptr = std::shared_ptr< CImage >
 
using ConstPtr = std::shared_ptr< const CImage >
 
using UniquePtr = std::unique_ptr< CImage >
 
using ConstUniquePtr = std::unique_ptr< const CImage >
 
static mrpt::rtti::CLASSINIT _init_CImage
 
static const mrpt::rtti::TRuntimeClassId runtimeClassId
 
static constexpr const char * className = "CImage"
 
static const mrpt::rtti::TRuntimeClassId_GetBaseClass ()
 
static constexpr auto getClassName ()
 
static const mrpt::rtti::TRuntimeClassIdGetRuntimeClassIdStatic ()
 
static mrpt::rtti::CObjectCreateObject ()
 
template<typename... Args>
static Ptr Create (Args &&... args)
 
template<typename... Args>
static UniquePtr CreateUnique (Args &&... args)
 
virtual const mrpt::rtti::TRuntimeClassIdGetRuntimeClass () const override
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::rtti::CObjectclone () const override
 Returns a deep copy (clone) of the object, indepently of its class. More...
 

External storage-mode methods


static const std::stringgetImagesPathBase ()
 By default, ".". More...
 
static void setImagesPathBase (const std::string &path)
 
void setExternalStorage (const std::string &fileName) noexcept
 By using this method the image is marked as referenced to an external file, which will be loaded only under demand. More...
 
bool isExternallyStored () const noexcept
 See setExternalStorage(). More...
 
std::string getExternalStorageFile () const noexcept
 Only if isExternallyStored() returns true. More...
 
void getExternalStorageFileAbsolutePath (std::string &out_path) const
 Only if isExternallyStored() returns true. More...
 
std::string getExternalStorageFileAbsolutePath () const
 Only if isExternallyStored() returns true. More...
 
void forceLoad () const
 For external storage image objects only, this method makes sure the image is loaded in memory. More...
 
void unload () const noexcept
 For external storage image objects only, this method unloads the image from memory (or does nothing if already unloaded). More...
 

Set, load & save methods


static bool loadTGA (const std::string &fileName, mrpt::img::CImage &out_RGB, mrpt::img::CImage &out_alpha)
 Loads a TGA true-color RGBA image as two CImage objects, one for the RGB channels plus a separate gray-level image with A channel. More...
 
void loadFromMemoryBuffer (unsigned int width, unsigned int height, bool color, unsigned char *rawpixels, bool swapRedBlue=false)
 Reads the image from raw pixels buffer in memory. More...
 
void loadFromMemoryBuffer (unsigned int width, unsigned int height, unsigned int bytesPerRow, unsigned char *red, unsigned char *green, unsigned char *blue)
 Reads a color image from three raw pixels buffers in memory. More...
 
void loadFromIplImage (void *iplImage)
 Reads the image from a OpenCV IplImage object (making a COPY). More...
 
void setFromIplImage (void *iplImage)
 Reads the image from a OpenCV IplImage object (WITHOUT making a copy). More...
 
void setFromIplImageReadOnly (void *iplImage)
 Reads the image from a OpenCV IplImage object (WITHOUT making a copy) and from now on the image cannot be modified, just read. More...
 
void setFromImageReadOnly (const CImage &other_img)
 Sets the internal IplImage pointer to that of another given image, WITHOUT making a copy, and from now on the image cannot be modified in this object (it will be neither freed, so the memory responsibility will still be of the original image object). More...
 
template<typename Derived >
void setFromMatrix (const Eigen::MatrixBase< Derived > &m, bool matrix_is_normalized=true)
 Set the image from a matrix, interpreted as grayscale intensity values, in the range [0,1] (normalized=true) or [0,255] (normalized=false) Matrix indexes are assumed to be in this order: M(row,column) More...
 
template<typename Derived >
void setFromRGBMatrices (const Eigen::MatrixBase< Derived > &m_r, const Eigen::MatrixBase< Derived > &m_g, const Eigen::MatrixBase< Derived > &m_b, bool matrix_is_normalized=true)
 Set the image from RGB matrices, given the pixels in the range [0,1] (normalized=true) or [0,255] (normalized=false) Matrix indexes are assumed to be in this order: M(row,column) More...
 
void loadFromStreamAsJPEG (mrpt::io::CStream &in)
 Reads the image from a binary stream containing a binary jpeg file. More...
 
bool loadFromFile (const std::string &fileName, int isColor=-1)
 Load image from a file, whose format is determined from the extension (internally uses OpenCV). More...
 
bool loadFromXPM (const char *const *xpm_array, bool swap_rb=true)
 Loads the image from an XPM array, as #include'd from a ".xpm" file. More...
 
bool saveToFile (const std::string &fileName, int jpeg_quality=95) const
 Save the image to a file, whose format is determined from the extension (internally uses OpenCV). More...
 
void saveToStreamAsJPEG (mrpt::io::CStream &out, const int jpeg_quality=95) const
 Save image to binary stream as a JPEG (.jpg) compressed format. More...
 

Member Typedef Documentation

◆ ConstPtr

using mrpt::img::CImage::ConstPtr = std::shared_ptr<const CImage >

Definition at line 132 of file img/CImage.h.

◆ ConstUniquePtr

using mrpt::img::CImage::ConstUniquePtr = std::unique_ptr<const CImage >

Definition at line 132 of file img/CImage.h.

◆ Ptr

using mrpt::img::CImage::Ptr = std::shared_ptr< CImage >

A type for the associated smart pointer

Definition at line 132 of file img/CImage.h.

◆ UniquePtr

using mrpt::img::CImage::UniquePtr = std::unique_ptr< CImage >

Definition at line 132 of file img/CImage.h.

Member Enumeration Documentation

◆ TPenStyle

enum mrpt::img::CCanvas::TPenStyle
inherited

Definition of pen styles.

Enumerator
psSolid 
psDash 
psDot 
psDashDot 
psDashDotDot 

Definition at line 56 of file CCanvas.h.

Constructor & Destructor Documentation

◆ CImage() [1/7]

CImage::CImage ( )

Default constructor: initialize an 1x1 RGB image.

Definition at line 81 of file CImage.cpp.

References CH_RGB, changeSize(), MRPT_END, and MRPT_START.

◆ CImage() [2/7]

CImage::CImage ( unsigned int  width,
unsigned int  height,
TImageChannels  nChannels = CH_RGB,
bool  originTopLeft = true 
)

Constructor for a given image size and type.

Examples:

CImage img1(width, height, CH_GRAY ); // Grayscale image (8U1C)
CImage img2(width, height, CH_RGB ); // RGB image (8U3C)

Definition at line 69 of file CImage.cpp.

References changeSize(), MRPT_END, and MRPT_START.

◆ CImage() [3/7]

CImage::CImage ( const CImage o)

Copy constructor, makes a full copy of the original image contents (unless it was externally stored, in that case, this new image will just point to the same image file).

Definition at line 94 of file CImage.cpp.

References MRPT_END, and MRPT_START.

◆ CImage() [4/7]

mrpt::img::CImage::CImage ( TConstructorFlags_CImage  )
inline

Fast constructor that leaves the image uninitialized (the internal IplImage pointer set to nullptr).

Use only when you know the image will be soon be assigned another image. Example of usage:

Definition at line 170 of file img/CImage.h.

◆ CImage() [5/7]

mrpt::img::CImage::CImage ( const CImage other_img,
TConstructorFlags_CImage  constructor_flag 
)
inline

Fast constructor of a grayscale version of another image, making a reference to the original image if it already was in grayscale, or otherwise creating a new grayscale image and converting the original image into it.

It's very important to keep in mind that the original image can't be destroyed before the new object being created with this constructor. Example of usage:

void my_func(const CImage &in_img) {
const CImage gray_img(in_img, FAST_REF_OR_CONVERT_TO_GRAY);
// We can now operate on "gray_img" being sure it's in grayscale.
}

Definition at line 190 of file img/CImage.h.

References grayscale(), isColor(), MRPT_UNUSED_PARAM, and setFromImageReadOnly().

◆ CImage() [6/7]

CImage::CImage ( void iplImage)

Constructor from an IPLImage*, making a copy of the image.

See also
loadFromIplImage, setFromIplImage

Definition at line 202 of file CImage.cpp.

References changeSize(), MRPT_END, and MRPT_START.

◆ CImage() [7/7]

template<typename Derived >
mrpt::img::CImage::CImage ( const Eigen::MatrixBase< Derived > &  m,
bool  matrix_is_normalized 
)
inlineexplicit

Explicit constructor from a matrix, interpreted as grayscale intensity values, in the range [0,1] (normalized=true) or [0,255] (normalized=false)

See also
setFromMatrix

Definition at line 212 of file img/CImage.h.

References setFromMatrix().

◆ ~CImage()

CImage::~CImage ( )
virtual

Destructor:

Definition at line 219 of file CImage.cpp.

References releaseIpl().

Member Function Documentation

◆ _GetBaseClass()

static const mrpt::rtti::TRuntimeClassId* mrpt::img::CImage::_GetBaseClass ( )
staticprotected

◆ changeSize()

void CImage::changeSize ( unsigned int  width,
unsigned int  height,
TImageChannels  nChannels,
bool  originTopLeft 
)
protected

Resize the buffers in "img" to accomodate a new image size and/or format.

Definition at line 223 of file CImage.cpp.

References mrpt::format(), img, makeSureImageIsLoaded(), MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by CImage(), equalizeHist(), loadFromMemoryBuffer(), loadFromStreamAsJPEG(), loadFromXPM(), resize(), serializeFrom(), setFromMatrix(), and setFromRGBMatrices().

◆ clone()

virtual mrpt::rtti::CObject* mrpt::img::CImage::clone ( ) const
overridevirtual

Returns a deep copy (clone) of the object, indepently of its class.

Implements mrpt::rtti::CObject.

◆ colorImage()

void CImage::colorImage ( CImage ret) const

Returns a RGB version of the grayscale image, or itself if it is already a RGB image.

Replaces this grayscale image with a RGB version of it.

See also
grayscale
grayscaleInPlace

Definition at line 2391 of file CImage.cpp.

References isColor(), and setFromIplImage().

Referenced by mrpt::vision::checkerBoardCameraCalibration(), mrpt::vision::checkerBoardStereoCalibration(), and find_chessboard_corners_multiple().

◆ colorImageInPlace()

void CImage::colorImageInPlace ( )

Replaces this grayscale image with a RGB version of it.

See also
grayscaleInPlace

Definition at line 2415 of file CImage.cpp.

References isColor(), and releaseIpl().

◆ copyFastFrom()

void CImage::copyFastFrom ( CImage o)

Moves an image from another object, erasing the origin image in the process (this is much faster than copying)

See also
operator =

Definition at line 168 of file CImage.cpp.

References img, m_externalFile, m_imgIsExternalStorage, m_imgIsReadOnly, MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by mrpt::opengl::COpenGLViewport::internal_setImageView_fast().

◆ copyFromForceLoad()

void CImage::copyFromForceLoad ( const CImage o)

Copies from another image, and, if that one is externally stored, the image file will be actually loaded into memory in "this" object.

See also
operator =
Exceptions
CExceptionExternalImageNotFoundIf the external image couldn't be loaded.

Definition at line 148 of file CImage.cpp.

References getExternalStorageFileAbsolutePath(), isExternallyStored(), loadFromFile(), and THROW_TYPED_EXCEPTION_FMT.

◆ correlate()

float CImage::correlate ( const CImage img2int,
int  width_init = 0,
int  height_init = 0 
) const

Computes the correlation coefficient (returned as val), between two images This function use grayscale images only img1, img2 must be same size (by AJOGD @ DEC-2006)

Definition at line 1398 of file CImage.cpp.

References getHeight(), getWidth(), makeSureImageIsLoaded(), and THROW_EXCEPTION.

◆ Create()

template<typename... Args>
static Ptr mrpt::img::CImage::Create ( Args &&...  args)
inlinestatic

Definition at line 132 of file img/CImage.h.

◆ CreateObject()

static mrpt::rtti::CObject* mrpt::img::CImage::CreateObject ( )
static

◆ CreateUnique()

template<typename... Args>
static UniquePtr mrpt::img::CImage::CreateUnique ( Args &&...  args)
inlinestatic

Definition at line 132 of file img/CImage.h.

◆ cross()

void CCanvas::cross ( int  x0,
int  y0,
const mrpt::img::TColor  color,
char  type,
unsigned int  size = 5,
unsigned int  width = 1 
)
inherited

Draw a cross.

Parameters
x0The point x coordinate
y0The point y coordinate
colorThe color of the cross
sizeThe size of the cross
typeThe cross type. It could be: 'x', '+' or ':'(like '+' but clear at the center dot)
widthThe desired width of the cross (this is IGNORED yet)

Definition at line 305 of file CCanvas.cpp.

References mrpt::img::CCanvas::line(), and THROW_EXCEPTION.

Referenced by mrpt::img::CCanvas::drawFeatures(), mrpt::img::CCanvas::drawFeaturesSimple(), find_chessboard_corners_multiple(), mrpt::gui::CDisplayWindow::plot(), and mrpt::gui::CDisplayWindow::showImageAndPoints().

◆ cross_correlation()

void CImage::cross_correlation ( const CImage patch_img,
size_t &  u_max,
size_t &  v_max,
double &  max_val,
int  u_search_ini = -1,
int  v_search_ini = -1,
int  u_search_size = -1,
int  v_search_size = -1,
CImage out_corr_image = nullptr 
) const

Computes the correlation between this image and another one, encapsulating the openCV function cvMatchTemplate.

Parameters
patch_imgThe "patch" image, which must be equal, or smaller than "this" image. This function supports gray-scale (1 channel only) images.
u_search_iniThe "x" coordinate of the search window.
v_search_iniThe "y" coordinate of the search window.
u_search_sizeThe width of the search window.
v_search_sizeThe height of the search window.
u_maxThe u coordinate where find the maximun cross correlation value.
v_maxThe v coordinate where find the maximun cross correlation value
max_valThe maximun value of cross correlation which we can find
out_corr_imageIf a !=nullptr pointer is provided, it will be saved here the correlation image. The size of the output image is (this_width-patch_width+1, this_height-patch_height+1 ) Note: By default, the search area is the whole (this) image. (by AJOGD @ MAR-2007)

Definition at line 1454 of file CImage.cpp.

References ASSERT_, getAs(), isColor(), makeSureImageIsLoaded(), mrpt::system::os::memcpy(), MRPT_END, MRPT_START, mrpt::round(), setFromIplImage(), and THROW_EXCEPTION.

Referenced by mrpt::vision::CFeature::patchCorrelationTo().

◆ cross_correlation_FFT()

void CImage::cross_correlation_FFT ( const CImage in_img,
math::CMatrixFloat out_corr,
int  u_search_ini = -1,
int  v_search_ini = -1,
int  u_search_size = -1,
int  v_search_size = -1,
float  biasThisImg = 0,
float  biasInImg = 0 
) const

Computes the correlation matrix between this image and another one.

This implementation uses the 2D FFT for achieving reduced computation time.

Parameters
in_imgThe "patch" image, which must be equal, or smaller than "this" image. This function supports gray-scale (1 channel only) images.
u_search_iniThe "x" coordinate of the search window.
v_search_iniThe "y" coordinate of the search window.
u_search_sizeThe width of the search window.
v_search_sizeThe height of the search window.
out_corrThe output for the correlation matrix, which will be "u_search_size" x "v_search_size"
biasThisImgThis optional parameter is a fixed "bias" value to be substracted to the pixels of "this" image before performing correlation.
biasInImgThis optional parameter is a fixed "bias" value to be substracted to the pixels of "in_img" image before performing correlation. Note: By default, the search area is the whole (this) image. (by JLBC @ JAN-2006)
See also
cross_correlation

Definition at line 1738 of file CImage.cpp.

References ASSERT_, mrpt::math::dft2_complex(), getAsMatrix(), getHeight(), getWidth(), mrpt::math::idft2_complex(), makeSureImageIsLoaded(), MRPT_END, MRPT_START, mrpt::round2up(), and mrpt::square().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_correlation().

◆ drawChessboardCorners()

bool CImage::drawChessboardCorners ( std::vector< TPixelCoordf > &  cornerCoords,
unsigned int  check_size_x,
unsigned int  check_size_y,
unsigned int  lines_width = 1,
unsigned int  r = 4 
)

Draw onto this image the detected corners of a chessboard.

The length of cornerCoords must be the product of the two check_sizes.

Parameters
cornerCoords[IN] The pixel coordinates of all the corners.
check_size_x[IN] The number of squares, in the X direction
check_size_y[IN] The number of squares, in the Y direction
Returns
false if the length of cornerCoords is inconsistent (nothing is drawn then).
See also
mrpt::vision::findChessboardCorners

The length of cornerCoords must be the product of the two check_sizes.

Parameters
cornerCoords[IN] The pixel coordinates of all the corners.
check_size_x[IN] The number of squares, in the X direction
check_size_y[IN] The number of squares, in the Y direction
Returns
false if the length of cornerCoords is inconsistent (nothing is drawn then).

Definition at line 2327 of file CImage.cpp.

References mrpt::img::TColor::blue(), mrpt::format(), mrpt::img::CCanvas::selectTextFont(), and mrpt::img::CCanvas::textOut().

Referenced by mrpt::vision::checkerBoardStereoCalibration().

◆ drawCircle()

void CImage::drawCircle ( int  x,
int  y,
int  radius,
const mrpt::img::TColor color = mrpt::img::TColor(255, 255, 255),
unsigned int  width = 1 
)
overridevirtual

Draws a circle of a given radius.

Parameters
xThe center - x coordinate in pixels.
yThe center - y coordinate in pixels.
radiusThe radius - in pixels.
colorThe color of the circle.
widthThe desired width of the line

Reimplemented from mrpt::img::CCanvas.

Definition at line 1315 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

Referenced by mrpt::vision::CFeatureExtraction::internal_computeSpinImageDescriptors().

◆ drawFeatures()

template<class FEATURELIST >
void mrpt::img::CCanvas::drawFeatures ( const FEATURELIST &  list,
const TColor color = TColor::red(),
const bool  showIDs = false,
const bool  showResponse = false 
)
inlineinherited

Draws a set of marks (or scaled circles for features with scale) onto the image, given a generic container of features.

The class of FEATURELIST can be:

See also
drawFeaturesSimple

Definition at line 323 of file CCanvas.h.

References mrpt::img::CCanvas::cross(), mrpt::img::CCanvas::drawCircle(), mrpt::format(), mrpt::img::TColor::red(), mrpt::round(), and mrpt::img::CCanvas::textOut().

◆ drawFeaturesSimple()

template<class FEATURELIST >
void mrpt::img::CCanvas::drawFeaturesSimple ( const FEATURELIST &  list,
const TColor color = TColor::red(),
const int  cross_size = 5 
)
inlineinherited

Draws a set of marks onto the image, given a generic container of entities having just "x" and "y" fields.

The class of FEATURELIST can be, for example, std::vector<mrpt::math::TPoint2D>, std::vector<TPixelCoordsf> or mrpt::vision::CFeatureList

See also
drawFeatures

Definition at line 302 of file CCanvas.h.

References mrpt::img::CCanvas::cross(), and mrpt::round().

◆ drawImage() [1/2]

void CCanvas::drawImage ( int  x,
int  y,
const mrpt::img::CImage img 
)
virtualinherited

Draws an image as a bitmap at a given position.

Parameters
x0The top-left corner x coordinates on this canvas where the image is to be drawn
y0The top-left corner y coordinates on this canvas where the image is to be drawn
imgThe image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented in mrpt::img::CEnhancedMetaFile.

Definition at line 254 of file CCanvas.cpp.

References MRPT_END, MRPT_START, and mrpt::img::CCanvas::setPixel().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::slam::CMetricMapBuilderRBPF::drawCurrentEstimationToImage(), and mrpt::img::CEnhancedMetaFile::drawImage().

◆ drawImage() [2/2]

void CCanvas::drawImage ( int  x,
int  y,
const mrpt::img::CImage img,
float  rotation,
float  scale 
)
virtualinherited

Draws an image as a bitmap at a given position, with some custom scale and rotation changes.

Parameters
x0The top-left corner x coordinates on this canvas where the image is to be drawn
y0The top-left corner y coordinates on this canvas where the image is to be drawn
rotationThe rotation in radians, positive values being anti-clockwise direction, 0 is the normal position.
scaleThe scale factor, e.g. 2 means twice the original size.
imgThe image to be drawn in this canvas This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented in mrpt::img::CEnhancedMetaFile.

Definition at line 286 of file CCanvas.cpp.

References MRPT_END, MRPT_START, MRPT_UNUSED_PARAM, and THROW_EXCEPTION.

◆ duplicateGetSmartPtr()

mrpt::rtti::CObject::Ptr CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 169 of file CObject.h.

References mrpt::rtti::CObject::clone().

Referenced by mrpt::obs::CRawlog::addActions(), and mrpt::obs::CRawlog::addObservations().

◆ ellipseGaussian()

template<class MATRIX2X2 >
void mrpt::img::CCanvas::ellipseGaussian ( const MATRIX2X2 *  cov2D,
const double  mean_x,
const double  mean_y,
double  confIntervalStds = 2,
const mrpt::img::TColor color = mrpt::img::TColor(255, 255, 255),
unsigned int  width = 1,
int  nEllipsePoints = 20 
)
inlineinherited

Draws an ellipse representing a given confidence interval of a 2D Gaussian distribution.

Parameters
mean_xThe x coordinate of the center point of the ellipse.
mean_yThe y coordinate of the center point of the ellipse.
cov2DA 2x2 covariance matrix.
confIntervalStdsHow many "sigmas" for the confidence level (i.e. 2->95%, 3=99.97%,...)
colorThe color of the ellipse
widthThe desired width of the line (this is IGNORED in this virtual class)
nEllipsePointsThe number of points to generate to approximate the ellipse shape.
Exceptions
std::exceptionOn an invalid matrix.

Definition at line 252 of file CCanvas.h.

References mrpt::img::CCanvas::line(), M_2PI, MRPT_END_WITH_CLEAN_UP, MRPT_START, and mrpt::round().

◆ equalizeHist()

void CImage::equalizeHist ( CImage outImg) const

Equalize the image histogram, saving the new image in the given output object.

Note
RGB images are first converted to HSV color space, then equalized for brightness (V)

Definition at line 2478 of file CImage.cpp.

References ASSERT_, changeSize(), getAs(), and isOriginTopLeft().

◆ equalizeHistInPlace()

void CImage::equalizeHistInPlace ( )

Equalize the image histogram, replacing the original image.

Note
RGB images are first converted to HSV color space, then equalized for brightness (V)

Definition at line 2517 of file CImage.cpp.

References ASSERT_, and releaseIpl().

Referenced by mrpt::hwdrivers::CSwissRanger3DCamera::getNextObservation().

◆ extract_patch()

void CImage::extract_patch ( CImage patch,
const unsigned int  col = 0,
const unsigned int  row = 0,
const unsigned int  width = 1,
const unsigned int  height = 1 
) const

◆ filledRectangle()

void CCanvas::filledRectangle ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::img::TColor  color 
)
virtualinherited

Draws a filled rectangle.

Parameters
x0The top-left x coordinate
y0The top-left y coordinate
x1The right-bottom x coordinate
y1The right-bottom y coordinate
colorThe color of the rectangle fill This method may be redefined in some classes implementing this interface in a more appropiate manner.
See also
rectangle

Definition at line 214 of file CCanvas.cpp.

References mrpt::img::CCanvas::getHeight(), mrpt::img::CCanvas::getWidth(), min, and mrpt::img::CCanvas::setPixel().

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::img::CEnhancedMetaFile::CEnhancedMetaFile(), and mrpt::gui::CDisplayWindow::plot().

◆ filterGaussian()

void CImage::filterGaussian ( CImage out_img,
int  W = 3,
int  H = 3 
) const

Filter the image with a Gaussian filter with a window size WxH, replacing "this" image by the filtered one.

Definition at line 2167 of file CImage.cpp.

References ASSERT_, loadFromIplImage(), and makeSureImageIsLoaded().

◆ filterGaussianInPlace()

void CImage::filterGaussianInPlace ( int  W = 3,
int  H = 3 
)

Filter the image with a Gaussian filter with a window size WxH, returning the filtered image in out_img

Definition at line 2193 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and releaseIpl().

◆ filterMedian()

void CImage::filterMedian ( CImage out_img,
int  W = 3 
) const

Filter the image with a Median filter with a window size WxW, returning the filtered image in out_img

Definition at line 2117 of file CImage.cpp.

References ASSERT_, loadFromIplImage(), and makeSureImageIsLoaded().

◆ filterMedianInPlace()

void CImage::filterMedianInPlace ( int  W = 3)

Filter the image with a Median filter with a window size WxH, replacing "this" image by the filtered one.

Definition at line 2143 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and releaseIpl().

◆ flipHorizontal()

void CImage::flipHorizontal ( )

Flips the image horizontally.

See also
swapRB(), flipVertical()

Definition at line 1994 of file CImage.cpp.

◆ flipVertical()

void CImage::flipVertical ( bool  also_swapRB = false)

Flips the image vertically.

See also
swapRB(), flipHorizontal()

Definition at line 1984 of file CImage.cpp.

◆ forceLoad()

void mrpt::img::CImage::forceLoad ( ) const
inline

For external storage image objects only, this method makes sure the image is loaded in memory.

Note that usually images are loaded on-the-fly on first access and there's no need to call this. \unload

Definition at line 817 of file img/CImage.h.

References makeSureImageIsLoaded().

◆ get_unsafe()

unsigned char * CImage::get_unsafe ( unsigned int  col,
unsigned int  row,
unsigned int  channel = 0 
) const

◆ getAs() [1/2]

template<typename T >
T* mrpt::img::CImage::getAs ( )
inline

Returns a pointer to a T* containing the image - the idea is to call like "img.getAs<IplImage>()" so we can avoid here including OpenCV's headers.

Definition at line 608 of file img/CImage.h.

References img, and makeSureImageIsLoaded().

◆ getAs() [2/2]

template<typename T >
const T* mrpt::img::CImage::getAs ( ) const
inline

Returns a pointer to a const T* containing the image - the idea is to call like "img.getAs<IplImage>()" so we can avoid here including OpenCV's headers.

Definition at line 599 of file img/CImage.h.

References img, and makeSureImageIsLoaded().

Referenced by mrpt::vision::checkerBoardCameraCalibration(), mrpt::vision::computeMoreDescriptors(), mrpt::vision::computeMultiOrientations(), mrpt::vision::computeMultiResolutionDescriptors(), mrpt::vision::computeSAD(), cross_correlation(), cvFindChessboardCorners3(), mrpt::detectors::CCascadeClassifierDetection::detectObjects_Impl(), do_special_dilation(), equalizeHist(), mrpt::vision::CFeatureExtraction::extractFeaturesAKAZE(), mrpt::vision::CFeatureExtraction::extractFeaturesFAST(), mrpt::vision::CFeatureExtraction::extractFeaturesKLT(), mrpt::vision::CFeatureExtraction::extractFeaturesLSD(), mrpt::vision::CFeatureExtraction::extractFeaturesORB(), mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), mrpt::vision::CFeatureExtraction::extractFeaturesSURF(), find_chessboard_corners_multiple(), mrpt::vision::CFeatureExtraction::internal_computeBLDLineDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeLATCHDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeLogPolarImageDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeORBDescriptors(), mrpt::vision::CFeatureExtraction::internal_computePolarImageDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeSiftDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeSurfDescriptors(), joinImagesHorz(), mrpt::vision::openCV_cross_correlation(), mrpt::vision::CStereoRectifyMap::rectify(), mrpt::vision::CFeatureTracker_KL::trackFeatures_impl_templ(), and mrpt::vision::CUndistortMap::undistort().

◆ getAsFloat() [1/2]

float CImage::getAsFloat ( unsigned int  col,
unsigned int  row 
) const

Returns the contents of a given pixel (for gray-scale images, in color images the gray scale equivalent is computed for the pixel), in float format: [0,255]->[0,1] The coordinate origin is pixel(0,0)=top-left corner of the image.

Exceptions
std::exceptionOn pixel coordinates out of bounds
See also
operator()

Definition at line 959 of file CImage.cpp.

References isColor().

◆ getAsFloat() [2/2]

float CImage::getAsFloat ( unsigned int  col,
unsigned int  row,
unsigned int  channel 
) const

Returns the contents of a given pixel at the desired channel, in float format: [0,255]->[0,1] The coordinate origin is pixel(0,0)=top-left corner of the image.

Exceptions
std::exceptionOn pixel coordinates out of bounds
See also
operator()

Definition at line 948 of file CImage.cpp.

References makeSureImageIsLoaded().

Referenced by mrpt::vision::computeHistogramOfOrientations(), getMaxAsFloat(), and mrpt::maps::COccupancyGridMap2D::loadFromBitmap().

◆ getAsMatrix()

void CImage::getAsMatrix ( mrpt::math::CMatrixFloat outMatrix,
bool  doResize = true,
int  x_min = 0,
int  y_min = 0,
int  x_max = -1,
int  y_max = -1 
) const

Returns the image as a matrix with pixel grayscale values in the range [0,1].

Matrix indexes in this order: M(row,column)

Parameters
doResizeIf set to true (default), the output matrix will be always the size of the image at output. If set to false, the matrix will be enlarged to the size of the image, but it will not be cropped if it has room enough (useful for FFT2D,...)
x_minThe starting "x" coordinate to extract (default=0=the first column)
y_minThe starting "y" coordinate to extract (default=0=the first row)
x_maxThe final "x" coordinate (inclusive) to extract (default=-1=the last column)
y_maxThe final "y" coordinate (inclusive) to extract (default=-1=the last row)
See also
setFromMatrix

Definition at line 1616 of file CImage.cpp.

References ASSERT_, get_unsafe(), isColor(), makeSureImageIsLoaded(), MRPT_END, and MRPT_START.

Referenced by cross_correlation_FFT(), mrpt::vision::CFeatureExtraction::internal_computeLogPolarImageDescriptors(), and mrpt::vision::CFeatureExtraction::internal_computePolarImageDescriptors().

◆ getAsMatrixTiled()

void CImage::getAsMatrixTiled ( math::CMatrix outMatrix) const

Returns the image as a matrix, where the image is "tiled" (repeated) the required number of times to fill the entire size of the matrix on input.

Definition at line 1831 of file CImage.cpp.

References ASSERT_, isColor(), makeSureImageIsLoaded(), MRPT_END, and MRPT_START.

◆ getAsRGBMatrices()

void CImage::getAsRGBMatrices ( mrpt::math::CMatrixFloat outMatrixR,
mrpt::math::CMatrixFloat outMatrixG,
mrpt::math::CMatrixFloat outMatrixB,
bool  doResize = true,
int  x_min = 0,
int  y_min = 0,
int  x_max = -1,
int  y_max = -1 
) const

Returns the image as RGB matrices with pixel values in the range [0,1].

Matrix indexes in this order: M(row,column)

Parameters
doResizeIf set to true (default), the output matrix will be always the size of the image at output. If set to false, the matrix will be enlarged to the size of the image, but it will not be cropped if it has room enough (useful for FFT2D,...)
x_minThe starting "x" coordinate to extract (default=0=the first column)
y_minThe starting "y" coordinate to extract (default=0=the first row)
x_maxThe final "x" coordinate (inclusive) to extract (default=-1=the last column)
y_maxThe final "y" coordinate (inclusive) to extract (default=-1=the last row)
See also
setFromRGBMatrices

Definition at line 1672 of file CImage.cpp.

References ASSERT_, get_unsafe(), isColor(), makeSureImageIsLoaded(), MRPT_END, and MRPT_START.

◆ getChannelCount()

TImageChannels CImage::getChannelCount ( ) const

Returns the number of channels, typically 1 (GRAY) or 3 (RGB)

See also
isColor

Definition at line 920 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

Referenced by mrpt::vision::CFeatureExtraction::internal_computeLogPolarImageDescriptors(), and mrpt::vision::CFeatureExtraction::internal_computePolarImageDescriptors().

◆ getChannelsOrder()

const char * CImage::getChannelsOrder ( ) const

Returns a string of the form "BGR","RGB" or "GRAY" indicating the channels ordering.

See also
setChannelsOrder, swapRB

Definition at line 1180 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and THROW_EXCEPTION.

Referenced by mrpt::maps::CColouredPointsMap::colourFromObservation().

◆ getClassName()

static constexpr auto mrpt::img::CImage::getClassName ( )
inlinestaticconstexpr

Definition at line 132 of file img/CImage.h.

◆ getExternalStorageFile()

std::string mrpt::img::CImage::getExternalStorageFile ( ) const
inlinenoexcept

◆ getExternalStorageFileAbsolutePath() [1/2]

std::string mrpt::img::CImage::getExternalStorageFileAbsolutePath ( ) const
inline

Only if isExternallyStored() returns true.

See also
getExternalStorageFile

Definition at line 805 of file img/CImage.h.

Referenced by makeSureImageIsLoaded().

◆ getExternalStorageFileAbsolutePath() [2/2]

void CImage::getExternalStorageFileAbsolutePath ( std::string out_path) const

Only if isExternallyStored() returns true.

See also
getExternalStorageFile

Definition at line 1960 of file CImage.cpp.

References ASSERT_, IMAGES_PATH_BASE(), and m_externalFile.

Referenced by copyFromForceLoad().

◆ getHeight()

size_t CImage::getHeight ( ) const
overridevirtual

Returns the height of the image in pixels.

See also
getSize

Implements mrpt::img::CCanvas.

Definition at line 892 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

Referenced by mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CMesh::adjustGridToImageAR(), mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::vision::checkerBoardCameraCalibration(), mrpt::vision::checkerBoardStereoCalibration(), mrpt::maps::CColouredPointsMap::colourFromObservation(), mrpt::vision::computeMoreDescriptors(), mrpt::vision::computeMultiOrientations(), mrpt::vision::computeMultiResolutionDescriptors(), correlate(), cross_correlation_FFT(), cvFindChessboardCorners3(), mrpt::slam::CMetricMapBuilderRBPF::drawCurrentEstimationToImage(), mrpt::vision::CFeatureExtraction::extractFeaturesAKAZE(), mrpt::vision::CFeatureExtraction::extractFeaturesFAST(), mrpt::vision::CFeatureExtraction::extractFeaturesFASTER_N(), mrpt::vision::CFeatureExtraction::extractFeaturesKLT(), mrpt::vision::CFeatureExtraction::extractFeaturesLSD(), mrpt::vision::CFeatureExtraction::extractFeaturesORB(), mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), mrpt::vision::CFeatureExtraction::extractFeaturesSURF(), find_chessboard_corners_multiple(), getMaxAsFloat(), mrpt::vision::CFeatureExtraction::internal_computeSiftDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeSpinImageDescriptors(), mrpt::maps::detail::pointmap_traits< CColouredPointsMap >::internal_loadFromRangeScan3D_init(), mrpt::vision::CGenericFeatureTracker::internal_trackFeatures(), joinImagesHorz(), mrpt::maps::COccupancyGridMap2D::loadFromBitmap(), mrpt::vision::matchMultiResolutionFeatures(), mrpt::vision::openCV_cross_correlation(), mrpt::vision::CFeature::patchCorrelationTo(), mrpt::obs::detail::project3DPointsFromDepthImageInto(), mrpt::maps::COccupancyGridMap2D::saveAsEMFTwoMapsWithCorrespondences(), mrpt::gui::CDisplayWindow::showTiledImageAndPoints(), mrpt::vision::detail::trackFeatures_addNewFeats_simple_list(), mrpt::vision::CFeatureTracker_KL::trackFeatures_impl_templ(), mrpt::vision::detail::trackFeatures_updatePatch< CFeatureList >(), and update_patch().

◆ getImagesPathBase()

const std::string & CImage::getImagesPathBase ( )
static

◆ getMaxAsFloat()

float CImage::getMaxAsFloat ( ) const

Return the maximum pixel value of the image, as a float value in the range [0,1].

See also
getAsFloat

Definition at line 979 of file CImage.cpp.

References getAsFloat(), getHeight(), and getWidth().

◆ getRowStride()

size_t CImage::getRowStride ( ) const

Returns the row stride of the image: this is the number of bytes between two consecutive rows.

You can access the pointer to the first row with get_unsafe(0,0)

See also
getSize, get_unsafe

Definition at line 878 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

◆ GetRuntimeClass()

virtual const mrpt::rtti::TRuntimeClassId* mrpt::img::CImage::GetRuntimeClass ( ) const
overridevirtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::serialization::CSerializable.

◆ GetRuntimeClassIdStatic()

static const mrpt::rtti::TRuntimeClassId& mrpt::img::CImage::GetRuntimeClassIdStatic ( )
static

◆ getSize() [1/2]

TImageSize mrpt::img::CImage::getSize ( ) const
inline

Return the size of the image.

See also
getWidth, getHeight

Definition at line 661 of file img/CImage.h.

Referenced by scaleDouble().

◆ getSize() [2/2]

void CImage::getSize ( TImageSize s) const

◆ getWidth()

size_t CImage::getWidth ( ) const
overridevirtual

Returns the width of the image in pixels.

See also
getSize

Implements mrpt::img::CCanvas.

Definition at line 864 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

Referenced by mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CMesh::adjustGridToImageAR(), mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::vision::checkerBoardCameraCalibration(), mrpt::vision::checkerBoardStereoCalibration(), mrpt::maps::CColouredPointsMap::colourFromObservation(), mrpt::vision::computeMoreDescriptors(), mrpt::vision::computeMultiOrientations(), mrpt::vision::computeMultiResolutionDescriptors(), correlate(), cross_correlation_FFT(), cvFindChessboardCorners3(), mrpt::vision::CFeatureExtraction::extractFeaturesAKAZE(), mrpt::vision::CFeatureExtraction::extractFeaturesFAST(), mrpt::vision::CFeatureExtraction::extractFeaturesFASTER_N(), mrpt::vision::CFeatureExtraction::extractFeaturesKLT(), mrpt::vision::CFeatureExtraction::extractFeaturesLSD(), mrpt::vision::CFeatureExtraction::extractFeaturesORB(), mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), mrpt::vision::CFeatureExtraction::extractFeaturesSURF(), find_chessboard_corners_multiple(), getMaxAsFloat(), mrpt::vision::CFeatureExtraction::internal_computeSiftDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeSpinImageDescriptors(), mrpt::maps::detail::pointmap_traits< CColouredPointsMap >::internal_loadFromRangeScan3D_init(), mrpt::vision::CGenericFeatureTracker::internal_trackFeatures(), mrpt::maps::COccupancyGridMap2D::loadFromBitmap(), mrpt::vision::matchMultiResolutionFeatures(), mrpt::vision::openCV_cross_correlation(), mrpt::vision::CFeature::patchCorrelationTo(), mrpt::obs::detail::project3DPointsFromDepthImageInto(), mrpt::maps::COccupancyGridMap2D::saveAsEMFTwoMapsWithCorrespondences(), mrpt::gui::CDisplayWindow::showImagesAndMatchedPoints(), mrpt::gui::CDisplayWindow::showTiledImageAndPoints(), mrpt::vision::detail::trackFeatures_addNewFeats_simple_list(), mrpt::vision::CFeatureTracker_KL::trackFeatures_impl_templ(), mrpt::vision::detail::trackFeatures_updatePatch< CFeatureList >(), and update_patch().

◆ grayscale() [1/2]

CImage CImage::grayscale ( ) const

Returns a grayscale version of the image, or itself if it is already a grayscale image.

Definition at line 994 of file CImage.cpp.

Referenced by CImage(), and mrpt::vision::openCV_cross_correlation().

◆ grayscale() [2/2]

void CImage::grayscale ( CImage ret) const

Returns a grayscale version of the image, or itself if it is already a grayscale image.

See also
colorImage

Definition at line 1032 of file CImage.cpp.

References ASSERT_, ipl_to_grayscale(), makeSureImageIsLoaded(), and setFromIplImage().

◆ grayscaleInPlace()

void CImage::grayscaleInPlace ( )

Replaces the image with a grayscale version of it.

See also
colorImageInPlace

Definition at line 1055 of file CImage.cpp.

References ASSERT_, ipl_to_grayscale(), makeSureImageIsLoaded(), and setFromIplImage().

◆ isColor()

bool CImage::isColor ( ) const

◆ isExternallyStored()

bool mrpt::img::CImage::isExternallyStored ( ) const
inlinenoexcept

◆ isOriginTopLeft()

bool CImage::isOriginTopLeft ( ) const

Returns true if the coordinates origin is top-left, or false if it is bottom-left

Definition at line 934 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and THROW_EXCEPTION.

Referenced by equalizeHist(), mrpt::vision::CStereoRectifyMap::rectify(), and mrpt::img::CCanvas::textOut().

◆ joinImagesHorz()

void CImage::joinImagesHorz ( const CImage im1,
const CImage im2 
)

Joins two images side-by-side horizontally.

Both images must have the same number of rows and be of the same type (i.e. depth and color mode)

Parameters
im1[IN] The first image.
im2[IN] The other image.

Definition at line 2437 of file CImage.cpp.

References ASSERT_, getAs(), getHeight(), and setFromIplImageReadOnly().

Referenced by mrpt::gui::CDisplayWindow::showImagesAndMatchedPoints().

◆ KLT_response()

float CImage::KLT_response ( const unsigned int  x,
const unsigned int  y,
const unsigned int  half_window_size 
) const

Compute the KLT response at a given pixel (x,y) - Only for grayscale images (for efficiency it avoids converting to grayscale internally).

See KLT_response_optimized for more details on the internal optimizations of this method, but this graph shows a general view:

Definition at line 2593 of file CImage.cpp.

References ASSERT_, and ASSERTMSG_.

Referenced by mrpt::vision::CFeatureExtraction::extractFeaturesFAST(), mrpt::vision::CGenericFeatureTracker::internal_trackFeatures(), mrpt::vision::detail::trackFeatures_checkResponses< CFeatureList >(), and mrpt::vision::detail::trackFeatures_checkResponses_impl_simple().

◆ line()

void CImage::line ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::img::TColor  color,
unsigned int  width = 1,
TPenStyle  penStyle = psSolid 
)
overridevirtual

Draws a line.

Parameters
x0The starting point x coordinate
y0The starting point y coordinate
x1The end point x coordinate
y1The end point y coordinate
colorThe color of the line
widthThe desired width of the line (this is IGNORED in this virtual class) This method may be redefined in some classes implementing this interface in a more appropiate manner.

Reimplemented from mrpt::img::CCanvas.

Definition at line 1296 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and MRPT_UNUSED_PARAM.

Referenced by main(), mrpt::gui::CDisplayWindow::plot(), and mrpt::gui::CDisplayWindow::showTiledImageAndPoints().

◆ loadFromFile()

bool CImage::loadFromFile ( const std::string fileName,
int  isColor = -1 
)

Load image from a file, whose format is determined from the extension (internally uses OpenCV).

Parameters
fileNameThe file to read from.
isColorSpecifies colorness of the loaded image:
  • if >0, the loaded image is forced to be color 3-channel image;
  • if 0, the loaded image is forced to be grayscale;
  • if <0, the loaded image will be loaded as is (with number of channels depends on the file). The supported formats are:
  • Windows bitmaps - BMP, DIB;
  • JPEG files - JPEG, JPG, JPE;
  • Portable Network Graphics - PNG;
  • Portable image format - PBM, PGM, PPM;
  • Sun rasters - SR, RAS;
  • TIFF files - TIFF, TIF.
Returns
False on any error
See also
saveToFile, setExternalStorage,loadFromXPM, loadTGA

Definition at line 271 of file CImage.cpp.

References isColor(), MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by mrpt::vision::checkerBoardCameraCalibration(), copyFromForceLoad(), and makeSureImageIsLoaded().

◆ loadFromIplImage()

void CImage::loadFromIplImage ( void iplImage)

Reads the image from a OpenCV IplImage object (making a COPY).

Definition at line 321 of file CImage.cpp.

References ASSERT_, MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by mrpt::vision::computeMultiResolutionDescriptors(), filterGaussian(), filterMedian(), and rectifyImage().

◆ loadFromMemoryBuffer() [1/2]

void CImage::loadFromMemoryBuffer ( unsigned int  width,
unsigned int  height,
bool  color,
unsigned char *  rawpixels,
bool  swapRedBlue = false 
)

◆ loadFromMemoryBuffer() [2/2]

void CImage::loadFromMemoryBuffer ( unsigned int  width,
unsigned int  height,
unsigned int  bytesPerRow,
unsigned char *  red,
unsigned char *  green,
unsigned char *  blue 
)

Reads a color image from three raw pixels buffers in memory.

bytesPerRow is the number of bytes per row per channel, i.e. the row increment.

Definition at line 1194 of file CImage.cpp.

References changeSize(), img, MRPT_END, MRPT_START, and red.

◆ loadFromStreamAsJPEG()

void CImage::loadFromStreamAsJPEG ( mrpt::io::CStream in)

◆ loadFromXPM()

bool mrpt::img::CImage::loadFromXPM ( const char *const *  xpm_data,
bool  swap_rb = true 
)

Loads the image from an XPM array, as #include'd from a ".xpm" file.

Parameters
[in]swap_rbSwaps red/blue channels from loaded image. Seems to be always needed, so it's enabled by default.
See also
loadFromFile
Returns
false on any error
See also
loadFromFile
Returns
false on any error

Definition at line 482 of file CImage_loadXPM.cpp.

References ASSERTMSG_, XPMColorMapData::B, CH_RGB, changeSize(), XPMColorMapData::G, GetRGBFromName(), MRPT_UNUSED_PARAM, ParseColor(), XPMColorMapData::R, swapRB(), THROW_EXCEPTION, and THROW_EXCEPTION_FMT.

◆ loadTGA()

bool CImage::loadTGA ( const std::string fileName,
mrpt::img::CImage out_RGB,
mrpt::img::CImage out_alpha 
)
static

Loads a TGA true-color RGBA image as two CImage objects, one for the RGB channels plus a separate gray-level image with A channel.

Returns
true on success

Definition at line 2757 of file CImage.cpp.

References CH_GRAY, CH_RGB, img, and resize().

◆ makeSureImageIsLoaded()

void CImage::makeSureImageIsLoaded ( ) const
protected

◆ normalize()

void CImage::normalize ( )

Optimize the brightness range of an image without using histogram Only for one channel images.

See also
equalizeHist

Definition at line 1571 of file CImage.cpp.

References ASSERT_, ASSERTMSG_, makeSureImageIsLoaded(), and val.

◆ operator delete() [1/3]

void mrpt::img::CImage::operator delete ( void memory,
void ptr 
)
inlinenoexcept

Definition at line 132 of file img/CImage.h.

◆ operator delete() [2/3]

void mrpt::img::CImage::operator delete ( void ptr)
inlinenoexcept

Definition at line 132 of file img/CImage.h.

◆ operator delete() [3/3]

void mrpt::img::CImage::operator delete ( void ptr,
const std::nothrow_t &   
)
inlinenoexcept

Definition at line 132 of file img/CImage.h.

◆ operator delete[]()

void mrpt::img::CImage::operator delete[] ( void ptr)
inlinenoexcept

Definition at line 132 of file img/CImage.h.

◆ operator new() [1/3]

void* mrpt::img::CImage::operator new ( size_t  size)
inline

Definition at line 132 of file img/CImage.h.

◆ operator new() [2/3]

void* mrpt::img::CImage::operator new ( size_t  size,
const std::nothrow_t &   
)
inlinenoexcept

Definition at line 132 of file img/CImage.h.

◆ operator new() [3/3]

static void* mrpt::img::CImage::operator new ( size_t  size,
void ptr 
)
inlinestatic

Definition at line 132 of file img/CImage.h.

◆ operator new[]()

void* mrpt::img::CImage::operator new[] ( size_t  size)
inline

Definition at line 132 of file img/CImage.h.

◆ operator()()

unsigned char * CImage::operator() ( unsigned int  col,
unsigned int  row,
unsigned int  channel = 0 
) const

Returns a pointer to a given pixel information.

The coordinate origin is pixel(0,0)=top-left corner of the image.

Exceptions
std::exceptionOn pixel coordinates out of bounds

Definition at line 452 of file CImage.cpp.

References ASSERT_, mrpt::format(), makeSureImageIsLoaded(), MRPT_END, MRPT_START, and THROW_EXCEPTION.

◆ operator=()

CImage & CImage::operator= ( const CImage o)

Copy operator (if the image is externally stored, the writen image will be such as well).

See also
copyFastFrom

Definition at line 105 of file CImage.cpp.

References ASSERTMSG_, img, m_externalFile, m_imgIsExternalStorage, m_imgIsReadOnly, MRPT_END, MRPT_START, and releaseIpl().

◆ rectangle()

void CCanvas::rectangle ( int  x0,
int  y0,
int  x1,
int  y1,
const mrpt::img::TColor  color,
unsigned int  width = 1 
)
inherited

Draws a rectangle (an empty rectangle, without filling)

Parameters
x0The top-left x coordinate
y0The top-left y coordinate
x1The right-bottom x coordinate
y1The right-bottom y coordinate
colorThe color of the line
widthThe desired width of the line.
See also
filledRectangle

Definition at line 170 of file CCanvas.cpp.

References mrpt::img::CCanvas::line().

Referenced by mrpt::vision::addFeaturesToImage().

◆ rectifyImage()

void CImage::rectifyImage ( CImage out_img,
const mrpt::img::TCamera cameraParams 
) const

Rectify (un-distort) the image according to some camera parameters, and returns an output un-distorted image.

Parameters
out_imgThe output rectified image
cameraParamsThe input camera params (containing the intrinsic and distortion parameters of the camera)
See also
mrpt::vision::CUndistortMap

Definition at line 2082 of file CImage.cpp.

References ASSERT_, mrpt::img::TCamera::dist, mrpt::img::TCamera::intrinsicParams, loadFromIplImage(), and makeSureImageIsLoaded().

Referenced by mrpt::vision::checkerBoardCameraCalibration().

◆ rectifyImageInPlace() [1/2]

void CImage::rectifyImageInPlace ( const mrpt::img::TCamera cameraParams)

Rectify (un-distort) the image according to a certain camera matrix and vector of distortion coefficients, replacing "this" with the rectified image.

Parameters
cameraParamsThe input camera params (containing the intrinsic and distortion parameters of the camera)
See also
mrpt::vision::CUndistortMap

Definition at line 2050 of file CImage.cpp.

References ASSERT_, mrpt::img::TCamera::dist, mrpt::img::TCamera::intrinsicParams, makeSureImageIsLoaded(), and releaseIpl().

Referenced by mrpt::hwdrivers::CRovio::captureImageAsync().

◆ rectifyImageInPlace() [2/2]

void CImage::rectifyImageInPlace ( void mapX,
void mapY 
)

Rectify an image (undistorts and rectification) from a stereo pair according to a pair of precomputed rectification maps.

Parameters
mapX,mapY[IN] The pre-computed maps of the rectification (should be computed beforehand)
See also
mrpt::vision::CStereoRectifyMap, mrpt::vision::computeStereoRectificationMaps

Definition at line 2018 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), releaseIpl(), and THROW_EXCEPTION.

◆ releaseIpl()

void CImage::releaseIpl ( bool  thisIsExternalImgUnload = false)
protectednoexcept

◆ resize()

void mrpt::img::CImage::resize ( unsigned int  width,
unsigned int  height,
TImageChannels  nChannels,
bool  originTopLeft 
)
inline

Changes the size of the image, erasing previous contents (does NOT scale its current content, for that, see scaleImage).

  • nChannels: Can be 3 for RGB images or 1 for grayscale images.
  • originTopLeft: Is true if the top-left corner is (0,0). In other case, the reference is the bottom-left corner.
    See also
    scaleImage

Definition at line 261 of file img/CImage.h.

References changeSize().

Referenced by mrpt::slam::CMetricMapBuilderRBPF::drawCurrentEstimationToImage(), extract_patch(), mrpt::hwdrivers::CSwissRanger3DCamera::getNextObservation(), loadFromMemoryBuffer(), loadTGA(), mrpt::vision::normalizeImage(), mrpt::gui::CDisplayWindow::plot(), and mrpt::vision::CStereoRectifyMap::rectify().

◆ rotateImage()

void CImage::rotateImage ( double  angle_radians,
unsigned int  center_x,
unsigned int  center_y,
double  scale = 1.0 
)

Rotates the image by the given angle around the given center point, with an optional scale factor.

See also
resize, scaleImage

Definition at line 2280 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and releaseIpl().

◆ saveToFile()

bool CImage::saveToFile ( const std::string fileName,
int  jpeg_quality = 95 
) const

Save the image to a file, whose format is determined from the extension (internally uses OpenCV).

Parameters
fileNameThe file to write to.

The supported formats are:

  • Windows bitmaps - BMP, DIB;
  • JPEG files - JPEG, JPG, JPE;
  • Portable Network Graphics - PNG;
  • Portable image format - PBM, PGM, PPM;
  • Sun rasters - SR, RAS;
  • TIFF files - TIFF, TIF.
Parameters
jpeg_qualityOnly for JPEG files, the quality of the compression in the range [0-100]. Larger is better quality but slower.
Note
jpeg_quality is only effective if MRPT is compiled against OpenCV 1.1.0 or newer.
Returns
False on any error
See also
loadFromFile

Definition at line 296 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), MRPT_END, MRPT_START, and THROW_EXCEPTION.

Referenced by mrpt::slam::CGridMapAligner::AlignPDF_correlation(), mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), cvFindChessboardCorners3(), mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), mrpt::hmtslam::CHMTSLAM::generateLogFiles(), mrpt::hwdrivers::CSwissRanger3DCamera::getNextObservation(), mrpt::vision::CFeatureExtraction::internal_computeSiftDescriptors(), mrpt::vision::CFeatureExtraction::internal_computeSpinImageDescriptors(), and mrpt::maps::CRandomFieldGridMap2D::saveMetricMapRepresentationToFile().

◆ saveToStreamAsJPEG()

void CImage::saveToStreamAsJPEG ( mrpt::io::CStream out,
const int  jpeg_quality = 95 
) const

Save image to binary stream as a JPEG (.jpg) compressed format.

Exceptions
std::exceptionOn number of rows or cols equal to zero or other errors.
See also
saveToJPEG

Definition at line 348 of file CImage_JPEG_streams.cpp.

References ASSERT_, jpeg_compress_struct::image_height, jpeg_compress_struct::image_width, img, jpeg_compress_struct::in_color_space, jpeg_compress_struct::input_components, JCS_GRAYSCALE, JCS_RGB, jpeg_create_compress, jpeg_stdio_dest(), makeSureImageIsLoaded(), MRPT_END, MRPT_START, THROW_EXCEPTION, and TRUE.

Referenced by serializeTo().

◆ scaleDouble() [1/2]

CImage mrpt::img::CImage::scaleDouble ( ) const
inline

Returns a new image scaled up to double its original size.

Exceptions
std::exceptionOn odd size
See also
scaleHalf, scaleImage

Definition at line 377 of file img/CImage.h.

References mrpt::img::UNINITIALIZED_IMAGE.

◆ scaleDouble() [2/2]

void CImage::scaleDouble ( CImage out_image) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1170 of file CImage.cpp.

References getSize(), scaleImage(), mrpt::img::TPixelCoord::x, and mrpt::img::TPixelCoord::y.

◆ scaleHalf() [1/2]

CImage mrpt::img::CImage::scaleHalf ( ) const
inline

Returns a new image scaled down to half its original size.

Exceptions
std::exceptionOn odd size
See also
scaleDouble, scaleImage, scaleHalfSmooth

Definition at line 348 of file img/CImage.h.

References mrpt::img::UNINITIALIZED_IMAGE.

◆ scaleHalf() [2/2]

void CImage::scaleHalf ( CImage out_image) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1070 of file CImage.cpp.

References ASSERT_, image_SSE2_scale_half_1c8u(), image_SSSE3_scale_half_3c8u(), mrpt::img::IMG_INTERP_NN, makeSureImageIsLoaded(), mrpt::system::os::memcpy(), and setFromIplImage().

◆ scaleHalfSmooth() [1/2]

CImage mrpt::img::CImage::scaleHalfSmooth ( ) const
inline

Returns a new image scaled down to half its original size (averaging between every two rows)

Exceptions
std::exceptionOn odd size
See also
scaleDouble, scaleImage, scaleHalf

Definition at line 363 of file img/CImage.h.

References mrpt::img::UNINITIALIZED_IMAGE.

◆ scaleHalfSmooth() [2/2]

void CImage::scaleHalfSmooth ( CImage out_image) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1127 of file CImage.cpp.

References ASSERT_, image_SSE2_scale_half_smooth_1c8u(), mrpt::img::IMG_INTERP_LINEAR, makeSureImageIsLoaded(), mrpt::system::os::memcpy(), and setFromIplImage().

◆ scaleImage() [1/2]

void CImage::scaleImage ( CImage out_img,
unsigned int  width,
unsigned int  height,
TInterpolationMethod  interp = IMG_INTERP_CUBIC 
) const

Scales this image to a new size, interpolating as needed, saving the new image in a different output object.

See also
resize, rotateImage

Definition at line 2247 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and setFromIplImage().

◆ scaleImage() [2/2]

void CImage::scaleImage ( unsigned int  width,
unsigned int  height,
TInterpolationMethod  interp = IMG_INTERP_CUBIC 
)

Scales this image to a new size, interpolating as needed.

See also
resize, rotateImage

Definition at line 2217 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and releaseIpl().

Referenced by mrpt::hwdrivers::CCameraSensor::getNextFrame(), and scaleDouble().

◆ selectTextFont()

void CCanvas::selectTextFont ( const std::string fontName)
virtualinherited

Select the current font used when drawing text.

Parameters
fontNameThe name of the font

Valid font names:

  • 5x7
  • 6x13
  • 6x13B
  • 6x13O
  • 9x15 (Default at start-up)
  • 9x15B
  • 10x20
  • 18x18ja (Asian characters for UTF-8 strings - Only available if MRPT is built with MRPT_HAS_ASIAN_FONTS = true)

See also
textOut, The example in this page.

Definition at line 229 of file CCanvas.cpp.

References init_fonts_list(), list_registered_fonts, mrpt::img::CCanvas::m_selectedFont, and mrpt::img::CCanvas::m_selectedFontBitmaps.

Referenced by drawChessboardCorners(), mrpt::img::CEnhancedMetaFile::selectVectorTextFont(), and mrpt::img::CCanvas::textOut().

◆ serializeFrom()

void CImage::serializeFrom ( mrpt::serialization::CArchive in,
uint8_t  serial_version 
)
overrideprotectedvirtual

Pure virtual method for reading (deserializing) from an abstract archive.

Users don't call this method directly. Instead, use stream >> object;.

Parameters
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
std::exceptionOn any I/O error

Implements mrpt::serialization::CSerializable.

Definition at line 627 of file CImage.cpp.

References ASSERT_, mrpt::io::CMemoryStream::changeSize(), changeSize(), mrpt::io::zip::decompress(), mrpt::io::CMemoryStream::getRawBufferData(), img, loadFromStreamAsJPEG(), m_externalFile, m_imgIsExternalStorage, MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION, MRPT_TODO, releaseIpl(), mrpt::io::CMemoryStream::Seek(), and THROW_EXCEPTION.

◆ serializeGetVersion()

uint8_t CImage::serializeGetVersion ( ) const
overrideprotectedvirtual

Must return the current versioning number of the object.

Start in zero for new classes, and increments each time there is a change in the stored format.

Implements mrpt::serialization::CSerializable.

Definition at line 504 of file CImage.cpp.

◆ serializeTo()

void CImage::serializeTo ( mrpt::serialization::CArchive out) const
overrideprotectedvirtual

Pure virtual method for writing (serializing) to an abstract archive.

Users don't call this method directly. Instead, use stream << object;.

Exceptions
std::exceptionOn any I/O error

Implements mrpt::serialization::CSerializable.

Definition at line 512 of file CImage.cpp.

References ASSERT_, mrpt::io::zip::compress(), DISABLE_JPEG_COMPRESSION, DISABLE_ZIP_COMPRESSION, mrpt::io::CMemoryStream::getRawBufferData(), mrpt::io::CMemoryStream::getTotalBytesCount(), img, isColor(), m_externalFile, m_imgIsExternalStorage, saveToStreamAsJPEG(), SERIALIZATION_JPEG_QUALITY, and mrpt::serialization::CArchive::WriteBuffer().

◆ setChannelsOrder_BGR()

void CImage::setChannelsOrder_BGR ( )

Marks the channel ordering in a color image as "BGR" (this doesn't actually modify the image data, just the format description)

See also
getChannelsOrder, swapRB

Definition at line 2742 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), mrpt::system::os::strcpy(), and THROW_EXCEPTION.

◆ setChannelsOrder_RGB()

void CImage::setChannelsOrder_RGB ( )

Marks the channel ordering in a color image as "RGB" (this doesn't actually modify the image data, just the format description)

Marks the channel ordering in a color image (this doesn't actually modify the image data, just the format description)

See also
getChannelsOrder, swapRB

Definition at line 2731 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), mrpt::system::os::strcpy(), and THROW_EXCEPTION.

Referenced by setFromRGBMatrices().

◆ setExternalStorage()

void CImage::setExternalStorage ( const std::string fileName)
noexcept

By using this method the image is marked as referenced to an external file, which will be loaded only under demand.

A CImage with external storage does not consume memory until some method trying to access the image is invoked (e.g. getWidth(), isColor(),...) At any moment, the image can be unloaded from memory again by invoking unload. An image becomes of type "external storage" only through calling setExternalStorage. This property remains after serializing the object. File names can be absolute, or relative to the CImage::getImagesPathBase() directory. Filenames staring with "X:\" or "/" are considered absolute paths. By calling this method the current contents of the image are NOT saved to that file, because this method can be also called to let the object know where to load the image in case its contents are required. Thus, for saving images in this format (not when loading) the proper order of commands should be:

img.saveToFile( fileName );
img.setExternalStorage( fileName );
Note
Modifications to the memory copy of the image are not automatically saved to disk.
See also
unload, isExternallyStored

Definition at line 1887 of file CImage.cpp.

Referenced by mrpt::hwdrivers::CSwissRanger3DCamera::getNextObservation().

◆ setFromImageReadOnly()

void mrpt::img::CImage::setFromImageReadOnly ( const CImage other_img)
inline

Sets the internal IplImage pointer to that of another given image, WITHOUT making a copy, and from now on the image cannot be modified in this object (it will be neither freed, so the memory responsibility will still be of the original image object).

When assigning an IPLImage to this object with this method, the IPLImage will NOT be released/freed at this object destructor.

See also
setFromIplImageReadOnly

Definition at line 880 of file img/CImage.h.

References setFromIplImageReadOnly().

Referenced by CImage(), mrpt::detectors::CObjectDetection::detectObjects(), and mrpt::vision::openCV_cross_correlation().

◆ setFromIplImage()

void CImage::setFromIplImage ( void iplImage)

Reads the image from a OpenCV IplImage object (WITHOUT making a copy).

This object will own the memory of the passed object and free the IplImage upon destruction, so the caller CAN'T free the original object. This method provides a fast method to grab images from a camera without making a copy of every frame.

Definition at line 363 of file CImage.cpp.

References m_imgIsExternalStorage, m_imgIsReadOnly, MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by colorImage(), cross_correlation(), mrpt::hwdrivers::CImageGrabber_FlyCapture2::getObservation(), grayscale(), grayscaleInPlace(), mrpt::vision::CStereoRectifyMap::rectify(), scaleHalf(), scaleHalfSmooth(), scaleImage(), and mrpt::vision::CUndistortMap::undistort().

◆ setFromIplImageReadOnly()

void CImage::setFromIplImageReadOnly ( void iplImage)

Reads the image from a OpenCV IplImage object (WITHOUT making a copy) and from now on the image cannot be modified, just read.

When assigning an IPLImage to this object with this method, the IPLImage will NOT be released/freed at this object destructor. This method provides a fast method to grab images from a camera without making a copy of every frame.

See also
setFromImageReadOnly

Definition at line 340 of file CImage.cpp.

References ASSERT_, ASSERTMSG_, m_imgIsExternalStorage, m_imgIsReadOnly, MRPT_END, MRPT_START, releaseIpl(), and THROW_EXCEPTION.

Referenced by mrpt::hwdrivers::CImageGrabber_OpenCV::getObservation(), joinImagesHorz(), mrpt::vision::openCV_cross_correlation(), and setFromImageReadOnly().

◆ setFromMatrix()

template<typename Derived >
void mrpt::img::CImage::setFromMatrix ( const Eigen::MatrixBase< Derived > &  m,
bool  matrix_is_normalized = true 
)
inline

Set the image from a matrix, interpreted as grayscale intensity values, in the range [0,1] (normalized=true) or [0,255] (normalized=false) Matrix indexes are assumed to be in this order: M(row,column)

See also
getAsMatrix

Definition at line 891 of file img/CImage.h.

References changeSize(), get_unsafe(), MRPT_END, and MRPT_START.

Referenced by CImage(), mrpt::maps::CRandomFieldGridMap2D::getAsBitmapFile(), and mrpt::vision::normalizeImage().

◆ setFromRGBMatrices()

template<typename Derived >
void mrpt::img::CImage::setFromRGBMatrices ( const Eigen::MatrixBase< Derived > &  m_r,
const Eigen::MatrixBase< Derived > &  m_g,
const Eigen::MatrixBase< Derived > &  m_b,
bool  matrix_is_normalized = true 
)
inline

Set the image from RGB matrices, given the pixels in the range [0,1] (normalized=true) or [0,255] (normalized=false) Matrix indexes are assumed to be in this order: M(row,column)

See also
getAsRGBMatrices

Definition at line 927 of file img/CImage.h.

References ASSERT_, changeSize(), get_unsafe(), makeSureImageIsLoaded(), MRPT_END, MRPT_START, and setChannelsOrder_RGB().

◆ setImagesPathBase()

void CImage::setImagesPathBase ( const std::string path)
static

◆ setOriginTopLeft()

void CImage::setOriginTopLeft ( bool  val)

Changes the property of the image stating if the top-left corner (vs.

bottom-left) is the coordinate reference

Definition at line 1231 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), and val.

◆ setPixel()

void CImage::setPixel ( int  x,
int  y,
size_t  color 
)
overridevirtual

Changes the value of the pixel (x,y).

Pixel coordinates starts at the left-top corner of the image, and start in (0,0). The meaning of the parameter "color" depends on the implementation: it will usually be a 24bit RGB value (0x00RRGGBB), but it can also be just a 8bit gray level. This method must support (x,y) values OUT of the actual image size without neither raising exceptions, nor leading to memory access errors.

Implements mrpt::img::CCanvas.

Definition at line 1243 of file CImage.cpp.

References ASSERT_, makeSureImageIsLoaded(), MRPT_END, MRPT_START, and THROW_EXCEPTION.

◆ swap()

void CImage::swap ( CImage o)

Very efficient swap of two images (just swap the internal pointers)

Definition at line 133 of file CImage.cpp.

References img, m_externalFile, m_imgIsExternalStorage, and m_imgIsReadOnly.

Referenced by mrpt::vision::CFeatureExtraction::extractFeaturesSIFT(), and mrpt::obs::CObservation3DRangeScan::swap().

◆ swapRB()

void CImage::swapRB ( )

Swaps red and blue channels.

Definition at line 2005 of file CImage.cpp.

References ASSERT_, and makeSureImageIsLoaded().

Referenced by loadFromXPM().

◆ textOut()

void CCanvas::textOut ( int  x0,
int  y0,
const std::string str,
const mrpt::img::TColor  color 
)
virtualinherited

Renders 2D text using bitmap fonts.

Parameters
x0The x coordinates
y0The y coordinates
strThe string to put. If using UNICODE characters, use UTF-8 encoding.
colorThe text color
See also
selectTextFont

Reimplemented in mrpt::img::CEnhancedMetaFile.

Definition at line 369 of file CCanvas.cpp.

References mrpt::system::decodeUTF8(), isOriginTopLeft(), mrpt::img::CCanvas::m_selectedFontBitmaps, MRPT_END, MRPT_START, mrpt::img::CCanvas::selectTextFont(), and mrpt::img::CCanvas::setPixel().

Referenced by drawChessboardCorners(), mrpt::img::CCanvas::drawFeatures(), mrpt::gui::CDisplayWindow::plot(), and mrpt::gui::CDisplayWindow::showImageAndPoints().

◆ triangle()

void CCanvas::triangle ( int  x0,
int  y0,
int  size,
const mrpt::img::TColor  color,
bool  inferior = true,
unsigned int  width = 1 
)
inherited

Draws a triangle.

Parameters
x0The triangle center x coordinate
y0The triangle center y coordinate
sizeThe size of the triangle
colorThe color of the line
inferiorThe position of the triangle
widthThe desired width of the line.
See also
triangle

Definition at line 190 of file CCanvas.cpp.

References mrpt::img::CCanvas::line(), and mrpt::round().

◆ unload()

void CImage::unload ( ) const
noexcept

For external storage image objects only, this method unloads the image from memory (or does nothing if already unloaded).

It does not need to be called explicitly, unless the user wants to save memory for images that will not be used often. If called for an image without the flag "external storage", it is simply ignored.

See also
setExternalStorage, forceLoad

Definition at line 1897 of file CImage.cpp.

References m_imgIsExternalStorage, and releaseIpl().

Referenced by mrpt::obs::CObservation3DRangeScan::unload().

◆ update_patch()

void CImage::update_patch ( const CImage patch,
const unsigned int  col,
const unsigned int  row 
)

Update a part of this image with the "patch" given as argument.

The "patch" will be "pasted" at the (col,row) coordinates of this image.

Exceptions
std::exceptionif patch pasted on the pixel (_row, _column) jut out of the image.
See also
extract_patch

Definition at line 1332 of file CImage.cpp.

References ASSERT_, getHeight(), getWidth(), img, mrpt::system::os::memcpy(), and THROW_EXCEPTION.

◆ writeToMatlab()

virtual mxArray* mrpt::serialization::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class.

Returns
A new mxArray (caller is responsible of memory freeing) or nullptr is class does not support conversion to MATLAB.

Definition at line 70 of file CSerializable.h.

Member Data Documentation

◆ _init_CImage

mrpt::rtti::CLASSINIT mrpt::img::CImage::_init_CImage
staticprotected

Definition at line 132 of file img/CImage.h.

◆ className

constexpr const char* mrpt::img::CImage::className = "CImage"
staticconstexpr

Definition at line 132 of file img/CImage.h.

◆ DISABLE_JPEG_COMPRESSION

bool CImage::DISABLE_JPEG_COMPRESSION = false
static

By default, when storing images through the CSerializable interface, RGB images are JPEG-compressed to save space.

If for some reason you prefer storing RAW image data, disable this feature by setting this flag to true. (Default = false)

Definition at line 240 of file img/CImage.h.

Referenced by serializeTo().

◆ DISABLE_ZIP_COMPRESSION

bool CImage::DISABLE_ZIP_COMPRESSION = false
static

By default, when storing images through the CSerializable interface, grayscale images will be ZIP compressed if they are larger than 16Kb: this flag can be turn on to disable ZIP compression and gain speed versus occupied space.

(Default = false)

Definition at line 233 of file img/CImage.h.

Referenced by serializeTo().

◆ img

void* mrpt::img::CImage::img
protected

The internal IplImage pointer to the actual image content.

Definition at line 1090 of file img/CImage.h.

Referenced by changeSize(), copyFastFrom(), extract_patch(), getAs(), loadFromMemoryBuffer(), loadFromStreamAsJPEG(), loadTGA(), operator=(), saveToStreamAsJPEG(), serializeFrom(), serializeTo(), swap(), and update_patch().

◆ m_externalFile

std::string mrpt::img::CImage::m_externalFile
mutableprotected

The file name of a external storage image.

Definition at line 1100 of file img/CImage.h.

Referenced by copyFastFrom(), getExternalStorageFile(), getExternalStorageFileAbsolutePath(), makeSureImageIsLoaded(), operator=(), serializeFrom(), serializeTo(), and swap().

◆ m_imgIsExternalStorage

bool mrpt::img::CImage::m_imgIsExternalStorage
mutableprotected

◆ m_imgIsReadOnly

bool mrpt::img::CImage::m_imgIsReadOnly
protected

Set to true only when using setFromIplImageReadOnly.

See also
setFromIplImageReadOnly

Definition at line 1094 of file img/CImage.h.

Referenced by copyFastFrom(), loadFromMemoryBuffer(), operator=(), setFromIplImage(), setFromIplImageReadOnly(), and swap().

◆ m_selectedFont

std::string mrpt::img::CCanvas::m_selectedFont
protectedinherited

The selected font name.

Definition at line 46 of file CCanvas.h.

Referenced by mrpt::img::CCanvas::selectTextFont().

◆ m_selectedFontBitmaps

const uint32_t* mrpt::img::CCanvas::m_selectedFontBitmaps
protectedinherited

Direct access to character bitmaps.

Definition at line 49 of file CCanvas.h.

Referenced by mrpt::img::CCanvas::selectTextFont(), and mrpt::img::CCanvas::textOut().

◆ runtimeClassId

const mrpt::rtti::TRuntimeClassId mrpt::img::CImage::runtimeClassId
staticprotected

Definition at line 132 of file img/CImage.h.

◆ SERIALIZATION_JPEG_QUALITY

int CImage::SERIALIZATION_JPEG_QUALITY = 95
static

Unless DISABLE_JPEG_COMPRESSION=true, this sets the JPEG quality (range 1-100) of serialized RGB images.

(Default = 95)

Definition at line 245 of file img/CImage.h.

Referenced by serializeTo().

CH_RGB
#define CH_RGB
Definition: img/CImage.h:45
mrpt::img::CImage::img
void * img
The internal IplImage pointer to the actual image content.
Definition: img/CImage.h:1090
mrpt::img::CImage::CImage
CImage()
Default constructor: initialize an 1x1 RGB image.
Definition: CImage.cpp:81
height
GLenum GLsizei GLsizei height
Definition: glext.h:3554
mrpt::img::FAST_REF_OR_CONVERT_TO_GRAY
@ FAST_REF_OR_CONVERT_TO_GRAY
Definition: img/CImage.h:51
mrpt::img::CImage::Ptr
std::shared_ptr< CImage > Ptr
Definition: img/CImage.h:132
img
GLint GLvoid * img
Definition: glext.h:3763
width
GLenum GLsizei width
Definition: glext.h:3531
mrpt::img::UNINITIALIZED_IMAGE
@ UNINITIALIZED_IMAGE
Definition: img/CImage.h:50
CH_GRAY
#define CH_GRAY
Definition: img/CImage.h:44



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST