Sim-LIT  2.0
 All Classes Namespaces Files Functions Variables Typedefs
cimg_library_suffixed::CImg< T > Struct Template Reference

Class representing an image (up to 4 dimensions wide), each pixel being of type T. More...

#include <CImg.h>

Classes

struct  _cimg_math_parser
 
struct  _functor2d_expr
 
struct  _functor2d_float
 
struct  _functor2d_int
 
struct  _functor3d_expr
 
struct  _functor3d_float
 
struct  _functor3d_int
 
struct  _functor4d_int
 
struct  _functor4d_streamline2d_directed
 
struct  _functor4d_streamline2d_oriented
 
struct  _functor4d_streamline3d_directed
 
struct  _functor4d_streamline3d_oriented
 
struct  _functor4d_streamline_expr
 

Public Types

typedef T * iterator
 Simple iterator type, to loop through each pixel value of an image instance. More...
 
typedef const T * const_iterator
 Simple const iterator type, to loop through each pixel value of a const image instance. More...
 
typedef T value_type
 Pixel value type. More...
 
typedef cimg::superset< T,
bool >::type 
Tbool
 
typedef cimg::superset< T,
unsigned char >::type 
Tuchar
 
typedef cimg::superset< T,
char >::type 
Tchar
 
typedef cimg::superset< T,
unsigned short >::type 
Tushort
 
typedef cimg::superset< T,
short >::type 
Tshort
 
typedef cimg::superset< T,
unsigned int >::type 
Tuint
 
typedef cimg::superset< T, int >
::type 
Tint
 
typedef cimg::superset< T,
unsigned long >::type 
Tulong
 
typedef cimg::superset< T,
long >::type 
Tlong
 
typedef cimg::superset< T,
float >::type 
Tfloat
 
typedef cimg::superset< T,
double >::type 
Tdouble
 
typedef cimg::last< T, bool >::type boolT
 
typedef cimg::last< T,
unsigned char >::type 
ucharT
 
typedef cimg::last< T, char >::type charT
 
typedef cimg::last< T,
unsigned short >::type 
ushortT
 
typedef cimg::last< T, short >
::type 
shortT
 
typedef cimg::last< T,
unsigned int >::type 
uintT
 
typedef cimg::last< T, int >::type intT
 
typedef cimg::last< T,
unsigned long >::type 
ulongT
 
typedef cimg::last< T, long >::type longT
 
typedef cimg::last< T, float >
::type 
floatT
 
typedef cimg::last< T, double >
::type 
doubleT
 

Public Member Functions

Overloaded Operators
T & operator() (const unsigned int x)
 Access to a pixel value. More...
 
const T & operator() (const unsigned int x) const
 
T & operator() (const unsigned int x, const unsigned int y)
 
const T & operator() (const unsigned int x, const unsigned int y) const
 
T & operator() (const unsigned int x, const unsigned int y, const unsigned int z)
 
const T & operator() (const unsigned int x, const unsigned int y, const unsigned int z) const
 
T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c)
 
const T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c) const
 
T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, const unsigned long wh)
 
const T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, const unsigned long wh) const
 
T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, const unsigned long wh, const unsigned long whd)
 
const T & operator() (const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, const unsigned long wh, const unsigned long whd) const
 
 operator T * ()
 Implicitely cast an image into a T*. More...
 
 operator const T * () const
 Implicitely cast an image into a T* .
 
CImg< T > & operator= (const T value)
 Assign a value to all image pixels. More...
 
CImg< T > & operator= (const char *const expression)
 Assign pixels values from a specified expression. More...
 
template<typename t >
CImg< T > & operator= (const CImg< t > &img)
 Copy an image into the current image instance. More...
 
CImg< T > & operator= (const CImg< T > &img)
 Copy an image into the current image instance .
 
CImg< T > & operator= (const CImgDisplay &disp)
 Copy the content of a display window to the current image instance. More...
 
template<typename t >
CImg< T > & operator+= (const t value)
 In-place addition operator. More...
 
CImg< T > & operator+= (const char *const expression)
 In-place addition operator. More...
 
template<typename t >
CImg< T > & operator+= (const CImg< t > &img)
 In-place addition operator. More...
 
CImg< T > & operator++ ()
 In-place increment operator (prefix). More...
 
CImg< T > operator++ (int)
 In-place increment operator (postfix). More...
 
CImg< T > operator+ () const
 Return a non-shared copy of the image instance. More...
 
template<typename t >
CImg< _cimg_Tt > operator+ (const t value) const
 Addition operator. More...
 
CImg< Tfloat > operator+ (const char *const expression) const
 Addition operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator+ (const CImg< t > &img) const
 Addition operator. More...
 
template<typename t >
CImg< T > & operator-= (const t value)
 In-place substraction operator. More...
 
CImg< T > & operator-= (const char *const expression)
 In-place substraction operator. More...
 
template<typename t >
CImg< T > & operator-= (const CImg< t > &img)
 In-place substraction operator. More...
 
CImg< T > & operator-- ()
 In-place decrement operator (prefix). More...
 
CImg< T > operator-- (int)
 In-place decrement operator (postfix). More...
 
CImg< T > operator- () const
 Replace each pixel by its opposite value. More...
 
template<typename t >
CImg< _cimg_Tt > operator- (const t value) const
 Substraction operator. More...
 
CImg< Tfloat > operator- (const char *const expression) const
 Substraction operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator- (const CImg< t > &img) const
 Substraction operator. More...
 
template<typename t >
CImg< T > & operator*= (const t value)
 In-place multiplication operator. More...
 
CImg< T > & operator*= (const char *const expression)
 In-place multiplication operator. More...
 
template<typename t >
CImg< T > & operator*= (const CImg< t > &img)
 In-place multiplication operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator* (const t value) const
 Multiplication operator. More...
 
CImg< Tfloat > operator* (const char *const expression) const
 Multiplication operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator* (const CImg< t > &img) const
 Multiplication operator. More...
 
template<typename t >
CImg< T > & operator/= (const t value)
 In-place division operator. More...
 
CImg< T > & operator/= (const char *const expression)
 In-place division operator. More...
 
template<typename t >
CImg< T > & operator/= (const CImg< t > &img)
 In-place division operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator/ (const t value) const
 Division operator. More...
 
CImg< Tfloat > operator/ (const char *const expression) const
 Division operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator/ (const CImg< t > &img) const
 Division operator. More...
 
template<typename t >
CImg< T > & operator%= (const t value)
 In-place modulo operator. More...
 
CImg< T > & operator%= (const char *const expression)
 In-place modulo operator. More...
 
template<typename t >
CImg< T > & operator%= (const CImg< t > &img)
 In-place modulo operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator% (const t value) const
 Modulo operator. More...
 
CImg< Tfloat > operator% (const char *const expression) const
 Modulo operator. More...
 
template<typename t >
CImg< _cimg_Tt > operator% (const CImg< t > &img) const
 Modulo operator. More...
 
template<typename t >
CImg< T > & operator&= (const t value)
 In-place bitwise AND operator. More...
 
CImg< T > & operator&= (const char *const expression)
 In-place bitwise AND operator. More...
 
template<typename t >
CImg< T > & operator&= (const CImg< t > &img)
 In-place bitwise AND operator. More...
 
template<typename t >
CImg< T > operator& (const t value) const
 Bitwise AND operator. More...
 
CImg< T > operator& (const char *const expression) const
 Bitwise AND operator. More...
 
template<typename t >
CImg< T > operator& (const CImg< t > &img) const
 Bitwise AND operator. More...
 
template<typename t >
CImg< T > & operator|= (const t value)
 In-place bitwise OR operator. More...
 
CImg< T > & operator|= (const char *const expression)
 In-place bitwise OR operator. More...
 
template<typename t >
CImg< T > & operator|= (const CImg< t > &img)
 In-place bitwise OR operator. More...
 
template<typename t >
CImg< T > operator| (const t value) const
 Bitwise OR operator. More...
 
CImg< T > operator| (const char *const expression) const
 Bitwise OR operator. More...
 
template<typename t >
CImg< T > operator| (const CImg< t > &img) const
 Bitwise OR operator. More...
 
template<typename t >
CImg< T > & operator^= (const t value)
 In-place bitwise XOR operator. More...
 
CImg< T > & operator^= (const char *const expression)
 In-place bitwise XOR operator. More...
 
template<typename t >
CImg< T > & operator^= (const CImg< t > &img)
 In-place bitwise XOR operator. More...
 
template<typename t >
CImg< T > operator^ (const t value) const
 Bitwise XOR operator. More...
 
CImg< T > operator^ (const char *const expression) const
 Bitwise XOR operator. More...
 
template<typename t >
CImg< T > operator^ (const CImg< t > &img) const
 Bitwise XOR operator. More...
 
template<typename t >
CImg< T > & operator<<= (const t value)
 In-place bitwise left shift operator. More...
 
CImg< T > & operator<<= (const char *const expression)
 In-place bitwise left shift operator. More...
 
template<typename t >
CImg< T > & operator<<= (const CImg< t > &img)
 In-place bitwise left shift operator. More...
 
template<typename t >
CImg< T > operator<< (const t value) const
 Bitwise left shift operator. More...
 
CImg< T > operator<< (const char *const expression) const
 Bitwise left shift operator. More...
 
template<typename t >
CImg< T > operator<< (const CImg< t > &img) const
 Bitwise left shift operator. More...
 
template<typename t >
CImg< T > & operator>>= (const t value)
 In-place bitwise right shift operator. More...
 
CImg< T > & operator>>= (const char *const expression)
 In-place bitwise right shift operator. More...
 
template<typename t >
CImg< T > & operator>>= (const CImg< t > &img)
 In-place bitwise right shift operator. More...
 
template<typename t >
CImg< T > operator>> (const t value) const
 Bitwise right shift operator. More...
 
CImg< T > operator>> (const char *const expression) const
 Bitwise right shift operator. More...
 
template<typename t >
CImg< T > operator>> (const CImg< t > &img) const
 Bitwise right shift operator. More...
 
CImg< T > operator~ () const
 Bitwise inversion operator. More...
 
template<typename t >
bool operator== (const t value) const
 Test if all pixels of an image have the same value. More...
 
bool operator== (const char *const expression) const
 Test if all pixel values of an image follow a specified expression. More...
 
template<typename t >
bool operator== (const CImg< t > &img) const
 Test if two images have the same size and values. More...
 
template<typename t >
bool operator!= (const t value) const
 Test if pixels of an image are all different from a value. More...
 
bool operator!= (const char *const expression) const
 Test if all pixel values of an image are different from a specified expression. More...
 
template<typename t >
bool operator!= (const CImg< t > &img) const
 Test if two images have different sizes or values. More...
 
template<typename t >
CImgList< _cimg_Tt > operator, (const CImg< t > &img) const
 Construct an image list from two images. More...
 
template<typename t >
CImgList< _cimg_Tt > operator, (const CImgList< t > &list) const
 Construct an image list from image instance and an input image list. More...
 
CImgList< T > operator< (const char axis) const
 Split image along specified axis. More...
 
Mathematical Functions
CImg< T > & sqr ()
 Compute the square value of each pixel value. More...
 
CImg< Tfloat > get_sqr () const
 Compute the square value of each pixel value .
 
CImg< T > & sqrt ()
 Compute the square root of each pixel value. More...
 
CImg< Tfloat > get_sqrt () const
 Compute the square root of each pixel value .
 
CImg< T > & exp ()
 Compute the exponential of each pixel value. More...
 
CImg< Tfloat > get_exp () const
 Compute the exponential of each pixel value .
 
CImg< T > & log ()
 Compute the logarithm of each pixel value. More...
 
CImg< Tfloat > get_log () const
 Compute the logarithm of each pixel value .
 
CImg< T > & log2 ()
 Compute the base-2 logarithm of each pixel value. More...
 
CImg< Tfloat > get_log2 () const
 Compute the base-10 logarithm of each pixel value .
 
CImg< T > & log10 ()
 Compute the base-10 logarithm of each pixel value. More...
 
CImg< Tfloat > get_log10 () const
 Compute the base-10 logarithm of each pixel value .
 
CImg< T > & abs ()
 Compute the absolute value of each pixel value. More...
 
CImg< Tfloat > get_abs () const
 Compute the absolute value of each pixel value .
 
CImg< T > & sign ()
 Compute the sign of each pixel value. More...
 
CImg< Tfloat > get_sign () const
 Compute the sign of each pixel value .
 
CImg< T > & cos ()
 Compute the cosine of each pixel value. More...
 
CImg< Tfloat > get_cos () const
 Compute the cosine of each pixel value .
 
CImg< T > & sin ()
 Compute the sine of each pixel value. More...
 
CImg< Tfloat > get_sin () const
 Compute the sine of each pixel value .
 
CImg< T > & sinc ()
 Compute the sinc of each pixel value. More...
 
CImg< Tfloat > get_sinc () const
 Compute the sinc of each pixel value .
 
CImg< T > & tan ()
 Compute the tangent of each pixel value. More...
 
CImg< Tfloat > get_tan () const
 Compute the tangent of each pixel value .
 
CImg< T > & cosh ()
 Compute the hyperbolic cosine of each pixel value. More...
 
CImg< Tfloat > get_cosh () const
 Compute the hyperbolic cosine of each pixel value .
 
CImg< T > & sinh ()
 Compute the hyperbolic sine of each pixel value. More...
 
CImg< Tfloat > get_sinh () const
 Compute the hyperbolic sine of each pixel value .
 
CImg< T > & tanh ()
 Compute the hyperbolic tangent of each pixel value. More...
 
CImg< Tfloat > get_tanh () const
 Compute the hyperbolic tangent of each pixel value .
 
CImg< T > & acos ()
 Compute the arccosine of each pixel value. More...
 
CImg< Tfloat > get_acos () const
 Compute the arccosine of each pixel value .
 
CImg< T > & asin ()
 Compute the arcsine of each pixel value. More...
 
CImg< Tfloat > get_asin () const
 Compute the arcsine of each pixel value .
 
CImg< T > & atan ()
 Compute the arctangent of each pixel value. More...
 
CImg< Tfloat > get_atan () const
 Compute the arctangent of each pixel value .
 
template<typename t >
CImg< T > & atan2 (const CImg< t > &img)
 Compute the arctangent2 of each pixel value. More...
 
template<typename t >
CImg< Tfloat > get_atan2 (const CImg< t > &img) const
 Compute the arctangent2 of each pixel value .
 
template<typename t >
CImg< T > & mul (const CImg< t > &img)
 In-place pointwise multiplication. More...
 
template<typename t >
CImg< _cimg_Tt > get_mul (const CImg< t > &img) const
 In-place pointwise multiplication .
 
template<typename t >
CImg< T > & div (const CImg< t > &img)
 In-place pointwise division. More...
 
template<typename t >
CImg< _cimg_Tt > get_div (const CImg< t > &img) const
 In-place pointwise division .
 
CImg< T > & pow (const double p)
 Raise each pixel value to a specified power. More...
 
CImg< Tfloat > get_pow (const double p) const
 Raise each pixel value to a specified power .
 
CImg< T > & pow (const char *const expression)
 Raise each pixel value to a power, specified from an expression. More...
 
CImg< Tfloat > get_pow (const char *const expression) const
 Raise each pixel value to a power, specified from an expression .
 
template<typename t >
CImg< T > & pow (const CImg< t > &img)
 Raise each pixel value to a power, pointwisely specified from another image. More...
 
template<typename t >
CImg< Tfloat > get_pow (const CImg< t > &img) const
 Raise each pixel value to a power, pointwisely specified from another image .
 
CImg< T > & rol (const unsigned int n=1)
 Compute the bitwise left rotation of each pixel value. More...
 
CImg< T > get_rol (const unsigned int n=1) const
 Compute the bitwise left rotation of each pixel value .
 
CImg< T > & rol (const char *const expression)
 Compute the bitwise left rotation of each pixel value. More...
 
CImg< T > get_rol (const char *const expression) const
 Compute the bitwise left rotation of each pixel value .
 
template<typename t >
CImg< T > & rol (const CImg< t > &img)
 Compute the bitwise left rotation of each pixel value. More...
 
template<typename t >
CImg< T > get_rol (const CImg< t > &img) const
 Compute the bitwise left rotation of each pixel value .
 
CImg< T > & ror (const unsigned int n=1)
 Compute the bitwise right rotation of each pixel value. More...
 
CImg< T > get_ror (const unsigned int n=1) const
 Compute the bitwise right rotation of each pixel value .
 
CImg< T > & ror (const char *const expression)
 Compute the bitwise right rotation of each pixel value. More...
 
CImg< T > get_ror (const char *const expression) const
 Compute the bitwise right rotation of each pixel value .
 
template<typename t >
CImg< T > & ror (const CImg< t > &img)
 Compute the bitwise right rotation of each pixel value. More...
 
template<typename t >
CImg< T > get_ror (const CImg< t > &img) const
 Compute the bitwise right rotation of each pixel value .
 
CImg< T > & min (const T val)
 Pointwise min operator between instance image and a value. More...
 
CImg< T > get_min (const T val) const
 Pointwise min operator between instance image and a value .
 
template<typename t >
CImg< T > & min (const CImg< t > &img)
 Pointwise min operator between two images. More...
 
template<typename t >
CImg< _cimg_Tt > get_min (const CImg< t > &img) const
 Pointwise min operator between two images .
 
CImg< T > & min (const char *const expression)
 Pointwise min operator between an image and an expression. More...
 
CImg< Tfloat > get_min (const char *const expression) const
 Pointwise min operator between an image and an expression .
 
CImg< T > & max (const T val)
 Pointwise max operator between instance image and a value. More...
 
CImg< T > get_max (const T val) const
 Pointwise max operator between instance image and a value .
 
template<typename t >
CImg< T > & max (const CImg< t > &img)
 Pointwise max operator between two images. More...
 
template<typename t >
CImg< _cimg_Tt > get_max (const CImg< t > &img) const
 Pointwise max operator between two images .
 
CImg< T > & max (const char *const expression)
 Pointwise max operator between an image and an expression. More...
 
CImg< Tfloat > get_max (const char *const expression) const
 Pointwise max operator between an image and an expression .
 
T & min ()
 Return a reference to the minimum pixel value.
 
const T & min () const
 Return a reference to the minimum pixel value .
 
T & max ()
 Return a reference to the maximum pixel value.
 
const T & max () const
 Return a reference to the maximum pixel value .
 
template<typename t >
T & min_max (t &max_val)
 Return a reference to the minimum pixel value as well as the maximum pixel value. More...
 
template<typename t >
const T & min_max (t &max_val) const
 Return a reference to the minimum pixel value as well as the maximum pixel value .
 
template<typename t >
T & max_min (t &min_val)
 Return a reference to the maximum pixel value as well as the minimum pixel value. More...
 
template<typename t >
const T & max_min (t &min_val) const
 Return a reference to the maximum pixel value as well as the minimum pixel value .
 
kth_smallest (const unsigned int k) const
 Return the kth smallest pixel value. More...
 
median () const
 Return the median pixel value.
 
Tdouble sum () const
 Return the sum of all the pixel values.
 
Tdouble mean () const
 Return the average pixel value.
 
Tdouble variance (const unsigned int variance_method=1) const
 Return the variance of the pixel values. More...
 
template<typename t >
Tdouble variance_mean (const unsigned int variance_method, t &mean) const
 Return the variance as well as the average of the pixel values. More...
 
Tdouble variance_noise (const unsigned int variance_method=2) const
 Return estimated variance of the noise. More...
 
template<typename t >
Tdouble MSE (const CImg< t > &img) const
 Compute the MSE (Mean-Squared Error) between two images. More...
 
template<typename t >
Tdouble PSNR (const CImg< t > &img, const Tdouble max_value=255) const
 Compute the PSNR (Peak Signal-to-Noise Ratio) between two images. More...
 
double eval (const char *const expression, const double x=0, const double y=0, const double z=0, const double c=0) const
 Evaluate math formula. More...
 
template<typename t >
CImg< doubleT > eval (const char *const expression, const CImg< t > &xyzc) const
 Evaluate math formula on a set of variables. More...
 
CImg< Tdouble > get_stats (const unsigned int variance_method=1) const
 Compute statistics vector from the pixel values.
 
CImg< T > & stats (const unsigned int variance_method=1)
 Compute statistics vector from the pixel values .
 
Value Manipulation
CImg< T > & fill (const T val)
 Fill all pixel values with specified value. More...
 
CImg< T > get_fill (const T val) const
 Fill all pixel values with specified value .
 
CImg< T > & fill (const T val0, const T val1)
 Fill sequentially all pixel values with specified values. More...
 
CImg< T > get_fill (const T val0, const T val1) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13, const T val14)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13, const T val14) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13, const T val14, const T val15)
 Fill sequentially all pixel values with specified values .
 
CImg< T > get_fill (const T val0, const T val1, const T val2, const T val3, const T val4, const T val5, const T val6, const T val7, const T val8, const T val9, const T val10, const T val11, const T val12, const T val13, const T val14, const T val15) const
 Fill sequentially all pixel values with specified values .
 
CImg< T > & fill (const char *const expression, const bool repeat_flag)
 Fill sequentially pixel values according to a given expression. More...
 
CImg< T > get_fill (const char *const values, const bool repeat_values) const
 Fill sequentially pixel values according to a given expression .
 
template<typename t >
CImg< T > & fill (const CImg< t > &values, const bool repeat_values=true)
 Fill sequentially pixel values according to the values found in another image. More...
 
template<typename t >
CImg< T > get_fill (const CImg< t > &values, const bool repeat_values=true) const
 Fill sequentially pixel values according to the values found in another image .
 
CImg< T > & fillX (const unsigned int y, const unsigned int z, const unsigned int c, const int a0,...)
 Fill pixel values along the X-axis at a specified pixel position. More...
 
CImg< T > & fillX (const unsigned int y, const unsigned int z, const unsigned int c, const double a0,...)
 Fill pixel values along the X-axis at a specified pixel position .
 
CImg< T > & fillY (const unsigned int x, const unsigned int z, const unsigned int c, const int a0,...)
 Fill pixel values along the Y-axis at a specified pixel position. More...
 
CImg< T > & fillY (const unsigned int x, const unsigned int z, const unsigned int c, const double a0,...)
 Fill pixel values along the Y-axis at a specified pixel position .
 
CImg< T > & fillZ (const unsigned int x, const unsigned int y, const unsigned int c, const int a0,...)
 Fill pixel values along the Z-axis at a specified pixel position. More...
 
CImg< T > & fillZ (const unsigned int x, const unsigned int y, const unsigned int c, const double a0,...)
 Fill pixel values along the Z-axis at a specified pixel position .
 
CImg< T > & fillC (const unsigned int x, const unsigned int y, const unsigned int z, const int a0,...)
 Fill pixel values along the C-axis at a specified pixel position. More...
 
CImg< T > & fillC (const unsigned int x, const unsigned int y, const unsigned int z, const double a0,...)
 Fill pixel values along the C-axis at a specified pixel position .
 
CImg< T > & discard (const T value)
 Discard specified value in the image buffer. More...
 
CImg< T > get_discard (const T value) const
 Discard specified value in the image buffer .
 
template<typename t >
CImg< T > & discard (const CImg< t > &values)
 Discard specified sequence of values in the image buffer. More...
 
template<typename t >
CImg< T > get_discard (const CImg< t > &values) const
 Discard specified sequence of values in the image buffer .
 
CImg< T > & invert_endianness ()
 Invert endianness of all pixel values.
 
CImg< T > get_invert_endianness () const
 Invert endianness of all pixel values .
 
CImg< T > & rand (const T val_min, const T val_max)
 Fill image with random values in specified range. More...
 
CImg< T > get_rand (const T val_min, const T val_max) const
 Fill image with random values in specified range .
 
CImg< T > & round (const double y=1, const int rounding_type=0)
 Round pixel values. More...
 
CImg< T > get_round (const double y=1, const unsigned int rounding_type=0) const
 Round pixel values .
 
CImg< T > & noise (const double sigma, const unsigned int noise_type=0)
 Add random noise to pixel values. More...
 
CImg< T > get_noise (const double sigma, const unsigned int noise_type=0) const
 Add random noise to pixel values .
 
CImg< T > & normalize (const T min_value, const T max_value)
 Linearly normalize pixel values. More...
 
CImg< Tfloat > get_normalize (const T min_value, const T max_value) const
 Linearly normalize pixel values .
 
CImg< T > & normalize ()
 Normalize multi-valued pixels of the image instance, with respect to their L2-norm. More...
 
CImg< Tfloat > get_normalize () const
 Normalize multi-valued pixels of the image instance, with respect to their L2-norm .
 
CImg< T > & norm (const int norm_type=2)
 Compute L2-norm of each multi-valued pixel of the image instance. More...
 
CImg< Tfloat > get_norm (const int norm_type=2) const
 Compute L2-norm of each multi-valued pixel of the image instance .
 
CImg< T > & cut (const T min_value, const T max_value)
 Cut pixel values in specified range. More...
 
CImg< T > get_cut (const T min_value, const T max_value) const
 Cut pixel values in specified range .
 
CImg< T > & quantize (const unsigned int nb_levels, const bool keep_range=true)
 Uniformly quantize pixel values. More...
 
CImg< T > get_quantize (const unsigned int n, const bool keep_range=true) const
 Uniformly quantize pixel values .
 
CImg< T > & threshold (const T value, const bool soft_threshold=false, const bool strict_threshold=false)
 Threshold pixel values. More...
 
CImg< T > get_threshold (const T value, const bool soft_threshold=false, const bool strict_threshold=false) const
 Threshold pixel values .
 
CImg< T > & histogram (const unsigned int nb_levels, const T min_value, const T max_value)
 Compute the histogram of pixel values. More...
 
CImg< T > & histogram (const unsigned int nb_levels)
 Compute the histogram of pixel values .
 
CImg< ulongT > get_histogram (const unsigned int nb_levels, const T min_value, const T max_value) const
 Compute the histogram of pixel values .
 
CImg< ulongT > get_histogram (const unsigned int nb_levels) const
 Compute the histogram of pixel values .
 
CImg< T > & equalize (const unsigned int nb_levels, const T min_value, const T max_value)
 Equalize histogram of pixel values. More...
 
CImg< T > & equalize (const unsigned int nb_levels)
 Equalize histogram of pixel values .
 
CImg< T > get_equalize (const unsigned int nblevels, const T val_min, const T val_max) const
 Equalize histogram of pixel values .
 
CImg< T > get_equalize (const unsigned int nblevels) const
 Equalize histogram of pixel values .
 
template<typename t >
CImg< T > & index (const CImg< t > &colormap, const float dithering=1, const bool map_indexes=false)
 Index multi-valued pixels regarding to a specified colormap. More...
 
template<typename t >
CImg< typename CImg< t >::Tuint > get_index (const CImg< t > &colormap, const float dithering=1, const bool map_indexes=true) const
 Index multi-valued pixels regarding to a specified colormap .
 
template<typename t >
CImg< T > & map (const CImg< t > &colormap, const unsigned int boundary_conditions=0)
 Map predefined colormap on the scalar (indexed) image instance. More...
 
template<typename t >
CImg< t > get_map (const CImg< t > &colormap, const unsigned int boundary_conditions=0) const
 Map predefined colormap on the scalar (indexed) image instance .
 
CImg< T > & label (const bool is_high_connectivity=false, const Tfloat tolerance=0)
 Label connected components. More...
 
CImg< unsigned long > get_label (const bool is_high_connectivity=false, const Tfloat tolerance=0) const
 Label connected components .
 
template<typename t >
CImg< T > & label (const CImg< t > &connectivity_mask, const Tfloat tolerance=0)
 Label connected components . More...
 
template<typename t >
CImg< unsigned long > get_label (const CImg< t > &connectivity_mask, const Tfloat tolerance=0) const
 Label connected components .
 
CImg< unsigned long > _get_label (const unsigned int nb, const int *const dx, const int *const dy, const int *const dz, const Tfloat tolerance) const
 
CImg< T > & _system_strescape ()
 

Public Attributes

unsigned int _width
 
unsigned int _height
 
unsigned int _depth
 
unsigned int _spectrum
 
bool _is_shared
 
T * _data
 

Constructors / Destructor / Instance Management

 ~CImg ()
 Destroy image. More...
 
 CImg ()
 Construct empty image. More...
 
 CImg (const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1)
 Construct image with specified size. More...
 
 CImg (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const T value)
 Construct image with specified size and initialize pixel values. More...
 
 CImg (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const int value0, const int value1,...)
 Construct image with specified size and initialize pixel values from a sequence of integers. More...
 
 CImg (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const double value0, const double value1,...)
 Construct image with specified size and initialize pixel values from a sequence of doubles. More...
 
 CImg (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const char *const values, const bool repeat_values)
 Construct image with specified size and initialize pixel values from a value string. More...
 
template<typename t >
 CImg (const t *const values, const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false)
 Construct image with specified size and initialize pixel values from a memory buffer. More...
 
 CImg (const T *const values, const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false)
 Construct image with specified size and initialize pixel values from a memory buffer .
 
 CImg (const char *const filename)
 Construct image from reading an image file. More...
 
template<typename t >
 CImg (const CImg< t > &img)
 Construct image copy. More...
 
 CImg (const CImg< T > &img)
 Construct image copy .
 
template<typename t >
 CImg (const CImg< t > &img, const bool is_shared)
 Advanced copy constructor. More...
 
 CImg (const CImg< T > &img, const bool is_shared)
 Advanced copy constructor .
 
template<typename t >
 CImg (const CImg< t > &img, const char *const dimensions)
 Construct image with dimensions borrowed from another image. More...
 
template<typename t >
 CImg (const CImg< t > &img, const char *const dimensions, const T value)
 Construct image with dimensions borrowed from another image and initialize pixel values. More...
 
 CImg (const CImgDisplay &disp)
 Construct image from a display window. More...
 
CImg< T > & assign ()
 Construct empty image . More...
 
CImg< T > & assign (const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1)
 Construct image with specified size . More...
 
CImg< T > & assign (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const T value)
 Construct image with specified size and initialize pixel values . More...
 
CImg< T > & assign (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const int value0, const int value1,...)
 Construct image with specified size and initialize pixel values from a sequence of integers . More...
 
CImg< T > & assign (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const double value0, const double value1,...)
 Construct image with specified size and initialize pixel values from a sequence of doubles . More...
 
CImg< T > & assign (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const char *const values, const bool repeat_values)
 Construct image with specified size and initialize pixel values from a value string . More...
 
template<typename t >
CImg< T > & assign (const t *const values, const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1)
 Construct image with specified size and initialize pixel values from a memory buffer . More...
 
CImg< T > & assign (const T *const values, const unsigned int size_x, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1)
 Construct image with specified size and initialize pixel values from a memory buffer .
 
template<typename t >
CImg< T > & assign (const t *const values, const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const bool is_shared)
 Construct image with specified size and initialize pixel values from a memory buffer .
 
CImg< T > & assign (const T *const values, const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const bool is_shared)
 Construct image with specified size and initialize pixel values from a memory buffer .
 
CImg< T > & assign (const char *const filename)
 Construct image from reading an image file . More...
 
template<typename t >
CImg< T > & assign (const CImg< t > &img)
 Construct image copy . More...
 
template<typename t >
CImg< T > & assign (const CImg< t > &img, const bool is_shared)
 In-place version of the advanced copy constructor. More...
 
template<typename t >
CImg< T > & assign (const CImg< t > &img, const char *const dimensions)
 Construct image with dimensions borrowed from another image . More...
 
template<typename t >
CImg< T > & assign (const CImg< t > &img, const char *const dimensions, const T value)
 Construct image with dimensions borrowed from another image and initialize pixel values . More...
 
CImg< T > & assign (const CImgDisplay &disp)
 Construct image from a display window . More...
 
CImg< T > & clear ()
 Construct empty image . More...
 
template<typename t >
CImg< t > & move_to (CImg< t > &img)
 Transfer content of an image instance into another one. More...
 
CImg< T > & move_to (CImg< T > &img)
 Transfer content of an image instance into another one .
 
template<typename t >
CImgList< t > & move_to (CImgList< t > &list, const unsigned int pos=~0U)
 Transfer content of an image instance into a new image in an image list. More...
 
CImg< T > & swap (CImg< T > &img)
 Swap fields of two image instances. More...
 
static CImg< T > & empty ()
 Return a reference to an empty image. More...
 

Instance Characteristics

int width () const
 Return the number of image columns. More...
 
int height () const
 Return the number of image rows. More...
 
int depth () const
 Return the number of image slices. More...
 
int spectrum () const
 Return the number of image channels. More...
 
unsigned long size () const
 Return the total number of pixel values. More...
 
T * data ()
 Return a pointer to the first pixel value. More...
 
const T * data () const
 Return a pointer to the first pixel value .
 
T * data (const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0)
 Return a pointer to a located pixel value. More...
 
const T * data (const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) const
 
long offset (const int x, const int y=0, const int z=0, const int c=0) const
 Return the offset to a located pixel value, with respect to the beginning of the pixel buffer. More...
 
iterator begin ()
 Return a CImg<T>::iterator pointing to the first pixel value. More...
 
const_iterator begin () const
 Return a CImg<T>::iterator pointing to the first value of the pixel buffer .
 
iterator end ()
 Return a CImg<T>::iterator pointing next to the last pixel value. More...
 
const_iterator end () const
 Return a CImg<T>::iterator pointing next to the last pixel value .
 
T & front ()
 Return a reference to the first pixel value. More...
 
const T & front () const
 Return a reference to the first pixel value .
 
T & back ()
 Return a reference to the last pixel value. More...
 
const T & back () const
 Return a reference to the last pixel value .
 
T & at (const int offset, const T out_value)
 Access to a pixel value at a specified offset, using Dirichlet boundary conditions. More...
 
at (const int offset, const T out_value) const
 Access to a pixel value at a specified offset, using Dirichlet boundary conditions .
 
T & at (const int offset)
 Access to a pixel value at a specified offset, using Neumann boundary conditions. More...
 
T & _at (const int offset)
 
at (const int offset) const
 Access to a pixel value at a specified offset, using Neumann boundary conditions .
 
_at (const int offset) const
 
T & atX (const int x, const int y, const int z, const int c, const T out_value)
 Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate. More...
 
atX (const int x, const int y, const int z, const int c, const T out_value) const
 Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate .
 
T & atX (const int x, const int y=0, const int z=0, const int c=0)
 Access to a pixel value, using Neumann boundary conditions for the X-coordinate. More...
 
T & _atX (const int x, const int y=0, const int z=0, const int c=0)
 
atX (const int x, const int y=0, const int z=0, const int c=0) const
 Access to a pixel value, using Neumann boundary conditions for the X-coordinate .
 
_atX (const int x, const int y=0, const int z=0, const int c=0) const
 
T & atXY (const int x, const int y, const int z, const int c, const T out_value)
 Access to a pixel value, using Dirichlet boundary conditions for the X and Y-coordinates. More...
 
atXY (const int x, const int y, const int z, const int c, const T out_value) const
 Access to a pixel value, using Dirichlet boundary conditions for the X and Y coordinates .
 
T & atXY (const int x, const int y, const int z=0, const int c=0)
 Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates. More...
 
T & _atXY (const int x, const int y, const int z=0, const int c=0)
 
atXY (const int x, const int y, const int z=0, const int c=0) const
 Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates .
 
_atXY (const int x, const int y, const int z=0, const int c=0) const
 
T & atXYZ (const int x, const int y, const int z, const int c, const T out_value)
 Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates. More...
 
atXYZ (const int x, const int y, const int z, const int c, const T out_value) const
 Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates .
 
T & atXYZ (const int x, const int y, const int z, const int c=0)
 Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates. More...
 
T & _atXYZ (const int x, const int y, const int z, const int c=0)
 
atXYZ (const int x, const int y, const int z, const int c=0) const
 Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates .
 
_atXYZ (const int x, const int y, const int z, const int c=0) const
 
T & atXYZC (const int x, const int y, const int z, const int c, const T out_value)
 Access to a pixel value, using Dirichlet boundary conditions. More...
 
atXYZC (const int x, const int y, const int z, const int c, const T out_value) const
 Access to a pixel value, using Dirichlet boundary conditions .
 
T & atXYZC (const int x, const int y, const int z, const int c)
 Access to a pixel value, using Neumann boundary conditions. More...
 
T & _atXYZC (const int x, const int y, const int z, const int c)
 
atXYZC (const int x, const int y, const int z, const int c) const
 Access to a pixel value, using Neumann boundary conditions .
 
_atXYZC (const int x, const int y, const int z, const int c) const
 
Tfloat linear_atX (const float fx, const int y, const int z, const int c, const T out_value) const
 Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X-coordinate. More...
 
Tfloat linear_atX (const float fx, const int y=0, const int z=0, const int c=0) const
 Return pixel value, using linear interpolation and Neumann boundary conditions for the X-coordinate. More...
 
Tfloat _linear_atX (const float fx, const int y=0, const int z=0, const int c=0) const
 
Tfloat linear_atXY (const float fx, const float fy, const int z, const int c, const T out_value) const
 Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X and Y-coordinates. More...
 
Tfloat linear_atXY (const float fx, const float fy, const int z=0, const int c=0) const
 Return pixel value, using linear interpolation and Neumann boundary conditions for the X and Y-coordinates. More...
 
Tfloat _linear_atXY (const float fx, const float fy, const int z=0, const int c=0) const
 
Tfloat linear_atXYZ (const float fx, const float fy, const float fz, const int c, const T out_value) const
 Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. More...
 
Tfloat linear_atXYZ (const float fx, const float fy=0, const float fz=0, const int c=0) const
 Return pixel value, using linear interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. More...
 
Tfloat _linear_atXYZ (const float fx, const float fy=0, const float fz=0, const int c=0) const
 
Tfloat linear_atXYZC (const float fx, const float fy, const float fz, const float fc, const T out_value) const
 Return pixel value, using linear interpolation and Dirichlet boundary conditions for all X,Y,Z,C-coordinates. More...
 
Tfloat linear_atXYZC (const float fx, const float fy=0, const float fz=0, const float fc=0) const
 Return pixel value, using linear interpolation and Neumann boundary conditions for all X,Y,Z and C-coordinates. More...
 
Tfloat _linear_atXYZC (const float fx, const float fy=0, const float fz=0, const float fc=0) const
 
Tfloat cubic_atX (const float fx, const int y, const int z, const int c, const T out_value) const
 Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. More...
 
Tfloat cubic_atX (const float fx, const int y, const int z, const int c, const T out_value, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. More...
 
Tfloat cubic_atX (const float fx, const int y=0, const int z=0, const int c=0) const
 Return pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. More...
 
Tfloat _cubic_atX (const float fx, const int y=0, const int z=0, const int c=0) const
 
Tfloat cubic_atX (const float fx, const int y, const int z, const int c, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. More...
 
Tfloat _cubic_atX (const float fx, const int y, const int z, const int c, const Tfloat min_value, const Tfloat max_value) const
 
Tfloat cubic_atXY (const float fx, const float fy, const int z, const int c, const T out_value) const
 Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X and Y-coordinates. More...
 
Tfloat cubic_atXY (const float fx, const float fy, const int z, const int c, const T out_value, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y-coordinates. More...
 
Tfloat cubic_atXY (const float fx, const float fy, const int z=0, const int c=0) const
 Return pixel value, using cubic interpolation and Neumann boundary conditions for the X and Y-coordinates. More...
 
Tfloat _cubic_atXY (const float fx, const float fy, const int z=0, const int c=0) const
 
Tfloat cubic_atXY (const float fx, const float fy, const int z, const int c, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y-coordinates. More...
 
Tfloat _cubic_atXY (const float fx, const float fy, const int z, const int c, const Tfloat min_value, const Tfloat max_value) const
 
Tfloat cubic_atXYZ (const float fx, const float fy, const float fz, const int c, const T out_value) const
 Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. More...
 
Tfloat cubic_atXYZ (const float fx, const float fy, const float fz, const int c, const T out_value, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the XYZ-coordinates. More...
 
Tfloat cubic_atXYZ (const float fx, const float fy, const float fz, const int c=0) const
 Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. More...
 
Tfloat _cubic_atXYZ (const float fx, const float fy, const float fz, const int c=0) const
 
Tfloat cubic_atXYZ (const float fx, const float fy, const float fz, const int c, const Tfloat min_value, const Tfloat max_value) const
 Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the XYZ-coordinates. More...
 
Tfloat _cubic_atXYZ (const float fx, const float fy, const float fz, const int c, const Tfloat min_value, const Tfloat max_value) const
 
CImg< T > & set_linear_atXY (const T &value, const float fx, const float fy=0, const int z=0, const int c=0, const bool is_added=false)
 Set pixel value, using linear interpolation for the X and Y-coordinates. More...
 
CImg< T > & set_linear_atXYZ (const T &value, const float fx, const float fy=0, const float fz=0, const int c=0, const bool is_added=false)
 Set pixel value, using linear interpolation for the X,Y and Z-coordinates. More...
 
CImg< charT > value_string (const char separator=',', const unsigned int max_size=0) const
 Return a C-string containing a list of all values of the image instance. More...
 
static const char * pixel_type ()
 Return the type of image pixel values as a C string. More...
 

Instance Checking

bool is_shared () const
 Test shared state of the pixel buffer. More...
 
bool is_empty () const
 Test if image instance is empty. More...
 
bool is_inf () const
 Test if image instance contains a 'inf' value. More...
 
bool is_nan () const
 Test if image instance contains a 'nan' value. More...
 
bool is_sameX (const unsigned int size_x) const
 Test if image width is equal to specified value.
 
template<typename t >
bool is_sameX (const CImg< t > &img) const
 Test if image width is equal to specified value.
 
bool is_sameX (const CImgDisplay &disp) const
 Test if image width is equal to specified value.
 
bool is_sameY (const unsigned int size_y) const
 Test if image height is equal to specified value.
 
template<typename t >
bool is_sameY (const CImg< t > &img) const
 Test if image height is equal to specified value.
 
bool is_sameY (const CImgDisplay &disp) const
 Test if image height is equal to specified value.
 
bool is_sameZ (const unsigned int size_z) const
 Test if image depth is equal to specified value.
 
template<typename t >
bool is_sameZ (const CImg< t > &img) const
 Test if image depth is equal to specified value.
 
bool is_sameC (const unsigned int size_c) const
 Test if image spectrum is equal to specified value.
 
template<typename t >
bool is_sameC (const CImg< t > &img) const
 Test if image spectrum is equal to specified value.
 
bool is_sameXY (const unsigned int size_x, const unsigned int size_y) const
 Test if image width and height are equal to specified values. More...
 
template<typename t >
bool is_sameXY (const CImg< t > &img) const
 Test if image width and height are the same as that of another image. More...
 
bool is_sameXY (const CImgDisplay &disp) const
 Test if image width and height are the same as that of an existing display window. More...
 
bool is_sameXZ (const unsigned int size_x, const unsigned int size_z) const
 Test if image width and depth are equal to specified values. More...
 
template<typename t >
bool is_sameXZ (const CImg< t > &img) const
 Test if image width and depth are the same as that of another image. More...
 
bool is_sameXC (const unsigned int size_x, const unsigned int size_c) const
 Test if image width and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameXC (const CImg< t > &img) const
 Test if image width and spectrum are the same as that of another image. More...
 
bool is_sameYZ (const unsigned int size_y, const unsigned int size_z) const
 Test if image height and depth are equal to specified values. More...
 
template<typename t >
bool is_sameYZ (const CImg< t > &img) const
 Test if image height and depth are the same as that of another image. More...
 
bool is_sameYC (const unsigned int size_y, const unsigned int size_c) const
 Test if image height and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameYC (const CImg< t > &img) const
 Test if image height and spectrum are the same as that of another image. More...
 
bool is_sameZC (const unsigned int size_z, const unsigned int size_c) const
 Test if image depth and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameZC (const CImg< t > &img) const
 Test if image depth and spectrum are the same as that of another image. More...
 
bool is_sameXYZ (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z) const
 Test if image width, height and depth are equal to specified values. More...
 
template<typename t >
bool is_sameXYZ (const CImg< t > &img) const
 Test if image width, height and depth are the same as that of another image. More...
 
bool is_sameXYC (const unsigned int size_x, const unsigned int size_y, const unsigned int size_c) const
 Test if image width, height and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameXYC (const CImg< t > &img) const
 Test if image width, height and spectrum are the same as that of another image. More...
 
bool is_sameXZC (const unsigned int size_x, const unsigned int size_z, const unsigned int size_c) const
 Test if image width, depth and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameXZC (const CImg< t > &img) const
 Test if image width, depth and spectrum are the same as that of another image. More...
 
bool is_sameYZC (const unsigned int size_y, const unsigned int size_z, const unsigned int size_c) const
 Test if image height, depth and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameYZC (const CImg< t > &img) const
 Test if image height, depth and spectrum are the same as that of another image. More...
 
bool is_sameXYZC (const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c) const
 Test if image width, height, depth and spectrum are equal to specified values. More...
 
template<typename t >
bool is_sameXYZC (const CImg< t > &img) const
 Test if image width, height, depth and spectrum are the same as that of another image. More...
 
bool containsXYZC (const int x, const int y=0, const int z=0, const int c=0) const
 Test if specified coordinates are inside image bounds. More...
 
template<typename t >
bool contains (const T &pixel, t &x, t &y, t &z, t &c) const
 Test if pixel value is inside image bounds and get its X,Y,Z and C-coordinates. More...
 
template<typename t >
bool contains (const T &pixel, t &x, t &y, t &z) const
 Test if pixel value is inside image bounds and get its X,Y and Z-coordinates. More...
 
template<typename t >
bool contains (const T &pixel, t &x, t &y) const
 Test if pixel value is inside image bounds and get its X and Y-coordinates. More...
 
template<typename t >
bool contains (const T &pixel, t &x) const
 Test if pixel value is inside image bounds and get its X-coordinate. More...
 
bool contains (const T &pixel) const
 Test if pixel value is inside image bounds. More...
 
template<typename t >
bool is_overlapped (const CImg< t > &img) const
 Test if pixel buffers of instance and input images overlap. More...
 
template<typename tp , typename tc , typename to >
bool is_object3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const to &opacities, const bool full_check=true, char *const error_message=0) const
 Test if the set {*this,primitives,colors,opacities} defines a valid 3d object. More...
 
bool is_CImg3d (const bool full_check=true, char *const error_message=0) const
 Test if image instance represents a valid serialization of a 3d object. More...
 
static bool _is_CImg3d (const T val, const char c)
 

Vector / Matrix Operations

Tdouble magnitude (const int magnitude_type=2) const
 Compute norm of the image, viewed as a matrix. More...
 
Tdouble trace () const
 Compute the trace of the image, viewed as a matrix.
 
Tdouble det () const
 Compute the determinant of the image, viewed as a matrix.
 
template<typename t >
Tdouble dot (const CImg< t > &img) const
 Compute the dot product between instance and argument, viewed as matrices. More...
 
CImg< T > get_vector_at (const unsigned int x, const unsigned int y=0, const unsigned int z=0) const
 Get vector-valued pixel located at specified position. More...
 
CImg< T > get_matrix_at (const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const
 Get (square) matrix-valued pixel located at specified position. More...
 
CImg< T > get_tensor_at (const unsigned int x, const unsigned int y=0, const unsigned int z=0) const
 Get tensor-valued pixel located at specified position. More...
 
template<typename t >
CImg< T > & set_vector_at (const CImg< t > &vec, const unsigned int x, const unsigned int y=0, const unsigned int z=0)
 Set vector-valued pixel at specified position. More...
 
template<typename t >
CImg< T > & set_matrix_at (const CImg< t > &mat, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0)
 Set (square) matrix-valued pixel at specified position. More...
 
template<typename t >
CImg< T > & set_tensor_at (const CImg< t > &ten, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0)
 Set tensor-valued pixel at specified position. More...
 
CImg< T > & vector ()
 Unroll pixel values along axis y. More...
 
CImg< T > get_vector () const
 Unroll pixel values along axis y .
 
CImg< T > & matrix ()
 Resize image to become a scalar square matrix.
 
CImg< T > get_matrix () const
 Resize image to become a scalar square matrix .
 
CImg< T > & tensor ()
 Resize image to become a symmetric tensor.
 
CImg< T > get_tensor () const
 Resize image to become a symmetric tensor .
 
CImg< T > & diagonal ()
 Resize image to become a diagonal matrix. More...
 
CImg< T > get_diagonal () const
 Resize image to become a diagonal matrix .
 
CImg< T > & identity_matrix ()
 Replace the image by an identity matrix. More...
 
CImg< T > get_identity_matrix () const
 Replace the image by an identity matrix .
 
CImg< T > & sequence (const T a0, const T a1)
 Fill image with a linear sequence of values. More...
 
CImg< T > get_sequence (const T a0, const T a1) const
 Fill image with a linear sequence of values .
 
CImg< T > & transpose ()
 Transpose the image, viewed as a matrix. More...
 
CImg< T > get_transpose () const
 Transpose the image, viewed as a matrix .
 
template<typename t >
CImg< T > & cross (const CImg< t > &img)
 Compute the cross product between two 1x3 images, viewed as 3d vectors. More...
 
template<typename t >
CImg< _cimg_Tt > get_cross (const CImg< t > &img) const
 Compute the cross product between two 1x3 images, viewed as 3d vectors .
 
CImg< T > & invert (const bool use_LU=true)
 Invert the instance image, viewed as a matrix. More...
 
CImg< Tfloat > get_invert (const bool use_LU=true) const
 Invert the instance image, viewed as a matrix .
 
CImg< T > & pseudoinvert ()
 Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix.
 
CImg< Tfloat > get_pseudoinvert () const
 Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix .
 
template<typename t >
CImg< T > & solve (const CImg< t > &A)
 Solve a system of linear equations. More...
 
template<typename t >
CImg< _cimg_Ttfloat > get_solve (const CImg< t > &A) const
 Solve a system of linear equations .
 
template<typename t , typename ti >
CImg< T > & _solve (const CImg< t > &A, const CImg< ti > &indx)
 
template<typename t >
CImg< T > & solve_tridiagonal (const CImg< t > &A)
 Solve a tridiagonal system of linear equations. More...
 
template<typename t >
CImg< _cimg_Ttfloat > get_solve_tridiagonal (const CImg< t > &A) const
 Solve a tridiagonal system of linear equations .
 
template<typename t >
const CImg< T > & eigen (CImg< t > &val, CImg< t > &vec) const
 Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. More...
 
CImgList< Tfloat > get_eigen () const
 Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. More...
 
template<typename t >
const CImg< T > & symmetric_eigen (CImg< t > &val, CImg< t > &vec) const
 Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. More...
 
CImgList< Tfloat > get_symmetric_eigen () const
 Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. More...
 
template<typename t >
CImg< T > & sort (CImg< t > &permutations, const bool is_increasing=true)
 Sort pixel values and get sorting permutations. More...
 
template<typename t >
CImg< T > get_sort (CImg< t > &permutations, const bool is_increasing=true) const
 Sort pixel values and get sorting permutations .
 
CImg< T > & sort (const bool is_increasing=true, const char axis=0)
 Sort pixel values. More...
 
CImg< T > get_sort (const bool is_increasing=true, const char axis=0) const
 Sort pixel values .
 
template<typename t >
CImg< T > & _quicksort (const int indm, const int indM, CImg< t > &permutations, const bool is_increasing, const bool is_permutations)
 
template<typename t >
const CImg< T > & SVD (CImg< t > &U, CImg< t > &S, CImg< t > &V, const bool sorting=true, const unsigned int max_iteration=40, const float lambda=0) const
 Compute the SVD of the instance image, viewed as a general matrix. More...
 
CImgList< Tfloat > get_SVD (const bool sorting=true, const unsigned int max_iteration=40, const float lambda=0) const
 Compute the SVD of the instance image, viewed as a general matrix. More...
 
template<typename t >
CImg< T > & _LU (CImg< t > &indx, bool &d)
 
template<typename t >
CImg< T > & dijkstra (const unsigned int starting_node, const unsigned int ending_node, CImg< t > &previous_node)
 Return minimal path in a graph, using the Dijkstra algorithm. More...
 
template<typename t >
CImg< T > get_dijkstra (const unsigned int starting_node, const unsigned int ending_node, CImg< t > &previous_node) const
 Return minimal path in a graph, using the Dijkstra algorithm .
 
CImg< T > & dijkstra (const unsigned int starting_node, const unsigned int ending_node=~0U)
 Return minimal path in a graph, using the Dijkstra algorithm.
 
CImg< Tfloat > get_dijkstra (const unsigned int starting_node, const unsigned int ending_node=~0U) const
 Return minimal path in a graph, using the Dijkstra algorithm .
 
template<typename tf , typename t >
static CImg< T > dijkstra (const tf &distance, const unsigned int nb_nodes, const unsigned int starting_node, const unsigned int ending_node, CImg< t > &previous_node)
 Compute minimal path in a graph, using the Dijkstra algorithm. More...
 
template<typename tf , typename t >
static CImg< T > dijkstra (const tf &distance, const unsigned int nb_nodes, const unsigned int starting_node, const unsigned int ending_node=~0U)
 Return minimal path in a graph, using the Dijkstra algorithm.
 
static CImg< T > string (const char *const str, const bool is_last_zero=true, const bool is_shared=false)
 Return an image containing the ascii codes of the specified string. More...
 
static CImg< T > vector (const T &a0)
 Return a 1x1 image containing specified value. More...
 
static CImg< T > vector (const T &a0, const T &a1)
 Return a 1x2 image containing specified values. More...
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2)
 Return a 1x3 image containing specified values. More...
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3)
 Return a 1x4 image containing specified values. More...
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4)
 Return a 1x5 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5)
 Return a 1x6 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6)
 Return a 1x7 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7)
 Return a 1x8 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8)
 Return a 1x9 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9)
 Return a 1x10 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10)
 Return a 1x11 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11)
 Return a 1x12 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12)
 Return a 1x13 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12, const T &a13)
 Return a 1x14 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12, const T &a13, const T &a14)
 Return a 1x15 image containing specified values.
 
static CImg< T > vector (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12, const T &a13, const T &a14, const T &a15)
 Return a 1x16 image containing specified values.
 
static CImg< T > matrix (const T &a0)
 Return a 1x1 matrix containing specified coefficients. More...
 
static CImg< T > matrix (const T &a0, const T &a1, const T &a2, const T &a3)
 Return a 2x2 matrix containing specified coefficients. More...
 
static CImg< T > matrix (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8)
 Return a 3x3 matrix containing specified coefficients. More...
 
static CImg< T > matrix (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12, const T &a13, const T &a14, const T &a15)
 Return a 4x4 matrix containing specified coefficients.
 
static CImg< T > matrix (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5, const T &a6, const T &a7, const T &a8, const T &a9, const T &a10, const T &a11, const T &a12, const T &a13, const T &a14, const T &a15, const T &a16, const T &a17, const T &a18, const T &a19, const T &a20, const T &a21, const T &a22, const T &a23, const T &a24)
 Return a 5x5 matrix containing specified coefficients.
 
static CImg< T > tensor (const T &a0)
 Return a 1x1 symmetric matrix containing specified coefficients. More...
 
static CImg< T > tensor (const T &a0, const T &a1, const T &a2)
 Return a 2x2 symmetric matrix tensor containing specified coefficients.
 
static CImg< T > tensor (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4, const T &a5)
 Return a 3x3 symmetric matrix containing specified coefficients.
 
static CImg< T > diagonal (const T &a0)
 Return a 1x1 diagonal matrix containing specified coefficients.
 
static CImg< T > diagonal (const T &a0, const T &a1)
 Return a 2x2 diagonal matrix containing specified coefficients.
 
static CImg< T > diagonal (const T &a0, const T &a1, const T &a2)
 Return a 3x3 diagonal matrix containing specified coefficients.
 
static CImg< T > diagonal (const T &a0, const T &a1, const T &a2, const T &a3)
 Return a 4x4 diagonal matrix containing specified coefficients.
 
static CImg< T > diagonal (const T &a0, const T &a1, const T &a2, const T &a3, const T &a4)
 Return a 5x5 diagonal matrix containing specified coefficients.
 
static CImg< T > identity_matrix (const unsigned int N)
 Return a NxN identity matrix. More...
 
static CImg< T > sequence (const unsigned int N, const T a0, const T a1)
 Return a N-numbered sequence vector from a0 to a1. More...
 
static CImg< T > rotation_matrix (const float x, const float y, const float z, const float w, const bool is_quaternion=false)
 Return a 3x3 rotation matrix along the (x,y,z)-axis with an angle w. More...
 

Color Base Management

CImg< T > & sRGBtoRGB ()
 Convert pixel values from sRGB to RGB color spaces.
 
CImg< Tfloat > get_sRGBtoRGB () const
 Convert pixel values from sRGB to RGB color spaces .
 
CImg< T > & RGBtosRGB ()
 Convert pixel values from RGB to sRGB color spaces.
 
CImg< Tfloat > get_RGBtosRGB () const
 Convert pixel values from RGB to sRGB color spaces .
 
CImg< T > & RGBtoHSV ()
 Convert pixel values from RGB to HSV color spaces.
 
CImg< Tfloat > get_RGBtoHSV () const
 Convert pixel values from RGB to HSV color spaces .
 
CImg< T > & HSVtoRGB ()
 Convert pixel values from HSV to RGB color spaces.
 
CImg< Tuchar > get_HSVtoRGB () const
 Convert pixel values from HSV to RGB color spaces .
 
CImg< T > & RGBtoHSL ()
 Convert pixel values from RGB to HSL color spaces.
 
CImg< Tfloat > get_RGBtoHSL () const
 Convert pixel values from RGB to HSL color spaces .
 
CImg< T > & HSLtoRGB ()
 Convert pixel values from HSL to RGB color spaces.
 
CImg< Tuchar > get_HSLtoRGB () const
 Convert pixel values from HSL to RGB color spaces .
 
CImg< T > & RGBtoHSI ()
 Convert pixel values from RGB to HSI color spaces.
 
CImg< Tfloat > get_RGBtoHSI () const
 Convert pixel values from RGB to HSI color spaces .
 
CImg< T > & HSItoRGB ()
 Convert pixel values from HSI to RGB color spaces.
 
CImg< Tfloat > get_HSItoRGB () const
 Convert pixel values from HSI to RGB color spaces .
 
CImg< T > & RGBtoYCbCr ()
 Convert pixel values from RGB to YCbCr color spaces.
 
CImg< Tuchar > get_RGBtoYCbCr () const
 Convert pixel values from RGB to YCbCr color spaces .
 
CImg< T > & YCbCrtoRGB ()
 Convert pixel values from RGB to YCbCr color spaces.
 
CImg< Tuchar > get_YCbCrtoRGB () const
 Convert pixel values from RGB to YCbCr color spaces .
 
CImg< T > & RGBtoYUV ()
 Convert pixel values from RGB to YUV color spaces.
 
CImg< Tfloat > get_RGBtoYUV () const
 Convert pixel values from RGB to YUV color spaces .
 
CImg< T > & YUVtoRGB ()
 Convert pixel values from YUV to RGB color spaces.
 
CImg< Tuchar > get_YUVtoRGB () const
 Convert pixel values from YUV to RGB color spaces .
 
CImg< T > & RGBtoCMY ()
 Convert pixel values from RGB to CMY color spaces.
 
CImg< Tuchar > get_RGBtoCMY () const
 Convert pixel values from RGB to CMY color spaces .
 
CImg< T > & CMYtoRGB ()
 Convert pixel values from CMY to RGB color spaces.
 
CImg< Tuchar > get_CMYtoRGB () const
 Convert pixel values from CMY to RGB color spaces .
 
CImg< T > & CMYtoCMYK ()
 Convert pixel values from CMY to CMYK color spaces.
 
CImg< Tuchar > get_CMYtoCMYK () const
 Convert pixel values from CMY to CMYK color spaces .
 
CImg< T > & CMYKtoCMY ()
 Convert pixel values from CMYK to CMY color spaces.
 
CImg< Tfloat > get_CMYKtoCMY () const
 Convert pixel values from CMYK to CMY color spaces .
 
CImg< T > & RGBtoXYZ ()
 Convert pixel values from RGB to XYZ_709 color spaces. More...
 
CImg< Tfloat > get_RGBtoXYZ () const
 Convert pixel values from RGB to XYZ_709 color spaces .
 
CImg< T > & XYZtoRGB ()
 Convert pixel values from XYZ_709 to RGB color spaces.
 
CImg< Tuchar > get_XYZtoRGB () const
 Convert pixel values from XYZ_709 to RGB color spaces .
 
CImg< T > & XYZtoLab ()
 Convert pixel values from XYZ_709 to Lab color spaces.
 
CImg< Tfloat > get_XYZtoLab () const
 Convert pixel values from XYZ_709 to Lab color spaces .
 
CImg< T > & LabtoXYZ ()
 Convert pixel values from Lab to XYZ_709 color spaces.
 
CImg< Tfloat > get_LabtoXYZ () const
 Convert pixel values from Lab to XYZ_709 color spaces .
 
CImg< T > & XYZtoxyY ()
 Convert pixel values from XYZ_709 to xyY color spaces.
 
CImg< Tfloat > get_XYZtoxyY () const
 Convert pixel values from XYZ_709 to xyY color spaces .
 
CImg< T > & xyYtoXYZ ()
 Convert pixel values from xyY pixels to XYZ_709 color spaces.
 
CImg< Tfloat > get_xyYtoXYZ () const
 Convert pixel values from xyY pixels to XYZ_709 color spaces .
 
CImg< T > & RGBtoLab ()
 Convert pixel values from RGB to Lab color spaces.
 
CImg< Tfloat > get_RGBtoLab () const
 Convert pixel values from RGB to Lab color spaces .
 
CImg< T > & LabtoRGB ()
 Convert pixel values from Lab to RGB color spaces.
 
CImg< Tuchar > get_LabtoRGB () const
 Convert pixel values from Lab to RGB color spaces .
 
CImg< T > & RGBtoxyY ()
 Convert pixel values from RGB to xyY color spaces.
 
CImg< Tfloat > get_RGBtoxyY () const
 Convert pixel values from RGB to xyY color spaces .
 
CImg< T > & xyYtoRGB ()
 Convert pixel values from xyY to RGB color spaces.
 
CImg< Tuchar > get_xyYtoRGB () const
 Convert pixel values from xyY to RGB color spaces .
 
CImg< T > & RGBtoCMYK ()
 Convert pixel values from RGB to CMYK color spaces.
 
CImg< Tfloat > get_RGBtoCMYK () const
 Convert pixel values from RGB to CMYK color spaces .
 
CImg< T > & CMYKtoRGB ()
 Convert pixel values from CMYK to RGB color spaces.
 
CImg< Tuchar > get_CMYKtoRGB () const
 Convert pixel values from CMYK to RGB color spaces .
 
CImg< T > & RGBtoBayer ()
 Convert RGB color image to a Bayer-coded scalar image. More...
 
CImg< T > get_RGBtoBayer () const
 Convert RGB color image to a Bayer-coded scalar image .
 
CImg< T > & BayertoRGB (const unsigned int interpolation_type=3)
 Convert Bayer-coded scalar image to a RGB color image.
 
CImg< Tuchar > get_BayertoRGB (const unsigned int interpolation_type=3) const
 Convert Bayer-coded scalar image to a RGB color image .
 
static const CImg< Tuchar > & default_LUT256 ()
 Return colormap "default", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & HSV_LUT256 ()
 Return colormap "HSV", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & lines_LUT256 ()
 Return colormap "lines", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & hot_LUT256 ()
 Return colormap "hot", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & cool_LUT256 ()
 Return colormap "cool", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & jet_LUT256 ()
 Return colormap "jet", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & flag_LUT256 ()
 Return colormap "flag", containing 256 colors entries in RGB. More...
 
static const CImg< Tuchar > & cube_LUT256 ()
 Return colormap "cube", containing 256 colors entries in RGB. More...
 

Geometric / Spatial Manipulation

CImg< T > & resize (const int size_x, const int size_y=-100, const int size_z=-100, const int size_c=-100, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0)
 Resize image to new dimensions. More...
 
CImg< T > get_resize (const int size_x, const int size_y=-100, const int size_z=-100, const int size_c=-100, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0) const
 Resize image to new dimensions .
 
template<typename t >
CImg< T > & resize (const CImg< t > &src, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0)
 Resize image to dimensions of another image. More...
 
template<typename t >
CImg< T > get_resize (const CImg< t > &src, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0) const
 Resize image to dimensions of another image .
 
CImg< T > & resize (const CImgDisplay &disp, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0)
 Resize image to dimensions of a display window. More...
 
CImg< T > get_resize (const CImgDisplay &disp, const int interpolation_type=1, const unsigned int boundary_conditions=0, const float centering_x=0, const float centering_y=0, const float centering_z=0, const float centering_c=0) const
 Resize image to dimensions of a display window .
 
CImg< T > & resize_halfXY ()
 Resize image to half-size along XY axes, using an optimized filter.
 
CImg< T > get_resize_halfXY () const
 Resize image to half-size along XY axes, using an optimized filter .
 
CImg< T > & resize_doubleXY ()
 Resize image to double-size, using the Scale2X algorithm. More...
 
CImg< T > get_resize_doubleXY () const
 Resize image to double-size, using the Scale2X algorithm .
 
CImg< T > & resize_tripleXY ()
 Resize image to triple-size, using the Scale3X algorithm. More...
 
CImg< T > get_resize_tripleXY () const
 Resize image to triple-size, using the Scale3X algorithm .
 
CImg< T > & mirror (const char axis)
 Mirror image content along specified axis. More...
 
CImg< T > get_mirror (const char axis) const
 Mirror image content along specified axis .
 
CImg< T > & mirror (const char *const axes)
 Mirror image content along specified axes. More...
 
CImg< T > get_mirror (const char *const axes) const
 Mirror image content along specified axes .
 
CImg< T > & shift (const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, const int boundary_conditions=0)
 Shift image content. More...
 
CImg< T > get_shift (const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, const int boundary_conditions=0) const
 Shift image content .
 
CImg< T > & permute_axes (const char *const order)
 Permute axes order. More...
 
CImg< T > get_permute_axes (const char *const order) const
 Permute axes order .
 
template<typename t >
CImg< t > _get_permute_axes (const char *const permut, const t &) const
 
CImg< T > & unroll (const char axis)
 Unroll pixel values along specified axis. More...
 
CImg< T > get_unroll (const char axis) const
 Unroll pixel values along specified axis .
 
CImg< T > & rotate (const float angle, const unsigned int interpolation=1, const unsigned int boundary=0)
 Rotate image with arbitrary angle. More...
 
CImg< T > get_rotate (const float angle, const unsigned int interpolation=1, const unsigned int boundary=0) const
 Rotate image with arbitrary angle .
 
CImg< T > & rotate (const float angle, const float cx, const float cy, const float zoom, const unsigned int interpolation=1, const unsigned int boundary=3)
 Rotate image with arbitrary angle, around a center point. More...
 
CImg< T > get_rotate (const float angle, const float cx, const float cy, const float zoom, const unsigned int interpolation=1, const unsigned int boundary=3) const
 Rotate image with arbitrary angle, around a center point .
 
template<typename t >
CImg< T > & warp (const CImg< t > &warp, const bool is_relative=false, const unsigned int interpolation=1, const unsigned int boundary_conditions=0)
 Warp image content by a warping field. More...
 
template<typename t >
CImg< T > get_warp (const CImg< t > &warp, const bool is_relative=false, const unsigned int interpolation=1, const unsigned int boundary_conditions=0) const
 Warp image content by a warping field .
 
CImg< T > get_projections2d (const unsigned int x0, const unsigned int y0, const unsigned int z0) const
 Generate a 2d representation of a 3d image, with XY,XZ and YZ views. More...
 
CImg< T > & projections2d (const unsigned int x0, const unsigned int y0, const unsigned int z0)
 Construct a 2d representation of a 3d image, with XY,XZ and YZ views .
 
CImg< T > & crop (const int x0, const int y0, const int z0, const int c0, const int x1, const int y1, const int z1, const int c1, const bool boundary_conditions=false)
 Crop image region. More...
 
CImg< T > get_crop (const int x0, const int y0, const int z0, const int c0, const int x1, const int y1, const int z1, const int c1, const bool boundary_conditions=false) const
 Crop image region .
 
CImg< T > & crop (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const bool boundary_conditions=false)
 Crop image region .
 
CImg< T > get_crop (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const bool boundary_conditions=false) const
 Crop image region .
 
CImg< T > & crop (const int x0, const int y0, const int x1, const int y1, const bool boundary_conditions=false)
 Crop image region .
 
CImg< T > get_crop (const int x0, const int y0, const int x1, const int y1, const bool boundary_conditions=false) const
 Crop image region .
 
CImg< T > & crop (const int x0, const int x1, const bool boundary_conditions=false)
 Crop image region .
 
CImg< T > get_crop (const int x0, const int x1, const bool boundary_conditions=false) const
 Crop image region .
 
CImg< T > & autocrop (const T value, const char *const axes="czyx")
 Autocrop image region, regarding the specified background value.
 
CImg< T > get_autocrop (const T value, const char *const axes="czyx") const
 Autocrop image region, regarding the specified background value .
 
CImg< T > & autocrop (const T *const color=0, const char *const axes="zyx")
 Autocrop image region, regarding the specified background color. More...
 
CImg< T > get_autocrop (const T *const color=0, const char *const axes="zyx") const
 Autocrop image region, regarding the specified background color .
 
template<typename t >
CImg< T > & autocrop (const CImg< t > &color, const char *const axes="zyx")
 Autocrop image region, regarding the specified background color .
 
template<typename t >
CImg< T > get_autocrop (const CImg< t > &color, const char *const axes="zyx") const
 Autocrop image region, regarding the specified background color .
 
CImg< intT > _autocrop (const T value, const char axis) const
 
CImg< T > get_column (const int x0) const
 Return specified image column. More...
 
CImg< T > & column (const int x0)
 Return specified image column .
 
CImg< T > & columns (const int x0, const int x1)
 Return specified range of image columns. More...
 
CImg< T > get_columns (const int x0, const int x1) const
 Return specified range of image columns .
 
CImg< T > get_row (const int y0) const
 Return specified image row.
 
CImg< T > & row (const int y0)
 Return specified image row . More...
 
CImg< T > get_rows (const int y0, const int y1) const
 Return specified range of image rows. More...
 
CImg< T > & rows (const int y0, const int y1)
 Return specified range of image rows .
 
CImg< T > get_slice (const int z0) const
 Return specified image slice. More...
 
CImg< T > & slice (const int z0)
 Return specified image slice .
 
CImg< T > get_slices (const int z0, const int z1) const
 Return specified range of image slices. More...
 
CImg< T > & slices (const int z0, const int z1)
 Return specified range of image slices .
 
CImg< T > get_channel (const int c0) const
 Return specified image channel. More...
 
CImg< T > & channel (const int c0)
 Return specified image channel .
 
CImg< T > get_channels (const int c0, const int c1) const
 Return specified range of image channels. More...
 
CImg< T > & channels (const int c0, const int c1)
 Return specified range of image channels .
 
CImg< floatT > get_streamline (const float x, const float y, const float z, const float L=256, const float dl=0.1f, const unsigned int interpolation_type=2, const bool is_backward_tracking=false, const bool is_oriented_only=false) const
 Return stream line of a 2d or 3d vector field.
 
CImg< T > get_shared_points (const unsigned int x0, const unsigned int x1, const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0)
 Return a shared-memory image referencing a range of pixels of the image instance. More...
 
const CImg< T > get_shared_points (const unsigned int x0, const unsigned int x1, const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0) const
 Return a shared-memory image referencing a range of pixels of the image instance .
 
CImg< T > get_shared_rows (const unsigned int y0, const unsigned int y1, const unsigned int z0=0, const unsigned int c0=0)
 Return a shared-memory image referencing a range of rows of the image instance. More...
 
const CImg< T > get_shared_rows (const unsigned int y0, const unsigned int y1, const unsigned int z0=0, const unsigned int c0=0) const
 Return a shared-memory image referencing a range of rows of the image instance .
 
CImg< T > get_shared_row (const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0)
 Return a shared-memory image referencing one row of the image instance. More...
 
const CImg< T > get_shared_row (const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0) const
 Return a shared-memory image referencing one row of the image instance .
 
CImg< T > get_shared_slices (const unsigned int z0, const unsigned int z1, const unsigned int c0=0)
 Return a shared memory image referencing a range of slices of the image instance. More...
 
const CImg< T > get_shared_slices (const unsigned int z0, const unsigned int z1, const unsigned int c0=0) const
 Return a shared memory image referencing a range of slices of the image instance .
 
CImg< T > get_shared_slice (const unsigned int z0, const unsigned int c0=0)
 Return a shared-memory image referencing one slice of the image instance. More...
 
const CImg< T > get_shared_slice (const unsigned int z0, const unsigned int c0=0) const
 Return a shared-memory image referencing one slice of the image instance .
 
CImg< T > get_shared_channels (const unsigned int c0, const unsigned int c1)
 Return a shared-memory image referencing a range of channels of the image instance. More...
 
const CImg< T > get_shared_channels (const unsigned int c0, const unsigned int c1) const
 Return a shared-memory image referencing a range of channels of the image instance .
 
CImg< T > get_shared_channel (const unsigned int c0)
 Return a shared-memory image referencing one channel of the image instance. More...
 
const CImg< T > get_shared_channel (const unsigned int c0) const
 Return a shared-memory image referencing one channel of the image instance .
 
CImg< T > get_shared ()
 Return a shared-memory version of the image instance.
 
const CImg< T > get_shared () const
 Return a shared-memory version of the image instance .
 
CImgList< T > get_split (const char axis, const int nb=0) const
 Split image into a list along specified axis. More...
 
CImgList< T > get_split (const T value, const bool keep_values, const bool is_shared) const
 Split image into a list of one-column vectors, according to a specified splitting value. More...
 
template<typename t >
CImgList< T > get_split (const CImg< t > &values, const bool keep_values, const bool is_shared) const
 Split image into a list of one-column vectors, according to a specified splitting value sequence. More...
 
CImgList< T > get_split (const bool is_shared) const
 Split the image into a list of one-column vectors each having same values.
 
template<typename t >
CImg< T > & append (const CImg< t > &img, const char axis='x', const float align=0)
 Append two images along specified axis. More...
 
CImg< T > & append (const CImg< T > &img, const char axis='x', const float align=0)
 Append two images along specified axis .
 
template<typename t >
CImg< _cimg_Tt > get_append (const CImg< T > &img, const char axis='x', const float align=0) const
 Append two images along specified axis .
 
CImg< T > get_append (const CImg< T > &img, const char axis='x', const float align=0) const
 Append two images along specified axis .
 
static float _cimg_lanczos (const float x)
 
template<typename tfunc >
static CImg< floatT > streamline (const tfunc &func, const float x, const float y, const float z, const float L=256, const float dl=0.1f, const unsigned int interpolation_type=2, const bool is_backward_tracking=false, const bool is_oriented_only=false, const float x0=0, const float y0=0, const float z0=0, const float x1=0, const float y1=0, const float z1=0)
 Return stream line of a 3d vector field. More...
 
static CImg< floatT > streamline (const char *const expression, const float x, const float y, const float z, const float L=256, const float dl=0.1f, const unsigned int interpolation_type=2, const bool is_backward_tracking=true, const bool is_oriented_only=false, const float x0=0, const float y0=0, const float z0=0, const float x1=0, const float y1=0, const float z1=0)
 Return stream line of a 3d vector field .
 

Filtering / Transforms

template<typename t >
CImg< T > & correlate (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false)
 Correlate image by a mask. More...
 
template<typename t >
CImg< _cimg_Ttfloat > get_correlate (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false) const
 Correlate image by a mask .
 
template<typename t >
CImg< T > & convolve (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false)
 Convolve image by a mask. More...
 
template<typename t >
CImg< _cimg_Ttfloat > get_convolve (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false) const
 Convolve image by a mask .
 
template<typename t >
CImg< T > & erode (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false)
 Erode image by a structuring element. More...
 
template<typename t >
CImg< _cimg_Tt > get_erode (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false) const
 Erode image by a structuring element .
 
CImg< T > & erode (const unsigned int sx, const unsigned int sy, const unsigned int sz=1)
 Erode image by a rectangular structuring element of specified size. More...
 
CImg< T > get_erode (const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const
 Erode image by a rectangular structuring element of specified size .
 
CImg< T > & erode (const unsigned int s)
 Erode the image by a square structuring element of specified size. More...
 
CImg< T > get_erode (const unsigned int s) const
 Erode the image by a square structuring element of specified size .
 
template<typename t >
CImg< T > & dilate (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false)
 Dilate image by a structuring element. More...
 
template<typename t >
CImg< _cimg_Tt > get_dilate (const CImg< t > &mask, const unsigned int boundary_conditions=1, const bool is_normalized=false) const
 Dilate image by a structuring element .
 
CImg< T > & dilate (const unsigned int sx, const unsigned int sy, const unsigned int sz=1)
 Dilate image by a rectangular structuring element of specified size. More...
 
CImg< T > get_dilate (const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const
 Dilate image by a rectangular structuring element of specified size .
 
CImg< T > & dilate (const unsigned int s)
 Dilate image by a square structuring element of specified size. More...
 
CImg< T > get_dilate (const unsigned int s) const
 Dilate image by a square structuring element of specified size .
 
template<typename t >
CImg< T > & watershed (const CImg< t > &priority, const bool fill_lines=true)
 Compute watershed transform. More...
 
template<typename t >
CImg< T > get_watershed (const CImg< t > &priority, const bool fill_lines=true) const
 Compute watershed transform .
 
template<typename t >
bool _priority_queue_insert (CImg< boolT > &is_queued, unsigned int &siz, const t value, const unsigned int x, const unsigned int y, const unsigned int z)
 
CImg< T > & _priority_queue_remove (unsigned int &siz)
 
CImg< T > & deriche (const float sigma, const int order=0, const char axis='x', const bool boundary_conditions=true)
 Apply recursive Deriche filter. More...
 
CImg< Tfloat > get_deriche (const float sigma, const int order=0, const char axis='x', const bool boundary_conditions=true) const
 Apply recursive Deriche filter .
 
CImg< T > & vanvliet (const float sigma, const int order, const char axis='x', const bool boundary_conditions=true)
 Van Vliet recursive Gaussian filter. More...
 
CImg< Tfloat > get_vanvliet (const float sigma, const int order, const char axis='x', const bool boundary_conditions=true) const
 Blur image using Van Vliet recursive Gaussian filter. .
 
CImg< T > & blur (const float sigma_x, const float sigma_y, const float sigma_z, const bool boundary_conditions=true, const bool is_gaussian=false)
 Blur image. More...
 
CImg< Tfloat > get_blur (const float sigma_x, const float sigma_y, const float sigma_z, const bool boundary_conditions=true, const bool is_gaussian=false) const
 Blur image .
 
CImg< T > & blur (const float sigma, const bool boundary_conditions=true, const bool is_gaussian=false)
 Blur image isotropically. More...
 
CImg< Tfloat > get_blur (const float sigma, const bool boundary_conditions=true, const bool is_gaussian=false) const
 Blur image isotropically .
 
template<typename t >
CImg< T > & blur_anisotropic (const CImg< t > &G, const float amplitude=60, const float dl=0.8f, const float da=30, const float gauss_prec=2, const unsigned int interpolation_type=0, const bool is_fast_approx=1)
 Blur image anisotropically, directed by a field of diffusion tensors. More...
 
template<typename t >
CImg< T > get_blur_anisotropic (const CImg< t > &G, const float amplitude=60, const float dl=0.8f, const float da=30, const float gauss_prec=2, const unsigned int interpolation_type=0, const bool is_fast_approx=true) const
 Blur image anisotropically, directed by a field of diffusion tensors .
 
CImg< T > & blur_anisotropic (const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, const float da=30, const float gauss_prec=2, const unsigned int interpolation_type=0, const bool is_fast_approx=true)
 Blur image anisotropically, in an edge-preserving way. More...
 
CImg< T > get_blur_anisotropic (const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, const float da=30, const float gauss_prec=2, const unsigned int interpolation_type=0, const bool is_fast_approx=true) const
 Blur image anisotropically, in an edge-preserving way .
 
template<typename t >
CImg< T > & blur_bilateral (const CImg< t > &guide, const float sigma_x, const float sigma_y, const float sigma_z, const float sigma_r, const int bgrid_x, const int bgrid_y, const int bgrid_z, const int bgrid_r, const bool interpolation_type=true)
 Blur image, with the joint bilateral filter. More...
 
template<typename t >
CImg< T > get_blur_bilateral (const CImg< t > &guide, const float sigma_x, const float sigma_y, const float sigma_z, const float sigma_r, const int bgrid_x, const int bgrid_y, const int bgrid_z, const int bgrid_r, const bool interpolation_type=true) const
 Blur image, with the joint bilateral filter .
 
template<typename t >
CImg< T > & blur_bilateral (const CImg< t > &guide, const float sigma_s, const float sigma_r, const int bgrid_s=-33, const int bgrid_r=32, const bool interpolation_type=true)
 Blur image using the joint bilateral filter. More...
 
template<typename t >
CImg< T > get_blur_bilateral (const CImg< t > &guide, const float sigma_s, const float sigma_r, const int bgrid_s=-33, const int bgrid_r=32, const bool interpolation_type=true) const
 Blur image using the bilateral filter .
 
CImg< T > & blur_patch (const float sigma_s, const float sigma_p, const unsigned int patch_size=3, const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true)
 Blur image using patch-based space. More...
 
CImg< T > get_blur_patch (const float sigma_s, const float sigma_p, const unsigned int patch_size=3, const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true) const
 Blur image using patch-based space .
 
CImg< T > & blur_median (const unsigned int n, const float threshold=0)
 Blur image with the median filter. More...
 
CImg< T > get_blur_median (const unsigned int n, const float threshold=0) const
 Blur image with the median filter .
 
CImg< T > & sharpen (const float amplitude, const bool sharpen_type=false, const float edge=1, const float alpha=0, const float sigma=0)
 Sharpen image. More...
 
CImg< T > get_sharpen (const float amplitude, const bool sharpen_type=false, const float edge=1, const float alpha=0, const float sigma=0) const
 Sharpen image .
 
CImgList< Tfloat > get_gradient (const char *const axes=0, const int scheme=3) const
 Return image gradient. More...
 
CImgList< Tfloat > get_hessian (const char *const axes=0) const
 Return image hessian. More...
 
CImg< T > & laplacian ()
 Compute image laplacian.
 
CImg< Tfloat > get_laplacian () const
 Compute image laplacian .
 
CImg< T > & structure_tensors (const unsigned int scheme=2)
 Compute the structure tensor field of an image. More...
 
CImg< Tfloat > get_structure_tensors (const unsigned int scheme=2) const
 Compute the structure tensor field of an image .
 
CImg< T > & diffusion_tensors (const float sharpness=0.7f, const float anisotropy=0.6f, const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false)
 Compute field of diffusion tensors for edge-preserving smoothing. More...
 
CImg< Tfloat > get_diffusion_tensors (const float sharpness=0.7f, const float anisotropy=0.6f, const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false) const
 Compute field of diffusion tensors for edge-preserving smoothing .
 
CImg< T > & displacement (const CImg< T > &source, const float smoothness=0.1f, const float precision=5.0f, const unsigned int nb_scales=0, const unsigned int iteration_max=10000, const bool is_backward=false)
 Estimate displacement field between two images. More...
 
CImg< Tfloat > get_displacement (const CImg< T > &source, const float smoothness=0.1f, const float precision=5.0f, const unsigned int nb_scales=0, const unsigned int iteration_max=10000, const bool is_backward=false) const
 Estimate displacement field between two images .
 
CImg< T > & distance (const T value, const unsigned int metric=2)
 Compute Euclidean distance function to a specified value. More...
 
CImg< Tfloat > get_distance (const T value, const unsigned int metric=2) const
 Compute distance to a specified value .
 
CImg< T > & _distance_core (long(*const sep)(const long, const long, const long *const), long(*const f)(const long, const long, const long *const))
 
template<typename t >
CImg< T > & distance (const T value, const CImg< t > &metric_mask)
 Compute chamfer distance to a specified value, with a custom metric. More...
 
template<typename t >
CImg< Tfloat > get_distance (const T value, const CImg< t > &metric_mask) const
 Compute chamfer distance to a specified value, with a custom metric .
 
template<typename t , typename to >
CImg< T > & distance_dijkstra (const T value, const CImg< t > &metric, const bool is_high_connectivity, CImg< to > &return_path)
 Compute distance to a specified value, according to a custom metric (use dijkstra algorithm). More...
 
template<typename t , typename to >
CImg< typename cimg::superset
< t, long >::type > 
get_distance_dijkstra (const T value, const CImg< t > &metric, const bool is_high_connectivity, CImg< to > &return_path) const
 Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm). .
 
template<typename t >
CImg< T > & distance_dijkstra (const T value, const CImg< t > &metric, const bool is_high_connectivity=false)
 Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm). .
 
template<typename t >
CImg< Tfloat > get_distance_dijkstra (const T value, const CImg< t > &metric, const bool is_high_connectivity=false) const
 Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm). .
 
template<typename t >
CImg< T > & distance_eikonal (const T value, const CImg< t > &metric)
 Compute distance map to one source point, according to a custom metric (use fast marching algorithm). More...
 
template<typename t >
CImg< Tfloat > get_distance_eikonal (const T value, const CImg< t > &metric) const
 Compute distance map to one source point, according to a custom metric (use fast marching algorithm).
 
Tfloat __distance_eikonal (const CImg< Tfloat > &res, const Tfloat P, const int x=0, const int y=0, const int z=0) const
 
template<typename t >
void _eik_priority_queue_insert (CImg< charT > &state, unsigned int &siz, const t value, const unsigned int x, const unsigned int y, const unsigned int z)
 
CImg< T > & distance_eikonal (const unsigned int nb_iterations, const float band_size=0, const float time_step=0.5f)
 Compute distance function to 0-valued isophotes, using the Eikonal PDE. More...
 
CImg< Tfloat > get_distance_eikonal (const unsigned int nb_iterations, const float band_size=0, const float time_step=0.5f) const
 Compute distance function to 0-valued isophotes, using the Eikonal PDE .
 
CImg< T > & haar (const char axis, const bool invert=false, const unsigned int nb_scales=1)
 Compute Haar multiscale wavelet transform. More...
 
CImg< Tfloat > get_haar (const char axis, const bool invert=false, const unsigned int nb_scales=1) const
 Compute Haar multiscale wavelet transform .
 
CImg< T > & haar (const bool invert=false, const unsigned int nb_scales=1)
 Compute Haar multiscale wavelet transform . More...
 
CImg< Tfloat > get_haar (const bool invert=false, const unsigned int nb_scales=1) const
 Compute Haar multiscale wavelet transform .
 
CImgList< Tfloat > get_FFT (const char axis, const bool is_invert=false) const
 Compute 1d Fast Fourier Transform, along a specified axis. More...
 
CImgList< Tfloat > get_FFT (const bool is_invert=false) const
 Compute n-d Fast Fourier Transform.
 
template<int K>
static void _cimg_recursive_apply (T *data, const Tfloat filter[], const int N, const unsigned long off, const int order, const bool boundary_conditions)
 
static long _distance_sep_edt (const long i, const long u, const long *const g)
 
static long _distance_dist_edt (const long x, const long i, const long *const g)
 
static long _distance_sep_mdt (const long i, const long u, const long *const g)
 
static long _distance_dist_mdt (const long x, const long i, const long *const g)
 
static long _distance_sep_cdt (const long i, const long u, const long *const g)
 
static long _distance_dist_cdt (const long x, const long i, const long *const g)
 
static void _distance_scan (const unsigned int len, const long *const g, long(*const sep)(const long, const long, const long *const), long(*const f)(const long, const long, const long *const), long *const s, long *const t, long *const dt)
 
static bool ___distance_eikonal (const Tfloat a, const Tfloat b, const Tfloat c, Tfloat &root)
 
static void FFT (CImg< T > &real, CImg< T > &imag, const char axis, const bool is_invert=false)
 Compute 1d Fast Fourier Transform, along a specified axis. More...
 
static void FFT (CImg< T > &real, CImg< T > &imag, const bool is_invert=false, const unsigned int nb_threads=0)
 Compute n-d Fast Fourier Transform. More...
 

3d Objects Management

CImg< T > & shift_object3d (const float tx, const float ty=0, const float tz=0)
 Shift 3d object's vertices. More...
 
CImg< Tfloat > get_shift_object3d (const float tx, const float ty=0, const float tz=0) const
 Shift 3d object's vertices .
 
CImg< T > & shift_object3d ()
 Shift 3d object's vertices, so that it becomes centered. More...
 
CImg< Tfloat > get_shift_object3d () const
 Shift 3d object's vertices, so that it becomes centered .
 
CImg< T > & resize_object3d (const float sx, const float sy=-100, const float sz=-100)
 Resize 3d object. More...
 
CImg< Tfloat > get_resize_object3d (const float sx, const float sy=-100, const float sz=-100) const
 Resize 3d object .
 
CImg< T > resize_object3d ()
 Resize 3d object to unit size.
 
CImg< Tfloat > get_resize_object3d () const
 Resize 3d object to unit size .
 
template<typename tf , typename tp , typename tff >
CImg< T > & append_object3d (CImgList< tf > &primitives, const CImg< tp > &obj_vertices, const CImgList< tff > &obj_primitives)
 Merge two 3d objects together. More...
 
template<typename tp , typename tc , typename tt , typename tx >
const CImg< T > & texturize_object3d (CImgList< tp > &primitives, CImgList< tc > &colors, const CImg< tt > &texture, const CImg< tx > &coords=CImg< tx >::empty()) const
 Texturize primitives of a 3d object. More...
 
template<typename tf , typename tc , typename te >
CImg< floatT > get_elevation3d (CImgList< tf > &primitives, CImgList< tc > &colors, const CImg< te > &elevation) const
 Generate a 3d elevation of the image instance. More...
 
template<typename tf , typename tc >
CImg< floatT > get_projections3d (CImgList< tf > &primitives, CImgList< tc > &colors, const unsigned int x0, const unsigned int y0, const unsigned int z0, const bool normalize_colors=false) const
 Generate the 3d projection planes of the image instance. More...
 
template<typename tf >
CImg< floatT > get_isoline3d (CImgList< tf > &primitives, const float isovalue, const int size_x=-100, const int size_y=-100) const
 Generate a isoline of the image instance as a 3d object. More...
 
template<typename tf >
CImg< floatT > get_isosurface3d (CImgList< tf > &primitives, const float isovalue, const int size_x=-100, const int size_y=-100, const int size_z=-100) const
 Generate an isosurface of the image instance as a 3d object. More...
 
template<typename tp , typename tc , typename to >
CImg< T > & object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const to &opacities, const bool full_check=true)
 Convert 3d object into a CImg3d representation. More...
 
template<typename tp , typename tc >
CImg< T > & object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const bool full_check=true)
 Convert 3d object into a CImg3d representation .
 
template<typename tp >
CImg< T > & object3dtoCImg3d (const CImgList< tp > &primitives, const bool full_check=true)
 Convert 3d object into a CImg3d representation .
 
CImg< T > & object3dtoCImg3d (const bool full_check=true)
 Convert 3d object into a CImg3d representation .
 
template<typename tp , typename tc , typename to >
CImg< floatT > get_object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const to &opacities, const bool full_check=true) const
 Convert 3d object into a CImg3d representation .
 
template<typename to >
float * _object3dtoCImg3d (const CImgList< to > &opacities, float *ptrd) const
 
template<typename to >
float * _object3dtoCImg3d (const CImg< to > &opacities, float *ptrd) const
 
template<typename tp , typename tc , typename to >
unsigned int _size_object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const CImgList< to > &opacities) const
 
template<typename tp , typename tc , typename to >
unsigned int _size_object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const CImg< to > &opacities) const
 
template<typename tp , typename tc >
CImg< floatT > get_object3dtoCImg3d (const CImgList< tp > &primitives, const CImgList< tc > &colors, const bool full_check=true) const
 Convert 3d object into a CImg3d representation .
 
template<typename tp >
CImg< floatT > get_object3dtoCImg3d (const CImgList< tp > &primitives, const bool full_check=true) const
 Convert 3d object into a CImg3d representation .
 
CImg< floatT > get_object3dtoCImg3d (const bool full_check=true) const
 Convert 3d object into a CImg3d representation .
 
template<typename tp , typename tc , typename to >
CImg< T > & CImg3dtoobject3d (CImgList< tp > &primitives, CImgList< tc > &colors, CImgList< to > &opacities, const bool full_check=true)
 Convert CImg3d representation into a 3d object. More...
 
template<typename tp , typename tc , typename to >
CImg< T > get_CImg3dtoobject3d (CImgList< tp > &primitives, CImgList< tc > &colors, CImgList< to > &opacities, const bool full_check=true) const
 Convert CImg3d representation into a 3d object .
 
template<typename tf , typename tfunc >
static CImg< floatT > elevation3d (CImgList< tf > &primitives, const tfunc &func, const float x0, const float y0, const float x1, const float y1, const int size_x=256, const int size_y=256)
 Compute 3d elevation of a function as a 3d object. More...
 
template<typename tf >
static CImg< floatT > elevation3d (CImgList< tf > &primitives, const char *const expression, const float x0, const float y0, const float x1, const float y1, const int size_x=256, const int size_y=256)
 Compute 3d elevation of a function, as a 3d object .
 
template<typename tf , typename tfunc >
static CImg< floatT > isoline3d (CImgList< tf > &primitives, const tfunc &func, const float isovalue, const float x0, const float y0, const float x1, const float y1, const int size_x=256, const int size_y=256)
 Compute 0-isolines of a function, as a 3d object. More...
 
template<typename tf >
static CImg< floatT > isoline3d (CImgList< tf > &primitives, const char *const expression, const float isovalue, const float x0, const float y0, const float x1, const float y1, const int size_x=256, const int size_y=256)
 Compute isolines of a function, as a 3d object .
 
template<typename t >
static int _isoline3d_indice (const unsigned int edge, const CImg< t > &indices1, const CImg< t > &indices2, const unsigned int x, const unsigned int nx)
 
template<typename tf , typename tfunc >
static CImg< floatT > isosurface3d (CImgList< tf > &primitives, const tfunc &func, const float isovalue, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const int size_x=32, const int size_y=32, const int size_z=32)
 Compute isosurface of a function, as a 3d object. More...
 
template<typename tf >
static CImg< floatT > isosurface3d (CImgList< tf > &primitives, const char *const expression, const float isovalue, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const int dx=32, const int dy=32, const int dz=32)
 Compute isosurface of a function, as a 3d object .
 
template<typename t >
static int _isosurface3d_indice (const unsigned int edge, const CImg< t > &indices1, const CImg< t > &indices2, const unsigned int x, const unsigned int y, const unsigned int nx, const unsigned int ny)
 
template<typename tf >
static CImg< floatT > box3d (CImgList< tf > &primitives, const float size_x=200, const float size_y=100, const float size_z=100)
 Generate a 3d box object. More...
 
template<typename tf >
static CImg< floatT > cone3d (CImgList< tf > &primitives, const float radius=50, const float size_z=100, const unsigned int subdivisions=24)
 Generate a 3d cone. More...
 
template<typename tf >
static CImg< floatT > cylinder3d (CImgList< tf > &primitives, const float radius=50, const float size_z=100, const unsigned int subdivisions=24)
 Generate a 3d cylinder. More...
 
template<typename tf >
static CImg< floatT > torus3d (CImgList< tf > &primitives, const float radius1=100, const float radius2=30, const unsigned int subdivisions1=24, const unsigned int subdivisions2=12)
 Generate a 3d torus. More...
 
template<typename tf >
static CImg< floatT > plane3d (CImgList< tf > &primitives, const float size_x=100, const float size_y=100, const unsigned int subdivisions_x=10, const unsigned int subdivisions_y=10)
 Generate a 3d XY-plane. More...
 
template<typename tf >
static CImg< floatT > sphere3d (CImgList< tf > &primitives, const float radius=50, const unsigned int subdivisions=3)
 Generate a 3d sphere. More...
 
template<typename tf , typename t >
static CImg< floatT > ellipsoid3d (CImgList< tf > &primitives, const CImg< t > &tensor, const unsigned int subdivisions=3)
 Generate a 3d ellipsoid. More...
 

Drawing Functions

template<typename tc >
CImg< T > & _draw_scanline (const int x0, const int x1, const int y, const tc *const color, const float opacity, const float brightness, const float nopacity, const float copacity, const unsigned long whd)
 
template<typename tc >
CImg< T > & draw_point (const int x0, const int y0, const int z0, const tc *const color, const float opacity=1)
 Draw a 3d point. More...
 
template<typename tc >
CImg< T > & draw_point (const int x0, const int y0, const tc *const color, const float opacity=1)
 Draw a 2d point .
 
template<typename t , typename tc >
CImg< T > & draw_point (const CImg< t > &points, const tc *const color, const float opacity=1)
 
template<typename tc >
CImg< T > & draw_line (const int x0, const int y0, const int x1, const int y1, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a 2d line. More...
 
template<typename tz , typename tc >
CImg< T > & draw_line (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a 2d line, with z-buffering. More...
 
template<typename tc >
CImg< T > & draw_line (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a 3d line. More...
 
template<typename tc >
CImg< T > & draw_line (const int x0, const int y0, const int x1, const int y1, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a textured 2d line. More...
 
template<typename tc >
CImg< T > & draw_line (const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a textured 2d line, with perspective correction. More...
 
template<typename tz , typename tc >
CImg< T > & draw_line (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a textured 2d line, with perspective correction and z-buffering. More...
 
template<typename t , typename tc >
CImg< T > & draw_line (const CImg< t > &points, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a set of consecutive lines. More...
 
template<typename tc >
CImg< T > & draw_arrow (const int x0, const int y0, const int x1, const int y1, const tc *const color, const float opacity=1, const float angle=30, const float length=-10, const unsigned int pattern=~0U)
 Draw a 2d arrow. More...
 
template<typename tc >
CImg< T > & draw_spline (const int x0, const int y0, const float u0, const float v0, const int x1, const int y1, const float u1, const float v1, const tc *const color, const float opacity=1, const float precision=0.25, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a 2d spline. More...
 
template<typename tc >
CImg< T > & draw_spline (const int x0, const int y0, const int z0, const float u0, const float v0, const float w0, const int x1, const int y1, const int z1, const float u1, const float v1, const float w1, const tc *const color, const float opacity=1, const float precision=4, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a 3d spline . More...
 
template<typename t >
CImg< T > & draw_spline (const int x0, const int y0, const float u0, const float v0, const int x1, const int y1, const float u1, const float v1, const CImg< t > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const float opacity=1, const float precision=4, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a textured 2d spline. More...
 
template<typename tp , typename tt , typename tc >
CImg< T > & draw_spline (const CImg< tp > &points, const CImg< tt > &tangents, const tc *const color, const float opacity=1, const bool is_closed_set=false, const float precision=4, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a set of consecutive splines. More...
 
template<typename tp , typename tc >
CImg< T > & draw_spline (const CImg< tp > &points, const tc *const color, const float opacity=1, const bool is_closed_set=false, const float precision=4, const unsigned int pattern=~0U, const bool init_hatch=true)
 Draw a set of consecutive splines . More...
 
template<typename tc >
CImg< T > & _draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc *const color, const float opacity, const float brightness)
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc *const color, const float opacity=1)
 Draw a filled 2d triangle. More...
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc *const color, const float opacity, const unsigned int pattern)
 Draw a outlined 2d triangle. More...
 
template<typename tz , typename tc >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const tc *const color, const float opacity=1, const float brightness=1)
 Draw a filled 2d triangle, with z-buffering. More...
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc *const color, const float brightness0, const float brightness1, const float brightness2, const float opacity=1)
 Draw a Gouraud-shaded 2d triangle. More...
 
template<typename tz , typename tc >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const tc *const color, const float brightness0, const float brightness1, const float brightness2, const float opacity=1)
 Draw a Gouraud-shaded 2d triangle, with z-buffering .
 
template<typename tc1 , typename tc2 , typename tc3 >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc1 *const color1, const tc2 *const color2, const tc3 *const color3, const float opacity=1)
 Draw a color-interpolated 2d triangle. More...
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float opacity=1, const float brightness=1)
 Draw a textured 2d triangle. More...
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float opacity=1, const float brightness=1)
 Draw a 2d textured triangle, with perspective correction.
 
template<typename tz , typename tc >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float opacity=1, const float brightness=1)
 Draw a textured 2d triangle, with perspective correction and z-buffering.
 
template<typename tc , typename tl >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const tc *const color, const CImg< tl > &light, const int lx0, const int ly0, const int lx1, const int ly1, const int lx2, const int ly2, const float opacity=1)
 Draw a Phong-shaded 2d triangle. More...
 
template<typename tz , typename tc , typename tl >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const tc *const color, const CImg< tl > &light, const int lx0, const int ly0, const int lx1, const int ly1, const int lx2, const int ly2, const float opacity=1)
 Draw a Phong-shaded 2d triangle, with z-buffering.
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float brightness0, const float brightness1, const float brightness2, const float opacity=1)
 Draw a textured Gouraud-shaded 2d triangle. More...
 
template<typename tc >
CImg< T > & draw_triangle (const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float brightness0, const float brightness1, const float brightness2, const float opacity=1)
 Draw a textured Gouraud-shaded 2d triangle, with perspective correction .
 
template<typename tz , typename tc >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float brightness0, const float brightness1, const float brightness2, const float opacity=1)
 Draw a textured Gouraud-shaded 2d triangle, with perspective correction and z-buffering .
 
template<typename tc , typename tl >
CImg< T > & draw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const CImg< tl > &light, const int lx0, const int ly0, const int lx1, const int ly1, const int lx2, const int ly2, const float opacity=1)
 Draw a textured Phong-shaded 2d triangle. More...
 
template<typename tc , typename tl >
CImg< T > & draw_triangle (const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const CImg< tl > &light, const int lx0, const int ly0, const int lx1, const int ly1, const int lx2, const int ly2, const float opacity=1)
 Draw a textured Phong-shaded 2d triangle, with perspective correction.
 
template<typename tz , typename tc , typename tl >
CImg< T > & draw_triangle (CImg< tz > &zbuffer, const int x0, const int y0, const float z0, const int x1, const int y1, const float z1, const int x2, const int y2, const float z2, const CImg< tc > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const CImg< tl > &light, const int lx0, const int ly0, const int lx1, const int ly1, const int lx2, const int ly2, const float opacity=1)
 Draw a textured Phong-shaded 2d triangle, with perspective correction and z-buffering.
 
CImg< T > & draw_rectangle (const int x0, const int y0, const int z0, const int c0, const int x1, const int y1, const int z1, const int c1, const T val, const float opacity=1)
 Draw a filled 4d rectangle. More...
 
template<typename tc >
CImg< T > & draw_rectangle (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const tc *const color, const float opacity=1)
 Draw a filled 3d rectangle. More...
 
template<typename tc >
CImg< T > & draw_rectangle (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const tc *const color, const float opacity, const unsigned int pattern)
 Draw an outlined 3d rectangle .
 
template<typename tc >
CImg< T > & draw_rectangle (const int x0, const int y0, const int x1, const int y1, const tc *const color, const float opacity=1)
 Draw a filled 2d rectangle. More...
 
template<typename tc >
CImg< T > & draw_rectangle (const int x0, const int y0, const int x1, const int y1, const tc *const color, const float opacity, const unsigned int pattern)
 Draw a outlined 2d rectangle .
 
template<typename t , typename tc >
CImg< T > & draw_polygon (const CImg< t > &points, const tc *const color, const float opacity=1)
 Draw a filled 2d polygon. More...
 
template<typename t , typename tc >
CImg< T > & draw_polygon (const CImg< t > &points, const tc *const color, const float opacity, const unsigned int pattern)
 Draw a outlined 2d polygon .
 
template<typename tc >
CImg< T > & draw_ellipse (const int x0, const int y0, const float r1, const float r2, const float angle, const tc *const color, const float opacity=1)
 Draw a filled 2d ellipse. More...
 
template<typename t , typename tc >
CImg< T > & draw_ellipse (const int x0, const int y0, const CImg< t > &tensor, const tc *const color, const float opacity=1)
 Draw a filled 2d ellipse . More...
 
template<typename tc >
CImg< T > & draw_ellipse (const int x0, const int y0, const float r1, const float r2, const float angle, const tc *const color, const float opacity, const unsigned int pattern)
 Draw an outlined 2d ellipse. More...
 
template<typename t , typename tc >
CImg< T > & draw_ellipse (const int x0, const int y0, const CImg< t > &tensor, const tc *const color, const float opacity, const unsigned int pattern)
 Draw an outlined 2d ellipse . More...
 
template<typename tc >
CImg< T > & _draw_ellipse (const int x0, const int y0, const float r1, const float r2, const float angle, const tc *const color, const float opacity, const unsigned int pattern)
 
template<typename tc >
CImg< T > & draw_circle (const int x0, const int y0, int radius, const tc *const color, const float opacity=1)
 Draw a filled 2d circle. More...
 
template<typename tc >
CImg< T > & draw_circle (const int x0, const int y0, int radius, const tc *const color, const float opacity, const unsigned int pattern)
 Draw an outlined 2d circle. More...
 
template<typename t >
CImg< T > & draw_image (const int x0, const int y0, const int z0, const int c0, const CImg< t > &sprite, const float opacity=1)
 Draw an image. More...
 
CImg< T > & draw_image (const int x0, const int y0, const int z0, const int c0, const CImg< T > &sprite, const float opacity=1)
 Draw an image .
 
template<typename t >
CImg< T > & draw_image (const int x0, const int y0, const int z0, const CImg< t > &sprite, const float opacity=1)
 Draw an image .
 
template<typename t >
CImg< T > & draw_image (const int x0, const int y0, const CImg< t > &sprite, const float opacity=1)
 Draw an image .
 
template<typename t >
CImg< T > & draw_image (const int x0, const CImg< t > &sprite, const float opacity=1)
 Draw an image .
 
template<typename t >
CImg< T > & draw_image (const CImg< t > &sprite, const float opacity=1)
 Draw an image .
 
template<typename ti , typename tm >
CImg< T > & draw_image (const int x0, const int y0, const int z0, const int c0, const CImg< ti > &sprite, const CImg< tm > &mask, const float opacity=1, const float mask_max_value=1)
 Draw a masked image. More...
 
template<typename ti , typename tm >
CImg< T > & draw_image (const int x0, const int y0, const int z0, const CImg< ti > &sprite, const CImg< tm > &mask, const float opacity=1, const float mask_max_value=1)
 Draw a masked image .
 
template<typename ti , typename tm >
CImg< T > & draw_image (const int x0, const int y0, const CImg< ti > &sprite, const CImg< tm > &mask, const float opacity=1, const float mask_max_value=1)
 Draw a image .
 
template<typename ti , typename tm >
CImg< T > & draw_image (const int x0, const CImg< ti > &sprite, const CImg< tm > &mask, const float opacity=1, const float mask_max_value=1)
 Draw a image .
 
template<typename ti , typename tm >
CImg< T > & draw_image (const CImg< ti > &sprite, const CImg< tm > &mask, const float opacity=1, const float mask_max_value=1)
 Draw an image.
 
template<typename tc1 , typename tc2 , typename t >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const tc1 *const foreground_color, const tc2 *const background_color, const float opacity, const CImgList< t > &font,...)
 Draw a text string. More...
 
template<typename tc , typename t >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const tc *const foreground_color, const int, const float opacity, const CImgList< t > &font,...)
 Draw a text string . More...
 
template<typename tc , typename t >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const int, const tc *const background_color, const float opacity, const CImgList< t > &font,...)
 Draw a text string . More...
 
template<typename tc1 , typename tc2 >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const tc1 *const foreground_color, const tc2 *const background_color, const float opacity=1, const unsigned int font_height=13,...)
 Draw a text string . More...
 
template<typename tc >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const tc *const foreground_color, const int background_color=0, const float opacity=1, const unsigned int font_height=13,...)
 Draw a text string .
 
template<typename tc >
CImg< T > & draw_text (const int x0, const int y0, const char *const text, const int, const tc *const background_color, const float opacity=1, const unsigned int font_height=13,...)
 Draw a text string .
 
template<typename tc1 , typename tc2 , typename t >
CImg< T > & _draw_text (const int x0, const int y0, const char *const text, const tc1 *const foreground_color, const tc2 *const background_color, const float opacity, const CImgList< t > &font, const bool is_native_font)
 
template<typename t1 , typename t2 >
CImg< T > & draw_quiver (const CImg< t1 > &flow, const t2 *const color, const float opacity=1, const unsigned int sampling=25, const float factor=-20, const bool is_arrow=true, const unsigned int pattern=~0U)
 Draw a 2d vector field. More...
 
template<typename t1 , typename t2 >
CImg< T > & draw_quiver (const CImg< t1 > &flow, const CImg< t2 > &color, const float opacity=1, const unsigned int sampling=25, const float factor=-20, const bool is_arrow=true, const unsigned int pattern=~0U)
 Draw a 2d vector field, using a field of colors. More...
 
template<typename t , typename tc >
CImg< T > & draw_axis (const CImg< t > &values_x, const int y, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const unsigned int font_height=13, const bool allow_zero=true)
 Draw a labeled horizontal axis. More...
 
template<typename t , typename tc >
CImg< T > & draw_axis (const int x, const CImg< t > &values_y, const tc *const color, const float opacity=1, const unsigned int pattern=~0U, const unsigned int font_height=13, const bool allow_zero=true)
 Draw a labeled vertical axis. More...
 
template<typename tx , typename ty , typename tc >
CImg< T > & draw_axes (const CImg< tx > &values_x, const CImg< ty > &values_y, const tc *const color, const float opacity=1, const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, const unsigned int font_height=13, const bool allow_zero=true)
 Draw labeled horizontal and vertical axes. More...
 
template<typename tc >
CImg< T > & draw_axes (const float x0, const float x1, const float y0, const float y1, const tc *const color, const float opacity=1, const int subdivisionx=-60, const int subdivisiony=-60, const float precisionx=0, const float precisiony=0, const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, const unsigned int font_height=13)
 Draw labeled horizontal and vertical axes .
 
template<typename tx , typename ty , typename tc >
CImg< T > & draw_grid (const CImg< tx > &values_x, const CImg< ty > &values_y, const tc *const color, const float opacity=1, const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U)
 Draw 2d grid. More...
 
template<typename tc >
CImg< T > & draw_grid (const float delta_x, const float delta_y, const float offsetx, const float offsety, const bool invertx, const bool inverty, const tc *const color, const float opacity=1, const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U)
 Draw 2d grid .
 
template<typename t , typename tc >
CImg< T > & draw_graph (const CImg< t > &data, const tc *const color, const float opacity=1, const unsigned int plot_type=1, const int vertex_type=1, const double ymin=0, const double ymax=0, const unsigned int pattern=~0U)
 Draw 1d graph. More...
 
template<typename tc , typename t >
CImg< T > & draw_fill (const int x, const int y, const int z, const tc *const color, const float opacity, CImg< t > &region, const float sigma=0, const bool is_high_connexity=false)
 Draw filled 3d region with the flood fill algorithm. More...
 
template<typename tc >
CImg< T > & draw_fill (const int x, const int y, const int z, const tc *const color, const float opacity=1, const float sigma=0, const bool is_high_connexity=false)
 Draw filled 3d region with the flood fill algorithm .
 
template<typename tc >
CImg< T > & draw_fill (const int x, const int y, const tc *const color, const float opacity=1, const float sigma=0, const bool is_high_connexity=false)
 Draw filled 2d region with the flood fill algorithm .
 
CImg< T > & draw_plasma (const float alpha=1, const float beta=0, const unsigned int scale=8)
 Draw a random plasma texture. More...
 
template<typename tc >
CImg< T > & draw_mandelbrot (const int x0, const int y0, const int x1, const int y1, const CImg< tc > &colormap, const float opacity=1, const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, const unsigned int iteration_max=255, const bool is_normalized_iteration=false, const bool is_julia_set=false, const double param_r=0, const double param_i=0)
 Draw a quadratic Mandelbrot or Julia 2d fractal. More...
 
template<typename tc >
CImg< T > & draw_mandelbrot (const CImg< tc > &colormap, const float opacity=1, const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, const unsigned int iteration_max=255, const bool is_normalized_iteration=false, const bool is_julia_set=false, const double param_r=0, const double param_i=0)
 Draw a quadratic Mandelbrot or Julia 2d fractal .
 
template<typename tc >
CImg< T > & draw_gaussian (const float xc, const float sigma, const tc *const color, const float opacity=1)
 Draw a 1d gaussian function. More...
 
template<typename t , typename tc >
CImg< T > & draw_gaussian (const float xc, const float yc, const CImg< t > &tensor, const tc *const color, const float opacity=1)
 Draw a 2d gaussian function. More...
 
template<typename tc >
CImg< T > & draw_gaussian (const int xc, const int yc, const float r1, const float r2, const float ru, const float rv, const tc *const color, const float opacity=1)
 Draw a 2d gaussian function .
 
template<typename tc >
CImg< T > & draw_gaussian (const float xc, const float yc, const float sigma, const tc *const color, const float opacity=1)
 Draw a 2d gaussian function .
 
template<typename t , typename tc >
CImg< T > & draw_gaussian (const float xc, const float yc, const float zc, const CImg< t > &tensor, const tc *const color, const float opacity=1)
 Draw a 3d gaussian function .
 
template<typename tc >
CImg< T > & draw_gaussian (const float xc, const float yc, const float zc, const float sigma, const tc *const color, const float opacity=1)
 Draw a 3d gaussian function .
 
template<typename tp , typename tf , typename tc , typename to >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const CImg< to > &opacities, const unsigned int render_type=4, const bool is_double_sided=false, const float focale=700, const float lightx=0, const float lighty=0, const float lightz=-5e8, const float specular_lightness=0.2f, const float specular_shininess=0.1f)
 Draw a 3d object. More...
 
template<typename tp , typename tf , typename tc , typename to , typename tz >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const CImg< to > &opacities, const unsigned int render_type, const bool is_double_sided, const float focale, const float lightx, const float lighty, const float lightz, const float specular_lightness, const float specular_shininess, CImg< tz > &zbuffer)
 Draw a 3d object .
 
template<typename tp , typename tf , typename tc , typename to >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const CImgList< to > &opacities, const unsigned int render_type=4, const bool is_double_sided=false, const float focale=700, const float lightx=0, const float lighty=0, const float lightz=-5e8, const float specular_lightness=0.2f, const float specular_shininess=0.1f)
 Draw a 3d object .
 
template<typename tp , typename tf , typename tc , typename to , typename tz >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const CImgList< to > &opacities, const unsigned int render_type, const bool is_double_sided, const float focale, const float lightx, const float lighty, const float lightz, const float specular_lightness, const float specular_shininess, CImg< tz > &zbuffer)
 Draw a 3d object .
 
template<typename tp , typename tf , typename tc >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const unsigned int render_type=4, const bool is_double_sided=false, const float focale=700, const float lightx=0, const float lighty=0, const float lightz=-5e8, const float specular_lightness=0.2f, const float specular_shininess=0.1f)
 Draw a 3d object .
 
template<typename tp , typename tf , typename tc , typename tz >
CImg< T > & draw_object3d (const float x0, const float y0, const float z0, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const unsigned int render_type, const bool is_double_sided, const float focale, const float lightx, const float lighty, const float lightz, const float specular_lightness, const float specular_shininess, CImg< tz > &zbuffer)
 Draw a 3d object .
 
template<typename tz , typename tp , typename tf , typename tc , typename to >
CImg< T > & _draw_object3d (void *const pboard, CImg< tz > &zbuffer, const float X, const float Y, const float Z, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const to &opacities, const unsigned int render_type, const bool is_double_sided, const float focale, const float lightx, const float lighty, const float lightz, const float specular_lightness, const float specular_shininess, const float sprite_scale)
 
template<typename t , typename to >
static float __draw_object3d (const CImgList< t > &opacities, const unsigned int n_primitive, CImg< to > &opacity)
 
template<typename t , typename to >
static float __draw_object3d (const CImg< t > &opacities, const unsigned int n_primitive, CImg< to > &opacity)
 

Data Input

CImg< T > & select (CImgDisplay &disp, const unsigned int feature_type=2, unsigned int *const XYZ=0)
 Launch simple interface to select a shape from an image. More...
 
CImg< T > & select (const char *const title, const unsigned int feature_type=2, unsigned int *const XYZ=0)
 Simple interface to select a shape from an image .
 
CImg< intT > get_select (CImgDisplay &disp, const unsigned int feature_type=2, unsigned int *const XYZ=0) const
 Simple interface to select a shape from an image .
 
CImg< intT > get_select (const char *const title, const unsigned int feature_type=2, unsigned int *const XYZ=0) const
 Simple interface to select a shape from an image .
 
CImg< intT > _get_select (CImgDisplay &disp, const char *const title, const unsigned int feature_type, unsigned int *const XYZ, const int origX, const int origY, const int origZ, const bool reset_view3d, const bool force_display_z_coord) const
 
CImg< ucharT > __get_select (const CImgDisplay &disp, const int normalization, const int x, const int y, const int z) const
 
CImg< intT > get_select_graph (CImgDisplay &disp, const unsigned int plot_type=1, const unsigned int vertex_type=1, const char *const labelx=0, const double xmin=0, const double xmax=0, const char *const labely=0, const double ymin=0, const double ymax=0) const
 Select sub-graph in a graph.
 
CImg< T > & load (const char *const filename)
 Load image from a file. More...
 
CImg< T > & load_ascii (const char *const filename)
 Load image from an ascii file. More...
 
CImg< T > & load_ascii (std::FILE *const file)
 Load image from an ascii file .
 
CImg< T > & _load_ascii (std::FILE *const file, const char *const filename)
 
CImg< T > & load_dlm (const char *const filename)
 Load image from a DLM file. More...
 
CImg< T > & load_dlm (std::FILE *const file)
 Load image from a DLM file .
 
CImg< T > & _load_dlm (std::FILE *const file, const char *const filename)
 
CImg< T > & load_bmp (const char *const filename)
 Load image from a BMP file. More...
 
CImg< T > & load_bmp (std::FILE *const file)
 Load image from a BMP file .
 
CImg< T > & _load_bmp (std::FILE *const file, const char *const filename)
 
CImg< T > & load_jpeg (const char *const filename)
 Load image from a JPEG file. More...
 
CImg< T > & load_jpeg (std::FILE *const file)
 Load image from a JPEG file .
 
CImg< T > & _load_jpeg (std::FILE *const file, const char *const filename)
 
CImg< T > & load_magick (const char *const filename)
 Load image from a file, using Magick++ library. More...
 
CImg< T > & load_png (const char *const filename)
 Load image from a PNG file. More...
 
CImg< T > & load_png (std::FILE *const file)
 Load image from a PNG file .
 
CImg< T > & _load_png (std::FILE *const file, const char *const filename)
 
CImg< T > & load_pnm (const char *const filename)
 Load image from a PNM file. More...
 
CImg< T > & load_pnm (std::FILE *const file)
 Load image from a PNM file .
 
CImg< T > & _load_pnm (std::FILE *const file, const char *const filename)
 
CImg< T > & load_pfm (const char *const filename)
 Load image from a PFM file. More...
 
CImg< T > & load_pfm (std::FILE *const file)
 Load image from a PFM file .
 
CImg< T > & _load_pfm (std::FILE *const file, const char *const filename)
 
CImg< T > & load_rgb (const char *const filename, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGB file. More...
 
CImg< T > & load_rgb (std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGB file .
 
CImg< T > & _load_rgb (std::FILE *const file, const char *const filename, const unsigned int dimw, const unsigned int dimh)
 
CImg< T > & load_rgba (const char *const filename, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGBA file. More...
 
CImg< T > & load_rgba (std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGBA file .
 
CImg< T > & _load_rgba (std::FILE *const file, const char *const filename, const unsigned int dimw, const unsigned int dimh)
 
CImg< T > & load_tiff (const char *const filename, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1)
 Load image from a TIFF file. More...
 
CImg< T > & load_minc2 (const char *const filename)
 Load image from a MINC2 file. More...
 
CImg< T > & load_analyze (const char *const filename, float *const voxel_size=0)
 Load image from an ANALYZE7.5/NIFTI file. More...
 
CImg< T > & load_analyze (std::FILE *const file, float *const voxel_size=0)
 Load image from an ANALYZE7.5/NIFTI file .
 
CImg< T > & _load_analyze (std::FILE *const file, const char *const filename, float *const voxel_size=0)
 
CImg< T > & load_cimg (const char *const filename, const char axis='z', const float align=0)
 Load image from a .cimg[z] file. More...
 
CImg< T > & load_cimg (std::FILE *const file, const char axis='z', const float align=0)
 Load image from a .cimg[z] file .
 
CImg< T > & load_cimg (const char *const filename, const unsigned int n0, const unsigned int n1, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int c1, const char axis='z', const float align=0)
 Load sub-images of a .cimg file. More...
 
CImg< T > & load_cimg (std::FILE *const file, const unsigned int n0, const unsigned int n1, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int c1, const char axis='z', const float align=0)
 Load sub-images of a .cimg file .
 
CImg< T > & load_inr (const char *const filename, float *const voxel_size=0)
 Load image from an INRIMAGE-4 file. More...
 
CImg< T > & load_inr (std::FILE *const file, float *const voxel_size=0)
 Load image from an INRIMAGE-4 file .
 
CImg< T > & _load_inr (std::FILE *const file, const char *const filename, float *const voxel_size)
 
CImg< T > & load_exr (const char *const filename)
 Load image from a EXR file. More...
 
CImg< T > & load_pandore (const char *const filename)
 Load image from a PANDORE-5 file. More...
 
CImg< T > & load_pandore (std::FILE *const file)
 Load image from a PANDORE-5 file .
 
CImg< T > & _load_pandore (std::FILE *const file, const char *const filename)
 
CImg< T > & load_parrec (const char *const filename, const char axis='c', const float align=0)
 Load image from a PAR-REC (Philips) file. More...
 
CImg< T > & load_raw (const char *const filename, const unsigned int size_x=0, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_multiplexed=false, const bool invert_endianness=false, const unsigned long offset=0)
 Load image from a raw binary file. More...
 
CImg< T > & load_raw (std::FILE *const file, const unsigned int size_x=0, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_multiplexed=false, const bool invert_endianness=false, const unsigned long offset=0)
 Load image from a raw binary file .
 
CImg< T > & _load_raw (std::FILE *const file, const char *const filename, const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, const bool is_multiplexed, const bool invert_endianness, const unsigned long offset)
 
CImg< T > & load_ffmpeg (const char *const filename, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool pixel_format=true, const bool resume=false, const char axis='z', const float align=0)
 Load image sequence using FFMPEG av's libraries. More...
 
CImg< T > & load_yuv (const char *const filename, const unsigned int size_x, const unsigned int size_y=1, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z')
 Load image sequence from a YUV file. More...
 
CImg< T > & load_yuv (std::FILE *const file, const unsigned int size_x, const unsigned int size_y=1, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z')
 Load image sequence from a YUV file .
 
template<typename tf , typename tc >
CImg< T > & load_off (CImgList< tf > &primitives, CImgList< tc > &colors, const char *const filename)
 Load 3d object from a .OFF file. More...
 
template<typename tf , typename tc >
CImg< T > & load_off (CImgList< tf > &primitives, CImgList< tc > &colors, std::FILE *const file)
 Load 3d object from a .OFF file .
 
template<typename tf , typename tc >
CImg< T > & _load_off (CImgList< tf > &primitives, CImgList< tc > &colors, std::FILE *const file, const char *const filename)
 
CImg< T > & load_ffmpeg_external (const char *const filename, const char axis='z', const float align=0)
 Load image sequence using FFMPEG's external tool 'ffmpeg'. More...
 
CImg< T > & load_gif_external (const char *const filename, const char axis='z', const float align=0)
 Load gif file, using Imagemagick or GraphicsMagicks's external tools. More...
 
CImg< T > & load_graphicsmagick_external (const char *const filename)
 Load image using GraphicsMagick's external tool 'gm'. More...
 
CImg< T > & load_gzip_external (const char *const filename)
 Load gzipped image file, using external tool 'gunzip'. More...
 
CImg< T > & load_imagemagick_external (const char *const filename)
 Load image using ImageMagick's external tool 'convert'. More...
 
CImg< T > & load_medcon_external (const char *const filename)
 Load image from a DICOM file, using XMedcon's external tool 'medcon'. More...
 
CImg< T > & load_dcraw_external (const char *const filename)
 Load image from a RAW Color Camera file, using external tool 'dcraw'. More...
 
CImg< T > & load_camera (const unsigned int camera_index=0, const unsigned int skip_frames=0, const bool release_camera=true, const unsigned int capture_width=0, const unsigned int capture_height=0)
 Load image from a camera stream, using OpenCV. More...
 
CImg< T > & load_other (const char *const filename)
 Load image using various non-native ways. More...
 
static CImg< T > get_load (const char *const filename)
 Load image from a file .
 
static CImg< T > get_load_ascii (const char *const filename)
 Load image from an ascii file .
 
static CImg< T > get_load_ascii (std::FILE *const file)
 Loadimage from an ascii file .
 
static CImg< T > get_load_dlm (const char *const filename)
 Load image from a DLM file .
 
static CImg< T > get_load_dlm (std::FILE *const file)
 Load image from a DLM file .
 
static CImg< T > get_load_bmp (const char *const filename)
 Load image from a BMP file .
 
static CImg< T > get_load_bmp (std::FILE *const file)
 Load image from a BMP file .
 
static CImg< T > get_load_jpeg (const char *const filename)
 Load image from a JPEG file .
 
static CImg< T > get_load_jpeg (std::FILE *const file)
 Load image from a JPEG file .
 
static CImg< T > get_load_magick (const char *const filename)
 Load image from a file, using Magick++ library .
 
static CImg< T > get_load_png (const char *const filename)
 Load image from a PNG file .
 
static CImg< T > get_load_png (std::FILE *const file)
 Load image from a PNG file .
 
static CImg< T > get_load_pnm (const char *const filename)
 Load image from a PNM file .
 
static CImg< T > get_load_pnm (std::FILE *const file)
 Load image from a PNM file .
 
static CImg< T > get_load_pfm (const char *const filename)
 Load image from a PFM file .
 
static CImg< T > get_load_pfm (std::FILE *const file)
 Load image from a PFM file .
 
static CImg< T > get_load_rgb (const char *const filename, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGB file .
 
static CImg< T > get_load_rgb (std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGB file .
 
static CImg< T > get_load_rgba (const char *const filename, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGBA file .
 
static CImg< T > get_load_rgba (std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1)
 Load image from a RGBA file .
 
static CImg< T > get_load_tiff (const char *const filename, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1)
 Load image from a TIFF file .
 
static CImg< T > get_load_minc2 (const char *const filename)
 Load image from a MINC2 file .
 
static CImg< T > get_load_analyze (const char *const filename, float *const voxel_size=0)
 Load image from an ANALYZE7.5/NIFTI file .
 
static CImg< T > get_load_analyze (std::FILE *const file, float *const voxel_size=0)
 Load image from an ANALYZE7.5/NIFTI file .
 
static CImg< T > get_load_cimg (const char *const filename, const char axis='z', const float align=0)
 Load image from a .cimg[z] file .
 
static CImg< T > get_load_cimg (std::FILE *const file, const char axis='z', const float align=0)
 Load image from a .cimg[z] file .
 
static CImg< T > get_load_cimg (const char *const filename, const unsigned int n0, const unsigned int n1, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int c1, const char axis='z', const float align=0)
 Load sub-images of a .cimg file .
 
static CImg< T > get_load_cimg (std::FILE *const file, const unsigned int n0, const unsigned int n1, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int c1, const char axis='z', const float align=0)
 Load sub-images of a .cimg file .
 
static CImg< T > get_load_inr (const char *const filename, float *const voxel_size=0)
 Load image from an INRIMAGE-4 file .
 
static CImg< T > get_load_inr (std::FILE *const file, float *voxel_size=0)
 Load image from an INRIMAGE-4 file .
 
static void _load_inr_header (std::FILE *file, int out[8], float *const voxel_size)
 
static CImg< T > get_load_exr (const char *const filename)
 Load image from a EXR file .
 
static CImg< T > get_load_pandore (const char *const filename)
 Load image from a PANDORE-5 file .
 
static CImg< T > get_load_pandore (std::FILE *const file)
 Load image from a PANDORE-5 file .
 
static CImg< T > get_load_parrec (const char *const filename, const char axis='c', const float align=0)
 Load image from a PAR-REC (Philips) file .
 
static CImg< T > get_load_raw (const char *const filename, const unsigned int size_x=0, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_multiplexed=false, const bool invert_endianness=false, const unsigned long offset=0)
 Load image from a raw binary file .
 
static CImg< T > get_load_raw (std::FILE *const file, const unsigned int size_x=0, const unsigned int size_y=1, const unsigned int size_z=1, const unsigned int size_c=1, const bool is_multiplexed=false, const bool invert_endianness=false, const unsigned long offset=0)
 Load image from a raw binary file .
 
static CImg< T > get_load_ffmpeg (const char *const filename, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool pixel_format=true, const bool resume=false, const char axis='z', const float align=0)
 Load image sequence using FFMPEG av's libraries .
 
static CImg< T > get_load_yuv (const char *const filename, const unsigned int size_x, const unsigned int size_y=1, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z')
 Load image sequence from a YUV file .
 
static CImg< T > get_load_yuv (std::FILE *const file, const unsigned int size_x, const unsigned int size_y=1, const unsigned int first_frame=0, const unsigned int last_frame=~0U, const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z')
 Load image sequence from a YUV file .
 
template<typename tf , typename tc >
static CImg< T > get_load_off (CImgList< tf > &primitives, CImgList< tc > &colors, const char *const filename)
 Load 3d object from a .OFF file .
 
template<typename tf , typename tc >
static CImg< T > get_load_off (CImgList< tf > &primitives, CImgList< tc > &colors, std::FILE *const file)
 Load 3d object from a .OFF file .
 
static CImg< T > get_load_ffmpeg_external (const char *const filename, const char axis='z', const float align=0)
 Load image sequence using FFMPEG's external tool 'ffmpeg' .
 
static CImg< T > get_load_gif_external (const char *const filename, const char axis='z', const float align=0)
 Load gif file, using ImageMagick or GraphicsMagick's external tool 'convert' .
 
static CImg< T > get_load_graphicsmagick_external (const char *const filename)
 Load image using GraphicsMagick's external tool 'gm' .
 
static CImg< T > get_load_gzip_external (const char *const filename)
 Load gzipped image file, using external tool 'gunzip' .
 
static CImg< T > get_load_imagemagick_external (const char *const filename)
 Load image using ImageMagick's external tool 'convert' .
 
static CImg< T > get_load_medcon_external (const char *const filename)
 Load image from a DICOM file, using XMedcon's external tool 'medcon' .
 
static CImg< T > get_load_dcraw_external (const char *const filename)
 Load image from a RAW Color Camera file, using external tool 'dcraw' .
 
static CImg< T > get_load_camera (const unsigned int camera_index=0, const unsigned int skip_frames=0, const bool release_camera=true, const unsigned int capture_width=0, const unsigned int capture_height=0)
 Load image from a camera stream, using OpenCV .
 
static CImg< T > get_load_other (const char *const filename)
 Load image using various non-native ways .
 

Data Output

const CImg< T > & print (const char *const title=0, const bool display_stats=true) const
 Display informations about the image data. More...
 
const CImg< T > & display (CImgDisplay &disp) const
 Display image into a CImgDisplay window. More...
 
const CImg< T > & display (CImgDisplay &disp, const bool display_info, unsigned int *const XYZ=0) const
 Display image into a CImgDisplay window, in an interactive way. More...
 
const CImg< T > & display (const char *const title=0, const bool display_info=true, unsigned int *const XYZ=0) const
 Display image into an interactive window. More...
 
const CImg< T > & _display (CImgDisplay &disp, const char *const title, const bool display_info, unsigned int *const XYZ, const bool exit_on_simpleclick) const
 
template<typename tp , typename tf , typename tc , typename to >
const CImg< T > & display_object3d (CImgDisplay &disp, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const to &opacities, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window. More...
 
template<typename tp , typename tf , typename tc , typename to >
const CImg< T > & display_object3d (const char *const title, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const to &opacities, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp , typename tf , typename tc >
const CImg< T > & display_object3d (CImgDisplay &disp, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp , typename tf , typename tc >
const CImg< T > & display_object3d (const char *const title, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp , typename tf >
const CImg< T > & display_object3d (CImgDisplay &disp, const CImg< tp > &vertices, const CImgList< tf > &primitives, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp , typename tf >
const CImg< T > & display_object3d (const char *const title, const CImg< tp > &vertices, const CImgList< tf > &primitives, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp >
const CImg< T > & display_object3d (CImgDisplay &disp, const CImg< tp > &vertices, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp >
const CImg< T > & display_object3d (const char *const title, const CImg< tp > &vertices, const bool centering=true, const int render_static=4, const int render_motion=1, const bool is_double_sided=true, const float focale=700, const float light_x=0, const float light_y=0, const float light_z=-5e8f, const float specular_lightness=0.2f, const float specular_shininess=0.1f, const bool display_axes=true, float *const pose_matrix=0) const
 Display object 3d in an interactive window .
 
template<typename tp , typename tf , typename tc , typename to >
const CImg< T > & _display_object3d (CImgDisplay &disp, const char *const title, const CImg< tp > &vertices, const CImgList< tf > &primitives, const CImgList< tc > &colors, const to &opacities, const bool centering, const int render_static, const int render_motion, const bool is_double_sided, const float focale, const float light_x, const float light_y, const float light_z, const float specular_lightness, const float specular_shininess, const bool display_axes, float *const pose_matrix) const
 
const CImg< T > & display_graph (CImgDisplay &disp, const unsigned int plot_type=1, const unsigned int vertex_type=1, const char *const labelx=0, const double xmin=0, const double xmax=0, const char *const labely=0, const double ymin=0, const double ymax=0) const
 Display 1d graph in an interactive window. More...
 
const CImg< T > & display_graph (const char *const title=0, const unsigned int plot_type=1, const unsigned int vertex_type=1, const char *const labelx=0, const double xmin=0, const double xmax=0, const char *const labely=0, const double ymin=0, const double ymax=0) const
 Display 1d graph in an interactive window .
 
const CImg< T > & _display_graph (CImgDisplay &disp, const char *const title=0, const unsigned int plot_type=1, const unsigned int vertex_type=1, const char *const labelx=0, const double xmin=0, const double xmax=0, const char *const labely=0, const double ymin=0, const double ymax=0) const
 
const CImg< T > & save (const char *const filename, const int number=-1, const unsigned int digits=6) const
 Save image as a file. More...
 
const CImg< T > & save_ascii (const char *const filename) const
 Save image as an ascii file. More...
 
const CImg< T > & save_ascii (std::FILE *const file) const
 Save image as an ascii file .
 
const CImg< T > & _save_ascii (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_cpp (const char *const filename) const
 Save image as a .cpp source file. More...
 
const CImg< T > & save_cpp (std::FILE *const file) const
 Save image as a .cpp source file .
 
const CImg< T > & _save_cpp (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_dlm (const char *const filename) const
 Save image as a DLM file. More...
 
const CImg< T > & save_dlm (std::FILE *const file) const
 Save image as a DLM file .
 
const CImg< T > & _save_dlm (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_bmp (const char *const filename) const
 Save image as a BMP file. More...
 
const CImg< T > & save_bmp (std::FILE *const file) const
 Save image as a BMP file .
 
const CImg< T > & _save_bmp (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_jpeg (const char *const filename, const unsigned int quality=100) const
 Save image as a JPEG file. More...
 
const CImg< T > & save_jpeg (std::FILE *const file, const unsigned int quality=100) const
 Save image as a JPEG file .
 
const CImg< T > & _save_jpeg (std::FILE *const file, const char *const filename, const unsigned int quality) const
 
const CImg< T > & save_magick (const char *const filename, const unsigned int bytes_per_pixel=0) const
 Save image, using built-in ImageMagick++ library. More...
 
const CImg< T > & save_png (const char *const filename, const unsigned int bytes_per_pixel=0) const
 Save image as a PNG file. More...
 
const CImg< T > & save_png (std::FILE *const file, const unsigned int bytes_per_pixel=0) const
 Save image as a PNG file .
 
const CImg< T > & _save_png (std::FILE *const file, const char *const filename, const unsigned int bytes_per_pixel=0) const
 
const CImg< T > & save_pnm (const char *const filename, const unsigned int bytes_per_pixel=0) const
 Save image as a PNM file. More...
 
const CImg< T > & save_pnm (std::FILE *const file, const unsigned int bytes_per_pixel=0) const
 Save image as a PNM file .
 
const CImg< T > & _save_pnm (std::FILE *const file, const char *const filename, const unsigned int bytes_per_pixel=0) const
 
const CImg< T > & save_pnk (const char *const filename) const
 Save image as a PNK file. More...
 
const CImg< T > & save_pnk (std::FILE *const file) const
 Save image as a PNK file .
 
const CImg< T > & _save_pnk (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_pfm (const char *const filename) const
 Save image as a PFM file. More...
 
const CImg< T > & save_pfm (std::FILE *const file) const
 Save image as a PFM file .
 
const CImg< T > & _save_pfm (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_rgb (const char *const filename) const
 Save image as a RGB file. More...
 
const CImg< T > & save_rgb (std::FILE *const file) const
 Save image as a RGB file .
 
const CImg< T > & _save_rgb (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_rgba (const char *const filename) const
 Save image as a RGBA file. More...
 
const CImg< T > & save_rgba (std::FILE *const file) const
 Save image as a RGBA file .
 
const CImg< T > & _save_rgba (std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_tiff (const char *const filename, const unsigned int compression_type=0) const
 Save image as a TIFF file. More...
 
const CImg< T > & save_minc2 (const char *const filename, const char *const imitate_file=0) const
 Save image as a MINC2 file. More...
 
const CImg< T > & save_analyze (const char *const filename, const float *const voxel_size=0) const
 Save image as an ANALYZE7.5 or NIFTI file. More...
 
const CImg< T > & save_cimg (const char *const filename, const bool is_compressed=false) const
 Save image as a .cimg file. More...
 
const CImg< T > & save_cimg (std::FILE *const file, const bool is_compressed=false) const
 Save image as a .cimg file .
 
const CImg< T > & save_cimg (const char *const filename, const unsigned int n0, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0) const
 Save image as a sub-image into an existing .cimg file. More...
 
const CImg< T > & save_cimg (std::FILE *const file, const unsigned int n0, const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int c0) const
 Save image as a sub-image into an existing .cimg file .
 
const CImg< T > & save_inr (const char *const filename, const float *const voxel_size=0) const
 Save image as an INRIMAGE-4 file. More...
 
const CImg< T > & save_inr (std::FILE *const file, const float *const voxel_size=0) const
 Save image as an INRIMAGE-4 file .
 
const CImg< T > & _save_inr (std::FILE *const file, const char *const filename, const float *const voxel_size) const
 
const CImg< T > & save_exr (const char *const filename) const
 Save image as an OpenEXR file. More...
 
const CImg< T > & save_pandore (const char *const filename, const unsigned int colorspace=0) const
 Save image as a Pandore-5 file. More...
 
const CImg< T > & save_pandore (std::FILE *const file, const unsigned int colorspace=0) const
 Save image as a Pandore-5 file . More...
 
unsigned int _save_pandore_header_length (unsigned int id, unsigned int *dims, const unsigned int colorspace) const
 
const CImg< T > & _save_pandore (std::FILE *const file, const char *const filename, const unsigned int colorspace) const
 
const CImg< T > & save_raw (const char *const filename, const bool is_multiplexed=false) const
 Save image as a raw data file. More...
 
const CImg< T > & save_raw (std::FILE *const file, const bool is_multiplexed=false) const
 Save image as a raw data file . More...
 
const CImg< T > & _save_raw (std::FILE *const file, const char *const filename, const bool is_multiplexed) const
 
const CImg< T > & save_ffmpeg (const char *const filename, const unsigned int fps=25, const unsigned int bitrate=2048) const
 Save image as a video file, using the FFmpeg library. More...
 
const CImg< T > & save_yuv (const char *const filename, const bool is_rgb=true) const
 Save image as a .yuv video file. More...
 
const CImg< T > & save_yuv (std::FILE *const file, const bool is_rgb=true) const
 Save image as a .yuv video file . More...
 
template<typename tf , typename tc >
const CImg< T > & save_off (const CImgList< tf > &primitives, const CImgList< tc > &colors, const char *const filename) const
 Save 3d object as an Object File Format (.off) file. More...
 
template<typename tf , typename tc >
const CImg< T > & save_off (const CImgList< tf > &primitives, const CImgList< tc > &colors, std::FILE *const file) const
 Save 3d object as an Object File Format (.off) file . More...
 
template<typename tf , typename tc >
const CImg< T > & _save_off (const CImgList< tf > &primitives, const CImgList< tc > &colors, std::FILE *const file, const char *const filename) const
 
const CImg< T > & save_ffmpeg_external (const char *const filename, const char *const codec=0, const unsigned int fps=25, const unsigned int bitrate=2048) const
 Save volumetric image as a video, using ffmpeg external binary. More...
 
const CImg< T > & save_gzip_external (const char *const filename) const
 Save image using gzip external binary. More...
 
const CImg< T > & save_graphicsmagick_external (const char *const filename, const unsigned int quality=100) const
 Save image using GraphicsMagick's external binary. More...
 
const CImg< T > & save_imagemagick_external (const char *const filename, const unsigned int quality=100) const
 Save image using ImageMagick's external binary. More...
 
const CImg< T > & save_medcon_external (const char *const filename) const
 Save image as a Dicom file. More...
 
const CImg< T > & save_other (const char *const filename, const unsigned int quality=100) const
 
static void save_empty_cimg (const char *const filename, const unsigned int dx, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dc=1)
 Save blank image as a .cimg file. More...
 
static void save_empty_cimg (std::FILE *const file, const unsigned int dx, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dc=1)
 Save blank image as a .cimg file . More...
 
static CImg< T > _logo40x38 ()
 

Detailed Description

template<typename T>
struct cimg_library_suffixed::CImg< T >

Class representing an image (up to 4 dimensions wide), each pixel being of type T.

This is the main class of the CImg Library. It declares and constructs an image, allows access to its pixel values, and is able to perform various image operations.

Image representation

A CImg image is defined as an instance of the container CImg<T>, which contains a regular grid of pixels, each pixel value being of type T. The image grid can have up to 4 dimensions: width, height, depth and number of channels. Usually, the three first dimensions are used to describe spatial coordinates (x,y,z), while the number of channels is rather used as a vector-valued dimension (it may describe the R,G,B color channels for instance). If you need a fifth dimension, you can use image lists CImgList<T> rather than simple images CImg<T>.

Thus, the CImg<T> class is able to represent volumetric images of vector-valued pixels, as well as images with less dimensions (1d scalar signal, 2d color images, ...). Most member functions of the class CImg<T> are designed to handle this maximum case of (3+1) dimensions.

Concerning the pixel value type T: fully supported template types are the basic C++ types: unsigned char, char, short, unsigned int, int, unsigned long, long, float, double, ... . Typically, fast image display can be done using CImg<unsigned char> images, while complex image processing algorithms may be rather coded using CImg<float> or CImg<double> images that have floating-point pixel values. The default value for the template T is float. Using your own template types may be possible. However, you will certainly have to define the complete set of arithmetic and logical operators for your class.

Image structure

The CImg<T> structure contains six fields:

  • _width defines the number of columns of the image (size along the X-axis).
  • _height defines the number of rows of the image (size along the Y-axis).
  • _depth defines the number of slices of the image (size along the Z-axis).
  • _spectrum defines the number of channels of the image (size along the C-axis).
  • _data defines a pointer to the pixel data (of type T).
  • _is_shared is a boolean that tells if the memory buffer data is shared with another image.

You can access these fields publicly although it is recommended to use the dedicated functions width(), height(), depth(), spectrum() and ptr() to do so. Image dimensions are not limited to a specific range (as long as you got enough available memory). A value of 1 usually means that the corresponding dimension is flat. If one of the dimensions is 0, or if the data pointer is null, the image is considered as empty. Empty images should not contain any pixel data and thus, will not be processed by CImg member functions (a CImgInstanceException will be thrown instead). Pixel data are stored in memory, in a non interlaced mode (See cimg_storage).

Image declaration and construction

Declaring an image can be done by using one of the several available constructors. Here is a list of the most used:

  • Construct images from arbitrary dimensions:
    • CImg<char> img; declares an empty image.
    • CImg<unsigned char> img(128,128); declares a 128x128 greyscale image with unsigned char pixel values.
    • CImg<double> img(3,3); declares a 3x3 matrix with double coefficients.
    • CImg<unsigned char> img(256,256,1,3); declares a 256x256x1x3 (color) image (colors are stored as an image with three channels).
    • CImg<double> img(128,128,128); declares a 128x128x128 volumetric and greyscale image (with double pixel values).
    • CImg<> img(128,128,128,3); declares a 128x128x128 volumetric color image (with float pixels, which is the default value of the template parameter T).
    • Note: images pixels are not automatically initialized to 0. You may use the function fill() to do it, or use the specific constructor taking 5 parameters like this: CImg<> img(128,128,128,3,0); declares a 128x128x128 volumetric color image with all pixel values to 0.
  • Construct images from filenames:
    • CImg<unsigned char> img("image.jpg"); reads a JPEG color image from the file "image.jpg".
    • CImg<float> img("analyze.hdr"); reads a volumetric image (ANALYZE7.5 format) from the file "analyze.hdr".
    • Note: You need to install ImageMagick to be able to read common compressed image formats (JPG,PNG, ...) (See cimg_files_io).
  • Construct images from C-style arrays:

    • CImg<int> img(data_buffer,256,256); constructs a 256x256 greyscale image from a int* buffer data_buffer (of size 256x256=65536).
    • CImg<unsigned char> img(data_buffer,256,256,1,3,false); constructs a 256x256 color image from a unsigned char* buffer data_buffer (where R,G,B channels follow each others).
    • CImg<unsigned char> img(data_buffer,256,256,1,3,true); constructs a 256x256 color image from a unsigned char* buffer data_buffer (where R,G,B channels are multiplexed).

    The complete list of constructors can be found here.

Most useful functions

The CImg<T> class contains a lot of functions that operates on images. Some of the most useful are:

Definition at line 2063 of file CImg.h.

Member Typedef Documentation

template<typename T>
typedef const T* cimg_library_suffixed::CImg< T >::const_iterator

Simple const iterator type, to loop through each pixel value of a const image instance.

Note
  • The CImg<T>::const_iterator type is defined to be a const T*.
  • You will seldom have to use iterators in CImg, most classical operations being achieved (often in a faster way) using methods of CImg<T>.
Example
const CImg<float> img("reference.jpg"); // Load image from file.
float sum = 0;
for (CImg<float>::iterator it = img.begin(), it<img.end(); ++it) sum+=*it; // Compute sum of all pixel values, with a CImg iterator.
const float sum2 = img.sum(); // Do the same with a built-in method.

Definition at line 9357 of file CImg.h.

template<typename T>
typedef T* cimg_library_suffixed::CImg< T >::iterator

Simple iterator type, to loop through each pixel value of an image instance.

Note
  • The CImg<T>::iterator type is defined to be a T*.
  • You will seldom have to use iterators in CImg, most classical operations being achieved (often in a faster way) using methods of CImg<T>.
Example
CImg<float> img("reference.jpg"); // Load image from file.
for (CImg<float>::iterator it = img.begin(), it<img.end(); ++it) *it = 0; // Set all pixels to '0', with a CImg iterator.
img.fill(0); // Do the same with a built-in method.

Definition at line 9341 of file CImg.h.

template<typename T>
typedef T cimg_library_suffixed::CImg< T >::value_type

Pixel value type.

Refer to the type of the pixel values of an image instance.

Note
  • The CImg<T>::value_type type of a CImg<T> is defined to be a T.
  • CImg<T>::value_type is actually not used in CImg methods. It has been mainly defined for compatibility with STL naming conventions.

Definition at line 9367 of file CImg.h.

Constructor & Destructor Documentation

template<typename T>
cimg_library_suffixed::CImg< T >::~CImg ( )
inline

Destroy image.

Note
  • The pixel buffer data() is deallocated if necessary, e.g. for non-empty and non-shared image instances.
  • Destroying an empty or shared image does nothing actually.
Warning
  • When destroying a non-shared image, make sure that you will not operate on a remaining shared image that shares its buffer with the destroyed instance, in order to avoid further invalid memory access (to a deallocated buffer).

Definition at line 9444 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( )
inline

Construct empty image.

Note
Example
CImg<float> img1, img2; // Construct two empty images.
img1.assign(256,256,1,3); // Re-assign 'img1' to be a 256x256x1x3 (color) image.
img2 = img1.get_rand(0,255); // Re-assign 'img2' to be a random-valued version of 'img1'.
img2.assign(); // Re-assign 'img2' to be an empty image again.

Definition at line 9465 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const unsigned int  size_x,
const unsigned int  size_y = 1,
const unsigned int  size_z = 1,
const unsigned int  size_c = 1 
)
inlineexplicit

Construct image with specified size.

Parameters
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
Note
  • It is able to create only non-shared images, and allocates thus a pixel buffer data() for each constructed image instance.
  • Setting one dimension size_x,size_y,size_z or size_c to 0 leads to the construction of an empty image.
  • A CImgInstanceException is thrown when the pixel buffer cannot be allocated (e.g. when requested size is too big for available memory).
Warning
Example
CImg<float> img1(256,256,1,3); // Construct a 256x256x1x3 (color) image, filled with garbage values.
CImg<float> img2(256,256,1,3,0); // Construct a 256x256x1x3 (color) image, filled with value '0'.

Definition at line 9490 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const T  value 
)
inline

Construct image with specified size and initialize pixel values.

Parameters
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
valueInitialization value.
Note
Warning
  • It cannot be used to construct a vector-valued image and initialize it with vector-valued pixels (e.g. RGB vector, for color images). For this task, you may use fillC() after construction.

Definition at line 9522 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const int  value0,
const int  value1,
  ... 
)
inline

Construct image with specified size and initialize pixel values from a sequence of integers.

Construct a new image instance of size size_x x size_y x size_z x size_c, with pixels of type T, and initialize pixel values from the specified sequence of integers value0,value1,...

Parameters
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
value0First value of the initialization sequence (must be an integer).
value1Second value of the initialization sequence (must be an integer).
...
Note
Warning
  • You must specify exactly size_x*size_y*size_z*size_c integers in the initialization sequence. Otherwise, the constructor may crash or fill your image pixels with garbage.
Example
const CImg<float> img(2,2,1,3, // Construct a 2x2 color (RGB) image.
0,255,0,255, // Set the 4 values for the red component.
0,0,255,255, // Set the 4 values for the green component.
64,64,64,64); // Set the 4 values for the blue component.
img.resize(150,150).display();
ref_constructor1.jpg

Definition at line 9568 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const double  value0,
const double  value1,
  ... 
)
inline

Construct image with specified size and initialize pixel values from a sequence of doubles.

Construct a new image instance of size size_x x size_y x size_z x size_c, with pixels of type T, and initialize pixel values from the specified sequence of doubles value0,value1,...

Parameters
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
value0First value of the initialization sequence (must be a double).
value1Second value of the initialization sequence (must be a double).
...
Note
  • Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...), but takes a sequence of double values instead of integers.
Warning
  • You must specify exactly dx*dy*dz*dc doubles in the initialization sequence. Otherwise, the constructor may crash or fill your image with garbage. For instance, the code below will probably crash on most platforms:
    const CImg<float> img(2,2,1,1, 0.5,0.5,255,255); // FAIL: The two last arguments are 'int', not 'double'!

Definition at line 9711 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const char *const  values,
const bool  repeat_values 
)
inline

Construct image with specified size and initialize pixel values from a value string.

Construct a new image instance of size size_x x size_y x size_z x size_c, with pixels of type T, and initializes pixel values from the specified string values.

Parameters
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
valuesValue string describing the way pixel values are set.
repeat_valuesTells if the value filling process is repeated over the image.
Note
  • Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills the pixel buffer with values described in the value string values.
  • Value string values may describe two different filling processes:
    • Either values is a sequences of values assigned to the image pixels, as in "1,2,3,7,8,2". In this case, set repeat_values to true to periodically fill the image with the value sequence.
    • Either, values is a formula, as in "cos(x/10)*sin(y/20)". In this case, parameter repeat_values is pointless.
  • For both cases, specifying repeat_values is mandatory. It disambiguates the possible overloading of constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,T) with T being a const char*.
  • A CImgArgumentException is thrown when an invalid value string values is specified.
Example
const CImg<float> img1(129,129,1,3,"0,64,128,192,255",true), // Construct image filled from a value sequence.
img2(129,129,1,3,"if(c==0,255*abs(cos(x/10)),1.8*y)",false); // Construct image filled from a formula.
(img1,img2).display();
ref_constructor2.jpg

Definition at line 9748 of file CImg.h.

template<typename T>
template<typename t >
cimg_library_suffixed::CImg< T >::CImg ( const t *const  values,
const unsigned int  size_x,
const unsigned int  size_y = 1,
const unsigned int  size_z = 1,
const unsigned int  size_c = 1,
const bool  is_shared = false 
)
inline

Construct image with specified size and initialize pixel values from a memory buffer.

Construct a new image instance of size size_x x size_y x size_z x size_c, with pixels of type T, and initializes pixel values from the specified t* memory buffer.

Parameters
valuesPointer to the input memory buffer.
size_xImage width().
size_yImage height().
size_zImage depth().
size_cImage spectrum() (number of channels).
is_sharedTells if input memory buffer must be shared by the current instance.
Note
  • If is_shared is false, the image instance allocates its own pixel buffer, and values from the specified input buffer are copied to the instance buffer. If buffer types T and t are different, a regular static cast is performed during buffer copy.
  • Otherwise, the image instance does not allocate a new buffer, and uses the input memory buffer as its own pixel buffer. This case requires that types T and t are the same. Later, destroying such a shared image will not deallocate the pixel buffer, this task being obviously charged to the initial buffer allocator.
  • A CImgInstanceException is thrown when the pixel buffer cannot be allocated (e.g. when requested size is too big for available memory).
Warning
  • You must take care when operating on a shared image, since it may have an invalid pixel buffer pointer data() (e.g. already deallocated).
Example
unsigned char tab[256*256] = { 0 };
CImg<unsigned char> img1(tab,256,256,1,1,false), // Construct new non-shared image from buffer 'tab'.
img2(tab,256,256,1,1,true); // Construct new shared-image from buffer 'tab'.
tab[1024] = 255; // Here, 'img2' is indirectly modified, but not 'img1'.

Definition at line 9796 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const char *const  filename)
inlineexplicit

Construct image from reading an image file.

Construct a new image instance with pixels of type T, and initialize pixel values with the data read from an image file.

Parameters
filenameFilename, as a C-string.
Note
  • Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it reads the image dimensions and pixel values from the specified image file.
  • The recognition of the image file format by CImg higly depends on the tools installed on your system and on the external libraries you used to link your code against.
  • Considered pixel type T should better fit the file format specification, or data loss may occur during file load (e.g. constructing a CImg<unsigned char> from a float-valued image file).
  • A CImgIOException is thrown when the specified filename cannot be read, or if the file format is not recognized.
Example
const CImg<float> img("reference.jpg");
img.display();
ref_image.jpg

Definition at line 9863 of file CImg.h.

template<typename T>
template<typename t >
cimg_library_suffixed::CImg< T >::CImg ( const CImg< t > &  img)
inline

Construct image copy.

Construct a new image instance with pixels of type T, as a copy of an existing CImg<t> instance.

Parameters
imgInput image to copy.
Note
  • Constructed copy has the same size width() x height() x depth() x spectrum() and pixel values as the input image img.
  • If input image img is shared and if types T and t are the same, the constructed copy is also shared, and shares its pixel buffer with img. Modifying a pixel value in the constructed copy will thus also modifies it in the input image img. This behavior is needful to allow functions to return shared images.
  • Otherwise, the constructed copy allocates its own pixel buffer, and copies pixel values from the input image img into its buffer. The copied pixel values may be eventually statically casted if types T and t are different.
  • Constructing a copy from an image img when types t and T are the same is significantly faster than with different types.
  • A CImgInstanceException is thrown when the pixel buffer cannot be allocated (e.g. not enough available memory).

Definition at line 9887 of file CImg.h.

template<typename T>
template<typename t >
cimg_library_suffixed::CImg< T >::CImg ( const CImg< t > &  img,
const bool  is_shared 
)
inline

Advanced copy constructor.

Construct a new image instance with pixels of type T, as a copy of an existing CImg<t> instance, while forcing the shared state of the constructed copy.

Parameters
imgInput image to copy.
is_sharedTells about the shared state of the constructed copy.
Note
  • Similar to CImg(const CImg<t>&), except that it allows to decide the shared state of the constructed image, which does not depend anymore on the shared state of the input image img:
    • If is_shared is true, the constructed copy will share its pixel buffer with the input image img. For that case, the pixel types T and t must be the same.
    • If is_shared is false, the constructed copy will allocate its own pixel buffer, whether the input image img is shared or not.
  • A CImgArgumentException is thrown when a shared copy is requested with different pixel types T and t.

Definition at line 9941 of file CImg.h.

template<typename T>
template<typename t >
cimg_library_suffixed::CImg< T >::CImg ( const CImg< t > &  img,
const char *const  dimensions 
)
inline

Construct image with dimensions borrowed from another image.

Construct a new image instance with pixels of type T, and size get from some dimensions of an existing CImg<t> instance.

Parameters
imgInput image from which dimensions are borrowed.
dimensionsC-string describing the image size along the X,Y,Z and C-dimensions.
Note
Example
const CImg<float> img1(256,128,1,3), // 'img1' is a 256x128x1x3 image.
img2(img1,"xyzc"), // 'img2' is a 256x128x1x3 image.
img3(img1,"y,x,z,c"), // 'img3' is a 128x256x1x3 image.
img4(img1,"c,x,y,3",0), // 'img4' is a 3x128x256x3 image (with pixels initialized to '0').

Definition at line 10007 of file CImg.h.

template<typename T>
template<typename t >
cimg_library_suffixed::CImg< T >::CImg ( const CImg< t > &  img,
const char *const  dimensions,
const T  value 
)
inline

Construct image with dimensions borrowed from another image and initialize pixel values.

Construct a new image instance with pixels of type T, and size get from the dimensions of an existing CImg<t> instance, and set all pixel values to specified value.

Parameters
imgInput image from which dimensions are borrowed.
dimensionsString describing the image size along the X,Y,Z and V-dimensions.
valueValue used for initialization.
Note

Definition at line 10023 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::CImg ( const CImgDisplay disp)
inlineexplicit

Construct image from a display window.

Construct a new image instance with pixels of type T, as a snapshot of an existing CImgDisplay instance.

Parameters
dispInput display window.
Note
  • The width() and height() of the constructed image instance are the same as the specified CImgDisplay.
  • The depth() and spectrum() of the constructed image instance are respectively set to 1 and 3 (i.e. a 2d color image).
  • The image pixels are read as 8-bits RGB values.

Definition at line 10038 of file CImg.h.

Member Function Documentation

template<typename T>
template<int K>
static void cimg_library_suffixed::CImg< T >::_cimg_recursive_apply ( T *  data,
const Tfloat  filter[],
const int  N,
const unsigned long  off,
const int  order,
const bool  boundary_conditions 
)
inlinestatic
Parameters
ptrthe pointer of the data
filterthe coefficient of the filter in the following order [n,n-1,n-2,n-3].
Nsize of the data
offthe offset between two data point
orderthe order of the filter 0 (smoothing), 1st derivtive, 2nd derivative, 3rd derivative
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann }.
Note
dirichlet boundary conditions have a strange behavior. And boundary condition should be corrected using Bill Triggs method (IEEE trans on Sig Proc 2005).

Definition at line 25684 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::abs ( )
inline

Compute the absolute value of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its absolute value $|I_{(x,y,z,c)}|$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15207 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::acos ( )
inline

Compute the arccosine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its arccosine $\mathrm{acos}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15410 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::append ( const CImg< t > &  img,
const char  axis = 'x',
const float  align = 0 
)
inline

Append two images along specified axis.

Parameters
imgImage to append with instance image.
axisAppending axis. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppend alignment in [0,1].

Definition at line 24402 of file CImg.h.

template<typename T>
template<typename tf , typename tp , typename tff >
CImg<T>& cimg_library_suffixed::CImg< T >::append_object3d ( CImgList< tf > &  primitives,
const CImg< tp > &  obj_vertices,
const CImgList< tff > &  obj_primitives 
)
inline

Merge two 3d objects together.

Parameters
[in,out]primitivesPrimitives data of the current 3d object.
obj_verticesVertices data of the additional 3d object.
obj_primitivesPrimitives data of the additional 3d object.

Definition at line 28937 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::asin ( )
inline

Compute the arcsine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its arcsine $\mathrm{asin}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15432 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( )
inline

Construct empty image .

In-place version of the default constructor CImg(). It simply resets the instance to an empty image.

Definition at line 10058 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const unsigned int  size_x,
const unsigned int  size_y = 1,
const unsigned int  size_z = 1,
const unsigned int  size_c = 1 
)
inline

Construct image with specified size .

In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int).

Definition at line 10068 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const T  value 
)
inline

Construct image with specified size and initialize pixel values .

In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,T).

Definition at line 10100 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const int  value0,
const int  value1,
  ... 
)
inline

Construct image with specified size and initialize pixel values from a sequence of integers .

In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...).

Definition at line 10109 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const double  value0,
const double  value1,
  ... 
)
inline

Construct image with specified size and initialize pixel values from a sequence of doubles .

In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,double,double,...).

Definition at line 10121 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c,
const char *const  values,
const bool  repeat_values 
)
inline

Construct image with specified size and initialize pixel values from a value string .

In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,const char*,bool).

Definition at line 10133 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const t *const  values,
const unsigned int  size_x,
const unsigned int  size_y = 1,
const unsigned int  size_z = 1,
const unsigned int  size_c = 1 
)
inline

Construct image with specified size and initialize pixel values from a memory buffer .

In-place version of the constructor CImg(const t*,unsigned int,unsigned int,unsigned int,unsigned int).

Definition at line 10144 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const char *const  filename)
inline

Construct image from reading an image file .

In-place version of the constructor CImg(const char*).

Definition at line 10223 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const CImg< t > &  img)
inline

Construct image copy .

In-place version of the constructor CImg(const CImg<t>&).

Definition at line 10232 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const CImg< t > &  img,
const bool  is_shared 
)
inline

In-place version of the advanced copy constructor.

In-place version of the constructor CImg(const CImg<t>&,bool).

Definition at line 10241 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const CImg< t > &  img,
const char *const  dimensions 
)
inline

Construct image with dimensions borrowed from another image .

In-place version of the constructor CImg(const CImg<t>&,const char*).

Definition at line 10250 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const CImg< t > &  img,
const char *const  dimensions,
const T  value 
)
inline

Construct image with dimensions borrowed from another image and initialize pixel values .

In-place version of the constructor CImg(const CImg<t>&,const char*,T).

Definition at line 10283 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::assign ( const CImgDisplay disp)
inline

Construct image from a display window .

In-place version of the constructor CImg(const CImgDisplay&).

Definition at line 10291 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::at ( const int  offset,
const T  out_value 
)
inline

Access to a pixel value at a specified offset, using Dirichlet boundary conditions.

Return a reference to the pixel value of the image instance located at a specified offset, or to a specified default value in case of out-of-bounds access.

Parameters
offsetOffset to the desired pixel value.
out_valueDefault value returned if offset is outside image bounds.
Note
  • Writing img.at(offset,out_value) is similar to img[offset], except that if offset is outside bounds (e.g. offset<0 or offset>=img.size()), a reference to a value out_value is safely returned instead.
  • Due to the additional boundary checking operation, this method is slower than operator()(). Use it when you are not sure about the validity of the specified pixel offset.

Definition at line 12246 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::at ( const int  offset)
inline

Access to a pixel value at a specified offset, using Neumann boundary conditions.

Return a reference to the pixel value of the image instance located at a specified offset, or to the nearest pixel location in the image instance in case of out-of-bounds access.

Parameters
offsetOffset to the desired pixel value.
Note
  • Similar to at(int,const T), except that an out-of-bounds access returns the value of the nearest pixel in the image instance, regarding the specified offset, i.e.
    • If offset<0, then img[0] is returned.
    • If offset>=img.size(), then img[img.size()-1] is returned.
  • Due to the additional boundary checking operation, this method is slower than operator()(). Use it when you are not sure about the validity of the specified pixel offset.
  • If you know your image instance is not empty, you may rather use the slightly faster method _at(int).

Definition at line 12269 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::atan ( )
inline

Compute the arctangent of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its arctangent $\mathrm{atan}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15454 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::atan2 ( const CImg< t > &  img)
inline

Compute the arctangent2 of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its arctangent2 $\mathrm{atan2}(I_{(x,y,z,c)})$.

Parameters
imgImage whose pixel values specify the second argument of the atan2() function.
Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.
Example
const CImg<float>
img_x(100,100,1,1,"x-w/2",false), // Define an horizontal centered gradient, from '-width/2' to 'width/2'.
img_y(100,100,1,1,"y-h/2",false), // Define a vertical centered gradient, from '-height/2' to 'height/2'.
img_atan2 = img_y.get_atan2(img_x); // Compute atan2(y,x) for each pixel value.
(img_x,img_y,img_atan2).display();

Definition at line 15486 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atX ( const int  x,
const int  y,
const int  z,
const int  c,
const T  out_value 
)
inline

Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate.

Return a reference to the pixel value of the image instance located at (x,y,z,c), or to a specified default value in case of out-of-bounds access along the X-axis.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
out_valueDefault value returned if (x,y,z,c) is outside image bounds.
Note
  • Similar to operator()(), except that an out-of-bounds access along the X-axis returns the specified value out_value.
  • Due to the additional boundary checking operation, this method is slower than operator()(). Use it when you are not sure about the validity of the specified pixel coordinates.
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12313 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atX ( const int  x,
const int  y = 0,
const int  z = 0,
const int  c = 0 
)
inline

Access to a pixel value, using Neumann boundary conditions for the X-coordinate.

Return a reference to the pixel value of the image instance located at (x,y,z,c), or to the nearest pixel location in the image instance in case of out-of-bounds access along the X-axis.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Similar to at(int,int,int,int,const T), except that an out-of-bounds access returns the value of the nearest pixel in the image instance, regarding the specified X-coordinate.
  • Due to the additional boundary checking operation, this method is slower than operator()(). Use it when you are not sure about the validity of the specified pixel coordinates.
  • If you know your image instance is not empty, you may rather use the slightly faster method _at(int,int,int,int).
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12340 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXY ( const int  x,
const int  y,
const int  z,
const int  c,
const T  out_value 
)
inline

Access to a pixel value, using Dirichlet boundary conditions for the X and Y-coordinates.

Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on X and Y-coordinates.

Definition at line 12369 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXY ( const int  x,
const int  y,
const int  z = 0,
const int  c = 0 
)
inline

Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates.

Similar to atX(int,int,int,int), except that boundary checking is performed both on X and Y-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _atXY(int,int,int,int).

Definition at line 12385 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXYZ ( const int  x,
const int  y,
const int  z,
const int  c,
const T  out_value 
)
inline

Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates.

Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on X,Y and Z-coordinates.

Definition at line 12415 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXYZ ( const int  x,
const int  y,
const int  z,
const int  c = 0 
)
inline

Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates.

Similar to atX(int,int,int,int), except that boundary checking is performed both on X,Y and Z-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _atXYZ(int,int,int,int).

Definition at line 12432 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXYZC ( const int  x,
const int  y,
const int  z,
const int  c,
const T  out_value 
)
inline

Access to a pixel value, using Dirichlet boundary conditions.

Similar to atX(int,int,int,int,const T), except that boundary checking is performed on all X,Y,Z and C-coordinates.

Definition at line 12464 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::atXYZC ( const int  x,
const int  y,
const int  z,
const int  c 
)
inline

Access to a pixel value, using Neumann boundary conditions.

Similar to atX(int,int,int,int), except that boundary checking is performed on all X,Y,Z and C-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _atXYZC(int,int,int,int).

Definition at line 12482 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::autocrop ( const T *const  color = 0,
const char *const  axes = "zyx" 
)
inline

Autocrop image region, regarding the specified background color.

Parameters
colorColor used for the crop. If 0, color is guessed.
axesAxes used for the crop.

Definition at line 23534 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::back ( )
inline

Return a reference to the last pixel value.

Note
  • Writing img.end() is equivalent to img[img.size()-1], or img(img.width()-1,img.height()-1,img.depth()-1,img.spectrum()-1).
  • It has been mainly defined for compatibility with STL naming conventions.

Definition at line 12224 of file CImg.h.

template<typename T>
iterator cimg_library_suffixed::CImg< T >::begin ( )
inline

Return a CImg<T>::iterator pointing to the first pixel value.

Note
  • Equivalent to data().
  • It has been mainly defined for compatibility with STL naming conventions.

Definition at line 12168 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::blur ( const float  sigma_x,
const float  sigma_y,
const float  sigma_z,
const bool  boundary_conditions = true,
const bool  is_gaussian = false 
)
inline

Blur image.

Parameters
sigma_xStandard deviation of the blur, along the X-axis.
sigma_yStandard deviation of the blur, along the Y-axis.
sigma_zStandard deviation of the blur, along the Z-axis.
boundary_conditionsBoundary conditions. Can be { false=dirichlet | true=neumann }.
is_gaussianTells if the blur uses a gaussian (true) or quasi-gaussian (false) kernel.
Note
  • The blur is computed as a 0-order Deriche filter. This is not a gaussian blur.
  • This is a recursive algorithm, not depending on the values of the standard deviations.
See also
deriche(), vanvliet().

Definition at line 25840 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::blur ( const float  sigma,
const bool  boundary_conditions = true,
const bool  is_gaussian = false 
)
inline

Blur image isotropically.

Parameters
sigmaStandard deviation of the blur.
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann }.a
See also
deriche(), vanvliet().

Definition at line 25868 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::blur_anisotropic ( const CImg< t > &  G,
const float  amplitude = 60,
const float  dl = 0.8f,
const float  da = 30,
const float  gauss_prec = 2,
const unsigned int  interpolation_type = 0,
const bool  is_fast_approx = 1 
)
inline

Blur image anisotropically, directed by a field of diffusion tensors.

Parameters
GField of square roots of diffusion tensors/vectors used to drive the smoothing.
amplitudeAmplitude of the smoothing.
dlSpatial discretization.
daAngular discretization.
gauss_precPrecision of the diffusion process.
interpolation_typeInterpolation scheme. Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }.
is_fast_approxTells if a fast approximation of the gaussian function is used or not.

Definition at line 25890 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::blur_anisotropic ( const float  amplitude,
const float  sharpness = 0.7f,
const float  anisotropy = 0.6f,
const float  alpha = 0.6f,
const float  sigma = 1.1f,
const float  dl = 0.8f,
const float  da = 30,
const float  gauss_prec = 2,
const unsigned int  interpolation_type = 0,
const bool  is_fast_approx = true 
)
inline

Blur image anisotropically, in an edge-preserving way.

Parameters
amplitudeAmplitude of the smoothing.
sharpnessSharpness.
anisotropyAnisotropy.
alphaStandard deviation of the gradient blur.
sigmaStandard deviation of the structure tensor blur.
dlSpatial discretization.
daAngular discretization.
gauss_precPrecision of the diffusion process.
interpolation_typeInterpolation scheme. Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }.
is_fast_approxTells if a fast approximation of the gaussian function is used or not.

Definition at line 26170 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::blur_bilateral ( const CImg< t > &  guide,
const float  sigma_x,
const float  sigma_y,
const float  sigma_z,
const float  sigma_r,
const int  bgrid_x,
const int  bgrid_y,
const int  bgrid_z,
const int  bgrid_r,
const bool  interpolation_type = true 
)
inline

Blur image, with the joint bilateral filter.

Parameters
guideImage used to model the smoothing weights.
sigma_xAmount of blur along the X-axis.
sigma_yAmount of blur along the Y-axis.
sigma_zAmount of blur along the Z-axis.
sigma_rAmount of blur along the value axis.
bgrid_xSize of the bilateral grid along the X-axis.
bgrid_ySize of the bilateral grid along the Y-axis.
bgrid_zSize of the bilateral grid along the Z-axis.
bgrid_rSize of the bilateral grid along the value axis.
interpolation_typeUse interpolation for image slicing.
Note
This algorithm uses the optimisation technique proposed by S. Paris and F. Durand, in ECCV'2006 (extended for 3d volumetric images).

Definition at line 26203 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::blur_bilateral ( const CImg< t > &  guide,
const float  sigma_s,
const float  sigma_r,
const int  bgrid_s = -33,
const int  bgrid_r = 32,
const bool  interpolation_type = true 
)
inline

Blur image using the joint bilateral filter.

Parameters
guideImage used to model the smoothing weights.
sigma_sAmount of blur along the XYZ-axes.
sigma_rAmount of blur along the value axis.
bgrid_sSize of the bilateral grid along the XYZ-axes.
bgrid_rSize of the bilateral grid along the value axis.
interpolation_typeUse interpolation for image slicing.

Definition at line 26315 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::blur_median ( const unsigned int  n,
const float  threshold = 0 
)
inline

Blur image with the median filter.

Parameters
nSize of the median filter.
thresholdThreshold used to discard pixels too far from the current pixel value in the median computation.

Definition at line 26556 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::blur_patch ( const float  sigma_s,
const float  sigma_p,
const unsigned int  patch_size = 3,
const unsigned int  lookup_size = 4,
const float  smoothness = 0,
const bool  is_fast_approx = true 
)
inline

Blur image using patch-based space.

Parameters
sigma_sAmount of blur along the XYZ-axes.
sigma_pAmount of blur along the value axis.
patch_sizeSize of the patchs.
lookup_sizeSize of the window to search similar patchs.
smoothnessSmoothness for the patch comparison.
is_fast_approxTells if a fast approximation of the gaussian function is used or not.

Definition at line 26341 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::box3d ( CImgList< tf > &  primitives,
const float  size_x = 200,
const float  size_y = 100,
const float  size_z = 100 
)
inlinestatic

Generate a 3d box object.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
size_xThe width of the box (dimension along the X-axis).
size_yThe height of the box (dimension along the Y-axis).
size_zThe depth of the box (dimension along the Z-axis).
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::box3d(faces3d,10,20,30);
CImg<unsigned char>().display_object3d("Box3d",points3d,faces3d);
ref_box3d.jpg

Definition at line 29935 of file CImg.h.

template<typename T>
template<typename tp , typename tc , typename to >
CImg<T>& cimg_library_suffixed::CImg< T >::CImg3dtoobject3d ( CImgList< tp > &  primitives,
CImgList< tc > &  colors,
CImgList< to > &  opacities,
const bool  full_check = true 
)
inline

Convert CImg3d representation into a 3d object.

Parameters
[out]primitivesPrimitives data of the 3d object.
[out]colorsColors data of the 3d object.
[out]opacitiesOpacities data of the 3d object.
full_checkTells if full checking of the 3d object must be performed.

Definition at line 30411 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::clear ( )
inline

Construct empty image .

Equivalent to assign().

Note
  • It has been defined for compatibility with STL naming conventions.

Definition at line 10302 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::columns ( const int  x0,
const int  x1 
)
inline

Return specified range of image columns.

Parameters
x0Starting image column.
x1Ending image column.

Definition at line 23661 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::cone3d ( CImgList< tf > &  primitives,
const float  radius = 50,
const float  size_z = 100,
const unsigned int  subdivisions = 24 
)
inlinestatic

Generate a 3d cone.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
radiusThe radius of the cone basis.
size_zThe cone's height.
subdivisionsThe number of basis angular subdivisions.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::cone3d(faces3d,50);
CImg<unsigned char>().display_object3d("Cone3d",points3d,faces3d);
ref_cone3d.jpg

Definition at line 29961 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::contains ( const T &  pixel,
t &  x,
t &  y,
t &  z,
t &  c 
) const
inline

Test if pixel value is inside image bounds and get its X,Y,Z and C-coordinates.

Return true, if specified reference refers to a pixel value inside bounds of the image instance, and false otherwise.

Parameters
pixelReference to pixel value to test.
[out]xX-coordinate of the pixel value, if test succeeds.
[out]yY-coordinate of the pixel value, if test succeeds.
[out]zZ-coordinate of the pixel value, if test succeeds.
[out]cC-coordinate of the pixel value, if test succeeds.
Note
  • Useful to convert an offset to a buffer value into pixel value coordinates:
    const CImg<float> img(100,100,1,3); // Construct a 100x100 RGB color image.
    const unsigned long offset = 1249; // Offset to the pixel (49,12,0,0).
    unsigned int x,y,z,c;
    if (img.contains(img[offset],x,y,z,c)) { // Convert offset to (x,y,z,c) coordinates.
    std::printf("Offset %u refers to pixel located at (%u,%u,%u,%u).\n",
    offset,x,y,z,c);
    }

Definition at line 13671 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::contains ( const T &  pixel,
t &  x,
t &  y,
t &  z 
) const
inline

Test if pixel value is inside image bounds and get its X,Y and Z-coordinates.

Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X,Y and Z-coordinates are set.

Definition at line 13690 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::contains ( const T &  pixel,
t &  x,
t &  y 
) const
inline

Test if pixel value is inside image bounds and get its X and Y-coordinates.

Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X and Y-coordinates are set.

Definition at line 13707 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::contains ( const T &  pixel,
t &  x 
) const
inline

Test if pixel value is inside image bounds and get its X-coordinate.

Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X-coordinate is set.

Definition at line 13722 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::contains ( const T &  pixel) const
inline

Test if pixel value is inside image bounds.

Similar to contains(const T&,t&,t&,t&,t&) const, except that no pixel coordinates are set.

Definition at line 13733 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::containsXYZC ( const int  x,
const int  y = 0,
const int  z = 0,
const int  c = 0 
) const
inline

Test if specified coordinates are inside image bounds.

Return true if pixel located at (x,y,z,c) is inside bounds of the image instance, and false otherwise.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Return true only if all these conditions are verified:

Definition at line 13645 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::convolve ( const CImg< t > &  mask,
const unsigned int  boundary_conditions = 1,
const bool  is_normalized = false 
)
inline

Convolve image by a mask.

Parameters
mask= the correlation kernel.
boundary_conditions= the border condition type (0=zero, 1=dirichlet)
is_normalized= enable local normalization.
Note
  • The result res of the convolution of an image img by a mask mask is defined to be: res(x,y,z) = sum_{i,j,k} img(x-i,y-j,z-k)*mask(i,j,k)

Definition at line 24780 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::cool_LUT256 ( )
inlinestatic

Return colormap "cool", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_cool.jpg

Definition at line 19980 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::correlate ( const CImg< t > &  mask,
const unsigned int  boundary_conditions = 1,
const bool  is_normalized = false 
)
inline

Correlate image by a mask.

Parameters
mask= the correlation kernel.
boundary_conditions= the border condition type (0=zero, 1=dirichlet)
is_normalized= enable local normalization.
Note
  • The correlation of the image instance *this by the mask mask is defined to be: res(x,y,z) = sum_{i,j,k} (*this)(x+i,y+j,z+k)*mask(i,j,k).

Definition at line 24447 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::cos ( )
inline

Compute the cosine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its cosine $\cos(I_{(x,y,z,c)})$.

Note
  • Pixel values are regarded as being in radian.
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15255 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::cosh ( )
inline

Compute the hyperbolic cosine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its hyperbolic cosine $\mathrm{cosh}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15344 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::crop ( const int  x0,
const int  y0,
const int  z0,
const int  c0,
const int  x1,
const int  y1,
const int  z1,
const int  c1,
const bool  boundary_conditions = false 
)
inline

Crop image region.

Parameters
x0= X-coordinate of the upper-left crop rectangle corner.
y0= Y-coordinate of the upper-left crop rectangle corner.
z0= Z-coordinate of the upper-left crop rectangle corner.
c0= C-coordinate of the upper-left crop rectangle corner.
x1= X-coordinate of the lower-right crop rectangle corner.
y1= Y-coordinate of the lower-right crop rectangle corner.
z1= Z-coordinate of the lower-right crop rectangle corner.
c1= C-coordinate of the lower-right crop rectangle corner.
boundary_conditions= Dirichlet (false) or Neumann border conditions.

Definition at line 23430 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::cross ( const CImg< t > &  img)
inline

Compute the cross product between two 1x3 images, viewed as 3d vectors.

Parameters
imgImage used as the second argument of the cross product.
Note
The first argument of the cross product is *this.

Definition at line 16940 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::cube_LUT256 ( )
inlinestatic

Return colormap "cube", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_cube.jpg

Definition at line 20027 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atX ( const float  fx,
const int  y,
const int  z,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate.

Return a cubicly-interpolated pixel value of the image instance located at (fx,y,z,c), or a specified default value in case of out-of-bounds access along the X-axis. The cubic interpolation uses Hermite splines.

Parameters
fxd X-coordinate of the pixel value (float-valued).
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
out_valueDefault value returned if (fx,y,z,c) is outside image bounds.
Note
  • Similar to linear_atX(float,int,int,int,const T) const, except that the returned pixel value is approximated by a cubic interpolation along the X-axis.
  • The type of the returned pixel value is extended to float, if the pixel type T is not float-valued.
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12834 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atX ( const float  fx,
const int  y,
const int  z,
const int  c,
const T  out_value,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate.

Similar to cubic_atX(float,int,int,int,const T) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 12850 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atX ( const float  fx,
const int  y = 0,
const int  z = 0,
const int  c = 0 
) const
inline

Return pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate.

Return a cubicly-interpolated pixel value of the image instance located at (fx,y,z,c), or the value of the nearest pixel location in the image instance in case of out-of-bounds access along the X-axis. The cubic interpolation uses Hermite splines.

Parameters
fxX-coordinate of the pixel value (float-valued).
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Similar to cubic_atX(float,int,int,int,const T) const, except that the returned pixel value is approximated by a cubic interpolation along the X-axis.
  • If you know your image instance is not empty, you may rather use the slightly faster method _cubic_atX(float,int,int,int).
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12873 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atX ( const float  fx,
const int  y,
const int  z,
const int  c,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate.

Similar to cubic_atX(float,int,int,int) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 12901 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXY ( const float  fx,
const float  fy,
const int  z,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X and Y-coordinates.

Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking are achieved both for X and Y-coordinates.

Definition at line 12918 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXY ( const float  fx,
const float  fy,
const int  z,
const int  c,
const T  out_value,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y-coordinates.

Similar to cubic_atXY(float,float,int,int,const T) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 12944 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXY ( const float  fx,
const float  fy,
const int  z = 0,
const int  c = 0 
) const
inline

Return pixel value, using cubic interpolation and Neumann boundary conditions for the X and Y-coordinates.

Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking are achieved for both X and Y-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _cubic_atXY(float,float,int,int).

Definition at line 12958 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXY ( const float  fx,
const float  fy,
const int  z,
const int  c,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y-coordinates.

Similar to cubic_atXY(float,float,int,int) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 12996 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXYZ ( const float  fx,
const float  fy,
const float  fz,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates.

Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking are achieved both for X,Y and Z-coordinates.

Definition at line 13013 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXYZ ( const float  fx,
const float  fy,
const float  fz,
const int  c,
const T  out_value,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Dirichlet boundary conditions for the XYZ-coordinates.

Similar to cubic_atXYZ(float,float,float,int,const T) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 13080 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXYZ ( const float  fx,
const float  fy,
const float  fz,
const int  c = 0 
) const
inline

Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates.

Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking are achieved both for X,Y and Z-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _cubic_atXYZ(float,float,float,int).

Definition at line 13094 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::cubic_atXYZ ( const float  fx,
const float  fy,
const float  fz,
const int  c,
const Tfloat  min_value,
const Tfloat  max_value 
) const
inline

Return damped pixel value, using cubic interpolation and Neumann boundary conditions for the XYZ-coordinates.

Similar to cubic_atXYZ(float,float,float,int) const, except that you can specify the authorized minimum and maximum of the returned value.

Definition at line 13174 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::cut ( const T  min_value,
const T  max_value 
)
inline

Cut pixel values in specified range.

Parameters
min_valueMinimum desired value of the resulting image.
max_valueMaximum desired value of the resulting image.
Example
const CImg<float> img("reference.jpg"), res = img.get_cut(160,220);
(img,res).display();
ref_cut.jpg

Definition at line 19113 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::cylinder3d ( CImgList< tf > &  primitives,
const float  radius = 50,
const float  size_z = 100,
const unsigned int  subdivisions = 24 
)
inlinestatic

Generate a 3d cylinder.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
radiusThe radius of the cylinder basis.
size_zThe cylinder's height.
subdivisionsThe number of basis angular subdivisions.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::cylinder3d(faces3d,50);
CImg<unsigned char>().display_object3d("Cylinder3d",points3d,faces3d);
ref_cylinder3d.jpg

Definition at line 29998 of file CImg.h.

template<typename T>
T* cimg_library_suffixed::CImg< T >::data ( )
inline

Return a pointer to the first pixel value.

Return a T*, or a const T* pointer to the first value in the pixel buffer of the image instance, whether the instance is const or not.

Note

Definition at line 12094 of file CImg.h.

template<typename T>
T* cimg_library_suffixed::CImg< T >::data ( const unsigned int  x,
const unsigned int  y = 0,
const unsigned int  z = 0,
const unsigned int  c = 0 
)
inline

Return a pointer to a located pixel value.

Return a T*, or a const T* pointer to the value located at (x,y,z,c) in the pixel buffer of the image instance, whether the instance is const or not.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Writing img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)). Thus, this method has the same properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int).

Definition at line 12132 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::default_LUT256 ( )
inlinestatic

Return colormap "default", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_default.jpg

Definition at line 19889 of file CImg.h.

template<typename T>
int cimg_library_suffixed::CImg< T >::depth ( ) const
inline

Return the number of image slices.

Return the image depth, i.e. the image dimension along the Z-axis.

Note
  • The depth() of an empty image is equal to 0.
  • depth() is typically equal to 1 when considering usual 2d images. When depth()> 1, the image is said to be volumetric.
  • depth() returns an int, although the image depth is internally stored as an unsigned int. Using an int is safer and prevents arithmetic traps possibly encountered when doing calculations involving unsigned int variables. Access to the initial unsigned int variable is possible (though not recommended) by (*this)._depth.

Definition at line 12040 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::deriche ( const float  sigma,
const int  order = 0,
const char  axis = 'x',
const bool  boundary_conditions = true 
)
inline

Apply recursive Deriche filter.

Parameters
sigmaStandard deviation of the filter.
orderOrder of the filter. Can be { 0=smooth-filter | 1=1st-derivative | 2=2nd-derivative }.
axisAxis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }.
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann }.

Definition at line 25565 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::diagonal ( )
inline

Resize image to become a diagonal matrix.

Note
Transform the image as a diagonal matrix so that each of its initial value becomes a diagonal coefficient.

Definition at line 16868 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::diffusion_tensors ( const float  sharpness = 0.7f,
const float  anisotropy = 0.6f,
const float  alpha = 0.6f,
const float  sigma = 1.1f,
const bool  is_sqrt = false 
)
inline

Compute field of diffusion tensors for edge-preserving smoothing.

Parameters
sharpnessSharpness
anisotropyAnisotropy
alphaStandard deviation of the gradient blur.
sigmaStandard deviation of the structure tensor blur.
is_sqrtTells if the square root of the tensor field is computed instead.

Definition at line 27405 of file CImg.h.

template<typename T>
template<typename tf , typename t >
static CImg<T> cimg_library_suffixed::CImg< T >::dijkstra ( const tf &  distance,
const unsigned int  nb_nodes,
const unsigned int  starting_node,
const unsigned int  ending_node,
CImg< t > &  previous_node 
)
inlinestatic

Compute minimal path in a graph, using the Dijkstra algorithm.

Parameters
distanceAn object having operator()(unsigned int i, unsigned int j) which returns distance between two nodes (i,j).
nb_nodesNumber of graph nodes.
starting_nodeIndice of the starting node.
ending_nodeIndice of the ending node (set to ~0U to ignore ending node).
previous_nodeArray that gives the previous node indice in the path to the starting node (optional parameter).
Returns
Array of distances of each node to the starting node.

Definition at line 17706 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::dijkstra ( const unsigned int  starting_node,
const unsigned int  ending_node,
CImg< t > &  previous_node 
)
inline

Return minimal path in a graph, using the Dijkstra algorithm.

Parameters
starting_nodeIndice of the starting node.
ending_nodeIndice of the ending node.
previous_nodeArray that gives the previous node indice in the path to the starting node (optional parameter).
Returns
Array of distances of each node to the starting node.
Note
image instance corresponds to the adjacency matrix of the graph.

Definition at line 17776 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::dilate ( const CImg< t > &  mask,
const unsigned int  boundary_conditions = 1,
const bool  is_normalized = false 
)
inline

Dilate image by a structuring element.

Parameters
maskStructuring element.
boundary_conditionsBoundary conditions.
is_normalizedTells if the erosion is locally normalized.

Definition at line 25090 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::dilate ( const unsigned int  sx,
const unsigned int  sy,
const unsigned int  sz = 1 
)
inline

Dilate image by a rectangular structuring element of specified size.

Parameters
sxWidth of the structuring element.
syHeight of the structuring element.
szDepth of the structuring element.

Definition at line 25219 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::dilate ( const unsigned int  s)
inline

Dilate image by a square structuring element of specified size.

Parameters
sSize of the structuring element.

Definition at line 25363 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::discard ( const T  value)
inline

Discard specified value in the image buffer.

Parameters
valueValue to discard.
Note
Discarded values will change the image geometry, so the resulting image is returned as a one-column vector.

Definition at line 18784 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::discard ( const CImg< t > &  values)
inline

Discard specified sequence of values in the image buffer.

Parameters
valuesSequence of values to discard.
Note
Discarded values will change the image geometry, so the resulting image is returned as a one-column vector.

Definition at line 18805 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::displacement ( const CImg< T > &  source,
const float  smoothness = 0.1f,
const float  precision = 5.0f,
const unsigned int  nb_scales = 0,
const unsigned int  iteration_max = 10000,
const bool  is_backward = false 
)
inline

Estimate displacement field between two images.

Parameters
sourceReference image.
smoothnessSmoothness of estimated displacement field.
precisionPrecision required for algorithm convergence.
nb_scalesNumber of scales used to estimate the displacement field.
iteration_maxMaximum number of iterations allowed for one scale.
is_backwardIf false, match I2(X+U(X)) = I1(X), else match I2(X) = I1(X-U(X)).

Definition at line 27483 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::display ( CImgDisplay disp) const
inline

Display image into a CImgDisplay window.

Parameters
dispDisplay window.

Definition at line 41075 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::display ( CImgDisplay disp,
const bool  display_info,
unsigned int *const  XYZ = 0 
) const
inline

Display image into a CImgDisplay window, in an interactive way.

Parameters
dispDisplay window.
display_infoTells if image informations are displayed on the standard output.

Definition at line 41085 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::display ( const char *const  title = 0,
const bool  display_info = true,
unsigned int *const  XYZ = 0 
) const
inline

Display image into an interactive window.

Parameters
titleWindow title
display_infoTells if image informations are displayed on the standard output.

Definition at line 41094 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::display_graph ( CImgDisplay disp,
const unsigned int  plot_type = 1,
const unsigned int  vertex_type = 1,
const char *const  labelx = 0,
const double  xmin = 0,
const double  xmax = 0,
const char *const  labely = 0,
const double  ymin = 0,
const double  ymax = 0 
) const
inline

Display 1d graph in an interactive window.

Parameters
dispDisplay window.
plot_typePlot type. Can be { 0=points | 1=segments | 2=splines | 3=bars }.
vertex_typeVertex type.
labelxTitle for the horizontal axis, as a C-string.
xminMinimum value along the X-axis.
xmaxMaximum value along the X-axis.
labelyTitle for the vertical axis, as a C-string.
yminMinimum value along the X-axis.
ymaxMaximum value along the X-axis.

Definition at line 41929 of file CImg.h.

template<typename T>
template<typename tp , typename tf , typename tc , typename to >
const CImg<T>& cimg_library_suffixed::CImg< T >::display_object3d ( CImgDisplay disp,
const CImg< tp > &  vertices,
const CImgList< tf > &  primitives,
const CImgList< tc > &  colors,
const to &  opacities,
const bool  centering = true,
const int  render_static = 4,
const int  render_motion = 1,
const bool  is_double_sided = true,
const float  focale = 700,
const float  light_x = 0,
const float  light_y = 0,
const float  light_z = -5e8f,
const float  specular_lightness = 0.2f,
const float  specular_shininess = 0.1f,
const bool  display_axes = true,
float *const  pose_matrix = 0 
) const
inline

Display object 3d in an interactive window.

Parameters
dispDisplay window.
verticesVertices data of the 3d object.
primitivesPrimitives data of the 3d object.
colorsColors data of the 3d object.
opacitiesOpacities data of the 3d object.
centeringTells if the 3d object must be centered for the display.
render_staticRendering mode.
render_motionRendering mode, when the 3d object is moved.
is_double_sidedTells if the object primitives are double-sided.
focaleFocale
light_xX-coordinate of the light source.
light_yY-coordinate of the light source.
light_zZ-coordinate of the light source.
specular_lightnessAmount of specular light.
specular_shininessShininess of the object material.
display_axesTells if the 3d axes are displayed.
pose_matrixPointer to 12 values, defining a 3d pose (as a 4x3 matrix).

Definition at line 41345 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::distance ( const T  value,
const unsigned int  metric = 2 
)
inline

Compute Euclidean distance function to a specified value.

Parameters
valueReference value.
metricType of metric. Can be { 0=Chebyshev | 1=Manhattan | 2=Euclidean | 3=Squared-euclidean }.
Note
The distance transform implementation has been submitted by A. Meijster, and implements the article 'W.H. Hesselink, A. Meijster, J.B.T.M. Roerdink, "A general algorithm for computing distance transforms in linear time.", In: Mathematical Morphology and its Applications to Image and Signal Processing, J. Goutsias, L. Vincent, and D.S. Bloomberg (eds.), Kluwer, 2000, pp. 331-340.' The submitted code has then been modified to fit CImg coding style and constraints.

Definition at line 27665 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::distance ( const T  value,
const CImg< t > &  metric_mask 
)
inline

Compute chamfer distance to a specified value, with a custom metric.

Parameters
valueReference value.
metric_maskMetric mask.
Note
The algorithm code has been initially proposed by A. Meijster, and modified by D. Tschumperlé.

Definition at line 27777 of file CImg.h.

template<typename T>
template<typename t , typename to >
CImg<T>& cimg_library_suffixed::CImg< T >::distance_dijkstra ( const T  value,
const CImg< t > &  metric,
const bool  is_high_connectivity,
CImg< to > &  return_path 
)
inline

Compute distance to a specified value, according to a custom metric (use dijkstra algorithm).

Parameters
valueReference value.
metricField of distance potentials.
is_high_connectivityTells if the algorithm uses low or high connectivity.

Definition at line 27829 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::distance_eikonal ( const T  value,
const CImg< t > &  metric 
)
inline

Compute distance map to one source point, according to a custom metric (use fast marching algorithm).

Parameters
valueReference value.
metricField of distance potentials.

Definition at line 28012 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::distance_eikonal ( const unsigned int  nb_iterations,
const float  band_size = 0,
const float  time_step = 0.5f 
)
inline

Compute distance function to 0-valued isophotes, using the Eikonal PDE.

Parameters
nb_iterationsNumber of PDE iterations.
band_sizeSize of the narrow band.
time_stepTime step of the PDE iterations.

Definition at line 28169 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::div ( const CImg< t > &  img)
inline

In-place pointwise division.

Similar to mul(const CImg<t>&), except that it performs a pointwise division instead of a multiplication.

Definition at line 15547 of file CImg.h.

template<typename T>
template<typename t >
Tdouble cimg_library_suffixed::CImg< T >::dot ( const CImg< t > &  img) const
inline

Compute the dot product between instance and argument, viewed as matrices.

Parameters
imgImage used as a second argument of the dot product.

Definition at line 16659 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_arrow ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const tc *const  color,
const float  opacity = 1,
const float  angle = 30,
const float  length = -10,
const unsigned int  pattern = ~0U 
)
inline

Draw a 2d arrow.

Parameters
x0X-coordinate of the starting arrow point (tail).
y0Y-coordinate of the starting arrow point (tail).
x1X-coordinate of the ending arrow point (head).
y1Y-coordinate of the ending arrow point (head).
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
angleAperture angle of the arrow head.
lengthLength of the arrow head. If negative, describes a percentage of the arrow length.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.

Definition at line 31423 of file CImg.h.

template<typename T>
template<typename tx , typename ty , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_axes ( const CImg< tx > &  values_x,
const CImg< ty > &  values_y,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern_x = ~0U,
const unsigned int  pattern_y = ~0U,
const unsigned int  font_height = 13,
const bool  allow_zero = true 
)
inline

Draw labeled horizontal and vertical axes.

Parameters
values_xValues along the X-axis.
values_yValues along the Y-axis.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
pattern_xDrawing pattern for the X-axis.
pattern_yDrawing pattern for the Y-axis.
font_heightHeight of the labels (exact match for 13,23,53,103, interpolated otherwise).
allow_zeroEnable/disable the drawing of label '0' if found.

Definition at line 34926 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_axis ( const CImg< t > &  values_x,
const int  y,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const unsigned int  font_height = 13,
const bool  allow_zero = true 
)
inline

Draw a labeled horizontal axis.

Parameters
values_xValues along the horizontal axis.
yY-coordinate of the horizontal axis in the image instance.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
patternDrawing pattern.
font_heightHeight of the labels (exact match for 13,23,53,103, interpolated otherwise).
allow_zeroEnable/disable the drawing of label '0' if found.

Definition at line 34822 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_axis ( const int  x,
const CImg< t > &  values_y,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const unsigned int  font_height = 13,
const bool  allow_zero = true 
)
inline

Draw a labeled vertical axis.

Parameters
xX-coordinate of the vertical axis in the image instance.
values_yValues along the Y-axis.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
patternDrawing pattern.
font_heightHeight of the labels (exact match for 13,23,53,103, interpolated otherwise).
allow_zeroEnable/disable the drawing of label '0' if found.

Definition at line 34872 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_circle ( const int  x0,
const int  y0,
int  radius,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d circle.

Parameters
x0X-coordinate of the circle center.
y0Y-coordinate of the circle center.
radiusCircle radius.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
Note
  • Circle version of the Bresenham's algorithm is used.

Definition at line 34278 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_circle ( const int  x0,
const int  y0,
int  radius,
const tc *const  color,
const float  opacity,
const unsigned int  pattern 
)
inline

Draw an outlined 2d circle.

Parameters
x0X-coordinate of the circle center.
y0Y-coordinate of the circle center.
radiusCircle radius.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the outline pattern.

Definition at line 34316 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_ellipse ( const int  x0,
const int  y0,
const float  r1,
const float  r2,
const float  angle,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d ellipse.

Parameters
x0X-coordinate of the ellipse center.
y0Y-coordinate of the ellipse center.
r1First radius of the ellipse.
r2Second radius of the ellipse.
angleAngle of the first radius.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.

Definition at line 34148 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_ellipse ( const int  x0,
const int  y0,
const CImg< t > &  tensor,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d ellipse .

Parameters
x0X-coordinate of the ellipse center.
y0Y-coordinate of the ellipse center.
tensorDiffusion tensor describing the ellipse.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.

Definition at line 34162 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_ellipse ( const int  x0,
const int  y0,
const float  r1,
const float  r2,
const float  angle,
const tc *const  color,
const float  opacity,
const unsigned int  pattern 
)
inline

Draw an outlined 2d ellipse.

Parameters
x0X-coordinate of the ellipse center.
y0Y-coordinate of the ellipse center.
r1First radius of the ellipse.
r2Second radius of the ellipse.
angleAngle of the first radius.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the outline pattern.

Definition at line 34183 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_ellipse ( const int  x0,
const int  y0,
const CImg< t > &  tensor,
const tc *const  color,
const float  opacity,
const unsigned int  pattern 
)
inline

Draw an outlined 2d ellipse .

Parameters
x0X-coordinate of the ellipse center.
y0Y-coordinate of the ellipse center.
tensorDiffusion tensor describing the ellipse.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the outline pattern.

Definition at line 34199 of file CImg.h.

template<typename T>
template<typename tc , typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_fill ( const int  x,
const int  y,
const int  z,
const tc *const  color,
const float  opacity,
CImg< t > &  region,
const float  sigma = 0,
const bool  is_high_connexity = false 
)
inline

Draw filled 3d region with the flood fill algorithm.

Parameters
xX-coordinate of the starting point of the region to fill.
yY-coordinate of the starting point of the region to fill.
zZ-coordinate of the starting point of the region to fill.
colorPointer to spectrum() consecutive values, defining the drawing color.
[out]regionImage that will contain the mask of the filled region mask, as an output.
sigmaTolerance concerning neighborhood values.
opacityOpacity of the drawing.
is_high_connexityTells if 8-connexity must be used (only for 2d images).
Returns
region is initialized with the binary mask of the filled region.

Definition at line 35220 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_gaussian ( const float  xc,
const float  sigma,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a 1d gaussian function.

Parameters
xcX-coordinate of the gaussian center.
sigmaStandard variation of the gaussian distribution.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.

Definition at line 35585 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_gaussian ( const float  xc,
const float  yc,
const CImg< t > &  tensor,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a 2d gaussian function.

Parameters
xcX-coordinate of the gaussian center.
ycY-coordinate of the gaussian center.
tensorCovariance matrix (must be 2x2).
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.

Definition at line 35614 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_graph ( const CImg< t > &  data,
const tc *const  color,
const float  opacity = 1,
const unsigned int  plot_type = 1,
const int  vertex_type = 1,
const double  ymin = 0,
const double  ymax = 0,
const unsigned int  pattern = ~0U 
)
inline

Draw 1d graph.

Parameters
dataImage containing the graph values I = f(x).
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
plot_typeDefine the type of the plot:
  • 0 = No plot.
  • 1 = Plot using segments.
  • 2 = Plot using cubic splines.
  • 3 = Plot with bars.
vertex_typeDefine the type of points:
  • 0 = No points.
  • 1 = Point.
  • 2 = Straight cross.
  • 3 = Diagonal cross.
  • 4 = Filled circle.
  • 5 = Outlined circle.
  • 6 = Square.
  • 7 = Diamond.
yminLower bound of the y-range.
ymaxUpper bound of the y-range.
patternDrawing pattern.
Note
  • if ymin==ymax==0, the y-range is computed automatically from the input samples.

Definition at line 35059 of file CImg.h.

template<typename T>
template<typename tx , typename ty , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_grid ( const CImg< tx > &  values_x,
const CImg< ty > &  values_y,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern_x = ~0U,
const unsigned int  pattern_y = ~0U 
)
inline

Draw 2d grid.

Parameters
values_xX-coordinates of the vertical lines.
values_yY-coordinates of the horizontal lines.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
pattern_xDrawing pattern for vertical lines.
pattern_yDrawing pattern for horizontal lines.

Definition at line 34991 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_image ( const int  x0,
const int  y0,
const int  z0,
const int  c0,
const CImg< t > &  sprite,
const float  opacity = 1 
)
inline

Draw an image.

Parameters
spriteSprite image.
x0X-coordinate of the sprite position.
y0Y-coordinate of the sprite position.
z0Z-coordinate of the sprite position.
c0C-coordinate of the sprite position.
opacityDrawing opacity.

Definition at line 34355 of file CImg.h.

template<typename T>
template<typename ti , typename tm >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_image ( const int  x0,
const int  y0,
const int  z0,
const int  c0,
const CImg< ti > &  sprite,
const CImg< tm > &  mask,
const float  opacity = 1,
const float  mask_max_value = 1 
)
inline

Draw a masked image.

Parameters
spriteSprite image.
maskMask image.
x0X-coordinate of the sprite position in the image instance.
y0Y-coordinate of the sprite position in the image instance.
z0Z-coordinate of the sprite position in the image instance.
c0C-coordinate of the sprite position in the image instance.
mask_max_valueMaximum pixel value of the mask image mask.
opacityDrawing opacity.
Note
  • Pixel values of mask set the opacity of the corresponding pixels in sprite.
  • Dimensions along x,y and z of sprite and mask must be the same.

Definition at line 34486 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a 2d line.

Parameters
x0X-coordinate of the starting line point.
y0Y-coordinate of the starting line point.
x1X-coordinate of the ending line point.
y1Y-coordinate of the ending line point.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if a reinitialization of the hash state must be done.
Note
  • Line routine uses Bresenham's algorithm.
  • Set init_hatch = false to draw consecutive hatched segments without breaking the line pattern.
Example:
CImg<unsigned char> img(100,100,1,3,0);
const unsigned char color[] = { 255,128,64 };
img.draw_line(40,40,80,70,color);

Definition at line 30637 of file CImg.h.

template<typename T>
template<typename tz , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( CImg< tz > &  zbuffer,
const int  x0,
const int  y0,
const float  z0,
const int  x1,
const int  y1,
const float  z1,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a 2d line, with z-buffering.

Parameters
zbufferZbuffer image.
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
z0Z-coordinate of the starting point
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
z1Z-coordinate of the ending point.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if a reinitialization of the hash state must be done.

Definition at line 30724 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( const int  x0,
const int  y0,
const int  z0,
const int  x1,
const int  y1,
const int  z1,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a 3d line.

Parameters
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
z0Z-coordinate of the starting point
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
z1Z-coordinate of the ending point.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if a reinitialization of the hash state must be done.

Definition at line 30853 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a textured 2d line.

Parameters
x0X-coordinate of the starting line point.
y0Y-coordinate of the starting line point.
x1X-coordinate of the ending line point.
y1Y-coordinate of the ending line point.
textureTexture image defining the pixel colors.
tx0X-coordinate of the starting texture point.
ty0Y-coordinate of the starting texture point.
tx1X-coordinate of the ending texture point.
ty1Y-coordinate of the ending texture point.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if the hash variable must be reinitialized.
Note
  • Line routine uses the well known Bresenham's algorithm.
Example:
CImg<unsigned char> img(100,100,1,3,0), texture("texture256x256.ppm");
const unsigned char color[] = { 255,128,64 };
img.draw_line(40,40,80,70,texture,0,0,255,255);

Definition at line 30954 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( const int  x0,
const int  y0,
const float  z0,
const int  x1,
const int  y1,
const float  z1,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a textured 2d line, with perspective correction.

Parameters
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
z0Z-coordinate of the starting point
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
z1Z-coordinate of the ending point.
textureTexture image defining the pixel colors.
tx0X-coordinate of the starting texture point.
ty0Y-coordinate of the starting texture point.
tx1X-coordinate of the ending texture point.
ty1Y-coordinate of the ending texture point.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if the hash variable must be reinitialized.

Definition at line 31076 of file CImg.h.

template<typename T>
template<typename tz , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( CImg< tz > &  zbuffer,
const int  x0,
const int  y0,
const float  z0,
const int  x1,
const int  y1,
const float  z1,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a textured 2d line, with perspective correction and z-buffering.

Parameters
zbufferZ-buffer image.
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
z0Z-coordinate of the starting point
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
z1Z-coordinate of the ending point.
textureTexture image defining the pixel colors.
tx0X-coordinate of the starting texture point.
ty0Y-coordinate of the starting texture point.
tx1X-coordinate of the ending texture point.
ty1Y-coordinate of the ending texture point.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchTells if the hash variable must be reinitialized.

Definition at line 31212 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_line ( const CImg< t > &  points,
const tc *const  color,
const float  opacity = 1,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a set of consecutive lines.

Parameters
pointsCoordinates of vertices, stored as a list of vectors.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchIf set to true, init hatch motif.
Note
  • This function uses several call to the single CImg::draw_line() procedure, depending on the vectors size in points.

Definition at line 31374 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_mandelbrot ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const CImg< tc > &  colormap,
const float  opacity = 1,
const double  z0r = -2,
const double  z0i = -2,
const double  z1r = 2,
const double  z1i = 2,
const unsigned int  iteration_max = 255,
const bool  is_normalized_iteration = false,
const bool  is_julia_set = false,
const double  param_r = 0,
const double  param_i = 0 
)
inline

Draw a quadratic Mandelbrot or Julia 2d fractal.

Parameters
x0X-coordinate of the upper-left pixel.
y0Y-coordinate of the upper-left pixel.
x1X-coordinate of the lower-right pixel.
y1Y-coordinate of the lower-right pixel.
colormapColormap.
opacityDrawing opacity.
z0rReal part of the upper-left fractal vertex.
z0iImaginary part of the upper-left fractal vertex.
z1rReal part of the lower-right fractal vertex.
z1iImaginary part of the lower-right fractal vertex.
iteration_maxMaximum number of iterations for each estimated point.
is_normalized_iterationTells if iterations are normalized.
is_julia_setTells if the Mandelbrot or Julia set is rendered.
param_rReal part of the Julia set parameter.
param_iImaginary part of the Julia set parameter.
Note
Fractal rendering is done by the Escape Time Algorithm.

Definition at line 35494 of file CImg.h.

template<typename T>
template<typename tp , typename tf , typename tc , typename to >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_object3d ( const float  x0,
const float  y0,
const float  z0,
const CImg< tp > &  vertices,
const CImgList< tf > &  primitives,
const CImgList< tc > &  colors,
const CImg< to > &  opacities,
const unsigned int  render_type = 4,
const bool  is_double_sided = false,
const float  focale = 700,
const float  lightx = 0,
const float  lighty = 0,
const float  lightz = -5e8,
const float  specular_lightness = 0.2f,
const float  specular_shininess = 0.1f 
)
inline

Draw a 3d object.

Parameters
x0X-coordinate of the 3d object position
y0Y-coordinate of the 3d object position
z0Z-coordinate of the 3d object position
verticesImage Nx3 describing 3d point coordinates
primitivesList of P primitives
colorsList of P color (or textures)
opacitiesImage or list of P opacities
render_typed Render type (0=Points, 1=Lines, 2=Faces (no light), 3=Faces (flat), 4=Faces(Gouraud)
is_double_sidedTells if object faces have two sides or are oriented.
focalelength of the focale (0 for parallel projection)
lightxX-coordinate of the light
lightyY-coordinate of the light
lightzZ-coordinate of the light
specular_lightnessAmount of specular light.
specular_shininessShininess of the object

Definition at line 35722 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::draw_plasma ( const float  alpha = 1,
const float  beta = 0,
const unsigned int  scale = 8 
)
inline

Draw a random plasma texture.

Parameters
alphaAlpha-parameter.
betaBeta-parameter.
scaleScale-parameter.
Note
Use the mid-point algorithm to render.

Definition at line 35429 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_point ( const int  x0,
const int  y0,
const int  z0,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a 3d point.

Parameters
x0X-coordinate of the point.
y0Y-coordinate of the point.
z0Z-coordinate of the point.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.
Note
  • To set pixel values without clipping needs, you should use the faster CImg::operator()() function.
Example:
CImg<unsigned char> img(100,100,1,3,0);
const unsigned char color[] = { 255,128,64 };
img.draw_point(50,50,color);

Definition at line 30565 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_point ( const CImg< t > &  points,
const tc *const  color,
const float  opacity = 1 
)
inline
Parameters
pointsImage of vertices coordinates.
colorPointer to spectrum() consecutive values, defining the drawing color.
opacityDrawing opacity.

Definition at line 30597 of file CImg.h.

template<typename T>
template<typename t , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_polygon ( const CImg< t > &  points,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d polygon.

Parameters
pointsSet of polygon vertices.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.

Definition at line 33971 of file CImg.h.

template<typename T>
template<typename t1 , typename t2 >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_quiver ( const CImg< t1 > &  flow,
const t2 *const  color,
const float  opacity = 1,
const unsigned int  sampling = 25,
const float  factor = -20,
const bool  is_arrow = true,
const unsigned int  pattern = ~0U 
)
inline

Draw a 2d vector field.

Parameters
flowImage of 2d vectors used as input data.
colorImage of spectrum()-D vectors corresponding to the color of each arrow.
opacityDrawing opacity.
samplingLength (in pixels) between each arrow.
factorLength factor of each arrow (if <0, computed as a percentage of the maximum length).
is_arrowTells if arrows must be drawn, instead of oriented segments.
patternUsed pattern to draw lines.
Note
Clipping is supported.

Definition at line 34746 of file CImg.h.

template<typename T>
template<typename t1 , typename t2 >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_quiver ( const CImg< t1 > &  flow,
const CImg< t2 > &  color,
const float  opacity = 1,
const unsigned int  sampling = 25,
const float  factor = -20,
const bool  is_arrow = true,
const unsigned int  pattern = ~0U 
)
inline

Draw a 2d vector field, using a field of colors.

Parameters
flowImage of 2d vectors used as input data.
colorImage of spectrum()-D vectors corresponding to the color of each arrow.
opacityOpacity of the drawing.
samplingLength (in pixels) between each arrow.
factorLength factor of each arrow (if <0, computed as a percentage of the maximum length).
is_arrowTells if arrows must be drawn, instead of oriented segments.
patternUsed pattern to draw lines.
Note
Clipping is supported.

Definition at line 34765 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::draw_rectangle ( const int  x0,
const int  y0,
const int  z0,
const int  c0,
const int  x1,
const int  y1,
const int  z1,
const int  c1,
const T  val,
const float  opacity = 1 
)
inline

Draw a filled 4d rectangle.

Parameters
x0X-coordinate of the upper-left rectangle corner.
y0Y-coordinate of the upper-left rectangle corner.
z0Z-coordinate of the upper-left rectangle corner.
c0C-coordinate of the upper-left rectangle corner.
x1X-coordinate of the lower-right rectangle corner.
y1Y-coordinate of the lower-right rectangle corner.
z1Z-coordinate of the lower-right rectangle corner.
c1C-coordinate of the lower-right rectangle corner.
valScalar value used to fill the rectangle area.
opacityDrawing opacity.

Definition at line 33846 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_rectangle ( const int  x0,
const int  y0,
const int  z0,
const int  x1,
const int  y1,
const int  z1,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 3d rectangle.

Parameters
x0X-coordinate of the upper-left rectangle corner.
y0Y-coordinate of the upper-left rectangle corner.
z0Z-coordinate of the upper-left rectangle corner.
x1X-coordinate of the lower-right rectangle corner.
y1Y-coordinate of the lower-right rectangle corner.
z1Z-coordinate of the lower-right rectangle corner.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.

Definition at line 33895 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_rectangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d rectangle.

Parameters
x0X-coordinate of the upper-left rectangle corner.
y0Y-coordinate of the upper-left rectangle corner.
x1X-coordinate of the lower-right rectangle corner.
y1Y-coordinate of the lower-right rectangle corner.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.

Definition at line 33937 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_spline ( const int  x0,
const int  y0,
const float  u0,
const float  v0,
const int  x1,
const int  y1,
const float  u1,
const float  v1,
const tc *const  color,
const float  opacity = 1,
const float  precision = 0.25,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a 2d spline.

Parameters
x0X-coordinate of the starting curve point
y0Y-coordinate of the starting curve point
u0X-coordinate of the starting velocity
v0Y-coordinate of the starting velocity
x1X-coordinate of the ending curve point
y1Y-coordinate of the ending curve point
u1X-coordinate of the ending velocity
v1Y-coordinate of the ending velocity
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
precisionCurve drawing precision.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchIf true, init hatch motif.
Note
  • The curve is a 2d cubic Bezier spline, from the set of specified starting/ending points and corresponding velocity vectors.
  • The spline is drawn as a serie of connected segments. The precision parameter sets the average number of pixels in each drawn segment.
  • A cubic Bezier curve is sometimes defined by a set of 4 points { (x0,y0), (xa,ya), (xb,yb), (x1,y1) } where (x0,y0) is the starting point, (x1,y1) is the ending point and (xa,ya), (xb,yb) are two control points. The starting and ending velocities (u0,v0) and (u1,v1) can be deduced easily from the control points as u0 = (xa - x0), v0 = (ya - y0), u1 = (x1 - xb) and v1 = (y1 - yb).
Example:
CImg<unsigned char> img(100,100,1,3,0);
const unsigned char color[] = { 255,255,255 };
img.draw_spline(30,30,0,100,90,40,0,-100,color);

Definition at line 31480 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_spline ( const int  x0,
const int  y0,
const int  z0,
const float  u0,
const float  v0,
const float  w0,
const int  x1,
const int  y1,
const int  z1,
const float  u1,
const float  v1,
const float  w1,
const tc *const  color,
const float  opacity = 1,
const float  precision = 4,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a 3d spline .

Note

Definition at line 31517 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_spline ( const int  x0,
const int  y0,
const float  u0,
const float  v0,
const int  x1,
const int  y1,
const float  u1,
const float  v1,
const CImg< t > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const float  opacity = 1,
const float  precision = 4,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a textured 2d spline.

Parameters
x0X-coordinate of the starting curve point
y0Y-coordinate of the starting curve point
u0X-coordinate of the starting velocity
v0Y-coordinate of the starting velocity
x1X-coordinate of the ending curve point
y1Y-coordinate of the ending curve point
u1X-coordinate of the ending velocity
v1Y-coordinate of the ending velocity
textureTexture image defining line pixel colors.
tx0X-coordinate of the starting texture point.
ty0Y-coordinate of the starting texture point.
tx1X-coordinate of the ending texture point.
ty1Y-coordinate of the ending texture point.
precisionCurve drawing precision.
opacityDrawing opacity.
patternAn integer whose bits describe the line pattern.
init_hatchif true, reinit hatch motif.

Definition at line 31572 of file CImg.h.

template<typename T>
template<typename tp , typename tt , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_spline ( const CImg< tp > &  points,
const CImg< tt > &  tangents,
const tc *const  color,
const float  opacity = 1,
const bool  is_closed_set = false,
const float  precision = 4,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a set of consecutive splines.

Parameters
pointsVertices data.
tangentsTangents data.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
is_closed_setTells if the drawn spline set is closed.
precisionPrecision of the drawing.
patternAn integer whose bits describe the line pattern.
init_hatchIf true, init hatch motif.

Definition at line 31622 of file CImg.h.

template<typename T>
template<typename tp , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_spline ( const CImg< tp > &  points,
const tc *const  color,
const float  opacity = 1,
const bool  is_closed_set = false,
const float  precision = 4,
const unsigned int  pattern = ~0U,
const bool  init_hatch = true 
)
inline

Draw a set of consecutive splines .

Similar to previous function, with the point tangents automatically estimated from the given points set.

Definition at line 31672 of file CImg.h.

template<typename T>
template<typename tc1 , typename tc2 , typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_text ( const int  x0,
const int  y0,
const char *const  text,
const tc1 *const  foreground_color,
const tc2 *const  background_color,
const float  opacity,
const CImgList< t > &  font,
  ... 
)
inline

Draw a text string.

Parameters
x0X-coordinate of the text in the image instance.
y0Y-coordinate of the text in the image instance.
textFormat of the text ('printf'-style format string).
foreground_colorPointer to spectrum() consecutive values, defining the foreground drawing color.
background_colorPointer to spectrum() consecutive values, defining the background drawing color.
opacityDrawing opacity.
fontFont used for drawing text.

Definition at line 34583 of file CImg.h.

template<typename T>
template<typename tc , typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_text ( const int  x0,
const int  y0,
const char *const  text,
const tc *const  foreground_color,
const int  ,
const float  opacity,
const CImgList< t > &  font,
  ... 
)
inline

Draw a text string .

Note
A transparent background is used for the text.

Definition at line 34598 of file CImg.h.

template<typename T>
template<typename tc , typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_text ( const int  x0,
const int  y0,
const char *const  text,
const int  ,
const tc *const  background_color,
const float  opacity,
const CImgList< t > &  font,
  ... 
)
inline

Draw a text string .

Note
A transparent foreground is used for the text.

Definition at line 34613 of file CImg.h.

template<typename T>
template<typename tc1 , typename tc2 >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_text ( const int  x0,
const int  y0,
const char *const  text,
const tc1 *const  foreground_color,
const tc2 *const  background_color,
const float  opacity = 1,
const unsigned int  font_height = 13,
  ... 
)
inline

Draw a text string .

Parameters
x0X-coordinate of the text in the image instance.
y0Y-coordinate of the text in the image instance.
textFormat of the text ('printf'-style format string).
foreground_colorArray of spectrum() values of type T, defining the foreground color (0 means 'transparent').
background_colorArray of spectrum() values of type T, defining the background color (0 means 'transparent').
opacityDrawing opacity.
font_heightHeight of the text font (exact match for 13,23,53,103, interpolated otherwise).

Definition at line 34636 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const tc *const  color,
const float  opacity = 1 
)
inline

Draw a filled 2d triangle.

Parameters
x0X-coordinate of the first vertex.
y0Y-coordinate of the first vertex.
x1X-coordinate of the second vertex.
y1Y-coordinate of the second vertex.
x2X-coordinate of the third vertex.
y2Y-coordinate of the third vertex.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.

Definition at line 32079 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const tc *const  color,
const float  opacity,
const unsigned int  pattern 
)
inline

Draw a outlined 2d triangle.

Parameters
x0X-coordinate of the first vertex.
y0Y-coordinate of the first vertex.
x1X-coordinate of the second vertex.
y1Y-coordinate of the second vertex.
x2X-coordinate of the third vertex.
y2Y-coordinate of the third vertex.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
patternAn integer whose bits describe the outline pattern.

Definition at line 32105 of file CImg.h.

template<typename T>
template<typename tz , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( CImg< tz > &  zbuffer,
const int  x0,
const int  y0,
const float  z0,
const int  x1,
const int  y1,
const float  z1,
const int  x2,
const int  y2,
const float  z2,
const tc *const  color,
const float  opacity = 1,
const float  brightness = 1 
)
inline

Draw a filled 2d triangle, with z-buffering.

Parameters
zbufferZ-buffer image.
x0X-coordinate of the first vertex.
y0Y-coordinate of the first vertex.
z0Z-coordinate of the first vertex.
x1X-coordinate of the second vertex.
y1Y-coordinate of the second vertex.
z1Z-coordinate of the second vertex.
x2X-coordinate of the third vertex.
y2Y-coordinate of the third vertex.
z2Z-coordinate of the third vertex.
colorPointer to spectrum() consecutive values of type T, defining the drawing color.
opacityDrawing opacity.
brightnessBrightness factor.

Definition at line 32138 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const tc *const  color,
const float  brightness0,
const float  brightness1,
const float  brightness2,
const float  opacity = 1 
)
inline

Draw a Gouraud-shaded 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
colorPointer to spectrum() consecutive values, defining the drawing color.
brightness0Brightness factor of the first vertex (in [0,2]).
brightness1brightness factor of the second vertex (in [0,2]).
brightness2brightness factor of the third vertex (in [0,2]).
opacityDrawing opacity.

Definition at line 32259 of file CImg.h.

template<typename T>
template<typename tc1 , typename tc2 , typename tc3 >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const tc1 *const  color1,
const tc2 *const  color2,
const tc3 *const  color3,
const float  opacity = 1 
)
inline

Draw a color-interpolated 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
color1Pointer to spectrum() consecutive values of type T, defining the color of the first vertex.
color2Pointer to spectrum() consecutive values of type T, defining the color of the seconf vertex.
color3Pointer to spectrum() consecutive values of type T, defining the color of the third vertex.
opacityDrawing opacity.

Definition at line 32426 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const int  tx2,
const int  ty2,
const float  opacity = 1,
const float  brightness = 1 
)
inline

Draw a textured 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
textureTexture image used to fill the triangle.
tx0X-coordinate of the first vertex in the texture image.
ty0Y-coordinate of the first vertex in the texture image.
tx1X-coordinate of the second vertex in the texture image.
ty1Y-coordinate of the second vertex in the texture image.
tx2X-coordinate of the third vertex in the texture image.
ty2Y-coordinate of the third vertex in the texture image.
opacityDrawing opacity.
brightnessBrightness factor of the drawing (in [0,2]).

Definition at line 32458 of file CImg.h.

template<typename T>
template<typename tc , typename tl >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const tc *const  color,
const CImg< tl > &  light,
const int  lx0,
const int  ly0,
const int  lx1,
const int  ly1,
const int  lx2,
const int  ly2,
const float  opacity = 1 
)
inline

Draw a Phong-shaded 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
colorPointer to spectrum() consecutive values, defining the drawing color.
lightLight image.
lx0X-coordinate of the first vertex in the light image.
ly0Y-coordinate of the first vertex in the light image.
lx1X-coordinate of the second vertex in the light image.
ly1Y-coordinate of the second vertex in the light image.
lx2X-coordinate of the third vertex in the light image.
ly2Y-coordinate of the third vertex in the light image.
opacityDrawing opacity.

Definition at line 32892 of file CImg.h.

template<typename T>
template<typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const int  tx2,
const int  ty2,
const float  brightness0,
const float  brightness1,
const float  brightness2,
const float  opacity = 1 
)
inline

Draw a textured Gouraud-shaded 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
textureTexture image used to fill the triangle.
tx0X-coordinate of the first vertex in the texture image.
ty0Y-coordinate of the first vertex in the texture image.
tx1X-coordinate of the second vertex in the texture image.
ty1Y-coordinate of the second vertex in the texture image.
tx2X-coordinate of the third vertex in the texture image.
ty2Y-coordinate of the third vertex in the texture image.
brightness0Brightness factor of the first vertex.
brightness1Brightness factor of the second vertex.
brightness2Brightness factor of the third vertex.
opacityDrawing opacity.

Definition at line 33105 of file CImg.h.

template<typename T>
template<typename tc , typename tl >
CImg<T>& cimg_library_suffixed::CImg< T >::draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const CImg< tc > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const int  tx2,
const int  ty2,
const CImg< tl > &  light,
const int  lx0,
const int  ly0,
const int  lx1,
const int  ly1,
const int  lx2,
const int  ly2,
const float  opacity = 1 
)
inline

Draw a textured Phong-shaded 2d triangle.

Parameters
x0X-coordinate of the first vertex in the image instance.
y0Y-coordinate of the first vertex in the image instance.
x1X-coordinate of the second vertex in the image instance.
y1Y-coordinate of the second vertex in the image instance.
x2X-coordinate of the third vertex in the image instance.
y2Y-coordinate of the third vertex in the image instance.
textureTexture image used to fill the triangle.
tx0X-coordinate of the first vertex in the texture image.
ty0Y-coordinate of the first vertex in the texture image.
tx1X-coordinate of the second vertex in the texture image.
ty1Y-coordinate of the second vertex in the texture image.
tx2X-coordinate of the third vertex in the texture image.
ty2Y-coordinate of the third vertex in the texture image.
lightLight image.
lx0X-coordinate of the first vertex in the light image.
ly0Y-coordinate of the first vertex in the light image.
lx1X-coordinate of the second vertex in the light image.
ly1Y-coordinate of the second vertex in the light image.
lx2X-coordinate of the third vertex in the light image.
ly2Y-coordinate of the third vertex in the light image.
opacityDrawing opacity.

Definition at line 33455 of file CImg.h.

template<typename T>
template<typename t >
const CImg<T>& cimg_library_suffixed::CImg< T >::eigen ( CImg< t > &  val,
CImg< t > &  vec 
) const
inline

Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix.

Parameters
[out]valVector of the estimated eigenvalues, in decreasing order.
[out]vecMatrix of the estimated eigenvalues, sorted by columns.

Definition at line 17206 of file CImg.h.

template<typename T>
template<typename tf , typename tfunc >
static CImg<floatT> cimg_library_suffixed::CImg< T >::elevation3d ( CImgList< tf > &  primitives,
const tfunc &  func,
const float  x0,
const float  y0,
const float  x1,
const float  y1,
const int  size_x = 256,
const int  size_y = 256 
)
inlinestatic

Compute 3d elevation of a function as a 3d object.

Parameters
[out]primitivesPrimitives data of the resulting 3d object.
funcElevation function. Is of type float (*func)(const float x,const float y).
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
size_xResolution of the function along the X-axis.
size_yResolution of the function along the Y-axis.

Definition at line 29233 of file CImg.h.

template<typename T>
template<typename tf , typename t >
static CImg<floatT> cimg_library_suffixed::CImg< T >::ellipsoid3d ( CImgList< tf > &  primitives,
const CImg< t > &  tensor,
const unsigned int  subdivisions = 3 
)
inlinestatic

Generate a 3d ellipsoid.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
tensorThe tensor which gives the shape and size of the ellipsoid.
subdivisionsThe number of recursive subdivisions from an initial stretched icosahedron.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> tensor = CImg<float>::diagonal(10,7,3),
points3d = CImg<float>::ellipsoid3d(faces3d,tensor,4);
CImg<unsigned char>().display_object3d("Ellipsoid3d",points3d,faces3d);
ref_ellipsoid3d.jpg

Definition at line 30188 of file CImg.h.

template<typename T>
static CImg<T>& cimg_library_suffixed::CImg< T >::empty ( )
inlinestatic

Return a reference to an empty image.

Note
This function is useful mainly to declare optional parameters having type CImg<T> in functions prototypes, e.g.
void f(const int x=0, const int y=0, const CImg<float>& img=CImg<float>::empty());

Definition at line 10394 of file CImg.h.

template<typename T>
iterator cimg_library_suffixed::CImg< T >::end ( )
inline

Return a CImg<T>::iterator pointing next to the last pixel value.

Note
  • Writing img.end() is equivalent to img.data() + img.size().
  • It has been mainly defined for compatibility with STL naming conventions.
Warning
  • The returned iterator actually points to a value located outside the acceptable bounds of the pixel buffer. Trying to read or write the content of the returned iterator will probably result in a crash. Use it mainly as a strict upper bound for a CImg<T>::iterator.
Example
CImg<float> img(100,100,1,3); // Define a 100x100 RGB color image.
for (CImg<float>::iterator it = img.begin(); it<img.end(); ++it) // 'img.end()' used here as an upper bound for the iterator.
*it = 0;

Definition at line 12193 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::equalize ( const unsigned int  nb_levels,
const T  min_value,
const T  max_value 
)
inline

Equalize histogram of pixel values.

Parameters
nb_levelsNumber of histogram levels used for the equalization.
min_valueMinimum pixel value considered for the histogram computation. All pixel values lower than min_value will not be counted.
max_valueMaximum pixel value considered for the histogram computation. All pixel values higher than max_value will not be counted.
Example
const CImg<float> img("reference.jpg"), res = img.get_equalize(256);
(img,res).display();
ref_equalize.jpg

Definition at line 19279 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::erode ( const CImg< t > &  mask,
const unsigned int  boundary_conditions = 1,
const bool  is_normalized = false 
)
inline

Erode image by a structuring element.

Parameters
maskStructuring element.
boundary_conditionsBoundary conditions.
is_normalizedTells if the erosion is locally normalized.

Definition at line 24801 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::erode ( const unsigned int  sx,
const unsigned int  sy,
const unsigned int  sz = 1 
)
inline

Erode image by a rectangular structuring element of specified size.

Parameters
sxWidth of the structuring element.
syHeight of the structuring element.
szDepth of the structuring element.

Definition at line 24931 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::erode ( const unsigned int  s)
inline

Erode the image by a square structuring element of specified size.

Parameters
sSize of the structuring element.

Definition at line 25074 of file CImg.h.

template<typename T>
double cimg_library_suffixed::CImg< T >::eval ( const char *const  expression,
const double  x = 0,
const double  y = 0,
const double  z = 0,
const double  c = 0 
) const
inline

Evaluate math formula.

Parameters
expressionMath formula, as a C-string.
xValue of the pre-defined variable x.
yValue of the pre-defined variable y.
zValue of the pre-defined variable z.
cValue of the pre-defined variable c.

Definition at line 16497 of file CImg.h.

template<typename T>
template<typename t >
CImg<doubleT> cimg_library_suffixed::CImg< T >::eval ( const char *const  expression,
const CImg< t > &  xyzc 
) const
inline

Evaluate math formula on a set of variables.

Parameters
expressionMath formula, as a C-string.
xyzcSet of values (x,y,z,c) used for the evaluation.

Definition at line 16509 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::exp ( )
inline

Compute the exponential of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its exponential $e^{I_{(x,y,z,c)}}$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15120 of file CImg.h.

template<typename T>
static void cimg_library_suffixed::CImg< T >::FFT ( CImg< T > &  real,
CImg< T > &  imag,
const char  axis,
const bool  is_invert = false 
)
inlinestatic

Compute 1d Fast Fourier Transform, along a specified axis.

Parameters
[in,out]realReal part of the pixel values.
[in,out]imagImaginary part of the pixel values.
axisAxis along which the FFT is computed.
is_invertTells if the forward (false) or inverse (true) FFT is computed.

Definition at line 28505 of file CImg.h.

template<typename T>
static void cimg_library_suffixed::CImg< T >::FFT ( CImg< T > &  real,
CImg< T > &  imag,
const bool  is_invert = false,
const unsigned int  nb_threads = 0 
)
inlinestatic

Compute n-d Fast Fourier Transform.

Parameters
[in,out]realReal part of the pixel values.
[in,out]imagImaginary part of the pixel values.
is_invertTells if the forward (false) or inverse (true) FFT is computed.
nb_threadsNumber of parallel threads used for the computation. Use 0 to set this to the number of available cpus.

Definition at line 28756 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fill ( const T  val)
inline

Fill all pixel values with specified value.

Parameters
valFill value.

Definition at line 18172 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fill ( const T  val0,
const T  val1 
)
inline

Fill sequentially all pixel values with specified values.

Parameters
val0First fill value.
val1Second fill value.

Definition at line 18189 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fill ( const char *const  expression,
const bool  repeat_flag 
)
inline

Fill sequentially pixel values according to a given expression.

Parameters
expressionC-string describing a math formula, or a list of values.
repeat_flagIn case a list of values is provided, tells if this list must be repeated for the filling.

Definition at line 18620 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::fill ( const CImg< t > &  values,
const bool  repeat_values = true 
)
inline

Fill sequentially pixel values according to the values found in another image.

Parameters
valuesImage containing the values used for the filling.
repeat_valuesIn case there are less values than necessary in values, tells if these values must be repeated for the filling.

Definition at line 18682 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fillC ( const unsigned int  x,
const unsigned int  y,
const unsigned int  z,
const int  a0,
  ... 
)
inline

Fill pixel values along the C-axis at a specified pixel position.

Parameters
xX-coordinate of the filled channel.
yY-coordinate of the filled channel.
zZ-coordinate of the filled channel.
a0First filling value.

Definition at line 18765 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fillX ( const unsigned int  y,
const unsigned int  z,
const unsigned int  c,
const int  a0,
  ... 
)
inline

Fill pixel values along the X-axis at a specified pixel position.

Parameters
yY-coordinate of the filled column.
zZ-coordinate of the filled column.
cC-coordinate of the filled column.
a0First fill value.

Definition at line 18705 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fillY ( const unsigned int  x,
const unsigned int  z,
const unsigned int  c,
const int  a0,
  ... 
)
inline

Fill pixel values along the Y-axis at a specified pixel position.

Parameters
xX-coordinate of the filled row.
zZ-coordinate of the filled row.
cC-coordinate of the filled row.
a0First fill value.

Definition at line 18727 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::fillZ ( const unsigned int  x,
const unsigned int  y,
const unsigned int  c,
const int  a0,
  ... 
)
inline

Fill pixel values along the Z-axis at a specified pixel position.

Parameters
xX-coordinate of the filled slice.
yY-coordinate of the filled slice.
cC-coordinate of the filled slice.
a0First fill value.

Definition at line 18745 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::flag_LUT256 ( )
inlinestatic

Return colormap "flag", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_flag.jpg

Definition at line 20010 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::front ( )
inline

Return a reference to the first pixel value.

Note
  • Writing img.front() is equivalent to img[0], or img(0,0,0,0).
  • It has been mainly defined for compatibility with STL naming conventions.

Definition at line 12208 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_channel ( const int  c0) const
inline

Return specified image channel.

Parameters
c0Image channel.

Definition at line 23728 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_channels ( const int  c0,
const int  c1 
) const
inline

Return specified range of image channels.

Parameters
c0Starting image channel.
c1Ending image channel.

Definition at line 23742 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_column ( const int  x0) const
inline

Return specified image column.

Parameters
x0Image column.

Definition at line 23647 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_eigen ( ) const
inline

Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix.

Returns
A list of two images [val; vec], whose meaning is similar as in eigen(CImg<t>&,CImg<t>&) const.

Definition at line 17250 of file CImg.h.

template<typename T>
template<typename tf , typename tc , typename te >
CImg<floatT> cimg_library_suffixed::CImg< T >::get_elevation3d ( CImgList< tf > &  primitives,
CImgList< tc > &  colors,
const CImg< te > &  elevation 
) const
inline

Generate a 3d elevation of the image instance.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
[out]colorsThe returned list of the 3d object colors.
elevationThe input elevation map.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
const CImg<float> img("reference.jpg");
CImgList<unsigned int> faces3d;
CImgList<unsigned char> colors3d;
const CImg<float> points3d = img.get_elevation3d(faces3d,colors3d,img.get_norm()*0.2);
CImg<unsigned char>().display_object3d("Elevation3d",points3d,faces3d,colors3d);
ref_elevation3d.jpg

Definition at line 29066 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_FFT ( const char  axis,
const bool  is_invert = false 
) const
inline

Compute 1d Fast Fourier Transform, along a specified axis.

Parameters
axisAxis along which the FFT is computed.
is_invertTells if the forward (false) or inverse (true) FFT is computed.

Definition at line 28482 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_gradient ( const char *const  axes = 0,
const int  scheme = 3 
) const
inline

Return image gradient.

Parameters
axesAxes considered for the gradient computation, as a C-string (e.g "xy").
scheme= Numerical scheme used for the gradient computation:
  • -1 = Backward finite differences
  • 0 = Centered finite differences
  • 1 = Forward finite differences
  • 2 = Using Sobel masks
  • 3 = Using rotation invariant masks
  • 4 = Using Deriche recusrsive filter.
  • 5 = Using Van Vliet recusrsive filter.

Definition at line 26912 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_hessian ( const char *const  axes = 0) const
inline

Return image hessian.

Parameters
axesAxes considered for the hessian computation, as a C-string (e.g "xy").

Definition at line 27087 of file CImg.h.

template<typename T>
template<typename tf >
CImg<floatT> cimg_library_suffixed::CImg< T >::get_isoline3d ( CImgList< tf > &  primitives,
const float  isovalue,
const int  size_x = -100,
const int  size_y = -100 
) const
inline

Generate a isoline of the image instance as a 3d object.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
isovalueThe returned list of the 3d object colors.
size_xThe number of subdivisions along the X-axis.
size_yThe number of subdisivions along the Y-axis.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
const CImg<float> img("reference.jpg");
CImgList<unsigned int> faces3d;
const CImg<float> points3d = img.get_isoline3d(faces3d,100);
CImg<unsigned char>().display_object3d("Isoline3d",points3d,faces3d,colors3d);
ref_isoline3d.jpg

Definition at line 29158 of file CImg.h.

template<typename T>
template<typename tf >
CImg<floatT> cimg_library_suffixed::CImg< T >::get_isosurface3d ( CImgList< tf > &  primitives,
const float  isovalue,
const int  size_x = -100,
const int  size_y = -100,
const int  size_z = -100 
) const
inline

Generate an isosurface of the image instance as a 3d object.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
isovalueThe returned list of the 3d object colors.
size_xNumber of subdivisions along the X-axis.
size_yNumber of subdisivions along the Y-axis.
size_zNumber of subdisivions along the Z-axis.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
const CImg<float> img = CImg<unsigned char>("reference.jpg").resize(-100,-100,20);
CImgList<unsigned int> faces3d;
const CImg<float> points3d = img.get_isosurface3d(faces3d,100);
CImg<unsigned char>().display_object3d("Isosurface3d",points3d,faces3d,colors3d);
ref_isosurface3d.jpg

Definition at line 29200 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_matrix_at ( const unsigned int  x = 0,
const unsigned int  y = 0,
const unsigned int  z = 0 
) const
inline

Get (square) matrix-valued pixel located at specified position.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
Note
- The spectrum() of the image must be a square.

Definition at line 16698 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_projections2d ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0 
) const
inline

Generate a 2d representation of a 3d image, with XY,XZ and YZ views.

Parameters
x0X-coordinate of the projection point.
y0Y-coordinate of the projection point.
z0Z-coordinate of the projection point.

Definition at line 23396 of file CImg.h.

template<typename T>
template<typename tf , typename tc >
CImg<floatT> cimg_library_suffixed::CImg< T >::get_projections3d ( CImgList< tf > &  primitives,
CImgList< tc > &  colors,
const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const bool  normalize_colors = false 
) const
inline

Generate the 3d projection planes of the image instance.

Parameters
[out]primitivesPrimitives data of the returned 3d object.
[out]colorsColors data of the returned 3d object.
x0X-coordinate of the projection point.
y0Y-coordinate of the projection point.
z0Z-coordinate of the projection point.
normalize_colorsTells if the created textures have normalized colors.

Definition at line 29101 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_rows ( const int  y0,
const int  y1 
) const
inline

Return specified range of image rows.

Parameters
y0Starting image row.
y1Ending image row.

Definition at line 23688 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_channel ( const unsigned int  c0)
inline

Return a shared-memory image referencing one channel of the image instance.

Parameters
c0C-coordinate.

Definition at line 24183 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_channels ( const unsigned int  c0,
const unsigned int  c1 
)
inline

Return a shared-memory image referencing a range of channels of the image instance.

Parameters
c0C-coordinate of the starting channel.
c1C-coordinate of the ending channel.

Definition at line 24154 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_points ( const unsigned int  x0,
const unsigned int  x1,
const unsigned int  y0 = 0,
const unsigned int  z0 = 0,
const unsigned int  c0 = 0 
)
inline

Return a shared-memory image referencing a range of pixels of the image instance.

Parameters
x0X-coordinate of the starting pixel.
x1X-coordinate of the ending pixel.
y0Y-coordinate.
z0Z-coordinate.
c0C-coordinate.

Definition at line 24030 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_row ( const unsigned int  y0,
const unsigned int  z0 = 0,
const unsigned int  c0 = 0 
)
inline

Return a shared-memory image referencing one row of the image instance.

Parameters
y0Y-coordinate.
z0Z-coordinate.
c0C-coordinate.

Definition at line 24095 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_rows ( const unsigned int  y0,
const unsigned int  y1,
const unsigned int  z0 = 0,
const unsigned int  c0 = 0 
)
inline

Return a shared-memory image referencing a range of rows of the image instance.

Parameters
y0Y-coordinate of the starting row.
y1Y-coordinate of the ending row.
z0Z-coordinate.
c0C-coordinate.

Definition at line 24062 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_slice ( const unsigned int  z0,
const unsigned int  c0 = 0 
)
inline

Return a shared-memory image referencing one slice of the image instance.

Parameters
z0Z-coordinate.
c0C-coordinate.

Definition at line 24140 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_shared_slices ( const unsigned int  z0,
const unsigned int  z1,
const unsigned int  c0 = 0 
)
inline

Return a shared memory image referencing a range of slices of the image instance.

Parameters
z0Z-coordinate of the starting slice.
z1Z-coordinate of the ending slice.
c0C-coordinate.

Definition at line 24110 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_slice ( const int  z0) const
inline

Return specified image slice.

Parameters
z0Image slice.

Definition at line 23701 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_slices ( const int  z0,
const int  z1 
) const
inline

Return specified range of image slices.

Parameters
z0Starting image slice.
z1Ending image slice.

Definition at line 23715 of file CImg.h.

template<typename T>
CImgList<T> cimg_library_suffixed::CImg< T >::get_split ( const char  axis,
const int  nb = 0 
) const
inline

Split image into a list along specified axis.

Parameters
axisSplitting axis. Can be { 'x' | 'y' | 'z' | 'c' }.
nbNumber of splitted parts.
Note
  • If nb==0, there are as much splitted parts as the image size along the specified axis.
  • If nb<=0, instance image is splitted into blocs of -nb pixel wide.
  • If nb>0, instance image is splitted into nb blocs.

Definition at line 24211 of file CImg.h.

template<typename T>
CImgList<T> cimg_library_suffixed::CImg< T >::get_split ( const T  value,
const bool  keep_values,
const bool  is_shared 
) const
inline

Split image into a list of one-column vectors, according to a specified splitting value.

Parameters
valueSplitting value.
keep_valuesTells if the splitting value must be kept in the splitted blocs.
is_sharedTells if the splitted blocs have shared memory buffers.

Definition at line 24320 of file CImg.h.

template<typename T>
template<typename t >
CImgList<T> cimg_library_suffixed::CImg< T >::get_split ( const CImg< t > &  values,
const bool  keep_values,
const bool  is_shared 
) const
inline

Split image into a list of one-column vectors, according to a specified splitting value sequence.

Parameters
valuesSplitting value sequence.
keep_valuesTells if the splitting sequence must be kept in the splitted blocs.
is_sharedTells if the splitted blocs have shared memory buffers.

Definition at line 24343 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_SVD ( const bool  sorting = true,
const unsigned int  max_iteration = 40,
const float  lambda = 0 
) const
inline

Compute the SVD of the instance image, viewed as a general matrix.

Returns
A list of three images [U; S; V], whose meaning is similar as in SVD(CImg<t>&,CImg<t>&,CImg<t>&,bool,unsigned int,float) const.

Definition at line 17641 of file CImg.h.

template<typename T>
CImgList<Tfloat> cimg_library_suffixed::CImg< T >::get_symmetric_eigen ( ) const
inline

Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix.

Returns
A list of two images [val; vec], whose meaning are similar as in symmetric_eigen(CImg<t>&,CImg<t>&) const.

Definition at line 17334 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_tensor_at ( const unsigned int  x,
const unsigned int  y = 0,
const unsigned int  z = 0 
) const
inline

Get tensor-valued pixel located at specified position.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.

Definition at line 16714 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::get_vector_at ( const unsigned int  x,
const unsigned int  y = 0,
const unsigned int  z = 0 
) const
inline

Get vector-valued pixel located at specified position.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.

Definition at line 16681 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::haar ( const char  axis,
const bool  invert = false,
const unsigned int  nb_scales = 1 
)
inline

Compute Haar multiscale wavelet transform.

Parameters
axisAxis considered for the transform.
invertSet inverse of direct transform.
nb_scalesNumber of scales used for the transform.

Definition at line 28227 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::haar ( const bool  invert = false,
const unsigned int  nb_scales = 1 
)
inline

Compute Haar multiscale wavelet transform .

Parameters
invertSet inverse of direct transform.
nb_scalesNumber of scales used for the transform.

Definition at line 28379 of file CImg.h.

template<typename T>
int cimg_library_suffixed::CImg< T >::height ( ) const
inline

Return the number of image rows.

Return the image height, i.e. the image dimension along the Y-axis.

Note
  • The height() of an empty image is equal to 0.
  • height() returns an int, although the image height is internally stored as an unsigned int. Using an int is safer and prevents arithmetic traps possibly encountered when doing calculations involving unsigned int variables. Access to the initial unsigned int variable is possible (though not recommended) by (*this)._height.

Definition at line 12023 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::histogram ( const unsigned int  nb_levels,
const T  min_value,
const T  max_value 
)
inline

Compute the histogram of pixel values.

Parameters
nb_levelsNumber of desired histogram levels.
min_valueMinimum pixel value considered for the histogram computation. All pixel values lower than min_value will not be counted.
max_valueMaximum pixel value considered for the histogram computation. All pixel values higher than max_value will not be counted.
Note
  • The histogram H of an image I is the 1d function where H(x) counts the number of occurences of the value x in the image I.
  • The resulting histogram is always defined in 1d. Histograms of multi-valued images are not multi-dimensional.
Example
const CImg<float> img = CImg<float>("reference.jpg").histogram(256);
img.display_graph(0,3);
ref_histogram.jpg

Definition at line 19237 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::hot_LUT256 ( )
inlinestatic

Return colormap "hot", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_hot.jpg

Definition at line 19963 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::HSV_LUT256 ( )
inlinestatic

Return colormap "HSV", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_hsv.jpg

Definition at line 19911 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::identity_matrix ( )
inline

Replace the image by an identity matrix.

Note
If the instance image is not square, it is resized to a square matrix using its maximum dimension as a reference.

Definition at line 16885 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::identity_matrix ( const unsigned int  N)
inlinestatic

Return a NxN identity matrix.

Parameters
NDimension of the matrix.

Definition at line 18110 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::index ( const CImg< t > &  colormap,
const float  dithering = 1,
const bool  map_indexes = false 
)
inline

Index multi-valued pixels regarding to a specified colormap.

Parameters
colormapMulti-valued colormap used as the basis for multi-valued pixel indexing.
ditheringLevel of dithering (0=disable, 1=standard level).
map_indexesTell if the values of the resulting image are the colormap indices or the colormap vectors.
Note
  • img.index(colormap,dithering,1) is equivalent to img.index(colormap,dithering,0).map(colormap).
Example
const CImg<float> img("reference.jpg"), colormap(3,1,1,3, 0,128,255, 0,128,255, 0,128,255);
const CImg<float> res = img.get_index(colormap,1,true);
(img,res).display();
ref_index.jpg

Definition at line 19328 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::invert ( const bool  use_LU = true)
inline

Invert the instance image, viewed as a matrix.

Parameters
use_LUChoose the inverting algorithm. Can be:
  • true: LU-based matrix inversion.
  • false: SVD-based matrix inversion.

Definition at line 16966 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_CImg3d ( const bool  full_check = true,
char *const  error_message = 0 
) const
inline

Test if image instance represents a valid serialization of a 3d object.

Return true if the image instance represents a valid serialization of a 3d object, and false otherwise.

Parameters
full_checkTells if full checking of the instance must be performed.
[out]error_messageC-string to contain the error message, if the test does not succeed.
Note
  • Set full_check to false to speed-up the 3d object checking. In this case, only the size of each 3d object component is checked.
  • Size of the string error_message should be at least 128-bytes long, to be able to contain the error message.

Definition at line 13932 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_empty ( ) const
inline

Test if image instance is empty.

Return true, if image instance is empty, i.e. does not contain any pixel values, has dimensions 0 x 0 x 0 x 0 and a pixel buffer pointer set to 0 (null pointer), and false otherwise.

Definition at line 13356 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_inf ( ) const
inline

Test if image instance contains a 'inf' value.

Return true, if image instance contains a 'inf' value, and false otherwise.

Definition at line 13364 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_nan ( ) const
inline

Test if image instance contains a 'nan' value.

Return true, if image instance contains a 'nan' value, and false otherwise.

Definition at line 13373 of file CImg.h.

template<typename T>
template<typename tp , typename tc , typename to >
bool cimg_library_suffixed::CImg< T >::is_object3d ( const CImgList< tp > &  primitives,
const CImgList< tc > &  colors,
const to &  opacities,
const bool  full_check = true,
char *const  error_message = 0 
) const
inline

Test if the set {*this,primitives,colors,opacities} defines a valid 3d object.

Return true is the 3d object represented by the set {*this,primitives,colors,opacities} defines a valid 3d object, and false otherwise. The vertex coordinates are defined by the instance image.

Parameters
primitivesList of primitives of the 3d object.
colorsList of colors of the 3d object.
opacitiesList (or image) of opacities of the 3d object.
full_checkTells if full checking of the 3d object must be performed.
[out]error_messageC-string to contain the error message, if the test does not succeed.
Note
  • Set full_checking to false to speed-up the 3d object checking. In this case, only the size of each 3d object component is checked.
  • Size of the string error_message should be at least 128-bytes long, to be able to contain the error message.

Definition at line 13778 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_overlapped ( const CImg< t > &  img) const
inline

Test if pixel buffers of instance and input images overlap.

Return true, if pixel buffers attached to image instance and input image img overlap, and false otherwise.

Parameters
imgInput image to compare with.
Note
  • Buffer overlapping may happen when manipulating shared images.
  • If two image buffers overlap, operating on one of the image will probably modify the other one.
  • Most of the time, CImg<T> instances are non-shared and do not overlap between each others.
Example
const CImg<float>
img1("reference.jpg"), // Load RGB-color image.
img2 = img1.get_shared_channel(1); // Get shared version of the green channel.
if (img1.is_overlapped(img2)) { // Test succeeds, 'img1' and 'img2' overlaps.
std::printf("Buffers overlap!\n");
}

Definition at line 13758 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXC ( const unsigned int  size_x,
const unsigned int  size_c 
) const
inline

Test if image width and spectrum are equal to specified values.

Test if is_sameX(unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13478 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXC ( const CImg< t > &  img) const
inline

Test if image width and spectrum are the same as that of another image.

Test if is_sameX(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13487 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXY ( const unsigned int  size_x,
const unsigned int  size_y 
) const
inline

Test if image width and height are equal to specified values.

Test if is_sameX(unsigned int) const and is_sameY(unsigned int) const are both verified.

Definition at line 13436 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXY ( const CImg< t > &  img) const
inline

Test if image width and height are the same as that of another image.

Test if is_sameX(const CImg<t>&) const and is_sameY(const CImg<t>&) const are both verified.

Definition at line 13445 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXY ( const CImgDisplay disp) const
inline

Test if image width and height are the same as that of an existing display window.

Test if is_sameX(const CImgDisplay&) const and is_sameY(const CImgDisplay&) const are both verified.

Definition at line 13453 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXYC ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_c 
) const
inline

Test if image width, height and spectrum are equal to specified values.

Test if is_sameXY(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13563 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXYC ( const CImg< t > &  img) const
inline

Test if image width, height and spectrum are the same as that of another image.

Test if is_sameXY(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13572 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXYZ ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z 
) const
inline

Test if image width, height and depth are equal to specified values.

Test if is_sameXY(unsigned int,unsigned int) const and is_sameZ(unsigned int) const are both verified.

Definition at line 13546 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXYZ ( const CImg< t > &  img) const
inline

Test if image width, height and depth are the same as that of another image.

Test if is_sameXY(const CImg<t>&) const and is_sameZ(const CImg<t>&) const are both verified.

Definition at line 13555 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXYZC ( const unsigned int  size_x,
const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c 
) const
inline

Test if image width, height, depth and spectrum are equal to specified values.

Test if is_sameXYZ(unsigned int,unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13615 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXYZC ( const CImg< t > &  img) const
inline

Test if image width, height, depth and spectrum are the same as that of another image.

Test if is_sameXYZ(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13625 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXZ ( const unsigned int  size_x,
const unsigned int  size_z 
) const
inline

Test if image width and depth are equal to specified values.

Test if is_sameX(unsigned int) const and is_sameZ(unsigned int) const are both verified.

Definition at line 13461 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXZ ( const CImg< t > &  img) const
inline

Test if image width and depth are the same as that of another image.

Test if is_sameX(const CImg<t>&) const and is_sameZ(const CImg<t>&) const are both verified.

Definition at line 13470 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameXZC ( const unsigned int  size_x,
const unsigned int  size_z,
const unsigned int  size_c 
) const
inline

Test if image width, depth and spectrum are equal to specified values.

Test if is_sameXZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13580 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameXZC ( const CImg< t > &  img) const
inline

Test if image width, depth and spectrum are the same as that of another image.

Test if is_sameXZ(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13589 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameYC ( const unsigned int  size_y,
const unsigned int  size_c 
) const
inline

Test if image height and spectrum are equal to specified values.

Test if is_sameY(unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13512 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameYC ( const CImg< t > &  img) const
inline

Test if image height and spectrum are the same as that of another image.

Test if is_sameY(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13521 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameYZ ( const unsigned int  size_y,
const unsigned int  size_z 
) const
inline

Test if image height and depth are equal to specified values.

Test if is_sameY(unsigned int) const and is_sameZ(unsigned int) const are both verified.

Definition at line 13495 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameYZ ( const CImg< t > &  img) const
inline

Test if image height and depth are the same as that of another image.

Test if is_sameY(const CImg<t>&) const and is_sameZ(const CImg<t>&) const are both verified.

Definition at line 13504 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameYZC ( const unsigned int  size_y,
const unsigned int  size_z,
const unsigned int  size_c 
) const
inline

Test if image height, depth and spectrum are equal to specified values.

Test if is_sameYZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13597 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameYZC ( const CImg< t > &  img) const
inline

Test if image height, depth and spectrum are the same as that of another image.

Test if is_sameYZ(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13606 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_sameZC ( const unsigned int  size_z,
const unsigned int  size_c 
) const
inline

Test if image depth and spectrum are equal to specified values.

Test if is_sameZ(unsigned int) const and is_sameC(unsigned int) const are both verified.

Definition at line 13529 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::is_sameZC ( const CImg< t > &  img) const
inline

Test if image depth and spectrum are the same as that of another image.

Test if is_sameZ(const CImg<t>&) const and is_sameC(const CImg<t>&) const are both verified.

Definition at line 13538 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::is_shared ( ) const
inline

Test shared state of the pixel buffer.

Return true if image instance has a shared memory buffer, and false otherwise.

Note
  • A shared image do not own his pixel buffer data() and will not deallocate it on destruction.
  • Most of the time, a CImg<T> image instance will not be shared.
  • A shared image can only be obtained by a limited set of constructors and methods (see list below).

Definition at line 13347 of file CImg.h.

template<typename T>
template<typename tf , typename tfunc >
static CImg<floatT> cimg_library_suffixed::CImg< T >::isoline3d ( CImgList< tf > &  primitives,
const tfunc &  func,
const float  isovalue,
const float  x0,
const float  y0,
const float  x1,
const float  y1,
const int  size_x = 256,
const int  size_y = 256 
)
inlinestatic

Compute 0-isolines of a function, as a 3d object.

Parameters
[out]primitivesPrimitives data of the resulting 3d object.
funcElevation function. Is of type float (*func)(const float x,const float y).
isovalueIsovalue to extract from function.
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
size_xResolution of the function along the X-axis.
size_yResolution of the function along the Y-axis.
Note
Use the marching squares algorithm for extracting the isolines.

Definition at line 29294 of file CImg.h.

template<typename T>
template<typename tf , typename tfunc >
static CImg<floatT> cimg_library_suffixed::CImg< T >::isosurface3d ( CImgList< tf > &  primitives,
const tfunc &  func,
const float  isovalue,
const float  x0,
const float  y0,
const float  z0,
const float  x1,
const float  y1,
const float  z1,
const int  size_x = 32,
const int  size_y = 32,
const int  size_z = 32 
)
inlinestatic

Compute isosurface of a function, as a 3d object.

Parameters
[out]primitivesPrimitives data of the resulting 3d object.
funcImplicit function. Is of type float (*func)(const float x, const float y, const float z).
isovalueIsovalue to extract.
x0X-coordinate of the starting point.
y0Y-coordinate of the starting point.
z0Z-coordinate of the starting point.
x1X-coordinate of the ending point.
y1Y-coordinate of the ending point.
z1Z-coordinate of the ending point.
size_xResolution of the elevation function along the X-axis.
size_yResolution of the elevation function along the Y-axis.
size_zResolution of the elevation function along the Z-axis.
Note
Use the marching cubes algorithm for extracting the isosurface.

Definition at line 29414 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::jet_LUT256 ( )
inlinestatic

Return colormap "jet", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_jet.jpg

Definition at line 19993 of file CImg.h.

template<typename T>
T cimg_library_suffixed::CImg< T >::kth_smallest ( const unsigned int  k) const
inline

Return the kth smallest pixel value.

Parameters
kRank of the search smallest element.

Definition at line 16237 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::label ( const bool  is_high_connectivity = false,
const Tfloat  tolerance = 0 
)
inline

Label connected components.

Parameters
is_high_connectivityBoolean that choose between 4(false)- or 8(true)-connectivity in 2d case, and between 6(false)- or 26(true)-connectivity in 3d case.
toleranceTolerance used to determine if two neighboring pixels belong to the same region.
Note
The algorithm of connected components computation has been primarily done by A. Meijster, according to the publication: 'W.H. Hesselink, A. Meijster, C. Bron, "Concurrent Determination of Connected Components.", In: Science of Computer Programming 41 (2001), pp. 173–194'. The submitted code has then been modified to fit CImg coding style and constraints.

Definition at line 19752 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::label ( const CImg< t > &  connectivity_mask,
const Tfloat  tolerance = 0 
)
inline

Label connected components .

Parameters
connectivity_maskMask of the neighboring pixels.
toleranceTolerance used to determine if two neighboring pixels belong to the same region.

Definition at line 19792 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atX ( const float  fx,
const int  y,
const int  z,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X-coordinate.

Return a linearly-interpolated pixel value of the image instance located at (fx,y,z,c), or a specified default value in case of out-of-bounds access along the X-axis.

Parameters
fxX-coordinate of the pixel value (float-valued).
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
out_valueDefault value returned if (fx,y,z,c) is outside image bounds.
Note
  • Similar to atX(int,int,int,int,const T), except that the returned pixel value is approximated by a linear interpolation along the X-axis, if corresponding coordinates are not integers.
  • The type of the returned pixel value is extended to float, if the pixel type T is not float-valued.
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12525 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atX ( const float  fx,
const int  y = 0,
const int  z = 0,
const int  c = 0 
) const
inline

Return pixel value, using linear interpolation and Neumann boundary conditions for the X-coordinate.

Return a linearly-interpolated pixel value of the image instance located at (fx,y,z,c), or the value of the nearest pixel location in the image instance in case of out-of-bounds access along the X-axis.

Parameters
fxX-coordinate of the pixel value (float-valued).
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Similar to linear_atX(float,int,int,int,const T) const, except that an out-of-bounds access returns the value of the nearest pixel in the image instance, regarding the specified X-coordinate.
  • If you know your image instance is not empty, you may rather use the slightly faster method _linear_atX(float,int,int,int).
Warning
  • There is no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds.

Definition at line 12552 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXY ( const float  fx,
const float  fy,
const int  z,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X and Y-coordinates.

Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the boundary checking are achieved both for X and Y-coordinates.

Definition at line 12580 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXY ( const float  fx,
const float  fy,
const int  z = 0,
const int  c = 0 
) const
inline

Return pixel value, using linear interpolation and Neumann boundary conditions for the X and Y-coordinates.

Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking are achieved both for X and Y-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _linear_atXY(float,float,int,int).

Definition at line 12601 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXYZ ( const float  fx,
const float  fy,
const float  fz,
const int  c,
const T  out_value 
) const
inline

Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates.

Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the boundary checking are achieved both for X,Y and Z-coordinates.

Definition at line 12634 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXYZ ( const float  fx,
const float  fy = 0,
const float  fz = 0,
const int  c = 0 
) const
inline

Return pixel value, using linear interpolation and Neumann boundary conditions for the X,Y and Z-coordinates.

Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking are achieved both for X,Y and Z-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _linear_atXYZ(float,float,float,int).

Definition at line 12666 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXYZC ( const float  fx,
const float  fy,
const float  fz,
const float  fc,
const T  out_value 
) const
inline

Return pixel value, using linear interpolation and Dirichlet boundary conditions for all X,Y,Z,C-coordinates.

Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the boundary checking are achieved for all X,Y,Z and C-coordinates.

Definition at line 12712 of file CImg.h.

template<typename T>
Tfloat cimg_library_suffixed::CImg< T >::linear_atXYZC ( const float  fx,
const float  fy = 0,
const float  fz = 0,
const float  fc = 0 
) const
inline

Return pixel value, using linear interpolation and Neumann boundary conditions for all X,Y,Z and C-coordinates.

Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking are achieved for all X,Y,Z and C-coordinates.

Note
  • If you know your image instance is not empty, you may rather use the slightly faster method _linear_atXYZC(float,float,float,float).

Definition at line 12759 of file CImg.h.

template<typename T>
static const CImg<Tuchar>& cimg_library_suffixed::CImg< T >::lines_LUT256 ( )
inlinestatic

Return colormap "lines", containing 256 colors entries in RGB.

Returns
The following 256x1x1x3 colormap is returned:
ref_colormap_lines.jpg

Definition at line 19928 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load ( const char *const  filename)
inline

Load image from a file.

Parameters
filenameFilename, as a C-string.
Note
The extension of filename defines the file format. If no filename extension is provided, CImg<T>::get_load() will try to load the file as a .cimg or .cimgz file.

Definition at line 37945 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_analyze ( const char *const  filename,
float *const  voxel_size = 0 
)
inline

Load image from an ANALYZE7.5/NIFTI file.

Parameters
filenameFilename, as a C-string.
[out]voxel_sizePointer to the three voxel sizes read from the file.

Definition at line 39569 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_ascii ( const char *const  filename)
inline

Load image from an ascii file.

Parameters
filenameFilename, as a C -string.

Definition at line 38117 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_bmp ( const char *const  filename)
inline

Load image from a BMP file.

Parameters
filenameFilename, as a C-string.

Definition at line 38237 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_camera ( const unsigned int  camera_index = 0,
const unsigned int  skip_frames = 0,
const bool  release_camera = true,
const unsigned int  capture_width = 0,
const unsigned int  capture_height = 0 
)
inline

Load image from a camera stream, using OpenCV.

Parameters
camera_indexIndex of the camera to capture images from.
skip_framesNumber of frames to skip before the capture.
release_cameraTells if the camera ressource must be released at the end of the method.

Definition at line 40909 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_cimg ( const char *const  filename,
const char  axis = 'z',
const float  align = 0 
)
inline

Load image from a .cimg[z] file.

Parameters
filenameFilename, as a C-string.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 39714 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_cimg ( const char *const  filename,
const unsigned int  n0,
const unsigned int  n1,
const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  c0,
const unsigned int  x1,
const unsigned int  y1,
const unsigned int  z1,
const unsigned int  c1,
const char  axis = 'z',
const float  align = 0 
)
inline

Load sub-images of a .cimg file.

Parameters
filenameFilename, as a C-string.
n0Starting frame.
n1Ending frame (~0U for max).
x0X-coordinate of the starting sub-image vertex.
y0Y-coordinate of the starting sub-image vertex.
z0Z-coordinate of the starting sub-image vertex.
c0C-coordinate of the starting sub-image vertex.
x1X-coordinate of the ending sub-image vertex (~0U for max).
y1Y-coordinate of the ending sub-image vertex (~0U for max).
z1Z-coordinate of the ending sub-image vertex (~0U for max).
c1C-coordinate of the ending sub-image vertex (~0U for max).
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 39755 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_dcraw_external ( const char *const  filename)
inline

Load image from a RAW Color Camera file, using external tool 'dcraw'.

Parameters
filenameFilename, as a C-string.

Definition at line 40849 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_dlm ( const char *const  filename)
inline

Load image from a DLM file.

Parameters
filenameFilename, as a C-string.

Definition at line 38179 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_exr ( const char *const  filename)
inline

Load image from a EXR file.

Parameters
filenameFilename, as a C-string.

Definition at line 39926 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_ffmpeg ( const char *const  filename,
const unsigned int  first_frame = 0,
const unsigned int  last_frame = ~0U,
const unsigned int  step_frame = 1,
const bool  pixel_format = true,
const bool  resume = false,
const char  axis = 'z',
const float  align = 0 
)
inline

Load image sequence using FFMPEG av's libraries.

Parameters
filenameFilename, as a C-string.
first_frameIndex of the first frame to read.
last_frameIndex of the last frame to read.
step_frameStep value for frame reading.
pixel_formatTo be documented.
resumeTo be documented.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 40300 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_ffmpeg_external ( const char *const  filename,
const char  axis = 'z',
const float  align = 0 
)
inline

Load image sequence using FFMPEG's external tool 'ffmpeg'.

Parameters
filenameFilename, as a C-string.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 40593 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_gif_external ( const char *const  filename,
const char  axis = 'z',
const float  align = 0 
)
inline

Load gif file, using Imagemagick or GraphicsMagicks's external tools.

Parameters
filenameFilename, as a C-string.
use_graphicsmagickTells if GraphicsMagick's tool 'gm' is used instead of ImageMagick's tool 'convert'.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 40609 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_graphicsmagick_external ( const char *const  filename)
inline

Load image using GraphicsMagick's external tool 'gm'.

Parameters
filenameFilename, as a C-string.

Definition at line 40624 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_gzip_external ( const char *const  filename)
inline

Load gzipped image file, using external tool 'gunzip'.

Parameters
filenameFilename, as a C-string.

Definition at line 40683 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_imagemagick_external ( const char *const  filename)
inline

Load image using ImageMagick's external tool 'convert'.

Parameters
filenameFilename, as a C-string.

Definition at line 40736 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_inr ( const char *const  filename,
float *const  voxel_size = 0 
)
inline

Load image from an INRIMAGE-4 file.

Parameters
filenameFilename, as a C-string.
[out]voxel_sizePointer to the three voxel sizes read from the file.

Definition at line 39809 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_jpeg ( const char *const  filename)
inline

Load image from a JPEG file.

Parameters
filenameFilename, as a C-string.

Definition at line 38430 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_magick ( const char *const  filename)
inline

Load image from a file, using Magick++ library.

Parameters
filenameFilename, as a C-string.

Definition at line 38555 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_medcon_external ( const char *const  filename)
inline

Load image from a DICOM file, using XMedcon's external tool 'medcon'.

Parameters
filenameFilename, as a C-string.

Definition at line 40799 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_minc2 ( const char *const  filename)
inline

Load image from a MINC2 file.

Parameters
filenameFilename, as a C-string.

Definition at line 39532 of file CImg.h.

template<typename T>
template<typename tf , typename tc >
CImg<T>& cimg_library_suffixed::CImg< T >::load_off ( CImgList< tf > &  primitives,
CImgList< tc > &  colors,
const char *const  filename 
)
inline

Load 3d object from a .OFF file.

Parameters
[out]primitivesPrimitives data of the 3d object.
[out]colorsColors data of the 3d object.
filenameFilename, as a C-string.

Definition at line 40366 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_other ( const char *const  filename)
inline

Load image using various non-native ways.

Parameters
filenameFilename, as a C-string.

Definition at line 40972 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_pandore ( const char *const  filename)
inline

Load image from a PANDORE-5 file.

Parameters
filenameFilename, as a C-string.

Definition at line 39965 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_parrec ( const char *const  filename,
const char  axis = 'c',
const float  align = 0 
)
inline

Load image from a PAR-REC (Philips) file.

Parameters
filenameFilename, as a C-string.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.
alignAppending alignment.

Definition at line 40192 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_pfm ( const char *const  filename)
inline

Load image from a PFM file.

Parameters
filenameFilename, as a C-string.

Definition at line 39022 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_png ( const char *const  filename)
inline

Load image from a PNG file.

Parameters
filenameFilename, as a C-string.

Definition at line 38628 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_pnm ( const char *const  filename)
inline

Load image from a PNM file.

Parameters
filenameFilename, as a C-string.

Definition at line 38820 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_raw ( const char *const  filename,
const unsigned int  size_x = 0,
const unsigned int  size_y = 1,
const unsigned int  size_z = 1,
const unsigned int  size_c = 1,
const bool  is_multiplexed = false,
const bool  invert_endianness = false,
const unsigned long  offset = 0 
)
inline

Load image from a raw binary file.

Parameters
filenameFilename, as a C-string.
size_xWidth of the image buffer.
size_yHeight of the image buffer.
size_zDepth of the image buffer.
size_cSpectrum of the image buffer.
is_multiplexedTells if the image values are multiplexed along the C-axis.
invert_endiannessTells if the endianness of the image buffer must be inverted.
offsetStarting offset of the read in the specified file.

Definition at line 40215 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_rgb ( const char *const  filename,
const unsigned int  dimw,
const unsigned int  dimh = 1 
)
inline

Load image from a RGB file.

Parameters
filenameFilename, as a C-string.
dimwWidth of the image buffer.
dimhHeight of the image buffer.

Definition at line 39113 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_rgba ( const char *const  filename,
const unsigned int  dimw,
const unsigned int  dimh = 1 
)
inline

Load image from a RGBA file.

Parameters
filenameFilename, as a C-string.
dimwWidth of the image buffer.
dimhHeight of the image buffer.

Definition at line 39169 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_tiff ( const char *const  filename,
const unsigned int  first_frame = 0,
const unsigned int  last_frame = ~0U,
const unsigned int  step_frame = 1 
)
inline

Load image from a TIFF file.

Parameters
filenameFilename, as a C-string.
first_frameFirst frame to read (for multi-pages tiff).
last_frameLast frame to read (for multi-pages tiff).
step_frameStep value of frame reading.
Note
  • libtiff support is enabled by defining the precompilation directive cimg_use_tif.
  • When libtiff is enabled, 2D and 3D (multipage) several channel per pixel are supported for char,uchar,short,ushort,float and double pixel types.
  • If cimg_use_tif is not defined at compilation time the function uses CImg<T>& load_other(const char*).

Definition at line 39236 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::load_yuv ( const char *const  filename,
const unsigned int  size_x,
const unsigned int  size_y = 1,
const unsigned int  first_frame = 0,
const unsigned int  last_frame = ~0U,
const unsigned int  step_frame = 1,
const bool  yuv2rgb = true,
const char  axis = 'z' 
)
inline

Load image sequence from a YUV file.

Parameters
filenameFilename, as a C-string.
size_xWidth of the frames.
size_yHeight of the frames.
first_frameIndex of the first frame to read.
last_frameIndex of the last frame to read.
step_frameStep value for frame reading.
yuv2rgbTells if the YUV to RGB transform must be applied.
axisAppending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }.

Definition at line 40328 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::log ( )
inline

Compute the logarithm of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its logarithm $\mathrm{log}_{e}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15142 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::log10 ( )
inline

Compute the base-10 logarithm of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its base-10 logarithm $\mathrm{log}_{10}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15186 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::log2 ( )
inline

Compute the base-2 logarithm of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its base-2 logarithm $\mathrm{log}_{2}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15164 of file CImg.h.

template<typename T>
Tdouble cimg_library_suffixed::CImg< T >::magnitude ( const int  magnitude_type = 2) const
inline

Compute norm of the image, viewed as a matrix.

Parameters
magnitude_typeNorm type. Can be:
  • -1: Linf-norm
  • 0: L2-norm
  • 1: L1-norm

Definition at line 16589 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::map ( const CImg< t > &  colormap,
const unsigned int  boundary_conditions = 0 
)
inline

Map predefined colormap on the scalar (indexed) image instance.

Parameters
colormapMulti-valued colormap used for mapping the indexes.
boundary_conditionsThe border condition type { 0=zero | 1=dirichlet | 2=periodic }.
Example
const CImg<float> img("reference.jpg"),
colormap1(3,1,1,3, 0,128,255, 0,128,255, 0,128,255),
colormap2(3,1,1,3, 255,0,0, 0,255,0, 0,0,255),
res = img.get_index(colormap1,0).map(colormap2);
(img,res).display();
ref_map.jpg

Definition at line 19603 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::matrix ( const T &  a0)
inlinestatic

Return a 1x1 matrix containing specified coefficients.

Parameters
a0First matrix value.
Note
Equivalent to vector(const T&).

Definition at line 17993 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::matrix ( const T &  a0,
const T &  a1,
const T &  a2,
const T &  a3 
)
inlinestatic

Return a 2x2 matrix containing specified coefficients.

Parameters
a0First matrix value.
a1Second matrix value.
a2Third matrix value.
a3Fourth matrix value.

Definition at line 18004 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::matrix ( const T &  a0,
const T &  a1,
const T &  a2,
const T &  a3,
const T &  a4,
const T &  a5,
const T &  a6,
const T &  a7,
const T &  a8 
)
inlinestatic

Return a 3x3 matrix containing specified coefficients.

Parameters
a0First matrix value.
a1Second matrix value.
a2Third matrix value.
a3Fourth matrix value.
a4Fifth matrix value.
a5Sixth matrix value.
a6Seventh matrix value.
a7Eighth matrix value.
a8Nineth matrix value.

Definition at line 18024 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::max ( const T  val)
inline

Pointwise max operator between instance image and a value.

Parameters
valValue used as the reference argument of the max operator.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{max}(I_{(x,y,z,c)},\mathrm{val})$.

Definition at line 16012 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::max ( const CImg< t > &  img)
inline

Pointwise max operator between two images.

Parameters
imgImage used as the reference argument of the max operator.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{max}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})$.

Definition at line 16033 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::max ( const char *const  expression)
inline

Pointwise max operator between an image and an expression.

Parameters
expressionMath formula as a C-string.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{max}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})$.

Definition at line 16058 of file CImg.h.

template<typename T>
template<typename t >
T& cimg_library_suffixed::CImg< T >::max_min ( t &  min_val)
inline

Return a reference to the maximum pixel value as well as the minimum pixel value.

Parameters
[out]min_valMinimum pixel value.

Definition at line 16199 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::min ( const T  val)
inline

Pointwise min operator between instance image and a value.

Parameters
valValue used as the reference argument of the min operator.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{min}(I_{(x,y,z,c)},\mathrm{val})$.

Definition at line 15915 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::min ( const CImg< t > &  img)
inline

Pointwise min operator between two images.

Parameters
imgImage used as the reference argument of the min operator.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{min}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})$.

Definition at line 15936 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::min ( const char *const  expression)
inline

Pointwise min operator between an image and an expression.

Parameters
expressionMath formula as a C-string.
Note
Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by $\mathrm{min}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})$.

Definition at line 15961 of file CImg.h.

template<typename T>
template<typename t >
T& cimg_library_suffixed::CImg< T >::min_max ( t &  max_val)
inline

Return a reference to the minimum pixel value as well as the maximum pixel value.

Parameters
[out]max_valMaximum pixel value.

Definition at line 16160 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::mirror ( const char  axis)
inline

Mirror image content along specified axis.

Parameters
axisMirror axis

Definition at line 22099 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::mirror ( const char *const  axes)
inline

Mirror image content along specified axes.

Parameters
axesMirror axes, as a C-string.
Note
axes may contains multiple character, e.g. "xyz"

Definition at line 22176 of file CImg.h.

template<typename T>
template<typename t >
CImg<t>& cimg_library_suffixed::CImg< T >::move_to ( CImg< t > &  img)
inline

Transfer content of an image instance into another one.

Transfer the dimensions and the pixel buffer content of an image instance into another one, and replace instance by an empty image. It avoids the copy of the pixel buffer when possible.

Parameters
imgDestination image.
Note
  • Pixel types T and t of source and destination images can be different, though the process is designed to be instantaneous when T and t are the same.
Example
CImg<float> src(256,256,1,3,0), // Construct a 256x256x1x3 (color) image filled with value '0'.
dest(16,16); // Construct a 16x16x1x1 (scalar) image.
src.move_to(dest); // Now, 'src' is empty and 'dest' is the 256x256x1x3 image.

Definition at line 10323 of file CImg.h.

template<typename T>
template<typename t >
CImgList<t>& cimg_library_suffixed::CImg< T >::move_to ( CImgList< t > &  list,
const unsigned int  pos = ~0U 
)
inline

Transfer content of an image instance into a new image in an image list.

Transfer the dimensions and the pixel buffer content of an image instance into a newly inserted image at position pos in specified CImgList<t> instance.

Parameters
listDestination list.
posPosition of the newly inserted image in the list.
Note
  • When optionnal parameter pos is ommited, the image instance is transfered as a new image at the end of the specified list.
  • It is convenient to sequentially insert new images into image lists, with no additional copies of memory buffer.
Example
CImgList<float> list; // Construct an empty image list.
CImg<float> img("reference.jpg"); // Read image from filename.
img.move_to(list); // Transfer image content as a new item in the list (no buffer copy).

Definition at line 10356 of file CImg.h.

template<typename T>
template<typename t >
Tdouble cimg_library_suffixed::CImg< T >::MSE ( const CImg< t > &  img) const
inline

Compute the MSE (Mean-Squared Error) between two images.

Parameters
imgImage used as the second argument of the MSE operator.

Definition at line 16461 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::mul ( const CImg< t > &  img)
inline

In-place pointwise multiplication.

Compute the pointwise multiplication between the image instance and the specified input image img.

Parameters
imgInput image, as the second operand of the multiplication.
Note
Example
CImg<float>
img("reference.jpg"),
shade(img.width,img.height(),1,1,"-(x-w/2)^2-(y-h/2)^2",false);
shade.normalize(0,1);
(img,shade,img.get_mul(shade)).display();

Definition at line 15523 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::noise ( const double  sigma,
const unsigned int  noise_type = 0 
)
inline

Add random noise to pixel values.

Parameters
sigmaAmplitude of the random additive noise. If sigma<0, it stands for a percentage of the global value range.
noise_typeType of additive noise (can be 0=gaussian, 1=uniform, 2=Salt and Pepper, 3=Poisson or 4=Rician).
Returns
A reference to the modified image instance.
Note
  • For Poisson noise (noise_type=3), parameter sigma is ignored, as Poisson noise only depends on the image value itself.
  • Function CImg<T>::get_noise() is also defined. It returns a non-shared modified copy of the image instance.
Example
const CImg<float> img("reference.jpg"), res = img.get_noise(40);
(img,res.normalize(0,255)).display();
ref_noise.jpg

Definition at line 18901 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::norm ( const int  norm_type = 2)
inline

Compute L2-norm of each multi-valued pixel of the image instance.

Parameters
norm_typeType of computed vector norm (can be 0=Linf, 1=L1 or 2=L2).
Example
const CImg<float> img("reference.jpg"), res = img.get_norm();
(img,res.normalize(0,255)).display();
ref_norm.jpg

Definition at line 19038 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::normalize ( const T  min_value,
const T  max_value 
)
inline

Linearly normalize pixel values.

Parameters
min_valueMinimum desired value of the resulting image.
max_valueMaximum desired value of the resulting image.
Example
const CImg<float> img("reference.jpg"), res = img.get_normalize(160,220);
(img,res).display();
ref_normalize2.jpg

Definition at line 18975 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::normalize ( )
inline

Normalize multi-valued pixels of the image instance, with respect to their L2-norm.

Example
const CImg<float> img("reference.jpg"), res = img.get_normalize();
(img,res.normalize(0,255)).display();
ref_normalize.jpg

Definition at line 19003 of file CImg.h.

template<typename T>
template<typename tp , typename tc , typename to >
CImg<T>& cimg_library_suffixed::CImg< T >::object3dtoCImg3d ( const CImgList< tp > &  primitives,
const CImgList< tc > &  colors,
const to &  opacities,
const bool  full_check = true 
)
inline

Convert 3d object into a CImg3d representation.

Parameters
primitivesPrimitives data of the 3d object.
colorsColors data of the 3d object.
opacitiesOpacities data of the 3d object.
full_checkTells if full checking of the 3d object must be performed.

Definition at line 30215 of file CImg.h.

template<typename T>
long cimg_library_suffixed::CImg< T >::offset ( const int  x,
const int  y = 0,
const int  z = 0,
const int  c = 0 
) const
inline

Return the offset to a located pixel value, with respect to the beginning of the pixel buffer.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Writing img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)) - img.data(). Thus, this method has the same properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int).
Example
const CImg<float> img(100,100,1,3); // Define a 100x100 RGB-color image.
const long off = img.offset(10,10,0,2); // Get the offset of the blue value of the pixel located at (10,10).
const float val = img[off]; // Get the blue value of this pixel.

Definition at line 12158 of file CImg.h.

template<typename T>
cimg_library_suffixed::CImg< T >::operator T * ( )
inline

Implicitely cast an image into a T*.

Implicitely cast a CImg<T> instance into a T* or const T* pointer, whether the image instance is const or not. The returned pointer points on the first value of the image pixel buffer.

Note
  • It simply returns the pointer data() to the pixel buffer.
  • This implicit conversion is convenient to test the empty state of images (data() being 0 in this case), e.g.
    CImg<float> img1(100,100), img2; // 'img1' is a 100x100 image, 'img2' is an empty image.
    if (img1) { // Test succeeds, 'img1' is not an empty image.
    if (!img2) { // Test succeeds, 'img2' is an empty image.
    std::printf("'img1' is not empty, 'img2' is empty.");
    }
    }
  • It also allows to use brackets to access pixel values, without need for a CImg<T>::operator[](), e.g.
    CImg<float> img(100,100);
    const float value = img[99]; // Access to value of the last pixel on the first row.
    img[510] = 255; // Set pixel value at (10,5).

Definition at line 10562 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::operator!= ( const t  value) const
inline

Test if pixels of an image are all different from a value.

Return true is all pixels of the image instance are different than the specified value.

Parameters
valueReference value to compare with.

Definition at line 11882 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::operator!= ( const char *const  expression) const
inline

Test if all pixel values of an image are different from a specified expression.

Return true is all pixels of the image instance are different to the specified expression.

Parameters
expressionValue string describing the way pixel values are compared.

Definition at line 11891 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::operator!= ( const CImg< t > &  img) const
inline

Test if two images have different sizes or values.

Return true if the image instance and the input image img have different dimensions or pixel values, and false otherwise.

Parameters
imgInput image to compare with.
Note
  • Writing img1!=img2 is equivalent to !(img1==img2).

Definition at line 11904 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator% ( const t  value) const
inline

Modulo operator.

Similar to operator%=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11262 of file CImg.h.

template<typename T>
CImg<Tfloat> cimg_library_suffixed::CImg< T >::operator% ( const char *const  expression) const
inline

Modulo operator.

Similar to operator%=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11271 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator% ( const CImg< t > &  img) const
inline

Modulo operator.

Similar to operator%=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11281 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator%= ( const t  value)
inline

In-place modulo operator.

Similar to operator+=(const t), except that it performs a modulo operation instead of an addition.

Definition at line 11191 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator%= ( const char *const  expression)
inline

In-place modulo operator.

Similar to operator+=(const char*), except that it performs a modulo operation instead of an addition.

Definition at line 11204 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator%= ( const CImg< t > &  img)
inline

In-place modulo operator.

Similar to operator+=(const CImg<t>&), except that it performs a modulo operation instead of an addition.

Definition at line 11243 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator& ( const t  value) const
inline

Bitwise AND operator.

Similar to operator&=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11363 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator& ( const char *const  expression) const
inline

Bitwise AND operator.

Similar to operator&=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11372 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator& ( const CImg< t > &  img) const
inline

Bitwise AND operator.

Similar to operator&=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11382 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator&= ( const t  value)
inline

In-place bitwise AND operator.

Similar to operator+=(const t), except that it performs a bitwise AND operation instead of an addition.

Definition at line 11290 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator&= ( const char *const  expression)
inline

In-place bitwise AND operator.

Similar to operator+=(const char*), except that it performs a bitwise AND operation instead of an addition.

Definition at line 11303 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator&= ( const CImg< t > &  img)
inline

In-place bitwise AND operator.

Similar to operator+=(const CImg<t>&), except that it performs a bitwise AND operation instead of an addition.

Definition at line 11344 of file CImg.h.

template<typename T>
T& cimg_library_suffixed::CImg< T >::operator() ( const unsigned int  x)
inline

Access to a pixel value.

Return a reference to a located pixel value of the image instance, being possibly const, whether the image instance is const or not. This is the standard method to get/set pixel values in CImg<T> images.

Parameters
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
Note
  • Range of pixel coordinates start from (0,0,0,0) to (width()-1,height()-1,depth()-1,spectrum()-1).
  • Due to the particular arrangement of the pixel buffers defined in CImg, you can omit one coordinate if the corresponding dimension is equal to 1. For instance, pixels of a 2d image (depth() equal to 1) can be accessed by img(x,y,c) instead of img(x,y,0,c).
Warning
  • There is no boundary checking done in this operator, to make it as fast as possible. You must take care of out-of-bounds access by yourself, if necessary. For debuging purposes, you may want to define macro 'cimg_verbosity'>=3 to enable additional boundary checking operations in this operator. In that case, warning messages will be printed on the error output when accessing out-of-bounds pixels.
Example
CImg<float> img(100,100,1,3,0); // Construct a 100x100x1x3 (color) image with pixels set to '0'.
const float
valR = img(10,10,0,0), // Read red value at coordinates (10,10).
valG = img(10,10,0,1), // Read green value at coordinates (10,10)
valB = img(10,10,2), // Read blue value at coordinates (10,10) (Z-coordinate can be omitted).
avg = (valR + valG + valB)/3; // Compute average pixel value.
img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the color pixel (10,10) by the average grey value.

Definition at line 10485 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator* ( const t  value) const
inline

Multiplication operator.

Similar to operator*=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11048 of file CImg.h.

template<typename T>
CImg<Tfloat> cimg_library_suffixed::CImg< T >::operator* ( const char *const  expression) const
inline

Multiplication operator.

Similar to operator*=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11057 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator* ( const CImg< t > &  img) const
inline

Multiplication operator.

Similar to operator*=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11067 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator*= ( const t  value)
inline

In-place multiplication operator.

Similar to operator+=(const t), except that it performs a multiplication instead of an addition.

Definition at line 10973 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator*= ( const char *const  expression)
inline

In-place multiplication operator.

Similar to operator+=(const char*), except that it performs a multiplication instead of an addition.

Definition at line 10986 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator*= ( const CImg< t > &  img)
inline

In-place multiplication operator.

Replace the image instance by the matrix multiplication between the image instance and the specified matrix img.

Parameters
imgSecond operand of the matrix multiplication.
Note
  • It does not compute a pointwise multiplication between two images. For this purpose, use mul(const CImg<t>&) instead.
  • The size of the image instance can be modified by this operator.
Example
CImg<float> A(2,2,1,1, 1,2,3,4); // Construct 2x2 matrix A = [1,2;3,4].
const CImg<float> X(1,2,1,1, 1,2); // Construct 1x2 vector X = [1;2].
A*=X; // Assign matrix multiplication A*X to 'A'.
// 'A' is now a 1x2 vector whose values are [5;11].

Definition at line 11038 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator+ ( ) const
inline

Return a non-shared copy of the image instance.

Note
  • Use this operator to ensure you get a non-shared copy of an image instance with same pixel type T. Indeed, the usual copy constructor CImg<T>(const CImg<T>&) returns a shared copy of a shared input image, and it may be not desirable to work on a regular copy (e.g. for a resize operation) if you have no informations about the shared state of the input image.
  • Writing (+img) is equivalent to CImg<T>(img,false).

Definition at line 10795 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator+ ( const t  value) const
inline

Addition operator.

Similar to operator+=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10805 of file CImg.h.

template<typename T>
CImg<Tfloat> cimg_library_suffixed::CImg< T >::operator+ ( const char *const  expression) const
inline

Addition operator.

Similar to operator+=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10814 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator+ ( const CImg< t > &  img) const
inline

Addition operator.

Similar to operator+=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10824 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator++ ( )
inline

In-place increment operator (prefix).

Add 1 to all image pixels, and return a reference to the current incremented image instance.

Note
  • Writing ++img is equivalent to img+=1.

Definition at line 10764 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator++ ( int  )
inline

In-place increment operator (postfix).

Add 1 to all image pixels, and return a new copy of the initial (pre-incremented) image instance.

Note
  • Use the prefixed version operator++() if you don't need a copy of the initial (pre-incremented) image instance, since a useless image copy may be expensive in terms of memory usage.

Definition at line 10780 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator+= ( const t  value)
inline

In-place addition operator.

Add specified value to all pixels of an image instance.

Parameters
valueValue to add.
Note
  • Resulting pixel values are casted to fit the pixel type T. For instance, adding 0.2 to a CImg<char> is possible but does nothing indeed.
  • Overflow values are treated as with standard C++ numeric types. For instance,
    CImg<unsigned char> img(100,100,1,1,255); // Construct a 100x100 image with pixel values '255'.
    img+=1; // Add '1' to each pixels -> Overflow.
    // here all pixels of image 'img' are equal to '0'.
  • To prevent value overflow, you may want to consider pixel type T as float or double, and use cut() after addition.
Example
CImg<unsigned char> img1("reference.jpg"); // Load a 8-bits RGB image (values in [0,255]).
CImg<float> img2(img1); // Construct a float-valued copy of 'img1'.
img2+=100; // Add '100' to pixel values -> goes out of [0,255] but no problems with floats.
img2.cut(0,255); // Cut values in [0,255] to fit the 'unsigned char' constraint.
img1 = img2; // Rewrite safe result in 'unsigned char' version 'img1'.
const CImg<unsigned char> img3 = (img1 + 100).cut(0,255); // Do the same in a more simple and elegant way.
(img1,img2,img3).display();
ref_operator_plus.jpg

Definition at line 10673 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator+= ( const char *const  expression)
inline

In-place addition operator.

Add values to image pixels, according to the specified string expression.

Parameters
expressionValue string describing the way pixel values are added.
Note
  • Similar to operator=(const char*), except that it adds values to the pixels of the current image instance, instead of assigning them.

Definition at line 10690 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator+= ( const CImg< t > &  img)
inline

In-place addition operator.

Add values to image pixels, according to the values of the input image img.

Parameters
imgInput image to add.
Note
  • The size of the image instance is never modified.
  • It is not mandatory that input image img has the same size as the image instance. If less values are available in img, then the values are added periodically. For instance, adding one WxH scalar image (spectrum() equal to 1) to one WxH color image (spectrum() equal to 3) means each color channel will be incremented with the same values at the same locations.
Example
CImg<float> img1("reference.jpg"); // Load a RGB color image (img1.spectrum()==3)
const CImg<float> img2(img1.width(),img.height(),1,1,"255*(x/w)^2"); // Construct a scalar shading (img2.spectrum()==1).
img1+=img2; // Add shading to each channel of 'img1'.
img1.cut(0,255); // Prevent [0,255] overflow.
(img2,img1).display();
ref_operator_plus1.jpg

Definition at line 10745 of file CImg.h.

template<typename T>
template<typename t >
CImgList<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator, ( const CImg< t > &  img) const
inline

Construct an image list from two images.

Return a new list of image (CImgList instance) containing exactly two elements:

  • A copy of the image instance, at position [0].
  • A copy of the specified image img, at position [1].
Parameters
imgInput image that will be the second image of the resulting list.
Note
  • The family of operator,() is convenient to easily create list of images, but it is also quite slow in practice (see warning below).
  • Constructed lists contain no shared images. If image instance or input image img are shared, they are inserted as new non-shared copies in the resulting list.
  • The pixel type of the returned list may be a superset of the initial pixel type T, if necessary.
Warning
Example
const CImg<float>
img1("reference.jpg"),
img2 = img1.get_mirror('x'),
img3 = img2.get_blur(5);
const CImgList<float> list = (img1,img2); // Create list of two elements from 'img1' and 'img2'.
(list,img3).display(); // Display image list containing copies of 'img1','img2' and 'img3'.
ref_operator_comma.jpg

Definition at line 11939 of file CImg.h.

template<typename T>
template<typename t >
CImgList<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator, ( const CImgList< t > &  list) const
inline

Construct an image list from image instance and an input image list.

Return a new list of images (CImgList instance) containing exactly list.size() + 1 elements:

  • A copy of the image instance, at position [0].
  • A copy of the specified image list list, from positions [1] to [list.size()].
Parameters
listInput image list that will be appended to the image instance.
Note

Definition at line 11954 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator- ( ) const
inline

Replace each pixel by its opposite value.

Note
  • If the computed opposite values are out-of-range, they are treated as with standard C++ numeric types. For instance, the unsigned char opposite of 1 is 255.
Example
const CImg<unsigned char>
img1("reference.jpg"), // Load a RGB color image.
img2 = -img1; // Compute its opposite (in 'unsigned char').
(img1,img2).display();
ref_operator_minus.jpg

Definition at line 10935 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator- ( const t  value) const
inline

Substraction operator.

Similar to operator-=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10945 of file CImg.h.

template<typename T>
CImg<Tfloat> cimg_library_suffixed::CImg< T >::operator- ( const char *const  expression) const
inline

Substraction operator.

Similar to operator-=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10954 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator- ( const CImg< t > &  img) const
inline

Substraction operator.

Similar to operator-=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 10964 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator-- ( )
inline

In-place decrement operator (prefix).

Similar to operator++(), except that it performs a decrement instead of an increment.

Definition at line 10902 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator-- ( int  )
inline

In-place decrement operator (postfix).

Similar to operator++(int), except that it performs a decrement instead of an increment.

Definition at line 10915 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator-= ( const t  value)
inline

In-place substraction operator.

Similar to operator+=(const t), except that it performs a substraction instead of an addition.

Definition at line 10833 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator-= ( const char *const  expression)
inline

In-place substraction operator.

Similar to operator+=(const char*), except that it performs a substraction instead of an addition.

Definition at line 10846 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator-= ( const CImg< t > &  img)
inline

In-place substraction operator.

Similar to operator+=(const CImg<t>&), except that it performs a substraction instead of an addition.

Definition at line 10885 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator/ ( const t  value) const
inline

Division operator.

Similar to operator/=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11163 of file CImg.h.

template<typename T>
CImg<Tfloat> cimg_library_suffixed::CImg< T >::operator/ ( const char *const  expression) const
inline

Division operator.

Similar to operator/=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11172 of file CImg.h.

template<typename T>
template<typename t >
CImg<_cimg_Tt> cimg_library_suffixed::CImg< T >::operator/ ( const CImg< t > &  img) const
inline

Division operator.

Similar to operator/=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image may be a superset of the initial pixel type T, if necessary.

Definition at line 11182 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator/= ( const t  value)
inline

In-place division operator.

Similar to operator+=(const t), except that it performs a division instead of an addition.

Definition at line 11094 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator/= ( const char *const  expression)
inline

In-place division operator.

Similar to operator+=(const char*), except that it performs a division instead of an addition.

Definition at line 11107 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator/= ( const CImg< t > &  img)
inline

In-place division operator.

Replace the image instance by the (right) matrix division between the image instance and the specified matrix img.

Parameters
imgSecond operand of the matrix division.
Note
  • It does not compute a pointwise division between two images. For this purpose, use div(const CImg<t>&) instead.
  • It returns the matrix operation A*inverse(img).
  • The size of the image instance can be modified by this operator.

Definition at line 11153 of file CImg.h.

template<typename T>
CImgList<T> cimg_library_suffixed::CImg< T >::operator< ( const char  axis) const
inline

Split image along specified axis.

Return a new list of images (CImgList instance) containing the splitted components of the instance image along the specified axis.

Parameters
axisSplitting axis (can be 'x','y','z' or 'c')
Note
Example
const CImg<unsigned char> img("reference.jpg"); // Load a RGB color image.
const CImgList<unsigned char> list = (img<'c'); // Get a list of its three R,G,B channels.
(img,list).display();
ref_operator_less.jpg

Definition at line 11973 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator<< ( const t  value) const
inline

Bitwise left shift operator.

Similar to operator<<=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11670 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator<< ( const CImg< t > &  img) const
inline

Bitwise left shift operator.

Similar to operator<<=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11690 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator<< ( const char *const  expression) const
inline

Bitwise left shift operator.

Similar to operator<<=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11679 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator<<= ( const t  value)
inline

In-place bitwise left shift operator.

Similar to operator+=(const t), except that it performs a bitwise left shift instead of an addition.

Definition at line 11599 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator<<= ( const CImg< t > &  img)
inline

In-place bitwise left shift operator.

Similar to operator+=(const CImg<t>&), except that it performs a bitwise left shift instead of an addition.

Definition at line 11651 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator<<= ( const char *const  expression)
inline

In-place bitwise left shift operator.

Similar to operator+=(const char*), except that it performs a bitwise left shift instead of an addition.

Definition at line 11612 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator= ( const T  value)
inline

Assign a value to all image pixels.

Assign specified value to each pixel value of the image instance.

Parameters
valueValue that will be assigned to image pixels.
Note
  • The image size is never modified.
  • The value may be casted to pixel type T if necessary.
Example
CImg<char> img(100,100); // Declare image (with garbage values).
img = 0; // Set all pixel values to '0'.
img = 1.2; // Set all pixel values to '1' (cast of '1.2' as a 'char').

Definition at line 10585 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator= ( const char *const  expression)
inline

Assign pixels values from a specified expression.

Initialize all pixel values from the specified string expression.

Parameters
expressionValue string describing the way pixel values are set.
Note
  • String parameter expression may describe different things:
    • If expression is a list of values (as in "1,2,3,8,3,2"), or a formula (as in "(x*y)%255"), the pixel values are set from specified expression and the image size is not modified.
    • If expression is a filename (as in "reference.jpg"), the corresponding image file is loaded and replace the image instance. The image size is modified if necessary.
Example
CImg<float> img1(100,100), img2(img1), img3(img1); // Declare three 100x100 scalar images with unitialized pixel values.
img1 = "0,50,100,150,200,250,200,150,100,50"; // Set pixel values of 'img1' from a value sequence.
img2 = "10*((x*y)%25)"; // Set pixel values of 'img2' from a formula.
img3 = "reference.jpg"; // Set pixel values of 'img3' from a file (image size is modified).
(img1,img2,img3).display();
ref_operator_eq.jpg

Definition at line 10609 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator= ( const CImg< t > &  img)
inline

Copy an image into the current image instance.

Similar to the in-place copy constructor assign(const CImg<t>&).

Definition at line 10627 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator= ( const CImgDisplay disp)
inline

Copy the content of a display window to the current image instance.

Similar to assign(const CImgDisplay&).

Definition at line 10640 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::operator== ( const t  value) const
inline

Test if all pixels of an image have the same value.

Return true is all pixels of the image instance are equal to the specified value.

Parameters
valueReference value to compare with.

Definition at line 11811 of file CImg.h.

template<typename T>
bool cimg_library_suffixed::CImg< T >::operator== ( const char *const  expression) const
inline

Test if all pixel values of an image follow a specified expression.

Return true is all pixels of the image instance are equal to the specified expression.

Parameters
expressionValue string describing the way pixel values are compared.

Definition at line 11824 of file CImg.h.

template<typename T>
template<typename t >
bool cimg_library_suffixed::CImg< T >::operator== ( const CImg< t > &  img) const
inline

Test if two images have the same size and values.

Return true if the image instance and the input image img have the same dimensions and pixel values, and false otherwise.

Parameters
imgInput image to compare with.
Note
  • The pixel buffer pointers data() of the two compared images do not have to be the same for operator==() to return true. Only the dimensions and the pixel values matter. Thus, the comparison can be true even for different pixel types T and t.
Example
const CImg<float> img1(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'float' pixel values).
const CImg<char> img2(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'char' pixel values).
if (img1==img2) { // Test succeeds, image dimensions and values are the same.
std::printf("'img1' and 'img2' have same dimensions and values.");
}

Definition at line 11866 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator>> ( const t  value) const
inline

Bitwise right shift operator.

Similar to operator>>=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11770 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator>> ( const char *const  expression) const
inline

Bitwise right shift operator.

Similar to operator>>=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11779 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator>> ( const CImg< t > &  img) const
inline

Bitwise right shift operator.

Similar to operator>>=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11790 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator>>= ( const t  value)
inline

In-place bitwise right shift operator.

Similar to operator+=(const t), except that it performs a bitwise right shift instead of an addition.

Definition at line 11699 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator>>= ( const char *const  expression)
inline

In-place bitwise right shift operator.

Similar to operator+=(const char*), except that it performs a bitwise right shift instead of an addition.

Definition at line 11712 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator>>= ( const CImg< t > &  img)
inline

In-place bitwise right shift operator.

Similar to operator+=(const CImg<t>&), except that it performs a bitwise right shift instead of an addition.

Definition at line 11751 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator^ ( const t  value) const
inline

Bitwise XOR operator.

Similar to operator^=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11571 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator^ ( const char *const  expression) const
inline

Bitwise XOR operator.

Similar to operator^=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11580 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator^ ( const CImg< t > &  img) const
inline

Bitwise XOR operator.

Similar to operator^=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11590 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator^= ( const t  value)
inline

In-place bitwise XOR operator.

Similar to operator+=(const t), except that it performs a bitwise XOR operation instead of an addition.

Warning
  • It does not compute the power of pixel values. For this purpose, use pow(const t) instead.

Definition at line 11494 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator^= ( const char *const  expression)
inline

In-place bitwise XOR operator.

Similar to operator+=(const char*), except that it performs a bitwise XOR operation instead of an addition.

Warning
  • It does not compute the power of pixel values. For this purpose, use pow(const char*) instead.

Definition at line 11509 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator^= ( const CImg< t > &  img)
inline

In-place bitwise XOR operator.

Similar to operator+=(const CImg<t>&), except that it performs a bitwise XOR operation instead of an addition.

Warning
  • It does not compute the power of pixel values. For this purpose, use pow(const CImg<t>&) instead.

Definition at line 11552 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator| ( const t  value) const
inline

Bitwise OR operator.

Similar to operator|=(const t), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11464 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator| ( const char *const  expression) const
inline

Bitwise OR operator.

Similar to operator|=(const char*), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11473 of file CImg.h.

template<typename T>
template<typename t >
CImg<T> cimg_library_suffixed::CImg< T >::operator| ( const CImg< t > &  img) const
inline

Bitwise OR operator.

Similar to operator|=(const CImg<t>&), except that it returns a new image instance instead of operating in-place. The pixel type of the returned image is T.

Definition at line 11483 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator|= ( const t  value)
inline

In-place bitwise OR operator.

Similar to operator+=(const t), except that it performs a bitwise OR operation instead of an addition.

Definition at line 11391 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::operator|= ( const char *const  expression)
inline

In-place bitwise OR operator.

Similar to operator+=(const char*), except that it performs a bitwise OR operation instead of an addition.

Definition at line 11404 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::operator|= ( const CImg< t > &  img)
inline

In-place bitwise OR operator.

Similar to operator+=(const CImg<t>&), except that it performs a bitwise OR operation instead of an addition.

Definition at line 11445 of file CImg.h.

template<typename T>
CImg<T> cimg_library_suffixed::CImg< T >::operator~ ( ) const
inline

Bitwise inversion operator.

Similar to operator-(), except that it compute the bitwise inverse instead of the opposite value.

Definition at line 11798 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::permute_axes ( const char *const  order)
inline

Permute axes order.

Parameters
orderAxes permutations, as a C-string of 4 characters. This function permutes image content regarding the specified axes permutation.

Definition at line 22413 of file CImg.h.

template<typename T>
static const char* cimg_library_suffixed::CImg< T >::pixel_type ( )
inlinestatic

Return the type of image pixel values as a C string.

Return a char* string containing the usual type name of the image pixel values (i.e. a stringified version of the template parameter T).

Note
  • The returned string may contain spaces (as in "unsigned char").
  • If the pixel type T does not correspond to a registered type, the string "unknown" is returned.

Definition at line 11992 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::plane3d ( CImgList< tf > &  primitives,
const float  size_x = 100,
const float  size_y = 100,
const unsigned int  subdivisions_x = 10,
const unsigned int  subdivisions_y = 10 
)
inlinestatic

Generate a 3d XY-plane.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
size_xThe width of the plane (dimension along the X-axis).
size_yThe height of the plane (dimensions along the Y-axis).
subdivisions_xThe number of planar subdivisions along the X-axis.
subdivisions_yThe number of planar subdivisions along the Y-axis.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::plane3d(faces3d,100,50);
CImg<unsigned char>().display_object3d("Plane3d",points3d,faces3d);
ref_plane3d.jpg

Definition at line 30086 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::pow ( const double  p)
inline

Raise each pixel value to a specified power.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its power $I_{(x,y,z,c)}^p$.

Parameters
pExponent value.
Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.
Example
const CImg<float>
img0("reference.jpg"), // Load reference color image.
img1 = (img0/255).pow(1.8)*=255, // Compute gamma correction, with gamma = 1.8.
img2 = (img0/255).pow(0.5)*=255; // Compute gamma correction, with gamma = 0.5.
(img0,img1,img2).display();

Definition at line 15582 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::pow ( const char *const  expression)
inline

Raise each pixel value to a power, specified from an expression.

Similar to operator+=(const char*), except it performs a pointwise exponentiation instead of an addition.

Definition at line 15653 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::pow ( const CImg< t > &  img)
inline

Raise each pixel value to a power, pointwisely specified from another image.

Similar to operator+=(const CImg<t>& img), except that it performs an exponentiation instead of an addition.

Definition at line 15704 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::print ( const char *const  title = 0,
const bool  display_stats = true 
) const
inline

Display informations about the image data.

Parameters
titleName for the considered image.
display_statsTells to compute and display image statistics.

Definition at line 41027 of file CImg.h.

template<typename T>
template<typename t >
Tdouble cimg_library_suffixed::CImg< T >::PSNR ( const CImg< t > &  img,
const Tdouble  max_value = 255 
) const
inline

Compute the PSNR (Peak Signal-to-Noise Ratio) between two images.

Parameters
imgImage used as the second argument of the PSNR operator.
max_valueMaximum theoretical value of the signal.

Definition at line 16484 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::quantize ( const unsigned int  nb_levels,
const bool  keep_range = true 
)
inline

Uniformly quantize pixel values.

Parameters
nb_levelsNumber of quantization levels.
keep_rangeTells if resulting values keep the same range as the original ones.
Example
const CImg<float> img("reference.jpg"), res = img.get_quantize(4);
(img,res).display();
ref_quantize.jpg

Definition at line 19139 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::rand ( const T  val_min,
const T  val_max 
)
inline

Fill image with random values in specified range.

Parameters
val_minMinimal random value.
val_maxMaximal random value.
Note
Random samples are following a uniform distribution.

Definition at line 18850 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::resize ( const int  size_x,
const int  size_y = -100,
const int  size_z = -100,
const int  size_c = -100,
const int  interpolation_type = 1,
const unsigned int  boundary_conditions = 0,
const float  centering_x = 0,
const float  centering_y = 0,
const float  centering_z = 0,
const float  centering_c = 0 
)
inline

Resize image to new dimensions.

Parameters
size_xNumber of columns (new size along the X-axis).
size_yNumber of rows (new size along the Y-axis).
size_zNumber of slices (new size along the Z-axis).
size_cNumber of vector-channels (new size along the C-axis).
interpolation_typeMethod of interpolation:
  • -1 = no interpolation: raw memory resizing.
  • 0 = no interpolation: additional space is filled according to boundary_conditions.
  • 1 = nearest-neighbor interpolation.
  • 2 = moving average interpolation.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = cubic interpolation.
  • 6 = lanczos interpolation.
boundary_conditionsBorder condition type.
centering_xSet centering type (only if interpolation_type=0).
centering_ySet centering type (only if interpolation_type=0).
centering_zSet centering type (only if interpolation_type=0).
centering_cSet centering type (only if interpolation_type=0).
Note
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

Definition at line 20989 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::resize ( const CImg< t > &  src,
const int  interpolation_type = 1,
const unsigned int  boundary_conditions = 0,
const float  centering_x = 0,
const float  centering_y = 0,
const float  centering_z = 0,
const float  centering_c = 0 
)
inline

Resize image to dimensions of another image.

Parameters
srcReference image used for dimensions.
interpolation_typeInterpolation method.
boundary_conditionsBoundary conditions.
centering_xSet centering type (only if interpolation_type=0).
centering_ySet centering type (only if interpolation_type=0).
centering_zSet centering type (only if interpolation_type=0).
centering_cSet centering type (only if interpolation_type=0).

Definition at line 21910 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::resize ( const CImgDisplay disp,
const int  interpolation_type = 1,
const unsigned int  boundary_conditions = 0,
const float  centering_x = 0,
const float  centering_y = 0,
const float  centering_z = 0,
const float  centering_c = 0 
)
inline

Resize image to dimensions of a display window.

Parameters
dispReference display window used for dimensions.
interpolation_typeInterpolation method.
boundary_conditionsBoundary conditions.
centering_xSet centering type (only if interpolation_type=0).
centering_ySet centering type (only if interpolation_type=0).
centering_zSet centering type (only if interpolation_type=0).
centering_cSet centering type (only if interpolation_type=0).

Definition at line 21938 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::resize_doubleXY ( )
inline

Resize image to double-size, using the Scale2X algorithm.

Note
Use anisotropic upscaling algorithm described here.

Definition at line 21982 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::resize_object3d ( const float  sx,
const float  sy = -100,
const float  sz = -100 
)
inline

Resize 3d object.

Parameters
sxWidth of the 3d object's bounding box.
syHeight of the 3d object's bounding box.
szDepth of the 3d object's bounding box.

Definition at line 28886 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::resize_tripleXY ( )
inline

Resize image to triple-size, using the Scale3X algorithm.

Note
Use anisotropic upscaling algorithm described here.

Definition at line 22036 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::RGBtoBayer ( )
inline

Convert RGB color image to a Bayer-coded scalar image.

Note
First (upper-left) pixel if the red component of the pixel color.

Definition at line 20792 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::RGBtoXYZ ( )
inline

Convert pixel values from RGB to XYZ_709 color spaces.

Note
Uses the standard D65 white point.

Definition at line 20550 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::rol ( const unsigned int  n = 1)
inline

Compute the bitwise left rotation of each pixel value.

Similar to operator<<=(unsigned int), except that it performs a left rotation instead of a left shift.

Definition at line 15727 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::rol ( const char *const  expression)
inline

Compute the bitwise left rotation of each pixel value.

Similar to operator<<=(const char*), except that it performs a left rotation instead of a left shift.

Definition at line 15745 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::rol ( const CImg< t > &  img)
inline

Compute the bitwise left rotation of each pixel value.

Similar to operator<<=(const CImg<t>&), except that it performs a left rotation instead of a left shift.

Definition at line 15797 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::ror ( const unsigned int  n = 1)
inline

Compute the bitwise right rotation of each pixel value.

Similar to operator>>=(unsigned int), except that it performs a right rotation instead of a right shift.

Definition at line 15820 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::ror ( const char *const  expression)
inline

Compute the bitwise right rotation of each pixel value.

Similar to operator>>=(const char*), except that it performs a right rotation instead of a right shift.

Definition at line 15838 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::ror ( const CImg< t > &  img)
inline

Compute the bitwise right rotation of each pixel value.

Similar to operator>>=(const CImg<t>&), except that it performs a right rotation instead of a right shift.

Definition at line 15890 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::rotate ( const float  angle,
const unsigned int  interpolation = 1,
const unsigned int  boundary = 0 
)
inline

Rotate image with arbitrary angle.

Parameters
angleRotation angle, in degrees.
interpolationType of interpolation. Can be { 0=nearest | 1=linear | 2=cubic }.
boundaryBoundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic }.
Note
Most of the time, size of the image is modified.

Definition at line 22638 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::rotate ( const float  angle,
const float  cx,
const float  cy,
const float  zoom,
const unsigned int  interpolation = 1,
const unsigned int  boundary = 3 
)
inline

Rotate image with arbitrary angle, around a center point.

Parameters
angleRotation angle, in degrees.
cxX-coordinate of the rotation center.
cyY-coordinate of the rotation center.
zoomZoom factor.
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic }.
interpolation_typeType of interpolation. Can be { 0=nearest | 1=linear | 2=cubic }.

Definition at line 22787 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::rotation_matrix ( const float  x,
const float  y,
const float  z,
const float  w,
const bool  is_quaternion = false 
)
inlinestatic

Return a 3x3 rotation matrix along the (x,y,z)-axis with an angle w.

Parameters
xX-coordinate of the rotation axis, or first quaternion coordinate.
yY-coordinate of the rotation axis, or second quaternion coordinate.
zZ-coordinate of the rotation axis, or third quaternion coordinate.
wAngle of the rotation axis, or fourth quaternion coordinate.
is_quaternionTell is the four arguments denotes a set { axis + angle } or a quaternion.

Definition at line 18135 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::round ( const double  y = 1,
const int  rounding_type = 0 
)
inline

Round pixel values.

Parameters
yRounding precision.
rounding_typeRounding type. Can be:
  • -1: Backward.
  • 0: Nearest.
  • 1: Forward.

Definition at line 18869 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::row ( const int  y0)
inline

Return specified image row .

Parameters
y0Image row.

Definition at line 23679 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save ( const char *const  filename,
const int  number = -1,
const unsigned int  digits = 6 
) const
inline

Save image as a file.

Parameters
filenameFilename, as a C-string.
numberWhen positive, represents an index added to the filename. Otherwise, no number is added.
digitsNumber of digits used for adding the number to the filename.
Note
  • The used file format is defined by the file extension in the filename filename.
  • Parameter number can be used to add a 6-digit number to the filename before saving.

Definition at line 42073 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_analyze ( const char *const  filename,
const float *const  voxel_size = 0 
) const
inline

Save image as an ANALYZE7.5 or NIFTI file.

Parameters
filenameFilename, as a C-string.
voxel_sizePointer to 3 consecutive values that tell about the voxel sizes along the X,Y and Z dimensions.

Definition at line 43375 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_ascii ( const char *const  filename) const
inline

Save image as an ascii file.

Parameters
filenameFilename, as a C-string.

Definition at line 42186 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_bmp ( const char *const  filename) const
inline

Save image as a BMP file.

Parameters
filenameFilename, as a C-string.

Definition at line 42292 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_cimg ( const char *const  filename,
const bool  is_compressed = false 
) const
inline

Save image as a .cimg file.

Parameters
filenameFilename, as a C-string.
is_compressedTells if the file contains compressed image data.

Definition at line 43454 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_cimg ( const char *const  filename,
const unsigned int  n0,
const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  c0 
) const
inline

Save image as a sub-image into an existing .cimg file.

Parameters
filenameFilename, as a C-string.
n0Index of the image inside the file.
x0X-coordinate of the sub-image location.
y0Y-coordinate of the sub-image location.
z0Z-coordinate of the sub-image location.
c0C-coordinate of the sub-image location.

Definition at line 43474 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_cpp ( const char *const  filename) const
inline

Save image as a .cpp source file.

Parameters
filenameFilename, as a C-string.

Definition at line 42215 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_dlm ( const char *const  filename) const
inline

Save image as a DLM file.

Parameters
filenameFilename, as a C-string.

Definition at line 42252 of file CImg.h.

template<typename T>
static void cimg_library_suffixed::CImg< T >::save_empty_cimg ( const char *const  filename,
const unsigned int  dx,
const unsigned int  dy = 1,
const unsigned int  dz = 1,
const unsigned int  dc = 1 
)
inlinestatic

Save blank image as a .cimg file.

Parameters
filenameFilename, as a C-string.
dxWidth of the image.
dyHeight of the image.
dzDepth of the image.
dcNumber of channels of the image.
Note
  • All pixel values of the saved image are set to 0.
  • Use this method to save large images without having to instanciate and allocate them.

Definition at line 43502 of file CImg.h.

template<typename T>
static void cimg_library_suffixed::CImg< T >::save_empty_cimg ( std::FILE *const  file,
const unsigned int  dx,
const unsigned int  dy = 1,
const unsigned int  dz = 1,
const unsigned int  dc = 1 
)
inlinestatic

Save blank image as a .cimg file .

Same as save_empty_cimg(const char *,unsigned int,unsigned int,unsigned int,unsigned int) with a file stream argument instead of a filename string.

Definition at line 43513 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_exr ( const char *const  filename) const
inline

Save image as an OpenEXR file.

Parameters
filenameFilename, as a C-string.
Note
The OpenEXR file format is described here.

Definition at line 43591 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_ffmpeg ( const char *const  filename,
const unsigned int  fps = 25,
const unsigned int  bitrate = 2048 
) const
inline

Save image as a video file, using the FFmpeg library.

Parameters
filenameFilename, as a C-string.
fpsVideo framerate.
bitrateVideo bitrate.
Note
  • Each slice of the instance image is considered to be a single frame of the output video file.
  • This method uses functions provided by the FFmpeg library. Configuration macro cimg_use_ffmpeg must be set for the method to succeed natively. Otherwise, the method calls save_ffmpeg_external(const char*,unsigned int,unsigned int,const char*,unsigned int,unsigned int) const.

Definition at line 43908 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_ffmpeg_external ( const char *const  filename,
const char *const  codec = 0,
const unsigned int  fps = 25,
const unsigned int  bitrate = 2048 
) const
inline

Save volumetric image as a video, using ffmpeg external binary.

Parameters
filenameFilename, as a C-string.
codecVideo codec, as a C-string.
fpsVideo framerate.
bitrateVideo bitrate.
Note
  • Each slice of the instance image is considered to be a single frame of the output video file.
  • This method uses ffmpeg, an external executable binary provided by FFmpeg. It must be installed for the method to succeed.

Definition at line 44072 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_graphicsmagick_external ( const char *const  filename,
const unsigned int  quality = 100 
) const
inline

Save image using GraphicsMagick's external binary.

Parameters
filenameFilename, as a C-string.
qualityImage quality (expressed in percent), when the file format supports it.
Note
This method uses gm, an external executable binary provided by GraphicsMagick. It must be installed for the method to succeed.

Definition at line 44145 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_gzip_external ( const char *const  filename) const
inline

Save image using gzip external binary.

Parameters
filenameFilename, as a C-string.
Note
This method uses gzip, an external executable binary provided by gzip. It must be installed for the method to succeed.

Definition at line 44093 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_imagemagick_external ( const char *const  filename,
const unsigned int  quality = 100 
) const
inline

Save image using ImageMagick's external binary.

Parameters
filenameFilename, as a C-string.
qualityImage quality (expressed in percent), when the file format supports it.
Note
This method uses convert, an external executable binary provided by ImageMagick. It must be installed for the method to succeed.

Definition at line 44197 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_inr ( const char *const  filename,
const float *const  voxel_size = 0 
) const
inline

Save image as an INRIMAGE-4 file.

Parameters
filenameFilename, as a C-string.
voxel_sizePointer to 3 values specifying the voxel sizes along the X,Y and Z dimensions.

Definition at line 43524 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_jpeg ( const char *const  filename,
const unsigned int  quality = 100 
) const
inline

Save image as a JPEG file.

Parameters
filenameFilename, as a C-string.
qualityImage quality (in %)

Definition at line 42399 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_magick ( const char *const  filename,
const unsigned int  bytes_per_pixel = 0 
) const
inline

Save image, using built-in ImageMagick++ library.

Parameters
filenameFilename, as a C-string.
bytes_per_pixelForce the number of bytes per pixel for the saving, when possible.

Definition at line 42511 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_medcon_external ( const char *const  filename) const
inline

Save image as a Dicom file.

Parameters
filenameFilename, as a C-string.
Note
This method uses medcon, an external executable binary provided by (X)Medcon. It must be installed for the method to succeed.

Definition at line 44247 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_minc2 ( const char *const  filename,
const char *const  imitate_file = 0 
) const
inline

Save image as a MINC2 file.

Parameters
filenameFilename, as a C-string.
imitate_fileIf non-zero, reference filename, as a C-string, to borrow header from.

Definition at line 43334 of file CImg.h.

template<typename T>
template<typename tf , typename tc >
const CImg<T>& cimg_library_suffixed::CImg< T >::save_off ( const CImgList< tf > &  primitives,
const CImgList< tc > &  colors,
const char *const  filename 
) const
inline

Save 3d object as an Object File Format (.off) file.

Parameters
filenameFilename, as a C-string.
primitivesList of 3d object primitives.
colorsList of 3d object colors.
Note
  • Instance image contains the vertices data of the 3d object.
  • Textured, transparent or sphere-shaped primitives cannot be managed by the .off file format. Such primitives will be lost or simplified during file saving.
  • The .off file format is described here.

Definition at line 43964 of file CImg.h.

template<typename T>
template<typename tf , typename tc >
const CImg<T>& cimg_library_suffixed::CImg< T >::save_off ( const CImgList< tf > &  primitives,
const CImgList< tc > &  colors,
std::FILE *const  file 
) const
inline

Save 3d object as an Object File Format (.off) file .

Same as save_off(const CImgList<tf>&,const CImgList<tc>&,const char*) const with a file stream argument instead of a filename string.

Definition at line 43975 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_other ( const char *const  filename,
const unsigned int  quality = 100 
) const
inline
Parameters
filenameFilename, as a C-string.
qualityImage quality (expressed in percent), when the file format supports it.
Note
  • The filename extension tells about the desired file format.
  • This method tries to save the instance image as a file, using external tools from ImageMagick or GraphicsMagick. At least one of these tool must be installed for the method to succeed.
  • It is recommended to use the generic method save(const char*, int) const instead, as it can handle some file formats natively.

Definition at line 44301 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_pandore ( const char *const  filename,
const unsigned int  colorspace = 0 
) const
inline

Save image as a Pandore-5 file.

Parameters
filenameFilename, as a C-string.
colorspaceColorspace data field in output file (see Pandore file specifications for more informations).

Definition at line 43663 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_pandore ( std::FILE *const  file,
const unsigned int  colorspace = 0 
) const
inline

Save image as a Pandore-5 file .

Same as save_pandore(const char *,unsigned int) const with a file stream argument instead of a filename string.

Definition at line 43672 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_pfm ( const char *const  filename) const
inline

Save image as a PFM file.

Parameters
filenameFilename, as a C-string.

Definition at line 42998 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_png ( const char *const  filename,
const unsigned int  bytes_per_pixel = 0 
) const
inline

Save image as a PNG file.

Parameters
filenameFilename, as a C-string.
bytes_per_pixelForce the number of bytes per pixels for the saving, when possible.

Definition at line 42586 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_pnk ( const char *const  filename) const
inline

Save image as a PNK file.

Parameters
filenameFilename, as a C-string.

Definition at line 42929 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_pnm ( const char *const  filename,
const unsigned int  bytes_per_pixel = 0 
) const
inline

Save image as a PNM file.

Parameters
filenameFilename, as a C-string.
bytes_per_pixelForce the number of bytes per pixels for the saving.

Definition at line 42793 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_raw ( const char *const  filename,
const bool  is_multiplexed = false 
) const
inline

Save image as a raw data file.

Parameters
filenameFilename, as a C-string.
is_multiplexedTells if the image channels are stored in a multiplexed way (true) or not (false).
Note
The .raw format does not store the image dimensions in the output file, so you have to keep track of them somewhere to be able to read the file correctly afterwards.

Definition at line 43863 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_raw ( std::FILE *const  file,
const bool  is_multiplexed = false 
) const
inline

Save image as a raw data file .

Same as save_raw(const char *,bool) const with a file stream argument instead of a filename string.

Definition at line 43872 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_rgb ( const char *const  filename) const
inline

Save image as a RGB file.

Parameters
filenameFilename, as a C-string.

Definition at line 43086 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_rgba ( const char *const  filename) const
inline

Save image as a RGBA file.

Parameters
filenameFilename, as a C-string.

Definition at line 43148 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_tiff ( const char *const  filename,
const unsigned int  compression_type = 0 
) const
inline

Save image as a TIFF file.

Parameters
filenameFilename, as a C-string.
compression_typeType of data compression. Can be { 1=None | 2=CCITTRLE | 3=CCITTFAX3 | 4=CCITTFAX4 | 5=LZW | 6=JPEG }.
Note
  • libtiff support is enabled by defining the precompilation directive cimg_use_tif.
  • When libtiff is enabled, 2D and 3D (multipage) several channel per pixel are supported for char,uchar,short,ushort,float and double pixel types.
  • If cimg_use_tif is not defined at compilation time the function uses CImg<T>&save_other(const char*).

Definition at line 43232 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_yuv ( const char *const  filename,
const bool  is_rgb = true 
) const
inline

Save image as a .yuv video file.

Parameters
filenameFilename, as a C-string.
is_rgbTells if pixel values of the instance image are RGB-coded (true) or YUV-coded (false).
Note
Each slice of the instance image is considered to be a single frame of the output video file.

Definition at line 43937 of file CImg.h.

template<typename T>
const CImg<T>& cimg_library_suffixed::CImg< T >::save_yuv ( std::FILE *const  file,
const bool  is_rgb = true 
) const
inline

Save image as a .yuv video file .

Same as save_yuv(const char*,bool) const with a file stream argument instead of a filename string.

Definition at line 43947 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::select ( CImgDisplay disp,
const unsigned int  feature_type = 2,
unsigned int *const  XYZ = 0 
)
inline

Launch simple interface to select a shape from an image.

Parameters
dispDisplay window to use.
feature_typeType of feature to select. Can be { 0=point | 1=line | 2=rectangle | 3=ellipse }.
XYZPointer to 3 values X,Y,Z which tells about the projection point coordinates, for volumetric images.

Definition at line 37077 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sequence ( const T  a0,
const T  a1 
)
inline

Fill image with a linear sequence of values.

Parameters
a0Starting value of the sequence.
a1Ending value of the sequence.

Definition at line 16899 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::sequence ( const unsigned int  N,
const T  a0,
const T  a1 
)
inlinestatic

Return a N-numbered sequence vector from a0 to a1.

Parameters
NSize of the resulting vector.
a0Starting value of the sequence.
a1Ending value of the sequence.

Definition at line 18122 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::set_linear_atXY ( const T &  value,
const float  fx,
const float  fy = 0,
const int  z = 0,
const int  c = 0,
const bool  is_added = false 
)
inline

Set pixel value, using linear interpolation for the X and Y-coordinates.

Set pixel value at specified coordinates (fx,fy,z,c) in the image instance, in a way that the value is spread amongst several neighbors if the pixel coordinates are indeed float-valued.

Parameters
valuePixel value to set.
fxX-coordinate of the pixel value (float-valued).
fyY-coordinate of the pixel value (float-valued).
zZ-coordinate of the pixel value.
cC-coordinate of the pixel value.
is_addedTells if the pixel value is added to (true), or simply replace (false) the current image pixel(s).
Returns
A reference to the current image instance.
Note
  • If specified coordinates are outside image bounds, no operations are performed.

Definition at line 13201 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::set_linear_atXYZ ( const T &  value,
const float  fx,
const float  fy = 0,
const float  fz = 0,
const int  c = 0,
const bool  is_added = false 
)
inline

Set pixel value, using linear interpolation for the X,Y and Z-coordinates.

Similar to set_linear_atXY(const T&,float,float,int,int,bool), except that the linear interpolation is achieved both for X,Y and Z-coordinates.

Definition at line 13239 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::set_matrix_at ( const CImg< t > &  mat,
const unsigned int  x = 0,
const unsigned int  y = 0,
const unsigned int  z = 0 
)
inline

Set (square) matrix-valued pixel at specified position.

Parameters
matMatrix to put on the instance image.
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.

Definition at line 16750 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::set_tensor_at ( const CImg< t > &  ten,
const unsigned int  x = 0,
const unsigned int  y = 0,
const unsigned int  z = 0 
)
inline

Set tensor-valued pixel at specified position.

Parameters
tenTensor to put on the instance image.
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.

Definition at line 16762 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::set_vector_at ( const CImg< t > &  vec,
const unsigned int  x,
const unsigned int  y = 0,
const unsigned int  z = 0 
)
inline

Set vector-valued pixel at specified position.

Parameters
vecVector to put on the instance image.
xX-coordinate of the pixel value.
yY-coordinate of the pixel value.
zZ-coordinate of the pixel value.

Definition at line 16730 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sharpen ( const float  amplitude,
const bool  sharpen_type = false,
const float  edge = 1,
const float  alpha = 0,
const float  sigma = 0 
)
inline

Sharpen image.

Parameters
amplitudeSharpening amplitude
sharpen_typeSelect sharpening method. Can be { false=inverse diffusion | true=shock filters }.
edgeEdge threshold (shock filters only).
alphaGradient smoothness (shock filters only).
sigmaTensor smoothness (shock filters only).

Definition at line 26760 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::shift ( const int  delta_x,
const int  delta_y = 0,
const int  delta_z = 0,
const int  delta_c = 0,
const int  boundary_conditions = 0 
)
inline

Shift image content.

Parameters
delta_xAmount of displacement along the X-axis.
delta_yAmount of displacement along the Y-axis.
delta_zAmount of displacement along the Z-axis.
delta_cAmount of displacement along the C-axis.
boundary_conditionsBorder condition.
  • boundary_conditions can be:
    • 0: Zero border condition (Dirichlet).
    • 1: Nearest neighbors (Neumann).
    • 2: Repeat Pattern (Fourier style).

Definition at line 22199 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::shift_object3d ( const float  tx,
const float  ty = 0,
const float  tz = 0 
)
inline

Shift 3d object's vertices.

Parameters
txX-coordinate of the 3d displacement vector.
tyY-coordinate of the 3d displacement vector.
tzZ-coordinate of the 3d displacement vector.

Definition at line 28841 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::shift_object3d ( )
inline

Shift 3d object's vertices, so that it becomes centered.

Note
The object center is computed as its barycenter.

Definition at line 28860 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sign ( )
inline

Compute the sign of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its sign $\mathrm{sign}(I_{(x,y,z,c)})$.

Note
  • The sign is set to:
    • 1 if pixel value is strictly positive.
    • -1 if pixel value is strictly negative.
    • 0 if pixel value is equal to 0.
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15233 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sin ( )
inline

Compute the sine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its sine $\sin(I_{(x,y,z,c)})$.

Note
  • Pixel values are regarded as being in radian.
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15277 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sinc ( )
inline

Compute the sinc of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its sinc $\mathrm{sinc}(I_{(x,y,z,c)})$.

Note
  • Pixel values are regarded as being exin radian.
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15300 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sinh ( )
inline

Compute the hyperbolic sine of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its hyperbolic sine $\mathrm{sinh}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15366 of file CImg.h.

template<typename T>
unsigned long cimg_library_suffixed::CImg< T >::size ( ) const
inline

Return the total number of pixel values.

Return width()*height()*depth()*spectrum(), i.e. the total number of values of type T in the pixel buffer of the image instance.

Note
  • The size() of an empty image is equal to 0.
  • The allocated memory size for a pixel buffer of a non-shared CImg<T> instance is equal to size()*sizeof(T).
Example
const CImg<float> img(100,100,1,3); // Construct new 100x100 color image.
if (img.size()==30000) // Test succeeds.
std::printf("Pixel buffer uses %lu bytes",
img.size()*sizeof(float));

Definition at line 12079 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::solve ( const CImg< t > &  A)
inline

Solve a system of linear equations.

Parameters
AMatrix of the linear system.
Note
Solve AX=B where B=*this.

Definition at line 17063 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::solve_tridiagonal ( const CImg< t > &  A)
inline

Solve a tridiagonal system of linear equations.

Parameters
ACoefficients of the tridiagonal system. A is a tridiagonal matrix A = [ b0,c0,0,...; a1,b1,c1,0,... ; ... ; ...,0,aN,bN ], stored as a 3 columns matrix
Note
Solve AX=B where B=*this, using the Thomas algorithm.

Definition at line 17173 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::sort ( CImg< t > &  permutations,
const bool  is_increasing = true 
)
inline

Sort pixel values and get sorting permutations.

Parameters
[out]permutationsPermutation map used for the sorting.
is_increasingTells if pixel values are sorted in an increasing (true) or decreasing (false) way.

Definition at line 17346 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sort ( const bool  is_increasing = true,
const char  axis = 0 
)
inline

Sort pixel values.

Parameters
is_increasingTells if pixel values are sorted in an increasing (true) or decreasing (false) way.
axisTells if the value sorting must be done along a specific axis. Can be:
  • 0: All pixel values are sorted, independently on their initial position.
  • 'x': Image columns are sorted, according to the first value in each column.
  • 'y': Image rows are sorted, according to the first value in each row.
  • 'z': Image slices are sorted, according to the first value in each slice.
  • 'c': Image channels are sorted, according to the first value in each channel.

Definition at line 17369 of file CImg.h.

template<typename T>
int cimg_library_suffixed::CImg< T >::spectrum ( ) const
inline

Return the number of image channels.

Return the number of image channels, i.e. the image dimension along the C-axis.

Note
  • The spectrum() of an empty image is equal to 0.
  • spectrum() is typically equal to 1 when considering scalar-valued images, to 3 for RGB-coded color images, and to 4 for RGBA-coded color images (with alpha-channel). The number of channels of an image instance is not limited. The meaning of the pixel values is not linked up to the number of channels (e.g. a 4-channel image may indifferently stands for a RGBA or CMYK color image).
  • spectrum() returns an int, although the image spectrum is internally stored as an unsigned int. Using an int is safer and prevents arithmetic traps possibly encountered when doing calculations involving unsigned int variables. Access to the initial unsigned int variable is possible (though not recommended) by (*this)._spectrum.

Definition at line 12059 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::sphere3d ( CImgList< tf > &  primitives,
const float  radius = 50,
const unsigned int  subdivisions = 3 
)
inlinestatic

Generate a 3d sphere.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
radiusThe radius of the sphere (dimension along the X-axis).
subdivisionsThe number of recursive subdivisions from an initial icosahedron.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::sphere3d(faces3d,100,4);
CImg<unsigned char>().display_object3d("Sphere3d",points3d,faces3d);
ref_sphere3d.jpg

Definition at line 30119 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sqr ( )
inline

Compute the square value of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its square value $I_{(x,y,z,c)}^2$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.
Example
const CImg<float> img("reference.jpg");
(img,img.get_sqr().normalize(0,255)).display();
ref_sqr.jpg

Definition at line 15072 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::sqrt ( )
inline

Compute the square root of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its square root $\sqrt{I_{(x,y,z,c)}}$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.
Example
const CImg<float> img("reference.jpg");
(img,img.get_sqrt().normalize(0,255)).display();
ref_sqrt.jpg

Definition at line 15099 of file CImg.h.

template<typename T>
template<typename tfunc >
static CImg<floatT> cimg_library_suffixed::CImg< T >::streamline ( const tfunc &  func,
const float  x,
const float  y,
const float  z,
const float  L = 256,
const float  dl = 0.1f,
const unsigned int  interpolation_type = 2,
const bool  is_backward_tracking = false,
const bool  is_oriented_only = false,
const float  x0 = 0,
const float  y0 = 0,
const float  z0 = 0,
const float  x1 = 0,
const float  y1 = 0,
const float  z1 = 0 
)
inlinestatic

Return stream line of a 3d vector field.

Parameters
funcVector field function.
xX-coordinate of the starting point of the streamline.
yY-coordinate of the starting point of the streamline.
zZ-coordinate of the starting point of the streamline.
LStreamline length.
dlStreamline length increment.
interpolation_typeType of interpolation. Can be { 0=nearest int | 1=linear | 2=2nd-order RK | 3=4th-order RK. }.
is_backward_trackingTells if the streamline is estimated forward or backward.
is_oriented_onlyTells if the direction of the vectors must be ignored.
x0X-coordinate of the first bounding-box vertex.
y0Y-coordinate of the first bounding-box vertex.
z0Z-coordinate of the first bounding-box vertex.
x1X-coordinate of the second bounding-box vertex.
y1Y-coordinate of the second bounding-box vertex.
z1Z-coordinate of the second bounding-box vertex.

Definition at line 23801 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::string ( const char *const  str,
const bool  is_last_zero = true,
const bool  is_shared = false 
)
inlinestatic

Return an image containing the ascii codes of the specified string.

Parameters
strinput C-string to encode as an image.
is_last_zeroTells if the ending '0' character appear in the resulting image.

Definition at line 17809 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::structure_tensors ( const unsigned int  scheme = 2)
inline

Compute the structure tensor field of an image.

Parameters
schemeNumerical scheme. Can be { 0=central | 1=fwd/bwd1 | 2=fwd/bwd2 }

Definition at line 27257 of file CImg.h.

template<typename T>
template<typename t >
const CImg<T>& cimg_library_suffixed::CImg< T >::SVD ( CImg< t > &  U,
CImg< t > &  S,
CImg< t > &  V,
const bool  sorting = true,
const unsigned int  max_iteration = 40,
const float  lambda = 0 
) const
inline

Compute the SVD of the instance image, viewed as a general matrix.

Compute the SVD decomposition *this=U*S*V' where U and V are orthogonal matrices and S is a diagonal matrix. V' denotes the matrix transpose of V.

Parameters
[out]UFirst matrix of the SVD product.
[out]SCoefficients of the second (diagonal) matrix of the SVD product. These coefficients are stored as a vector.
[out]VThird matrix of the SVD product.
sortingTells if the diagonal coefficients are sorted (in decreasing order).
max_iterationMaximum number of iterations considered for the algorithm convergence.
lambdaEpsilon used for the algorithm convergence.
Note
The instance matrix can be computed from U,S and V by
const CImg<> A; // Input matrix (assumed to contain some values).
CImg<> U,S,V;
A.SVD(U,S,V)

Definition at line 17494 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::swap ( CImg< T > &  img)
inline

Swap fields of two image instances.

Parameters
imgImage to swap fields with.
Note
  • It can be used to interchange the content of two images in a very fast way. Can be convenient when dealing with algorithms requiring two swapping buffers.
Example
CImg<float> img1("lena.jpg"),
img2("milla.jpg");
img1.swap(img2); // Now, 'img1' is 'milla' and 'img2' is 'lena'.

Definition at line 10375 of file CImg.h.

template<typename T>
template<typename t >
const CImg<T>& cimg_library_suffixed::CImg< T >::symmetric_eigen ( CImg< t > &  val,
CImg< t > &  vec 
) const
inline

Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix.

Parameters
[out]valVector of the estimated eigenvalues, in decreasing order.
[out]vecMatrix of the estimated eigenvalues, sorted by columns.

Definition at line 17262 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::tan ( )
inline

Compute the tangent of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its tangent $\tan(I_{(x,y,z,c)})$.

Note
  • Pixel values are regarded as being exin radian.
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15322 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::tanh ( )
inline

Compute the hyperbolic tangent of each pixel value.

Replace each pixel value $I_{(x,y,z,c)}$ of the image instance by its hyperbolic tangent $\mathrm{tanh}(I_{(x,y,z,c)})$.

Note
  • The of this method statically casts the computed values to the pixel type T.
  • The returns a CImg<float> image, if the pixel type T is not float-valued.

Definition at line 15388 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::tensor ( const T &  a0)
inlinestatic

Return a 1x1 symmetric matrix containing specified coefficients.

Parameters
a0First matrix value.
Note
Equivalent to vector(const T&).

Definition at line 18067 of file CImg.h.

template<typename T>
template<typename tp , typename tc , typename tt , typename tx >
const CImg<T>& cimg_library_suffixed::CImg< T >::texturize_object3d ( CImgList< tp > &  primitives,
CImgList< tc > &  colors,
const CImg< tt > &  texture,
const CImg< tx > &  coords = CImg<tx>::empty() 
) const
inline

Texturize primitives of a 3d object.

Parameters
[in,out]primitivesPrimitives data of the 3d object.
[in,out]colorsColors data of the 3d object.
textureTexture image to map to 3d object.
coordsTexture-mapping coordinates.

Definition at line 28979 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::threshold ( const T  value,
const bool  soft_threshold = false,
const bool  strict_threshold = false 
)
inline

Threshold pixel values.

Parameters
valueThreshold value
soft_thresholdTells if soft thresholding must be applied (instead of hard one).
strict_thresholdTells if threshold value is strict.
Example
const CImg<float> img("reference.jpg"), res = img.get_threshold(128);
(img,res.normalize(0,255)).display();
ref_threshold.jpg

Definition at line 19184 of file CImg.h.

template<typename T>
template<typename tf >
static CImg<floatT> cimg_library_suffixed::CImg< T >::torus3d ( CImgList< tf > &  primitives,
const float  radius1 = 100,
const float  radius2 = 30,
const unsigned int  subdivisions1 = 24,
const unsigned int  subdivisions2 = 12 
)
inlinestatic

Generate a 3d torus.

Parameters
[out]primitivesThe returned list of the 3d object primitives (template type tf should be at least unsigned int).
radius1The large radius.
radius2The small radius.
subdivisions1The number of angular subdivisions for the large radius.
subdivisions2The number of angular subdivisions for the small radius.
Returns
The N vertices (xi,yi,zi) of the 3d object as a Nx3 CImg<float> image (0<=i<=N-1).
Example
CImgList<unsigned int> faces3d;
const CImg<float> points3d = CImg<float>::torus3d(faces3d,20,4);
CImg<unsigned char>().display_object3d("Torus3d",points3d,faces3d);
ref_torus3d.jpg

Definition at line 30038 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::transpose ( )
inline

Transpose the image, viewed as a matrix.

Note
Equivalent to
permute_axes("yxzc");

Definition at line 16919 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::unroll ( const char  axis)
inline

Unroll pixel values along specified axis.

Parameters
axisUnroll axis (can be 'x', 'y', 'z' or c 'c').

Definition at line 22615 of file CImg.h.

template<typename T>
CImg<charT> cimg_library_suffixed::CImg< T >::value_string ( const char  separator = ',',
const unsigned int  max_size = 0 
) const
inline

Return a C-string containing a list of all values of the image instance.

Return a new CImg<char> image whose buffer data() is a char* string describing the list of all pixel values of the image instance (written in base 10), separated by specified separator character.

Parameters
separatorA char character which specifies the separator between values in the returned C-string.
max_sizeMaximum size of the returned image.
Note
  • The returned image is never empty.
  • For an empty image instance, the returned string is "".
  • If max_size is equal to 0, there are no limits on the size of the returned string.
  • Otherwise, if the maximum number of string characters is exceeded, the value string is cut off and terminated by character '\0'. In that case, the returned image size is max_size + 1.

Definition at line 13311 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::vanvliet ( const float  sigma,
const int  order,
const char  axis = 'x',
const bool  boundary_conditions = true 
)
inline

Van Vliet recursive Gaussian filter.

Parameters
sigmastandard deviation of the Gaussian filter
orderthe order of the filter 0,1,2,3
axisAxis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }.
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann }.
Note
dirichlet boundary condition has a strange behavior

Ian T. Young, Lucas J. van Vliet, Recursive implementation of the Gaussian filter, Signal Processing, Volume 44, Issue 2, June 1995, Pages 139-151,

Definition at line 25771 of file CImg.h.

template<typename T>
Tdouble cimg_library_suffixed::CImg< T >::variance ( const unsigned int  variance_method = 1) const
inline

Return the variance of the pixel values.

Parameters
variance_methodMethod used to estimate the variance. Can be:
  • 0: Second moment, computed as $1/N \sum\limits_{k=1}^{N} (x_k - \bar x)^2 = 1/N \left( \sum\limits_{k=1}^N x_k^2 - \left( \sum\limits_{k=1}^N x_k \right)^2 / N \right)$ with $ \bar x = 1/N \sum\limits_{k=1}^N x_k $.
  • 1: Best unbiased estimator, computed as $\frac{1}{N-1} \sum\limits_{k=1}^{N} (x_k - \bar x)^2 $.
  • 2: Least median of squares.
  • 3: Least trimmed of squares.

Definition at line 16320 of file CImg.h.

template<typename T>
template<typename t >
Tdouble cimg_library_suffixed::CImg< T >::variance_mean ( const unsigned int  variance_method,
t &  mean 
) const
inline

Return the variance as well as the average of the pixel values.

Parameters
variance_methodMethod used to estimate the variance (see variance(const unsigned int) const).
[out]meanAverage pixel value.

Definition at line 16331 of file CImg.h.

template<typename T>
Tdouble cimg_library_suffixed::CImg< T >::variance_noise ( const unsigned int  variance_method = 2) const
inline

Return estimated variance of the noise.

Parameters
variance_methodMethod used to compute the variance (see variance(const unsigned int) const).
Note
Because of structures such as edges in images it is recommanded to use a robust variance estimation. The variance of the noise is estimated by computing the variance of the Laplacian $(\Delta I)^2 $ scaled by a factor $c$ insuring $ c E[(\Delta I)^2]= \sigma^2$ where $\sigma$ is the noise variance.

Definition at line 16391 of file CImg.h.

template<typename T>
CImg<T>& cimg_library_suffixed::CImg< T >::vector ( )
inline

Unroll pixel values along axis y.

Note
Equivalent to
unroll('y');
.

Definition at line 16785 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::vector ( const T &  a0)
inlinestatic

Return a 1x1 image containing specified value.

Parameters
a0First vector value.

Definition at line 17818 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::vector ( const T &  a0,
const T &  a1 
)
inlinestatic

Return a 1x2 image containing specified values.

Parameters
a0First vector value.
a1Second vector value.

Definition at line 17829 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::vector ( const T &  a0,
const T &  a1,
const T &  a2 
)
inlinestatic

Return a 1x3 image containing specified values.

Parameters
a0First vector value.
a1Second vector value.
a2Third vector value.

Definition at line 17841 of file CImg.h.

template<typename T>
static CImg<T> cimg_library_suffixed::CImg< T >::vector ( const T &  a0,
const T &  a1,
const T &  a2,
const T &  a3 
)
inlinestatic

Return a 1x4 image containing specified values.

Parameters
a0First vector value.
a1Second vector value.
a2Third vector value.
a3Fourth vector value.

Definition at line 17854 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::warp ( const CImg< t > &  warp,
const bool  is_relative = false,
const unsigned int  interpolation = 1,
const unsigned int  boundary_conditions = 0 
)
inline

Warp image content by a warping field.

Parameters
warpWarping field.
is_relativeTells if warping field gives absolute or relative warping coordinates.
interpolationCan be { 0=nearest | 1=linear | 2=cubic }.
boundary_conditionsBoundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic }.

Definition at line 22911 of file CImg.h.

template<typename T>
template<typename t >
CImg<T>& cimg_library_suffixed::CImg< T >::watershed ( const CImg< t > &  priority,
const bool  fill_lines = true 
)
inline

Compute watershed transform.

Parameters
priorityPriority map.
fill_linesTells if watershed lines must be filled or not.
Note
Non-zero values of the instance instance are propagated to zero-valued ones according to specified the priority map.

Definition at line 25380 of file CImg.h.

template<typename T>
int cimg_library_suffixed::CImg< T >::width ( ) const
inline

Return the number of image columns.

Return the image width, i.e. the image dimension along the X-axis.

Note
  • The width() of an empty image is equal to 0.
  • width() is typically equal to 1 when considering images as vectors for matrix calculations.
  • width() returns an int, although the image width is internally stored as an unsigned int. Using an int is safer and prevents arithmetic traps possibly encountered when doing calculations involving unsigned int variables. Access to the initial unsigned int variable is possible (though not recommended) by (*this)._width.

Definition at line 12008 of file CImg.h.


The documentation for this struct was generated from the following file: