C++ Template Image Processing Library.    

[Introduction]- [News]- [Download]- [Screenshots]- [Tutorial]- [Forums-Eng]- [Forums-Fr]- [Reference]- [SourceForge Repository ]

CImg Struct Template Reference

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

Inheritance diagram for CImg:

CImgSubset List of all members.

Constructors-Destructor-Copy

 CImg (const unsigned int dx=0, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dv=1)
 Create an image of size (dx,dy,dz,dv) with pixels of type T.
CImgcreate (const unsigned int dx=0, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dv=1)
 Replace the current image by a new-one (in-place version of previous constructor).
 CImg (const unsigned int dx, const unsigned int dy, const unsigned int dz, const unsigned int dv, const T &val)
 Create an image of size (dx,dy,dz,dv) with pixels of type T, and set the value of image pixels to val.
CImgcreate (const unsigned int dx, const unsigned int dy, const unsigned int dz, const unsigned int dv, const T &val)
 Replace the current image by a new-one (in-place version of previous constructor).
template<typename t>
 CImg (const CImg< t > &img, const bool pixel_copy)
 Copy constructor.
 CImg (const char *const filename)
 Construct an image from a filename.
template<typename t>
 CImg (const t *const data_buffer, const unsigned int dx, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dv=1, const bool multiplexed=false)
 Create an image from a data buffer.
template<typename t>
CImgcreate (const t *const data_buffer, const unsigned int dx, const unsigned int dy=1, const unsigned int dz=1, const unsigned int dv=1, const bool multiplexed=false)
 Replace the current image by a new-one, defined as a raw C buffer (in-place version of previous constructor).
 ~CImg ()
 Destructor.
CImgempty ()
 Replace the instance image by an empty image.
CImg get_empty () const
 Return an empty image.

Access to image informations

const unsigned int size () const
 Return the total number of pixel values in an image.
const int dimx () const
 Return the number of columns of the instance image (size along the X-axis, i.e image width).
const int dimy () const
 Return the number of rows of the instance image (size along the Y-axis, i.e image height).
const int dimz () const
 Return the number of slices of the instance image (size along the Z-axis).
const int dimv () const
 Return the number of vector channels of the instance image (size along the V-axis).
template<typename t>
const bool has_sameX (const CImg< t > &img) const
 Return true if images (*this) and img have same width.
template<typename t>
const bool has_sameY (const CImg< t > &img) const
 Return true if images (*this) and img have same height.
template<typename t>
const bool has_sameZ (const CImg< t > &img) const
 Return true if images (*this) and img have same depth.
template<typename t>
const bool has_sameV (const CImg< t > &img) const
 Return true if images (*this) and img have same dim.
template<typename t>
const bool has_sameXY (const CImg< t > &img) const
 Return true if images have same width and same height.
template<typename t>
const bool has_sameXYZ (const CImg< t > &img) const
 Return true if images have same width, same height and same depth.
template<typename t>
const bool has_sameXYZV (const CImg< t > &img) const
 Return true if images (*this) and img have same width, same height, same depth and same number of channels.
const bool is_empty () const
 Return true if image is empty.
const long offset (const int x=0, const int y=0, const int z=0, const int v=0) const
 Return the offset of the pixel coordinates (x,y,z,v) with respect to the data pointer data.
T * ptr (const unsigned int x=0, const unsigned int y=0, const unsigned int z=0, const unsigned int v=0) const
 Return a pointer to the pixel value located at (x,y,z,v).
T & operator() (const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int v=0) const
 Fast access to pixel value for reading or writing.
T & operator[] (const unsigned long off) const
 Fast access to pixel value for reading or writing, using an offset to the image pixel.
dirichlet_pix4d (const int x, const int y=0, const int z=0, const int v=0, const T out_val=(T) 0) const
 Read a pixel value with Dirichlet boundary conditions.
dirichlet_pix3d (const int x, const int y=0, const int z=0, const int v=0, const T out_val=(T) 0) const
 Read a pixel value with Dirichlet boundary conditions for the three first coordinates (x,y,z).
dirichlet_pix2d (const int x, const int y=0, const int z=0, const int v=0, const T out_val=(T) 0) const
 Read a pixel value with Dirichlet boundary conditions for the two first coordinates (x,y).
dirichlet_pix1d (const int x, const int y=0, const int z=0, const int v=0, const T out_val=(T) 0) const
 Read a pixel value with Dirichlet boundary conditions for the first coordinate x.
const T & neumann_pix4d (const int x, const int y=0, const int z=0, const int v=0) const
 Read a pixel value with Neumann boundary conditions.
const T & neumann_pix3d (const int x, const int y=0, const int z=0, const int v=0) const
 Read a pixel value with Neumann boundary conditions for the three first coordinates (x,y,z).
const T & neumann_pix2d (const int x, const int y=0, const int z=0, const int v=0) const
 Read a pixel value with Neumann boundary conditions for the two first coordinates (x,y).
const T & neumann_pix1d (const int x, const int y=0, const int z=0, const int v=0) const
 Read a pixel value with Neumann boundary conditions for the first coordinate x.
largest< T, float >::type linear_pix4d (const float ffx, const float ffy=0, const float ffz=0, const float ffv=0) const
 Read a pixel value using linear interpolation.
largest< T, float >::type linear_pix3d (const float ffx, const float ffy=0, const float ffz=0, const int v=0) const
 Read a pixel value using linear interpolation for the three first coordinates (cx,cy,cz).
largest< T, float >::type linear_pix2d (const float ffx, const float ffy=0, const int z=0, int v=0) const
 Read a pixel value using linear interpolation for the two first coordinates (cx,cy).
largest< T, float >::type linear_pix1d (const float ffx, const int y=0, const int z=0, int v=0) const
 Read a pixel value using linear interpolation for the first coordinate cx.
largest< T, float >::type cubic_pix2d (const float pfx, const float pfy=0, const int z=0, int v=0) const
 Read a pixel value using cubic interpolation.
largest< T, float >::type cubic_pix1d (const float pfx, const int y=0, const int z=0, int v=0) const
 Read a pixel value using cubic interpolation for the first coordinate cx.
const CImgprint (const char *title=NULL, const unsigned int print_flag=1) const
 Display informations about the image on the standard error output.
static const char * pixel_type ()
 Return the type of the pixel values.

Arithmetic and Boolean operators

template<typename t>
CImg< T > & operator= (const CImg< t > &img)
 Assign an image to the instance image.
CImgoperator= (const T &val)
 Assign a value to each image pixel of the instance image.
CImgoperator= (const T *buf)
 Assign values of a C-array to the instance image.
CImg operator+ (const T &val) const
 Addition.
template<typename t>
CImg< typename largest< T,
t >::type > 
operator+ (const CImg< t > &img) const
 Addition.
CImgoperator+= (const T &val)
 In-place addition.
template<typename t>
CImgoperator+= (const CImg< t > &img)
 In-place addition.
CImgoperator++ ()
 In-place increment.
CImg operator- (const T &val) const
 Substraction.
template<typename t>
CImg< typename largest< T,
t >::type > 
operator- (const CImg< t > &img) const
 Substraction.
CImgoperator-= (const T &val)
 In-place substraction.
template<typename t>
CImgoperator-= (const CImg< t > &img)
 In-place substraction.
CImgoperator-- ()
 In-place decrement.
CImg operator * (const double val) const
 Multiplication.
template<typename t>
CImg< typename largest< T,
t >::type > 
operator * (const CImg< t > &img) const
 Multiplication.
CImgoperator *= (const double val)
 In-place multiplication.
template<typename t>
CImgoperator *= (const CImg< t > &img)
 In-place multiplication.
CImg operator/ (const double val) const
 Division.
CImgoperator/= (const double val)
 In-place division.
CImg operator% (const T &val) const
 Modulo.
CImg operator% (const CImg &img) const
 Modulo.
CImgoperator%= (const T &val)
 In-place modulo.
CImgoperator%= (const CImg &img)
 In-place modulo.
CImg operator & (const T &val) const
 Bitwise AND.
CImg operator & (const CImg &img) const
 Bitwise AND.
CImgoperator &= (const T &val)
 In-place bitwise AND.
CImgoperator &= (const CImg &img)
 In-place bitwise AND.
CImg operator| (const T &val) const
 Bitwise OR.
CImg operator| (const CImg &img) const
 Bitwise OR.
CImgoperator|= (const T &val)
 In-place bitwise OR.
CImgoperator|= (const CImg &img)
 In-place bitwise OR.
CImg operator^ (const T &val) const
 Bitwise XOR.
CImg operator^ (const CImg &img) const
 Bitwise XOR.
CImgoperator^= (const T &val)
 In-place bitwise XOR.
CImgoperator^= (const CImg &img)
 In-place bitwise XOR.
CImg operator! () const
 Boolean NOT.
CImg operator~ () const
 Bitwise NOT.
template<typename t>
const bool operator== (const CImg< t > &img) const
 Boolean equality.
template<typename t>
const bool operator!= (const CImg< t > &img) const
 Boolean difference.
CImg operator+ (const T &val, const CImg< T > &img)
 Addition.
CImg operator- (const T &val, const CImg< T > &img)
 Substraction.
CImg operator * (const double val, const CImg &img)
 Multiplication.

Usual mathematical operations

template<typename t>
CImgmul (const CImg< t > &img)
 In-place pointwise multiplication between *this and img.
template<typename t>
CImg< typename largest< T,
t >::type > 
get_mul (const CImg< t > &img) const
 Pointwise multiplication between *this and img.
template<typename t>
CImgdiv (const CImg< t > &img)
 Replace the image by the pointwise division between *this and img.
template<typename t>
CImg< typename largest< T,
t >::type > 
get_div (const CImg< t > &img) const
 Return an image from a pointwise division between *this and img.
template<typename t>
CImgmax (const CImg< t > &img)
 Replace the image by the pointwise max operator between *this and img.
template<typename t>
CImg< typename largest< T,
t >::type > 
get_max (const CImg< t > &img) const
 Return the image corresponding to the max value for each pixel.
template<typename t>
CImgmin (const CImg< t > &img)
 Replace the image by the pointwise min operator between *this and img.
template<typename t>
CImg< typename largest< T,
t >::type > 
get_min (const CImg< t > &img) const
 Return the image corresponding to the min value for each pixel.
CImgsqrt ()
 Replace each image pixel by its square root.
CImg< typename largest< T,
float >::type > 
get_sqrt () const
 Return the image of the square root of the pixel values.
CImglog ()
 Replace each image pixel by its log.
CImg< typename largest< T,
float >::type > 
get_log () const
 Return the image of the log of the pixel values.
CImglog10 ()
 Replace each image pixel by its log10.
CImg< typename largest< T,
float >::type > 
get_log10 () const
 Return the image of the log10 of the pixel values.
CImgpow (const double p)
 Replace each image pixel by its power by p.
CImg< typename largest< T,
float >::type > 
get_pow (const double p) const
 Return the image of the square root of the pixel values.
CImgabs ()
 Replace each pixel value by its absolute value.
CImg< typename largest< T,
float >::type > 
get_abs () const
 Return the image of the absolute value of the pixel values.
CImgcos ()
 Replace each image pixel by its cosinus.
CImg< typename largest< T,
float >::type > 
get_cos () const
 Return the image of the cosinus of the pixel values.
CImgsin ()
 Replace each image pixel by its sinus.
CImg< typename largest< T,
float >::type > 
get_sin () const
 Return the image of the sinus of the pixel values.
CImgtan ()
 Replace each image pixel by its tangent.
CImg< typename largest< T,
float >::type > 
get_tan () const
 Return the image of the tangent of the pixel values.

Usual image transformation

CImgfill (const T &val)
 Fill an image by a value val.
CImgfill (const T &val0, const T &val1)
 Fill sequentially all pixel values with values val0 and val1 respectively.
CImgfill (const T &val0, const T &val1, const T &val2)
 Fill sequentially all pixel values with values val0 and val1 and val2.
CImgfill (const T &val0, const T &val1, const T &val2, const T &val3)
 Fill sequentially all pixel values with values val0 and val1 and val2 and val3.
CImgfill (const T &val0, const T &val1, const T &val2, const T &val3, const T &val4)
 Fill sequentially all pixel values with values val0 and val1 and val2 and val3 and val4.
CImgfill (const T &val0, const T &val1, const T &val2, const T &val3, const T &val4, const T &val5)
 Fill sequentially all pixel values with values val0 and val1 and val2 and val3 and val4 and val5.
CImgfill (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 values val0 and val1 and val2 and val3 and val4 and val5.
CImgfill (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 values val0 and val1 and val2 and val3 and ... and val7.
CImgfill (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 values val0 and val1 and val2 and val3 and ... and val8.
CImgfill (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 values val0 and val1 and val2 and val3 and ... and val9.
CImgfill (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 values val0 and val1 and val2 and val3 and ... and val11.
CImgfill (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 values val0 and val1 and val2 and val3 and ... and val15.
CImgfill (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 T &val16, const T &val17, const T &val18, const T &val19, const T &val20, const T &val21, const T &val22, const T &val23, const T &val24)
 Fill sequentially all pixel values with values val0 and val1 and val2 and val3 and ... and val24.
CImgnormalize (const T &a, const T &b)
 Linear normalization of the pixel values between a and b.
CImg get_normalize (const T &a, const T &b) const
 Return the image of normalized values.
CImgcut (const T &a, const T &b)
 Cut pixel values between a and b.
CImg get_cut (const T &a, const T &b) const
 Return the image of cutted values.
CImgquantify (const unsigned int n=256)
 Quantify pixel values into
levels.
CImg get_quantify (const unsigned int n=256) const
 Return a quantified image, with
levels.
CImgthreshold (const T &thres)
 Threshold the image.
CImg get_threshold (const T &thres) const
 Return a thresholded image.
CImg get_rotate (const float angle, const unsigned int cond=2) const
 Return a rotated image.
CImgrotate (const float angle, const unsigned int cond=2)
 Rotate the image.
CImg get_rotate (const float angle, const float cx, const float cy, const float zoom=1, const unsigned int cond=2) const
 Return a rotated image around the point (cx,cy).
CImgrotate (const float angle, const float cx, const float cy, const float zoom=1, const unsigned int cond=2)
 Rotate the image around the point (cx,cy).
CImg get_resize (const int pdx=-100, const int pdy=-100, const int pdz=-100, const int pdv=-100, const unsigned int interp=1) const
 Return a resized image.
template<typename t>
CImg get_resize (const CImg< t > &src, const unsigned int interp=1) const
 Return a resized image.
CImg get_resize (const CImgDisplay &disp, const unsigned int interp=1) const
 Return a resized image.
CImgresize (const int pdx=-100, const int pdy=-100, const int pdz=-100, const int pdv=-100, const unsigned int interp=1)
 Resize the image.
template<typename t>
CImgresize (const CImg< t > &src, const unsigned int interp=1)
 Resize the image.
CImgresize (const CImgDisplay &disp, const unsigned int interp=1)
 Resize the image.
CImg get_resize_halfXY () const
 Return an half-resized image, using a special filter.
CImgresize_halfXY ()
 Half-resize the image, using a special filter.
CImg get_crop (const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int v0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int v1, const bool border_condition=false) const
 Return a square region of the image, as a new image.
CImg get_crop (const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const bool border_condition=false) const
 Return a square region of the image, as a new image.
CImg get_crop (const unsigned int x0, const unsigned int y0, const unsigned int x1, const unsigned int y1, const bool border_condition=false) const
 Return a square region of the image, as a new image.
CImg get_crop (const unsigned int x0, const unsigned int x1, const bool border_condition=false) const
 Return a square region of the image, as a new image.
CImgcrop (const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int v0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const unsigned int v1, const bool border_condition=false)
 Replace the image by a square region of the image.
CImgcrop (const unsigned int x0, const unsigned int y0, const unsigned int z0, const unsigned int x1, const unsigned int y1, const unsigned int z1, const bool border_condition=false)
 Replace the image by a square region of the image.
CImgcrop (const unsigned int x0, const unsigned int y0, const unsigned int x1, const unsigned int y1, const bool border_condition=false)
 Replace the image by a square region of the image.
CImgcrop (const unsigned int x0, const unsigned int x1, const bool border_condition=false)
 Replace the image by a square region of the image.
CImg get_channel (const unsigned int v0=0) const
 Get the channel v of the current image, as a new image.
CImg get_slice (const unsigned int z0=0) const
 Get the z-slice z of *this, as a new image.
CImg get_plane (const unsigned int z0=0, const unsigned int v0=0) const
 Get the z-slice z of the channel v of the current image, as a new image.
CImgSubset< T > pointset (const unsigned int xmin, const unsigned int xmax, const unsigned int y0=0, const unsigned int z0=0, const unsigned int v0=0) const
 Return a reference to a set of points (x0->x1,y0,z0,v0) of the image.
CImgSubset< T > lineset (const unsigned int ymin, const unsigned int ymax, const unsigned int z0, const unsigned int v0) const
 Return a reference to a set of lines (y0->y1,z0,v0) of the image.
CImgSubset< T > lineset (const unsigned int y0, const unsigned int z0=0, const unsigned int v0=0) const
 Return a reference to one line (y0,z0,v0) of the image.
CImgSubset< T > planeset (const unsigned int zmin, const unsigned int zmax, const unsigned int v0) const
 Return a reference to a set of planes (z0->z1,v0) of the image.
CImgSubset< T > planeset (const unsigned int z0, const unsigned int v0=0) const
 Return a reference to one plane (z0,v0) of the image.
CImgSubset< T > channelset (const unsigned int vmin, const unsigned int vmax) const
 Return a reference to a set of channels (v0->v1) of the image.
CImgSubset< T > channelset (const unsigned int v0) const
 Return a reference to one channel v0 of the image.
CImgchannel (const unsigned int v0)
 Replace the image by one of its channel.
CImgslice (const unsigned int z0)
 Replace the image by one of its slice.
CImgplane (const unsigned int z0, const unsigned int v0)
 Replace the image by one of its plane.
CImgmirror (const char axe='x')
 Mirror an image along the specified axis.
CImg get_mirror (const char axe='x')
 Get a mirrored version of the image, along the specified axis.
CImgscroll (const int scrollx, const int scrolly=0, const int scrollz=0, const int scrollv=0, const int border_condition=0)
 Scroll the image.
CImg get_scroll (const int scrollx, const int scrolly=0, const int scrollz=0, const int scrollv=0, const int border_condition=0) const
 Return a scrolled image.
CImg get_2dprojections (const unsigned int px0, const unsigned int py0, const unsigned int pz0) const
 Return a 2D representation of a 3D image, with three slices.
CImg< float > get_histogram (const unsigned int nblevels=256, const T val_min=(T) 0, const T val_max=(T) 0) const
 Return the image histogram.
CImgequalize_histogram (const unsigned int nblevels=256, const T val_min=(T) 0, const T val_max=(T) 0)
 Equalize the image histogram.
CImg get_equalize_histogram (const unsigned int nblevels=256, const T val_min=(T) 0, const T val_max=(T) 0) const
 Return the histogram-equalized version of the current image.
CImg< typename largest< T,
float >::type > 
get_norm_pointwise (int norm_type=2) const
 Return the scalar image of vector norms.
CImgnorm_pointwise ()
 Replace each pixel value with its vector norm.
CImg< typename largest< T,
float >::type > 
get_orientation_pointwise () const
 Return the image of normalized vectors.
CImgorientation_pointwise ()
 Replace each pixel value by its normalized vector.
CImgl< T > get_split (const char axe, const unsigned int nb=0) const
 Split image into a list CImgl<>.
CImg get_append (const CImg< T > &img, const char axis='x', const char align='c') const
 Append an image to another one.
CImgappend (const CImg< T > &img, const char axis='x', const char align='c')
 Append an image to another one (in-place version).
CImgoperator<< (const CImg< T > &img)
 Append an image to another one (in-place operator<< version).
CImgl< typename largest< T,
float >::type > 
get_gradientXY (const int scheme=0) const
 Return a list of images, corresponding to the XY-gradients of an image.
CImgl< typename largest< T,
float >::type > 
get_gradientXYZ (const int scheme=0) const
 Return a list of images, corresponding to the XYZ-gradients of an image.

Color conversion functions

template<typename t>
CImg< t > get_RGBtoLUT (const CImg< t > &palette, const bool dithering=true, const bool indexing=false) const
 Convert color pixels from (R,G,B) to match a specified palette.
CImg< T > get_RGBtoLUT (const bool dithering=true, const bool indexing=false) const
 Convert color pixels from (R,G,B) to match the default 256 colors palette.
CImgRGBtoLUT (const CImg< T > &palette, const bool dithering=true, const bool indexing=false)
 Convert color pixels from (R,G,B) to match the specified color palette.
CImgRGBtoLUT (const bool dithering=true, const bool indexing=false)
 Convert color pixels from (R,G,B) to match the specified color palette.
template<typename t>
CImg< t > get_LUTtoRGB (const CImg< t > &palette) const
 Convert an indexed image to a (R,G,B) image using the specified color palette.
CImgLUTtoRGB (const CImg< T > &palette)
 In-place version of get_LUTtoRGB().
CImgRGBtoHSV ()
 Convert color pixels from (R,G,B) to (H,S,V).
CImgHSVtoRGB ()
 Convert color pixels from (H,S,V) to (R,G,B).
CImgRGBtoYCbCr8 ()
 Convert color pixels from (R,G,B) to (Y,Cb,Cr)_8 (Thanks to Chen Wang).
CImgYCbCr8toRGB ()
 Convert color pixels from (Y,Cb,Cr)_8 to (R,G,B).
CImgRGBtoYUV ()
 Convert color pixels from (R,G,B) to (Y,U,V).
CImgYUVtoRGB ()
 Convert color pixels from (Y,U,V) to (R,G,B).
CImgRGBtoXYZ ()
 Convert color pixels from (R,G,B) to (X,Y,Z)_709.
CImgXYZtoRGB ()
 Convert (X,Y,Z)_709 pixels of a color image into the (R,G,B) color space.
CImgLabtoXYZ ()
 Convert (L,a,b) pixels of a color image into the (X,Y,Z) color space.
CImgXYZtoxyY ()
 Convert (X,Y,Z)_709 pixels of a color image into the (x,y,Y) color space.
CImgxyYtoXYZ ()
 Convert (x,y,Y) pixels of a color image into the (X,Y,Z)_709 color space.
static CImg< T > get_default_LUT8 ()
 Return the default 256 colors palette.

Drawing functions

CImgdraw_point (const int x0, const int y0, const int z0, const T *const color, const float opacity=1)
 Draw a colored point in the instance image, at coordinates (x0,y0,z0).
CImgdraw_point (const int x0, const int y0, const T *const color, const float opacity=1)
 Draw a colored point in the instance image, at coordinates (x0,y0).
CImgdraw_line (const int x0, const int y0, const int x1, const int y1, const T *const color, const unsigned int pattern=~0L, const float opacity=1)
 Draw a 2D colored line in the instance image, at coordinates (x0,y0)-(x1,y1).
CImgdraw_line (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const T *const color, const unsigned int pattern=~0L, const float opacity=1)
 Draw a 3D colored line in the instance image, at coordinates (x0,y0,z0)-(x1,y1,z1).
template<typename t>
CImgdraw_line (const int x0, const int y0, const int x1, const int y1, const CImg< t > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const float opacity=1)
 Draw a 2D textured line in the instance image, at coordinates (x0,y0)-(x1,y1).
CImgdraw_arrow (const int x0, const int y0, const int x1, const int y1, const T *const color, const float angle=30, const float length=-10, const unsigned int pattern=~0L, const float opacity=1)
 Draw a 2D colored arrow in the instance image, at coordinates (x0,y0)->(x1,y1).
template<typename t>
CImgdraw_image (const CImg< t > &sprite, const int x0=0, const int y0=0, const int z0=0, const int v0=0, const float opacity=1)
 Draw a sprite image in the instance image, at coordinates (x0,y0,z0,v0).
template<typename ti, typename tm>
CImgdraw_image (const CImg< ti > &sprite, const CImg< tm > &mask, const int x0=0, const int y0=0, const int z0=0, const int v0=0, const tm mask_valmax=1, const float opacity=1)
 Draw a masked sprite image in the instance image, at coordinates (x0,y0,z0,v0).
CImgdraw_rectangle (const int x0, const int y0, const int z0, const int v0, const int x1, const int y1, const int z1, const int v1, const T &val, float opacity=1)
 Draw a 4D filled rectangle in the instance image, at coordinates (x0,y0,z0,v0)-(x1,y1,z1,v1).
CImgdraw_rectangle (const int x0, const int y0, const int z0, const int x1, const int y1, const int z1, const T *const color, const float opacity=1)
 Draw a 3D filled colored rectangle in the instance image, at coordinates (x0,y0,z0)-(x1,y1,z1).
CImgdraw_rectangle (const int x0, const int y0, const int x1, const int y1, const T *const color, const float opacity=1)
 Draw a 2D filled colored rectangle in the instance image, at coordinates (x0,y0)-(x1,y1).
CImgdraw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const T *const color, const float opacity=1)
 Draw a 2D filled colored triangle in the instance image, at coordinates (x0,y0)-(x1,y1)-(x2,y2).
template<typename t>
CImgdraw_triangle (const int x0, const int y0, const int x1, const int y1, const int x2, const int y2, const CImg< t > &texture, const int tx0, const int ty0, const int tx1, const int ty1, const int tx2, const int ty2, const float opacity=1)
 Draw a 2D textured triangle in the instance image, at coordinates (x0,y0)-(x1,y1)-(x2,y2).
CImgdraw_ellipse (const int x0, const int y0, const float r1, const float r2, const float ru, const float rv, const T *const color, const unsigned int pattern=0L, const float opacity=1)
 Draw an ellipse on the instance image.
template<typename t>
CImgdraw_ellipse (const int x0, const int y0, const CImg< t > &tensor, const T *color, const unsigned int pattern=0L, const float opacity=1)
 Draw an ellipse on the instance image.
CImgdraw_circle (const int x0, const int y0, float r, const T *const color, const unsigned int pattern=0L, const float opacity=1)
 Draw a circle on the instance image.
template<typename t>
CImgdraw_text (const char *const text, const int x0, const int y0, const T *const fgcolor, const T *const bgcolor, const CImgl< t > &font, const float opacity=1)
 Draw a text into the instance image.
CImgdraw_text (const char *const text, const int x0, const int y0, const T *const fgcolor=NULL, const T *const bgcolor=NULL, const float opacity=1)
 Draw a text into the instance image.
CImgdraw_text (const int x0, const int y0, const T *const fgcolor, const T *const bgcolor, const float opacity, const char *format,...)
 Draw a text into the instance image.
template<typename t>
CImgdraw_quiver (const CImg< t > &flow, const T *const color, const unsigned int sampling=25, const float factor=-20, const int quiver_type=0, const float opacity=1)
 Draw a vector field in the instance image.
template<typename t1, typename t2>
CImgdraw_quiver (const CImg< t1 > &flow, const CImg< t2 > &color, const unsigned int sampling=25, const float factor=-20, const int quiver_type=0, const float opacity=1)
 Draw a vector field in the instance image, using a colormap.
template<typename t>
CImgdraw_graph (const CImg< t > &data, const T *const color, const unsigned int gtype=0, const double ymin=0, const double ymax=0, const float opacity=1)
 Draw a 1D graph on the instance image.
CImgdraw_axeX (const double x0, const double x1, const int y, const T *const color, const double precision=0, const float opacity=1)
 Draw a labelled horizontal axis on the instance image.
CImgdraw_axeY (const int x, const double y0, const double y1, const T *const color, const double precision=0, const float opacity=1)
 Draw a labelled vertical axis on the instance image.
CImgdraw_axeXY (const double x0, const double x1, const double y0, const double y1, const T *const color, const double precisionx=0, const double precisiony=0, const float opacity=1)
 Draw a labelled coordinate system (X,Y) on the instance image.
template<typename t>
CImgdraw_fill (const int x, const int y, const int z, const T *const color, CImg< t > &region, const float sigma=0, const float opacity=1)
 Draw a 3D filled region starting from a point (x,y,\ z) in the instance image.
CImgdraw_fill (const int x, const int y, const int z, const T *const color, const float sigma=0, const float opacity=1)
 Draw a 3D filled region starting from a point (x,y,\ z) in the instance image.
CImgdraw_fill (const int x, const int y, const T *const color, const float sigma=0, const float opacity=1)
 Draw a 2D filled region starting from a point (x,y) in the instance image.
CImgdraw_plasma (const int x0, const int y0, const int x1, const int y1, const double alpha=1.0, const double beta=1.0, const float opacity=1)
 Draw a plasma square in the instance image.
CImgdraw_plasma (const double alpha=1.0, const double beta=1.0, const float opacity=1)
 Draw a plasma in the instance image.
CImgdraw_gaussian (const float xc, const double sigma, const T *const color, const float opacity=1)
 Draw a 1D gaussian function in the instance image.
template<typename t>
CImgdraw_gaussian (const float xc, const float yc, const CImg< t > &tensor, const T *const color, const float opacity=1)
 Draw an anisotropic 2D gaussian function in the instance image.
CImgdraw_gaussian (const float xc, const float yc, const float sigma, const T *const color, const float opacity=1)
 Draw an isotropic 2D gaussian function in the instance image.
template<typename t>
CImgdraw_gaussian (const float xc, const float yc, const float zc, const CImg< t > &tensor, const T *const color, const float opacity=1)
 Draw an anisotropic 3D gaussian function in the instance image.
CImgdraw_gaussian (const float xc, const float yc, const float zc, const double sigma, const T *const color, const float opacity=1)
 Draw an isotropic 3D gaussian function in the instance image.

Filtering functions

template<typename t>
CImg< typename largest< T,
t >::type > 
get_correlate (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_correl=false) const
 Return the correlation of the image by a mask.
template<typename t>
CImgcorrelate (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_correl=false)
 Correlate the image by a mask.
template<typename t>
CImg< typename largest< T,
t >::type > 
get_convolve (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_convol=false) const
 Return the convolution of the image by a mask.
template<typename t>
CImgconvolve (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_convol=false)
 Convolve the image by a mask.
CImgnoise (const double sigma=-20, const unsigned int ntype=0)
 Add noise to the image.
CImg get_noise (const double sigma=-20, const unsigned int ntype=0) const
 Return a noisy image.
CImgderiche (const float sigma=1, const int order=0, const char axe='x', const unsigned int cond=1)
 Apply a deriche filter on the image.
CImg get_deriche (const float sigma=1, const int order=0, const char axe='x', const unsigned int cond=1) const
 Return the result of the Deriche filter.
CImgblur (const float sigmax, const float sigmay, const float sigmaz, const unsigned int cond=1)
 Blur the image with a Deriche filter (anisotropically).
CImgblur (const float sigma=1, const unsigned int cond=1)
 Blur the image with a Canny-Deriche filter.
CImg get_blur (const float sigmax, const float sigmay, const float sigmaz, const unsigned int cond=1) const
 Return a blurred version of the image, using a Canny-Deriche filter.
CImg get_blur (const float sigma=1, const unsigned int cond=1) const
 Return a blurred version of the image, using a Canny-Deriche filter.
template<typename t>
CImgblur_anisotropic (const CImg< t > &G, const float amplitude=30.0f, const float dl=0.8f, const float da=30.0f, const float gauss_prec=2.0f, const unsigned int scheme=0)
 Blur an image following a field of diffusion tensors.
template<typename t>
CImg get_blur_anisotropic (const CImg< t > &G, const float amplitude=30.0f, const float dl=0.8f, const float da=30.0f, const float gauss_prec=2.0f, const unsigned int scheme=0) const
 Get a blurred version of an image following a field of diffusion tensors.
CImgblur_anisotropic (const float amplitude, const float sharpness=0.8f, const float anisotropy=0.8f, const float alpha=0.2f, const float sigma=0.8f, const float dl=0.8f, const float da=30.0f, const float gauss_prec=2.0f, const unsigned int scheme=0)
 Blur an image following a field of diffusion tensors.
CImg get_blur_anisotropic (const float amplitude, const float sharpness=0.8f, const float anisotropy=0.8f, const float alpha=0.2f, const float sigma=0.8f, const float dl=0.8f, const float da=30.0f, const float gauss_prec=2.0f, const unsigned int scheme=0) const
 Blur an image following a field of diffusion tensors.
CImg get_erode (const unsigned int n=1)
 Return a eroded image.
CImgerode (const unsigned int n=1)
 Erode the image n times.
CImgl< typename largest< T,
float >::type > 
get_FFT (const char axe, const bool inverse=false) const
 Return the Fast Fourier Transform of an image (along a specified axis).
CImgl< typename largest< T,
float >::type > 
get_FFT (const bool inverse=false) const
 Return the Fast Fourier Transform on an image.
CImg get_dilate (const unsigned int n=1)
 Return an dilated image (times dilatation).
CImgdilate (const unsigned int n=1)
 Dilate the image n times.
CImg get_blur_median (const unsigned int n=3)
 Apply a median filter.
CImgblur_median (const unsigned int n=3)
 Apply a median filter.

Matrix and vector computation

CImg get_vector (const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const
 Return a new image corresponding to the vector located at (x,y,z) of the current vector-valued image.
CImg get_matrix (const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const
 Return a new image corresponding to the square matrix located at (x,y,z) of the current vector-valued image.
CImg get_tensor (const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const
 Return a new image corresponding to the diffusion tensor located at (x,y,z) of the current vector-valued image.
CImgset_vector (const CImg &vec, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0)
 Set the image vec as the vector valued pixel located at (x,y,z) of the current vector-valued image.
CImgset_matrix (const CImg &mat, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0)
 Set the image vec as the square matrix-valued pixel located at (x,y,z) of the current vector-valued image.
CImgset_tensor (const CImg &ten, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0)
 Set the image vec as the tensor valued pixel located at (x,y,z) of the current vector-valued image.
CImgidentity_matrix (const unsigned int N)
 Set the current matrix to be the identity matrix.
CImg get_transpose () const
 Return the transpose version of the current matrix.
CImgtranspose ()
 Replace the current matrix by its transpose.
CImg get_diagonal () const
 Get a diagonal matrix, whose diagonal coefficients are the coefficients of the input image.
CImgdiagonal ()
 Replace a vector by a diagonal matrix containing the original vector coefficients.
CImginverse ()
 Inverse the current matrix.
CImg< typename largest< T,
float >::type > 
get_inverse () const
 Return the inverse of the current matrix.
double trace () const
 Return the trace of the current matrix.
const T kth_smallest (const unsigned int k) const
 Return the kth smallest element of the image.
const T median () const
 Return the median of the image.
double dot (const CImg &img) const
 Return the dot product of the current vector/matrix with the vector/matrix img.
CImgcross (const CImg &img)
 Return the cross product between two 3d vectors.
CImg get_cross (const CImg &img) const
 Return the cross product between two 3d vectors.
double det () const
 Return the determinant of the current matrix.
double norm (const int ntype=2) const
 Return the norm of the current vector/matrix. ntype = norm type (0=L2, 1=L1, -1=Linf).
double sum () const
 Return the sum of all the pixel values in an image.
template<typename t>
const CImgSVD (CImg< t > &U, CImg< t > &S, CImg< t > &V, const bool sorting=true) const
 Compute the SVD of a general matrix.
template<typename t>
const CImgSVD (CImgl< t > &USV) const
 Compute the SVD of a general matrix.
CImgl< typename largest< T,
float >::type > 
get_SVD (const bool sorting=true) const
 Compute the SVD of a general matrix.
template<typename t>
const CImg< T > & eigen (CImg< t > &val, CImg< t > &vec) const
 Compute the eigenvalues and eigenvectors of a matrix.
CImgl< typename largest< T,
float >::type > 
get_eigen () const
 Return the eigenvalues and eigenvectors of a matrix.
template<typename t>
const CImg< T > & eigen (CImgl< t > &eig) const
 Compute the eigenvalues and eigenvectors of a matrix.
template<typename t>
const CImg< T > & symeigen (CImg< t > &val, CImg< t > &vec) const
 Compute the eigenvalues and eigenvectors of a symmetric matrix.
CImgl< typename largest< T,
float >::type > 
get_symeigen () const
 Compute the eigenvalues and eigenvectors of a symmetric matrix.
template<typename t>
const CImg< T > & symeigen (CImgl< t > &eig) const
 Compute the eigenvalues and eigenvectors of a symmetric matrix.
template<typename t>
CImg< T > & quicksort (CImg< t > &permutations, const bool increasing=true)
 Sort values of a vector and get permutations.
CImg< T > & quicksort (const bool increasing=true)
 Sort values of a vector.
template<typename t>
CImg< T > & get_quicksort (CImg< t > &permutations, const bool increasing=true)
 Get a sorted version a of vector, with permutations.
CImg< T > & get_quicksort (const bool increasing=true)
 Get a sorted version a of vector.
static CImg vector (const T &a1)
 Return a vector with specified coefficients.
static CImg matrix (const T &a1)
 Return a square matrix with specified coefficients.
static CImg tensor (const T &a1)
 Return a diffusion tensor with specified coefficients.
static CImg diagonal (const T &a1)
 Return a diagonal matrix with specified coefficients.
static CImg get_identity_matrix (const unsigned int N)
 Return a matrix dim * dim equal to factor * Identity.

Display functions

const CImgdisplay (CImgDisplay &disp, const unsigned int ymin=0, const unsigned int ymax=~0) const
 Display an image into a CImgDisplay window.
const CImgwait (const unsigned int milliseconds) const
 Same as cimg::wait().
const CImgdisplay (const char *title, const int min_size=128, const int max_size=1024) const
 If negative, they corresponds to a percentage of the original image size.
const CImgdisplay (const int min_size=128, const int max_size=1024) const
 Display an image in a window, with a default title. See also.
const CImgfeature_selection (int *const selection, const int feature_type, CImgDisplay &disp, unsigned int *const XYZ=NULL, const unsigned char *const color=NULL) const
 High-level interface to select features from images.
const CImgfeature_selection (int *const selection, const int feature_type, unsigned int *const XYZ=NULL, const unsigned char *const color=NULL) const
 High-level interface to select features in images.

Input-Output functions

CImgload (const char *filename)
 Load an image from a file.
CImgload_ascii (const char *filename)
 Load an image from an ASCII file (in-place version).
CImgload_dlm (const char *filename)
 Load an image from a DLM file (in-place version).
CImgload_pnm (const char *filename)
 Load an image from a PNM file (in-place version).
CImgload_yuv (const char *filename, const unsigned int sizex, const unsigned int sizey, const unsigned int first_frame=0, const int last_frame=-1, const bool yuv2rgb=true)
 Load a YUV image sequence file (in-place).
CImgload_bmp (const char *filename)
 Load an image from a BMP file.
CImgload_png (const char *filename)
 Load an image from a PNG file.
CImgload_jpeg (const char *filename)
 Load an image from a JPEG file.
const CImgsave (const char *filename, const int number=-1) const
 Save the image as a file.
const CImgsave_ascii (const char *filename) const
 Save the image as an ASCII file.
const CImgsave_dlm (const char *filename) const
 Save the image as a DLM file.
const CImgsave_pnm (const char *filename) const
 Save the image as a PNM file.
const CImgsave_analyze (const char *filename, const float *const voxsize=NULL) const
 Save the image as an ANALYZE7.5 file.
const CImgsave_cimg (const char *filename) const
 Save the image as a CImg RAW file.
const CImgsave_raw (const char *filename, const bool multiplexed=false) const
 Save the image as a RAW file.
const CImgsave_convert (const char *filename) const
 Save the image using ImageMagick's convert.
const CImgsave_inr (const char *filename, const float *const voxsize=NULL) const
 Save the image as an INRIMAGE-4 file.
const CImgsave_pandore (const char *filename) const
 Save the image as a PANDORE-5 file.
const CImgsave_yuv (const char *filename, const bool rgb2yuv=true) const
 Save the image as a YUV file.
const CImgsave_bmp (const char *filename) const
 Save the image as a BMP file.
const CImgsave_png (const char *filename, const bool png16=false) const
 Save an image to a PNG file.
const CImg< T > & save_jpeg (const char *filename, const unsigned int quality=100) const
 Save a file in JPEG format.
const CImgsave_rgba (const char *filename) const
 Save the image as a RGBA file.
const CImgsave_rgb (const char *filename) const
 Save the image as a RGB file.
static CImg get_load (const char *filename)
 Load an image from a file.
static CImg get_load_ascii (const char *filename)
 Load an image from an ASCII file.
static CImg get_load_dlm (const char *filename)
 Load an image from a DLM file.
static CImg get_load_pnm (const char *filename)
 Load an image from a PNM file.
static CImg get_load_yuv (const char *filename, const unsigned int sizex, const unsigned int sizey, const unsigned int first_frame=0, const int last_frame=-1, const bool yuv2rgb=true)
 Load a YUV image sequence file.
static CImg get_load_bmp (const char *filename)
 Load an image from a BMP file.
static CImg get_load_png (const char *filename)
 Load an image from a PNG file.
static CImg get_load_jpeg (const char *filename)
 Load a file in JPEG format.
static CImg get_load_raw (const char *filename, const unsigned int sizex, const unsigned int sizey=1, const unsigned int sizez=1, const unsigned int sizev=1, const bool multiplexed=false, const bool endian_swap=false)
 Load an image from a RAW file.
static CImg get_load_rgba (const char *filename, const unsigned int dimw, const unsigned int dimh)
 Load an image from a RGBA file.
static CImg get_load_rgb (const char *filename, const unsigned int dimw, const unsigned int dimh)
 Load an image from a RGB file.
static CImg get_load_analyze (const char *filename, float *voxsize=NULL)
 Load an image from an ANALYZE7.5 file.
static CImg get_load_parrec (const char *filename, const char axe='v', const char align='p')
 Load PAR-REC (Philips) image file.
static CImg get_load_cimg (const char *filename, const char axis='v', const char align='p')
 Load an image from a CImg RAW file.
static CImg get_load_convert (const char *filename)
 this function working properly (see http://www.imagemagick.org ).
static CImg get_load_dicom (const char *filename)
 Load an image from a Dicom file (need '(X)Medcon' : http://xmedcon.sourceforge.net ).
static CImg get_logo40x38 ()
 Get a 40x38 color logo of a 'danger' item.

Public Attributes

unsigned int width
 Number of columns in the instance image (size along the X-axis).
unsigned int height
 Number of rows in the instance image (size along the Y-axis).
unsigned int depth
 Number of slices in the instance image (size along the Z-axis).
unsigned int dim
 Number of vector channels in the instance image (size along the V-axis).
T * data
 Pointer to pixel values (array of elements T).

Detailed Description

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

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

This is the main structure of the CImg Library. It allows the declaration and construction of an image, the access to its pixel values, and the application of various operations on it.

Image representation
A CImg image is defined as an instance of the container CImg<T>, which contains a 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 CImgl<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 five fields :

You can access these fields publicly although it is recommended to use the dedicated functions dimx(), dimy(), dimz(), dimv() 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 How pixel data are stored with CImg.).

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 :

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 :

See also:
CImgl, CImgStats, CImgDisplay, CImgException.


Constructor & Destructor Documentation

CImg ( const unsigned int  dx = 0,
const unsigned int  dy = 1,
const unsigned int  dz = 1,
const unsigned int  dv = 1 
) [explicit]

Create an image of size (dx,dy,dz,dv) with pixels of type T.

Parameters:
dx Number of columns of the created image (size along the X-axis i.e image width).
dy Number of rows of the created image (size along the Y-axis, i.e image height).
dz Number of slices of the created image (size along the Z-axis, i.e image depth).
dv Number of channels of the created image (size along the V-axis).

example:
       CImg<unsigned char> img1(100,100);   // Define a 100x100 greyscale image of \c unsigned \c char pixels.
       CImg<float> img2(256,256,1,3);       // Define a 256x256 color image of \c float pixels.
       CImg<short> img3(128,128,128);       // Define a 128x128x128 volumetric image of \c short pixels.
       CImg<double> img4(10);               // Define a 1D array of 10 double values.

CImg ( const unsigned int  dx,
const unsigned int  dy,
const unsigned int  dz,
const unsigned int  dv,
const T &  val 
) [explicit]

Create an image of size (dx,dy,dz,dv) with pixels of type T, and set the value of image pixels to val.

Parameters:
dx Number of columns of the created image (size along the X-axis, i.e image width).
dy Number of rows of the created image (size along the Y-axis, i.e image height).
dz Number of slices of the created image (size along the Z-axis, i.e image depth).
dv Number of channels of the created image (size along the V-axis).
val Initialization value for the image pixels.

example:
       CImg<unsigned char> img(100,100,1,3,0);  // Define a 100x100 color image with black pixels (value equal to 0).

CImg ( const CImg< t > &  img,
const bool  pixel_copy 
)

Copy constructor.

Parameters:
img Image to copy.
pixel_copy Tells if pixels of the original image img are copied into the created image (this is an optional parameter).

example:
       CImg<float> src(100,100,1,1,0);   // Define a 100x100 greyscale image with black pixels.
       CImg<float> dest1(src);           // Define a perfect copy of src.
       CImg<int>   dest2(src);           // Define a copy to an image of int pixels (truncating floating point values).
       CImg<char>  dest3(src,false);     // Construct an image with same size as src, but without initializing pixel values.
See also:
operator=().

CImg ( const char *const   filename  ) 

Construct an image from a filename.

Parameters:
filename Filename of the image file to load as an image.

example:
       CImg<unsigned char> img1("foo.jpg");   // Load JPEG image "foo.jpg" and store RGB colors as three channels of unsigned char pixels.
       CImg<float> img2("foo.png");           // Load PNG image "foo.png" ans store RGB colors as three channels of float pixels.
See also:
get_load(), load(), Files IO in CImg..

CImg ( const t *const   data_buffer,
const unsigned int  dx,
const unsigned int  dy = 1,
const unsigned int  dz = 1,
const unsigned int  dv = 1,
const bool  multiplexed = false 
)

Create an image from a data buffer.

Parameters:
data_buffer Pointer t* to a buffer of pixel values t.
dx Number of columns of the created image (size along the X-axis, i.e image width).
dy Number of rows of the created image (size along the Y-axis, i.e image height).
dz Number of slices of the created image (size along the Z-axis, i.e image depth).
dv Number of vector channels of the created image (size along the V-axis).
multiplexed Flag that indicates if pixels values stored in the source buffer are multiplexed, i.e. are interlaced with respect to the V-axis.
example:
       unsigned char color_progressive[2*2*3] = { 0,0,0,0, 128,128,128,128, 255,255,255,255 };
       unsigned char color_multiplexed[2*2*3] = { 0,128,255, 0,128,255, 0,128,255, 0,128,255 };
       CImg<unsigned char> img1(color_progressive,2,2,1,3,false);
       CImg<unsigned char> img2(color_multiplexed,2,2,1,3,true);
       // Here, img1 and img2 are identical 2x2 color images.

~CImg (  ) 

Destructor.


Member Function Documentation

CImg& empty (  ) 

Replace the instance image by an empty image.

See also:
~CImg()

static const char* pixel_type (  )  [static]

Return the type of the pixel values.

Returns:
a string describing the type of the image pixels (template parameter T).
  • The string returned may contains spaces ("unsigned char").
  • If the template parameter T does not correspond to a registered type, the string "unknown" is returned.

const unsigned int size (  )  const

Return the total number of pixel values in an image.

example:
       CImg<> img(100,100,1,3);
       if (img.size()==100*100*3) std::fprintf(stderr,"This statement is true");
See also:
dimx(), dimy(), dimz(), dimv()

const int dimx (  )  const

Return the number of columns of the instance image (size along the X-axis, i.e image width).

See also:
width, dimy(), dimz(), dimv(), size().

const int dimy (  )  const

Return the number of rows of the instance image (size along the Y-axis, i.e image height).

See also:
height, dimx(), dimz(), dimv(), size().

const int dimz (  )  const

Return the number of slices of the instance image (size along the Z-axis).

See also:
depth, dimx(), dimy(), dimv(), size().

const int dimv (  )  const

Return the number of vector channels of the instance image (size along the V-axis).

See also:
dim, dimx(), dimy(), dimz(), size().

const long offset ( const int  x = 0,
const int  y = 0,
const int  z = 0,
const int  v = 0 
) const

Return the offset of the pixel coordinates (x,y,z,v) with respect to the data pointer data.

Parameters:
x X-coordinate of the pixel.
y Y-coordinate of the pixel.
z Z-coordinate of the pixel.
v V-coordinate of the pixel.

example:
       CImg<float> img(100,100,1,3,0);         // Define a 100x100 color image with float-valued black pixels.
       long off = img.offset(10,10,0,2);       // Get the offset of the blue value of the pixel located at (10,10).
       float val = img[off];                   // Get the blue value of the pixel.
See also:
ptr(), operator()(), operator[](), How pixel data are stored with CImg..

T* ptr ( const unsigned int  x = 0,
const unsigned int  y = 0,
const unsigned int  z = 0,
const unsigned int  v = 0 
) const

Return a pointer to the pixel value located at (x,y,z,v).

Parameters:
x X-coordinate of the pixel.
y Y-coordinate of the pixel.
z Z-coordinate of the pixel.
v V-coordinate of the pixel.

example:
       CImg<float> img(100,100,1,1,0);   // Define a 100x100 greyscale image with float-valued pixels.
       float *ptr = ptr(10,10);          // Get a pointer to the pixel located at (10,10).
       float val = *ptr;                 // Get the pixel value.
See also:
data, offset(), operator()(), operator[](), How pixel data are stored with CImg., Setting Environment Variables.

T& operator() ( const unsigned int  x,
const unsigned int  y = 0,
const unsigned int  z = 0,
const unsigned int  v = 0 
) const

Fast access to pixel value for reading or writing.

Parameters:
x X-coordinate of the pixel.
y Y-coordinate of the pixel.
z Z-coordinate of the pixel.
v V-coordinate of the pixel.

example:
       CImg<float> img(100,100,1,3,0);                       // Define a 100x100 color image with float-valued black pixels.
       const float valR = img(10,10,0,0);                    // Read the red component at coordinates (10,10).
       const float valG = img(10,10,0,1);                    // Read the green component at coordinates (10,10)
       const float valB = img(10,10,2);                      // Read the blue component at coordinates (10,10) (Z-coordinate omitted here).
       const float avg = (valR + valG + valB)/3;             // Compute average pixel value. 
       img(10,10,0) = img(10,10,1) = img(10,10,2) = avg;     // Replace the pixel (10,10) by the average grey value.
See also:
operator[](), ptr(), offset(), How pixel data are stored with CImg., Setting Environment Variables.

T& operator[] ( const unsigned long  off  )  const

Fast access to pixel value for reading or writing, using an offset to the image pixel.

Parameters:
off Offset of the pixel according to the begining of the pixel buffer, given by ptr().

example:
       CImg<float> vec(1,10);        // Define a vector of float values (10 lines, 1 row).
       const float val1 = vec(0,4);  // Get the fifth element using operator()().
       const float val2 = vec[4];    // Get the fifth element using operator[]. Here, val2==val1.       
See also:
operator()(), ptr(), offset(), How pixel data are stored with CImg., Setting Environment Variables.

T dirichlet_pix4d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0,
const T  out_val = (T)0 
) const

Read a pixel value with Dirichlet boundary conditions.

Parameters:
x X-coordinate of the pixel.
y Y-coordinate of the pixel.
z Z-coordinate of the pixel.
v V-coordinate of the pixel.
out_val Desired value if pixel coordinates are outside the image range.

example:
       CImg<float> img(100,100,1,1,128);                     // Define a 100x100 images with all pixel values equal to 128.
       const float val1 = img.dirichlet_pix4d(10,10);        // Equivalent to val1=img(10,10) (but slower).
       const float val2 = img.dirichlet_pix4d(-4,5);         // Return 0, since coordinates are outside the image range.
       const float val3 = img.dirichlet_pix4d(10,10,5,0,64); // Return 64, since coordinates are outside the image range.
See also:
operator()(), dirichlet_pix3d(), dirichlet_pix2d(), dirichlet_pix1d(), neumann_pix4d(), linear_pix4d(), cubic_pix2d().

T dirichlet_pix3d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0,
const T  out_val = (T)0 
) const

Read a pixel value with Dirichlet boundary conditions for the three first coordinates (x,y,z).

See also:
operator()(), dirichlet_pix4d(), dirichlet_pix2d(), dirichlet_pix1d(), neumann_pix3d(), linear_pix3d(), cubic_pix2d().

T dirichlet_pix2d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0,
const T  out_val = (T)0 
) const

Read a pixel value with Dirichlet boundary conditions for the two first coordinates (x,y).

See also:
operator()(), dirichlet_pix4d(), dirichlet_pix3d(), dirichlet_pix1d(), neumann_pix2d(), linear_pix2d(), cubic_pix2d().

T dirichlet_pix1d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0,
const T  out_val = (T)0 
) const

Read a pixel value with Dirichlet boundary conditions for the first coordinate x.

See also:
operator()(), dirichlet_pix4d(), dirichlet_pix3d(), dirichlet_pix2d(), neumann_pix1d(), linear_pix1d(), cubic_pix1d().

const T& neumann_pix4d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0 
) const

Read a pixel value with Neumann boundary conditions.

Parameters:
x X-coordinate of the pixel.
y Y-coordinate of the pixel.
z Z-coordinate of the pixel.
v V-coordinate of the pixel.

See also:
operator()(), neumann_pix3d(), neumann_pix2d(), neumann_pix1d(), dirichlet_pix4d(), linear_pix4d(), cubic_pix2d().

const T& neumann_pix3d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0 
) const

Read a pixel value with Neumann boundary conditions for the three first coordinates (x,y,z).

See also:
operator()(), neumann_pix4d(), neumann_pix2d(), neumann_pix1d(), dirichlet_pix3d(), linear_pix3d(), cubic_pix2d().

const T& neumann_pix2d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0 
) const

Read a pixel value with Neumann boundary conditions for the two first coordinates (x,y).

See also:
operator()(), neumann_pix4d(), neumann_pix3d(), neumann_pix1d(), dirichlet_pix2d(), linear_pix2d(), cubic_pix2d().

const T& neumann_pix1d ( const int  x,
const int  y = 0,
const int  z = 0,
const int  v = 0 
) const

Read a pixel value with Neumann boundary conditions for the first coordinate x.

See also:
operator()(), neumann_pix4d(), neumann_pix3d(), neumann_pix2d(), dirichlet_pix1d(), linear_pix1d(), cubic_pix1d().

largest<T,float>::type linear_pix4d ( const float  ffx,
const float  ffy = 0,
const float  ffz = 0,
const float  ffv = 0 
) const

Read a pixel value using linear interpolation.

Parameters:
ffx X-coordinate of the pixel (float-valued).
ffy Y-coordinate of the pixel (float-valued).
ffz Z-coordinate of the pixel (float-valued).
ffv V-coordinate of the pixel (float-valued).

example:
       CImg<float> img(2,2);     // Define a greyscale 2x2 image.
       img(0,0) = 0;             // Fill image with specified pixel values.
       img(1,0) = 1;
       img(0,1) = 2;
       img(1,1) = 3;
       const double val = img.linear_pix4d(0.5,0.5);  // Return val=1.5, which is the average intensity of the four pixels values.
See also:
operator()(), linear_pix3d(), linear_pix2d(), linear_pix1d(), dirichlet_pix4d(), neumann_pix4d(), cubic_pix2d().

largest<T,float>::type linear_pix3d ( const float  ffx,
const float  ffy = 0,
const float  ffz = 0,
const int  v = 0 
) const

Read a pixel value using linear interpolation for the three first coordinates (cx,cy,cz).

See also:
operator()(), linear_pix4d(), linear_pix2d(), linear_pix1d(), dirichlet_pix3d(), linear_pix3d(), cubic_pix2d().

largest<T,float>::type linear_pix2d ( const float  ffx,
const float  ffy = 0,
const int  z = 0,
int  v = 0 
) const

Read a pixel value using linear interpolation for the two first coordinates (cx,cy).

See also:
operator()(), linear_pix4d(), linear_pix3d(), linear_pix1d(), dirichlet_pix2d(), linear_pix2d(), cubic_pix2d().

largest<T,float>::type linear_pix1d ( const float  ffx,
const int  y = 0,
const int  z = 0,
int  v = 0 
) const

Read a pixel value using linear interpolation for the first coordinate cx.

See also:
operator()(), linear_pix4d(), linear_pix3d(), linear_pix2d(), dirichlet_pix1d(), linear_pix1d(), cubic_pix1d().

largest<T,float>::type cubic_pix2d ( const float  pfx,
const float  pfy = 0,
const int  z = 0,
int  v = 0 
) const

Read a pixel value using cubic interpolation.

Parameters:
pfx X-coordinate of the pixel (float-valued).
pfy Y-coordinate of the pixel (float-valued).
z Z-coordinate of the pixel.
v V-coordinate of the pixel.

See also:
operator()(), cubic_pix1d(), dirichlet_pix2d(), neumann_pix2d(), linear_pix2d().

largest<T,float>::type cubic_pix1d ( const float  pfx,
const int  y = 0,
const int  z = 0,
int  v = 0 
) const

Read a pixel value using cubic interpolation for the first coordinate cx.

See also:
operator()(), cubic_pix2d(), dirichlet_pix1d(), neumann_pix1d(), linear_pix1d().

const CImg& print ( const char *  title = NULL,
const unsigned int  print_flag = 1 
) const

Display informations about the image on the standard error output.

Parameters:
title Name for the considered image (optional).
print_flag Level of informations to be printed.

example:
       CImg<float> img("foo.jpg");      // Load image from a JPEG file.
       img.print("Image : foo.jpg",1);  // Print image informations and statistics.
See also:
CImgStats

CImg<T>& operator= ( const CImg< t > &  img  ) 

Assign an image to the instance image.

Parameters:
img Image to copy.

example:
       CImg<unsigned char> img("foo.jpg");     // Load image from a JPEG file.
       CImg<unsigned char> dest1;              // Define an empty image of unsigned char pixels.
       CImg<float> dest2;                      // Define an empty image of float pixels.
       dest1 = img;                            // Fast copy of img to dest1.
       dest2 = img;                            // Copy of img to dest2, with conversion of pixel to float values.

Reimplemented in CImgSubset.

CImg& operator= ( const T &  val  ) 

Assign a value to each image pixel of the instance image.

Parameters:
val Value to assign.

example:
       CImg<float> img(100,100);   // Define a 100x100 greyscale image.
       img = 3.14;                 // Set all pixel values to 3.14.
See also:
fill().

CImg& operator= ( const T *  buf  ) 

Assign values of a C-array to the instance image.

Parameters:
buf Pointer to a C-style array having a size of (at least) this->size().

example:
       float tab[4*4] = { 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 };  // Define a 4x4 matrix in C-style.
       CImg<float> matrice(4,4);                                        // Define a 4x4 greyscale image.
       matrice = tab;                                                   // Fill the image by the values in tab.

CImg operator+ ( const T &  val  )  const

Addition.

Parameters:
val Constant value added to each image pixel of the instance image.

CImg<typename largest<T,t>::type> operator+ ( const CImg< t > &  img  )  const

Addition.

Parameters:
img Image added to the instance image.

CImg& operator+= ( const T &  val  ) 

In-place addition.

This is the in-place version of operator+().

CImg& operator+= ( const CImg< t > &  img  ) 

In-place addition.

This is the in-place version of operator+().

CImg& operator++ (  ) 

In-place increment.

Equivalent to operator+=(1).

CImg operator- ( const T &  val  )  const

Substraction.

Parameters:
val Constant value substracted to each image pixel of the instance image.

CImg<typename largest<T,t>::type> operator- ( const CImg< t > &  img  )  const

Substraction.

Parameters:
img Image substracted to the instance image.

CImg& operator-= ( const T &  val  ) 

In-place substraction.

This is the in-place version of operator-().

CImg& operator-= ( const CImg< t > &  img  ) 

In-place substraction.

This is the in-place version of operator-().

CImg& operator-- (  ) 

In-place decrement.

Equivalent to operator-=(1).

CImg operator * ( const double  val  )  const

Multiplication.

Parameters:
val Constant value multiplied to each image pixel of the instance image.

CImg<typename largest<T,t>::type> operator * ( const CImg< t > &  img  )  const

Multiplication.

Matrix multiplication.

CImg& operator *= ( const double  val  ) 

In-place multiplication.

This is the in-place version of operator*().

CImg& operator *= ( const CImg< t > &  img  ) 

In-place multiplication.

This is the in-place version of operator*().

CImg operator/ ( const double  val  )  const

Division.

Parameters:
val Constant value divided to each image pixel of the instance image.

CImg& operator/= ( const double  val  ) 

In-place division.

This is the in-place version of operator/().

CImg operator% ( const T &  val  )  const

Modulo.

Parameters:
val Constant valued used for a modulo on each image pixel.

CImg operator% ( const CImg< T > &  img  )  const

Modulo.

Parameters:
img Image whose values are used for a modulo.

CImg& operator%= ( const T &  val  ) 

In-place modulo.

This is the in-place version of operator%().

CImg& operator%= ( const CImg< T > &  img  ) 

In-place modulo.

This is the in-place version of operator%().

CImg operator & ( const T &  val  )  const

Bitwise AND.

Parameters:
val Constant valued used for a bitwise AND on each image pixel.

CImg operator & ( const CImg< T > &  img  )  const

Bitwise AND.

Parameters:
img Image whose value are used for the AND.

CImg& operator &= ( const T &  val  ) 

In-place bitwise AND.

This is the in-place version of operator&().

CImg& operator &= ( const CImg< T > &  img  ) 

In-place bitwise AND.

This is the in-place version of operator&=().

CImg operator| ( const T &  val  )  const

Bitwise OR.

Parameters:
val Constant valued used for a bitwise OR on each image pixel.

CImg operator| ( const CImg< T > &  img  )  const

Bitwise OR.

Parameters:
img Image whose values are used for the OR.

CImg& operator|= ( const T &  val  ) 

In-place bitwise OR.

This is the in-place version of operator|().

CImg& operator|= ( const CImg< T > &  img  ) 

In-place bitwise OR.

This is the in-place version of operator|().

CImg operator^ ( const T &  val  )  const

Bitwise XOR.

Parameters:
val Constant valued used for a bitwise XOR on each image pixel.

CImg operator^ ( const CImg< T > &  img  )  const

Bitwise XOR.

Parameters:
img Image whose values are used for the XOR.

CImg& operator^= ( const T &  val  ) 

In-place bitwise XOR.

This is the in-place version of operator^().

CImg& operator^= ( const CImg< T > &  img  ) 

In-place bitwise XOR.

This is the in-place version of operator^().

CImg& mul ( const CImg< t > &  img  ) 

In-place pointwise multiplication between *this and img.

This is the in-place version of get_mul().

See also:
get_mul().

CImg<typename largest<T,t>::type> get_mul ( const CImg< t > &  img  )  const

Pointwise multiplication between *this and img.

Parameters:
img Argument of the multiplication.
  • if *this and img have different size, the multiplication is applied on the maximum possible range.
See also:
get_div(),mul(),div()

CImg& div ( const CImg< t > &  img  ) 

Replace the image by the pointwise division between *this and img.

This is the in-place version of get_div().

See also:
get_div().

CImg<typename largest<T,t>::type> get_div ( const CImg< t > &  img  )  const

Return an image from a pointwise division between *this and img.

Parameters:
img = argument of the division.
Note:
if *this and img have different size, the division is applied only on possible values.
See also:
get_mul(),mul(),div()

CImg& max ( const CImg< t > &  img  ) 

Replace the image by the pointwise max operator between *this and img.

This is the in-place version of get_max().

See also:
get_max().

CImg<typename largest<T,t>::type> get_max ( const CImg< t > &  img  )  const

Return the image corresponding to the max value for each pixel.

Parameters:
img = second argument of the max operator (the first one is *this).
See also:
max(), min(), get_min()

CImg& min ( const CImg< t > &  img  ) 

Replace the image by the pointwise min operator between *this and img.

This is the in-place version of get_min().

See also:
get_min().

CImg<typename largest<T,t>::type> get_min ( const CImg< t > &  img  )  const

Return the image corresponding to the min value for each pixel.

Parameters:
img = second argument of the min operator (the first one is *this).
See also:
min(), max(), get_max()

CImg& sqrt (  ) 

Replace each image pixel by its square root.

See also:
get_sqrt()

CImg<typename largest<T,float>::type> get_sqrt (  )  const

Return the image of the square root of the pixel values.

See also:
sqrt()

CImg& log (  ) 

Replace each image pixel by its log.

See also:
get_log(), log10(), get_log10()

CImg<typename largest<T,float>::type> get_log (  )  const

Return the image of the log of the pixel values.

See also:
log(), log10(), get_log10()

CImg& log10 (  ) 

Replace each image pixel by its log10.

See also:
get_log10(), log(), get_log()

CImg<typename largest<T,float>::type> get_log10 (  )  const

Return the image of the log10 of the pixel values.

See also:
log10(), log(), get_log()

CImg& pow ( const double  p  ) 

Replace each image pixel by its power by p.

Parameters:
p = power
See also:
get_pow(), sqrt(), get_sqrt()

CImg<typename largest<T,float>::type> get_pow ( const double  p  )  const

Return the image of the square root of the pixel values.

Parameters:
p = power
See also:
pow(), sqrt(), get_sqrt()

CImg& abs (  ) 

Replace each pixel value by its absolute value.

See also:
get_abs()

CImg<typename largest<T,float>::type> get_abs (  )  const

Return the image of the absolute value of the pixel values.

See also:
abs()

CImg& cos (  ) 

Replace each image pixel by its cosinus.

See also:
get_cos(), sin(), get_sin(), tan(), get_tan()

CImg<typename largest<T,float>::type> get_cos (  )  const

Return the image of the cosinus of the pixel values.

See also:
cos(), sin(), get_sin(), tan(), get_tan()

CImg& sin (  ) 

Replace each image pixel by its sinus.

See also:
get_sin(), cos(), get_cos(), tan(), get_tan()

CImg<typename largest<T,float>::type> get_sin (  )  const

Return the image of the sinus of the pixel values.

See also:
sin(), cos(), get_cos(), tan(), get_tan()

CImg& tan (  ) 

Replace each image pixel by its tangent.

See also:
get_tan(), cos(), get_cos(), sin(), get_sin()

CImg<typename largest<T,float>::type> get_tan (  )  const

Return the image of the tangent of the pixel values.

See also:
tan(), cos(), get_cos(), sin(), get_sin()

CImg& fill ( const T &  val  ) 

Fill an image by a value val.

Parameters:
val = fill value
Note:
All pixel values of the instance image will be initialized by val.
See also:
operator=().

CImg& fill ( const T &  val0,
const T &  val1 
)

Fill sequentially all pixel values with values val0 and val1 respectively.

Parameters:
val0 = fill value 1
val1 = fill value 2

CImg& fill ( const T &  val0,
const T &  val1,
const T &  val2 
)

Fill sequentially all pixel values with values val0 and val1 and val2.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3

CImg& fill ( const T &  val0,
const T &  val1,
const T &  val2,
const T &  val3 
)

Fill sequentially all pixel values with values val0 and val1 and val2 and val3.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4

CImg& fill ( const T &  val0,
const T &  val1,
const T &  val2,
const T &  val3,
const T &  val4 
)

Fill sequentially all pixel values with values val0 and val1 and val2 and val3 and val4.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5

CImg& 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 values val0 and val1 and val2 and val3 and val4 and val5.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6

CImg& 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 values val0 and val1 and val2 and val3 and val4 and val5.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7

CImg& 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 values val0 and val1 and val2 and val3 and ... and val7.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8

CImg& 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 values val0 and val1 and val2 and val3 and ... and val8.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8
val8 = fill value 9

CImg& 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 values val0 and val1 and val2 and val3 and ... and val9.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8
val8 = fill value 9
val9 = fill value 10

CImg& 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 values val0 and val1 and val2 and val3 and ... and val11.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8
val8 = fill value 9
val9 = fill value 10
val10 = fill value 11
val11 = fill value 12

CImg& 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 values val0 and val1 and val2 and val3 and ... and val15.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8
val8 = fill value 9
val9 = fill value 10
val10 = fill value 11
val11 = fill value 12
val12 = fill value 13
val13 = fill value 14
val14 = fill value 15
val15 = fill value 16

CImg& 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 T &  val16,
const T &  val17,
const T &  val18,
const T &  val19,
const T &  val20,
const T &  val21,
const T &  val22,
const T &  val23,
const T &  val24 
)

Fill sequentially all pixel values with values val0 and val1 and val2 and val3 and ... and val24.

Parameters:
val0 = fill value 1
val1 = fill value 2
val2 = fill value 3
val3 = fill value 4
val4 = fill value 5
val5 = fill value 6
val6 = fill value 7
val7 = fill value 8
val8 = fill value 9
val9 = fill value 10
val10 = fill value 11
val11 = fill value 12
val12 = fill value 13
val13 = fill value 14
val14 = fill value 15
val15 = fill value 16
val16 = fill value 17
val17 = fill value 18
val18 = fill value 19
val19 = fill value 20
val20 = fill value 21
val21 = fill value 22
val22 = fill value 23
val23 = fill value 24
val24 = fill value 25

CImg& normalize ( const T &  a,
const T &  b 
)

Linear normalization of the pixel values between a and b.

Parameters:
a = minimum pixel value after normalization.
b = maximum pixel value after normalization.
See also:
get_normalize(), cut(), get_cut().

CImg get_normalize ( const T &  a,
const T &  b 
) const

Return the image of normalized values.

Parameters:
a = minimum pixel value after normalization.
b = maximum pixel value after normalization.
See also:
normalize(), cut(), get_cut().

CImg& cut ( const T &  a,
const T &  b 
)

Cut pixel values between a and b.

Parameters:
a = minimum pixel value after cut.
b = maximum pixel value after cut.
See also:
get_cut(), normalize(), get_normalize().

CImg get_cut ( const T &  a,
const T &  b 
) const

Return the image of cutted values.

Parameters:
a = minimum pixel value after cut.
b = maximum pixel value after cut.
See also:
cut(), normalize(), get_normalize().

CImg& quantify ( const unsigned int  n = 256  ) 

Quantify pixel values into
levels.

Parameters:
n = number of quantification levels
See also:
get_quantify().

CImg get_quantify ( const unsigned int  n = 256  )  const

Return a quantified image, with
levels.

Parameters:
n = number of quantification levels
See also:
quantify().

CImg& threshold ( const T &  thres  ) 

Threshold the image.

Parameters:
thres = threshold
See also:
get_threshold().

CImg get_threshold ( const T &  thres  )  const

Return a thresholded image.

Parameters:
thres = threshold.
See also:
threshold().

CImg get_rotate ( const float  angle,
const unsigned int  cond = 2 
) const

Return a rotated image.

Parameters:
angle = rotation angle (in degrees).
cond = rotation type. can be :
  • 0 = zero-value at borders
  • 1 = repeat image at borders
  • 2 = zero-value at borders and linear interpolation
Note:
Returned image will probably have a different size than the instance image *this.
See also:
rotate()

CImg& rotate ( const float  angle,
const unsigned int  cond = 2 
)

Rotate the image.

Parameters:
angle = rotation angle (in degrees).
cond = rotation type. can be :
  • 0 = zero-value at borders
  • 1 = repeat image at borders
  • 2 = zero-value at borders and linear interpolation
See also:
get_rotate()

CImg get_rotate ( const float  angle,
const float  cx,
const float  cy,
const float  zoom = 1,
const unsigned int  cond = 2 
) const

Return a rotated image around the point (cx,cy).

Parameters:
angle = rotation angle (in degrees).
cx = X-coordinate of the rotation center.
cy = Y-coordinate of the rotation center.
zoom = zoom.
cond = rotation type. can be :
  • 0 = zero-value at borders
  • 1 = repeat image at borders
  • 2 = zero-value at borders and linear interpolation
See also:
rotate()

CImg& rotate ( const float  angle,
const float  cx,
const float  cy,
const float  zoom = 1,
const unsigned int  cond = 2 
)

Rotate the image around the point (cx,cy).

Parameters:
angle = rotation angle (in degrees).
cx = X-coordinate of the rotation center.
cy = Y-coordinate of the rotation center.
zoom = zoom.
cond = rotation type. can be :
  • 0 = zero-value at borders
  • 1 = repeat image at borders
  • 2 = zero-value at borders and linear interpolation
Note:
Rotation does not change the image size. If you want to get an image with a new size, use get_rotate() instead.
See also:
get_rotate()

CImg get_resize ( const int  pdx = -100,
const int  pdy = -100,
const int  pdz = -100,
const int  pdv = -100,
const unsigned int  interp = 1 
) const

Return a resized image.

Parameters:
pdx = Number of columns (new size along the X-axis).
pdy = Number of rows (new size along the Y-axis).
pdz = Number of slices (new size along the Z-axis).
pdv = Number of vector-channels (new size along the V-axis).
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg get_resize ( const CImg< t > &  src,
const unsigned int  interp = 1 
) const

Return a resized image.

Parameters:
src = Image giving the geometry of the resize.
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg get_resize ( const CImgDisplay disp,
const unsigned int  interp = 1 
) const

Return a resized image.

Parameters:
disp = Display giving the geometry of the resize.
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg& resize ( const int  pdx = -100,
const int  pdy = -100,
const int  pdz = -100,
const int  pdv = -100,
const unsigned int  interp = 1 
)

Resize the image.

Parameters:
pdx = Number of columns (new size along the X-axis).
pdy = Number of rows (new size along the Y-axis).
pdz = Number of slices (new size along the Z-axis).
pdv = Number of vector-channels (new size along the V-axis).
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg& resize ( const CImg< t > &  src,
const unsigned int  interp = 1 
)

Resize the image.

Parameters:
src = Image giving the geometry of the resize.
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg& resize ( const CImgDisplay disp,
const unsigned int  interp = 1 
)

Resize the image.

Parameters:
disp = Display giving the geometry of the resize.
interp = Resizing type :
  • 0 = no interpolation : additionnal space is filled with 0.
  • 1 = bloc interpolation (nearest point).
  • 2 = mosaic : image is repeated if necessary.
  • 3 = linear interpolation.
  • 4 = grid interpolation.
  • 5 = bi-cubic interpolation.
Note:
If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100).

CImg get_resize_halfXY (  )  const

Return an half-resized image, using a special filter.

See also:
resize_halfXY(), resize(), get_resize().

CImg& resize_halfXY (  ) 

Half-resize the image, using a special filter.

See also:
get_resize_halfXY(), resize(), get_resize().

CImg get_crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  v0,
const unsigned int  x1,
const unsigned int  y1,
const unsigned int  z1,
const unsigned int  v1,
const bool  border_condition = false 
) const

Return a square region of the image, as a new image.

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.
v0 = V-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.
v1 = V-coordinate of the lower-right crop rectangle corner.
border_condition = Dirichlet (false) or Neumann border conditions.
See also:
crop()

CImg get_crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  x1,
const unsigned int  y1,
const unsigned int  z1,
const bool  border_condition = false 
) const

Return a square region of the image, as a new image.

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.
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.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
crop()

CImg get_crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  x1,
const unsigned int  y1,
const bool  border_condition = false 
) const

Return a square region of the image, as a new image.

Parameters:
x0 = X-coordinate of the upper-left crop rectangle corner.
y0 = Y-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.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
crop()

CImg get_crop ( const unsigned int  x0,
const unsigned int  x1,
const bool  border_condition = false 
) const

Return a square region of the image, as a new image.

Parameters:
x0 = X-coordinate of the upper-left crop rectangle corner.
x1 = X-coordinate of the lower-right crop rectangle corner.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
crop()

CImg& crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  v0,
const unsigned int  x1,
const unsigned int  y1,
const unsigned int  z1,
const unsigned int  v1,
const bool  border_condition = false 
)

Replace the image by a square region of the image.

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.
v0 = V-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.
v1 = V-coordinate of the lower-right crop rectangle corner.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
get_crop()

CImg& crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  z0,
const unsigned int  x1,
const unsigned int  y1,
const unsigned int  z1,
const bool  border_condition = false 
)

Replace the image by a square region of the image.

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.
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.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
get_crop()

CImg& crop ( const unsigned int  x0,
const unsigned int  y0,
const unsigned int  x1,
const unsigned int  y1,
const bool  border_condition = false 
)

Replace the image by a square region of the image.

Parameters:
x0 = X-coordinate of the upper-left crop rectangle corner.
y0 = Y-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.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
get_crop()

CImg& crop ( const unsigned int  x0,
const unsigned int  x1,
const bool  border_condition = false 
)

Replace the image by a square region of the image.

Parameters:
x0 = X-coordinate of the upper-left crop rectangle corner.
x1 = X-coordinate of the lower-right crop rectangle corner.
border_condition = determine the type of border condition if some of the desired region is outside the image.
See also:
get_crop()

CImg get_channel ( const unsigned int  v0 = 0  )  const

Get the channel v of the current image, as a new image.

Parameters:
v0 = vector-channel to return.
See also:
channel(), get_slice(), slice(), get_plane(), plane().

CImg get_slice ( const unsigned int  z0 = 0  )  const

Get the z-slice z of *this, as a new image.

Parameters:
z0 = Z-slice to return.
See also:
slice(), get_channel(), channel(), get_plane(), plane().

CImg get_plane ( const unsigned int  z0 = 0,
const unsigned int  v0 = 0 
) const

Get the z-slice z of the channel v of the current image, as a new image.

Parameters:
z0 = Z-slice of the plane to return.
v0 = V-channel of the plane to return.
See also:
plane(), get_channel(), channel(), get_slice(), slice().

CImg& mirror ( const char  axe = 'x'  ) 

Mirror an image along the specified axis.

This is the in-place version of get_mirror().

See also:
get_mirror().

CImg get_mirror ( const char  axe = 'x'  ) 

Get a mirrored version of the image, along the specified axis.

Parameters:
axe Axe used to mirror the image. Can be 'x', 'y', 'z' or 'v'.
See also:
mirror().

CImg& scroll ( const int  scrollx,
const int  scrolly = 0,
const int  scrollz = 0,
const int  scrollv = 0,
const int  border_condition = 0 
)

Scroll the image.

This is the in-place version of get_scroll().

See also:
get_scroll().

CImg get_scroll ( const int  scrollx,
const int  scrolly = 0,
const int  scrollz = 0,
const int  scrollv = 0,
const int  border_condition = 0 
) const

Return a scrolled image.

Parameters:
scrollx Amount of displacement along the X-axis.
scrolly Amount of displacement along the Y-axis.
scrollz Amount of displacement along the Z-axis.
scrollv Amount of displacement along the V-axis.
border_condition Border condition.

CImg<float> get_histogram ( const unsigned int  nblevels = 256,
const T  val_min = (T)0,
const T  val_max = (T)0 
) const

Return the image histogram.

The histogram H of an image I is a 1D-function where H(x) is the number of occurences of the value x in I.

Parameters:
nblevels = Number of different levels of the computed histogram. For classical images, this value is 256 (default value). You should specify more levels if you are working with CImg<float> or images with high range of pixel values.
val_min = Minimum value considered for the histogram computation. All pixel values lower than val_min won't be counted.
val_max = Maximum value considered for the histogram computation. All pixel values higher than val_max won't be counted.
Note:
If val_min==val_max==0 (default values), the function first estimates the minimum and maximum pixel values of the current image, then uses these values for the histogram computation.
Returns:
The histogram is returned as a 1D CImg<float> image H, having a size of (nblevels,1,1,1) such that H(0) and H(nblevels-1) are respectively equal to the number of occurences of the values val_min and val_max in I.
Note:
Histogram computation always returns a 1D function. Histogram of multi-valued (such as color) images are not multi-dimensional.
See also:
get_equalize_histogram(), equalize_histogram()

CImg& equalize_histogram ( const unsigned int  nblevels = 256,
const T  val_min = (T)0,
const T  val_max = (T)0 
)

Equalize the image histogram.

This is the in-place version of get_equalize_histogram()

CImg get_equalize_histogram ( const unsigned int  nblevels = 256,
const T  val_min = (T)0,
const T  val_max = (T)0 
) const

Return the histogram-equalized version of the current image.

The histogram equalization is a classical image processing algorithm that enhances the image contrast by expanding its histogram.

Parameters:
nblevels = Number of different levels of the computed histogram. For classical images, this value is 256 (default value). You should specify more levels if you are working with CImg<float> or images with high range of pixel values.
val_min = Minimum value considered for the histogram computation. All pixel values lower than val_min won't be changed.
val_max = Maximum value considered for the histogram computation. All pixel values higher than val_max won't be changed.
Note:
If val_min==val_max==0 (default values), the function acts on all pixel values of the image.
Returns:
A new image with same size is returned, where pixels have been equalized.
See also:
get_histogram(), equalize_histogram()

CImg<typename largest<T,float>::type> get_norm_pointwise ( int  norm_type = 2  )  const

Return the scalar image of vector norms.

When dealing with vector-valued images (i.e images with dimv()>1), this function computes the L1,L2 or Linf norm of each vector-valued pixel.

Parameters:
norm_type = Type of the norm being computed (1 = L1, 2 = L2, -1 = Linf).
Returns:
A scalar-valued image CImg<float> with size (dimx(),dimy(),dimz(),1), where each pixel is the norm of the corresponding pixels in the original vector-valued image.
See also:
get_orientation_pointwise, orientation_pointwise, norm_pointwise.

CImg& norm_pointwise (  ) 

Replace each pixel value with its vector norm.

This is the in-place version of get_norm_pointwise().

Note:
Be careful when using this function on CImg<T> with T=char, unsigned char,unsigned int or int. The vector norm is usually a floating point value, and a rough cast will be done here.

CImg<typename largest<T,float>::type> get_orientation_pointwise (  )  const

Return the image of normalized vectors.

When dealing with vector-valued images (i.e images with dimv()>1), this function return the image of normalized vectors (unit vectors). Null vectors are unchanged. The L2-norm is computed for the normalization.

Returns:
A new vector-valued image with same size, where each vector-valued pixels have been normalized.
See also:
get_norm_pointwise, norm_pointwise, orientation_pointwise.

CImg& orientation_pointwise (  ) 

Replace each pixel value by its normalized vector.

This is the in-place version of get_orientation_pointwise()

CImgl<typename largest<T,float>::type> get_gradientXY ( const int  scheme = 0  )  const

Return a list of images, corresponding to the XY-gradients of an image.

Parameters:
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.

CImgl<typename largest<T,float>::type> get_gradientXYZ ( const int  scheme = 0  )  const

Return a list of images, corresponding to the XYZ-gradients of an image.

See also:
get_gradientXY().

static CImg<T> get_default_LUT8 (  )  [static]

Return the default 256 colors palette.

The default color palette is used by when displaying images on 256 colors displays. It consists in the quantification of the (R,G,B) color space using 3:3:2 bits for color coding (i.e 8 levels for the Red and Green and 4 levels for the Blue).

Returns:
A 256x1x1x3 color image defining the palette entries.

CImg<t> get_RGBtoLUT ( const CImg< t > &  palette,
const bool  dithering = true,
const bool  indexing = false 
) const

Convert color pixels from (R,G,B) to match a specified palette.

This function return a (R,G,B) image where colored pixels are constrained to match entries of the specified color palette.

Parameters:
palette User-defined palette that will constraint the color conversion.
dithering Enable/Disable Floyd-Steinberg dithering.
indexing If true, each resulting image pixel is an index to the given color palette. Otherwise, (R,G,B) values of the palette are copied instead.

CImg<T> get_RGBtoLUT ( const bool  dithering = true,
const bool  indexing = false 
) const

Convert color pixels from (R,G,B) to match the default 256 colors palette.

Same as get_RGBtoLUT() with the default color palette given by get_default_LUT8().

CImg& RGBtoLUT ( const CImg< T > &  palette,
const bool  dithering = true,
const bool  indexing = false 
)

Convert color pixels from (R,G,B) to match the specified color palette.

This is the in-place version of get_RGBtoLUT().

CImg& RGBtoLUT ( const bool  dithering = true,
const bool  indexing = false 
)

Convert color pixels from (R,G,B) to match the specified color palette.

This is the in-place version of get_RGBtoLUT().

CImg& draw_point ( const int  x0,
const int  y0,
const int  z0,
const T *const   color,
const float  opacity = 1 
)

Draw a colored point in the instance image, at coordinates (x0,y0,z0).

Parameters:
x0 = X-coordinate of the vector-valued pixel to plot.
y0 = Y-coordinate of the vector-valued pixel to plot.
z0 = Z-coordinate of the vector-valued pixel to plot.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_point ( const int  x0,
const int  y0,
const T *const   color,
const float  opacity = 1 
)

Draw a colored point in the instance image, at coordinates (x0,y0).

Parameters:
x0 = X-coordinate of the vector-valued pixel to plot.
y0 = Y-coordinate of the vector-valued pixel to plot.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_line ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const T *const   color,
const unsigned int  pattern = ~0L,
const float  opacity = 1 
)

Draw a 2D colored line in the instance image, at coordinates (x0,y0)-(x1,y1).

Parameters:
x0 = X-coordinate of the starting point of the line.
y0 = Y-coordinate of the starting point of the line.
x1 = X-coordinate of the ending point of the line.
y1 = Y-coordinate of the ending point of the line.
color = array of dimv() values of type T, defining the drawing color.
pattern = An integer whose bits describes the line pattern.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_line ( const int  x0,
const int  y0,
const int  z0,
const int  x1,
const int  y1,
const int  z1,
const T *const   color,
const unsigned int  pattern = ~0L,
const float  opacity = 1 
)

Draw a 3D colored line in the instance image, at coordinates (x0,y0,z0)-(x1,y1,z1).

Parameters:
x0 = X-coordinate of the starting point of the line.
y0 = Y-coordinate of the starting point of the line.
z0 = Z-coordinate of the starting point of the line.
x1 = X-coordinate of the ending point of the line.
y1 = Y-coordinate of the ending point of the line.
z1 = Z-coordinate of the ending point of the line.
color = array of dimv() values of type T, defining the drawing color.
pattern = An integer whose bits describes the line pattern.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_line ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const CImg< t > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const float  opacity = 1 
)

Draw a 2D textured line in the instance image, at coordinates (x0,y0)-(x1,y1).

Parameters:
x0 = X-coordinate of the starting point of the line.
y0 = Y-coordinate of the starting point of the line.
x1 = X-coordinate of the ending point of the line.
y1 = Y-coordinate of the ending point of the line.
texture = a colored texture image used to draw the line color.
tx0 = X-coordinate of the starting point of the texture.
ty0 = Y-coordinate of the starting point of the texture.
tx1 = X-coordinate of the ending point of the texture.
ty1 = Y-coordinate of the ending point of the texture.
opacity = opacity of the drawing.
Note:
Clipping is supported, but texture coordinates do not support clipping.

CImg& draw_arrow ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const T *const   color,
const float  angle = 30,
const float  length = -10,
const unsigned int  pattern = ~0L,
const float  opacity = 1 
)

Draw a 2D colored arrow in the instance image, at coordinates (x0,y0)->(x1,y1).

Parameters:
x0 = X-coordinate of the starting point of the arrow (tail).
y0 = Y-coordinate of the starting point of the arrow (tail).
x1 = X-coordinate of the ending point of the arrow (head).
y1 = Y-coordinate of the ending point of the arrow (head).
color = array of dimv() values of type T, defining the drawing color.
angle = aperture angle of the arrow head
length = length of the arrow head. If <0, described as a percentage of the arrow length.
pattern = An integer whose bits describes the line pattern.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_image ( const CImg< t > &  sprite,
const int  x0 = 0,
const int  y0 = 0,
const int  z0 = 0,
const int  v0 = 0,
const float  opacity = 1 
)

Draw a sprite image in the instance image, at coordinates (x0,y0,z0,v0).

Parameters:
sprite = sprite image.
x0 = X-coordinate of the sprite position in the instance image.
y0 = Y-coordinate of the sprite position in the instance image.
z0 = Z-coordinate of the sprite position in the instance image.
v0 = V-coordinate of the sprite position in the instance image.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_image ( const CImg< ti > &  sprite,
const CImg< tm > &  mask,
const int  x0 = 0,
const int  y0 = 0,
const int  z0 = 0,
const int  v0 = 0,
const tm  mask_valmax = 1,
const float  opacity = 1 
)

Draw a masked sprite image in the instance image, at coordinates (x0,y0,z0,v0).

Parameters:
sprite = sprite image.
mask = mask image.
x0 = X-coordinate of the sprite position in the instance image.
y0 = Y-coordinate of the sprite position in the instance image.
z0 = Z-coordinate of the sprite position in the instance image.
v0 = V-coordinate of the sprite position in the instance image.
mask_valmax = Maximum pixel value of the mask image mask.
opacity = opacity of the drawing.
Note:
Pixel values of mask set the opacity of the corresponding pixels in sprite.

Clipping is supported.

Dimensions along x,y and z of sprite and mask must be the same.

CImg& draw_rectangle ( const int  x0,
const int  y0,
const int  z0,
const int  v0,
const int  x1,
const int  y1,
const int  z1,
const int  v1,
const T &  val,
float  opacity = 1 
)

Draw a 4D filled rectangle in the instance image, at coordinates (x0,y0,z0,v0)-(x1,y1,z1,v1).

Parameters:
x0 = X-coordinate of the upper-left rectangle corner in the instance image.
y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
z0 = Z-coordinate of the upper-left rectangle corner in the instance image.
v0 = V-coordinate of the upper-left rectangle corner in the instance image.
x1 = X-coordinate of the lower-right rectangle corner in the instance image.
y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
z1 = Z-coordinate of the lower-right rectangle corner in the instance image.
v1 = V-coordinate of the lower-right rectangle corner in the instance image.
val = scalar value used to fill the rectangle area.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_rectangle ( const int  x0,
const int  y0,
const int  z0,
const int  x1,
const int  y1,
const int  z1,
const T *const   color,
const float  opacity = 1 
)

Draw a 3D filled colored rectangle in the instance image, at coordinates (x0,y0,z0)-(x1,y1,z1).

Parameters:
x0 = X-coordinate of the upper-left rectangle corner in the instance image.
y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
z0 = Z-coordinate of the upper-left rectangle corner in the instance image.
x1 = X-coordinate of the lower-right rectangle corner in the instance image.
y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
z1 = Z-coordinate of the lower-right rectangle corner in the instance image.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_rectangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const T *const   color,
const float  opacity = 1 
)

Draw a 2D filled colored rectangle in the instance image, at coordinates (x0,y0)-(x1,y1).

Parameters:
x0 = X-coordinate of the upper-left rectangle corner in the instance image.
y0 = Y-coordinate of the upper-left rectangle corner in the instance image.
x1 = X-coordinate of the lower-right rectangle corner in the instance image.
y1 = Y-coordinate of the lower-right rectangle corner in the instance image.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const T *const   color,
const float  opacity = 1 
)

Draw a 2D filled colored triangle in the instance image, at coordinates (x0,y0)-(x1,y1)-(x2,y2).

Parameters:
x0 = X-coordinate of the first corner in the instance image.
y0 = Y-coordinate of the first corner in the instance image.
x1 = X-coordinate of the second corner in the instance image.
y1 = Y-coordinate of the second corner in the instance image.
x2 = X-coordinate of the third corner in the instance image.
y2 = Y-coordinate of the third corner in the instance image.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_triangle ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const int  x2,
const int  y2,
const CImg< t > &  texture,
const int  tx0,
const int  ty0,
const int  tx1,
const int  ty1,
const int  tx2,
const int  ty2,
const float  opacity = 1 
)

Draw a 2D textured triangle in the instance image, at coordinates (x0,y0)-(x1,y1)-(x2,y2).

Parameters:
x0 = X-coordinate of the first corner in the instance image.
y0 = Y-coordinate of the first corner in the instance image.
x1 = X-coordinate of the second corner in the instance image.
y1 = Y-coordinate of the second corner in the instance image.
x2 = X-coordinate of the third corner in the instance image.
y2 = Y-coordinate of the third corner in the instance image.
texture = texture image used to fill the triangle.
tx0 = X-coordinate of the first corner in the texture image.
ty0 = Y-coordinate of the first corner in the texture image.
tx1 = X-coordinate of the second corner in the texture image.
ty1 = Y-coordinate of the second corner in the texture image.
tx2 = X-coordinate of the third corner in the texture image.
ty2 = Y-coordinate of the third corner in the texture image.
opacity = opacity of the drawing.
Note:
Clipping is supported, but texture coordinates do not support clipping.

CImg& draw_ellipse ( const int  x0,
const int  y0,
const float  r1,
const float  r2,
const float  ru,
const float  rv,
const T *const   color,
const unsigned int  pattern = 0L,
const float  opacity = 1 
)

Draw an ellipse on the instance image.

Parameters:
x0 = X-coordinate of the ellipse center.
y0 = Y-coordinate of the ellipse center.
r1 = First radius of the ellipse.
r2 = Second radius of the ellipse.
ru = X-coordinate of the orientation vector related to the first radius.
rv = Y-coordinate of the orientation vector related to the first radius.
color = array of dimv() values of type T, defining the drawing color.
pattern = If zero, the ellipse is filled, else pattern is an integer whose bits describe the outline pattern.
opacity = opacity of the drawing.

CImg& draw_ellipse ( const int  x0,
const int  y0,
const CImg< t > &  tensor,
const T *  color,
const unsigned int  pattern = 0L,
const float  opacity = 1 
)

Draw an ellipse on the instance image.

Parameters:
x0 = X-coordinate of the ellipse center.
y0 = Y-coordinate of the ellipse center.
tensor = Diffusion tensor describing the ellipse.
color = array of dimv() values of type T, defining the drawing color.
pattern = If zero, the ellipse is filled, else pattern is an integer whose bits describe the outline pattern.
opacity = opacity of the drawing.

CImg& draw_circle ( const int  x0,
const int  y0,
float  r,
const T *const   color,
const unsigned int  pattern = 0L,
const float  opacity = 1 
)

Draw a circle on the instance image.

Parameters:
x0 = X-coordinate of the circle center.
y0 = Y-coordinate of the circle center.
r = radius of the circle.
color = an array of dimv() values of type T, defining the drawing color.
pattern = If zero, the circle is filled, else pattern is an integer whose bits describe the outline pattern.
opacity = opacity of the drawing.

CImg& draw_text ( const char *const   text,
const int  x0,
const int  y0,
const T *const   fgcolor,
const T *const   bgcolor,
const CImgl< t > &  font,
const float  opacity = 1 
)

Draw a text into the instance image.

Parameters:
text = a C-string containing the text to display.
x0 = X-coordinate of the text in the instance image.
y0 = Y-coordinate of the text in the instance image.
fgcolor = an array of dimv() values of type T, defining the foreground color (NULL means 'transparent').
bgcolor = an array of dimv() values of type T, defining the background color (NULL means 'transparent').
font = List of font characters used for the drawing.
opacity = opacity of the drawing.
Note:
Clipping is supported.
See also:
get_font7x11().

CImg& draw_text ( const char *const   text,
const int  x0,
const int  y0,
const T *const   fgcolor = NULL,
const T *const   bgcolor = NULL,
const float  opacity = 1 
)

Draw a text into the instance image.

Parameters:
text = a C-string containing the text to display.
x0 = X-coordinate of the text in the instance image.
y0 = Y-coordinate of the text in the instance image.
fgcolor = an array of dimv() values of type T, defining the foreground color (NULL means 'transparent').
bgcolor = an array of dimv() values of type T, defining the background color (NULL means 'transparent').
opacity = opacity of the drawing.
Note:
Clipping is supported.
See also:
get_font7x11().

CImg& draw_text ( const int  x0,
const int  y0,
const T *const   fgcolor,
const T *const   bgcolor,
const float  opacity,
const char *  format,
  ... 
)

Draw a text into the instance image.

Parameters:
x0 = X-coordinate of the text in the instance image.
y0 = Y-coordinate of the text in the instance image.
fgcolor = an array of dimv() values of type T, defining the foreground color (NULL means 'transparent').
bgcolor = an array of dimv() values of type T, defining the background color (NULL means 'transparent').
opacity = opacity of the drawing.
format = a 'printf'-style format, followed by arguments.
Note:
Clipping is supported.
See also:
get_font7x11().

CImg& draw_quiver ( const CImg< t > &  flow,
const T *const   color,
const unsigned int  sampling = 25,
const float  factor = -20,
const int  quiver_type = 0,
const float  opacity = 1 
)

Draw a vector field in the instance image.

Parameters:
flow = a 2d image of 2d vectors used as input data.
color = an array of dimv() values of type T, defining the drawing color.
sampling = length (in pixels) between each arrow.
factor = length factor of each arrow (if <0, computed as a percentage of the maximum length).
quiver_type = type of plot. Can be 0 (arrows) or 1 (segments).
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_quiver ( const CImg< t1 > &  flow,
const CImg< t2 > &  color,
const unsigned int  sampling = 25,
const float  factor = -20,
const int  quiver_type = 0,
const float  opacity = 1 
)

Draw a vector field in the instance image, using a colormap.

Parameters:
flow = a 2d image of 2d vectors used as input data.
color = a 2d image of dimv()-D vectors corresponding to the color of each arrow.
sampling = length (in pixels) between each arrow.
factor = length factor of each arrow (if <0, computed as a percentage of the maximum length).
quiver_type = type of plot. Can be 0 (arrows) or 1 (segments).
opacity = opacity of the drawing.
Note:
Clipping is supported.

CImg& draw_graph ( const CImg< t > &  data,
const T *const   color,
const unsigned int  gtype = 0,
const double  ymin = 0,
const double  ymax = 0,
const float  opacity = 1 
)

Draw a 1D graph on the instance image.

Parameters:
data = an image containing the graph values I = f(x).
color = an array of dimv() values of type T, defining the drawing color.
gtype = define the type of the plot :
  • 0 = Plot using linear interpolation (segments).
  • 1 = Plot with bars.
  • 2 = Plot using cubic interpolation (3-polynomials).
ymin = lower bound of the y-range.
ymax = upper bound of the y-range.
opacity = opacity of the drawing.
Note:
  • if ymin==ymax==0, the y-range is computed automatically from the input sample.
See also:
draw_axeX(), draw_axeY(), draw_axeXY().

CImg& draw_axeX ( const double  x0,
const double  x1,
const int  y,
const T *const   color,
const double  precision = 0,
const float  opacity = 1 
)

Draw a labelled horizontal axis on the instance image.

Parameters:
x0 = lower bound of the x-range.
x1 = upper bound of the x-range.
y = Y-coordinate of the horizontal axis in the instance image.
color = an array of dimv() values of type T, defining the drawing color.
precision = precision of the labels.
opacity = opacity of the drawing.
Note:
if precision==0, precision of the labels is automatically computed.
See also:
draw_graph(), draw_axeY(), draw_axeXY().

CImg& draw_axeY ( const int  x,
const double  y0,
const double  y1,
const T *const   color,
const double  precision = 0,
const float  opacity = 1 
)

Draw a labelled vertical axis on the instance image.

Parameters:
x = X-coordinate of the vertical axis in the instance image.
y0 = lower bound of the y-range.
y1 = upper bound of the y-range.
color = an array of dimv() values of type T, defining the drawing color.
precision = precision of the labels.
opacity = opacity of the drawing.
Note:
if precision==0, precision of the labels is automatically computed.
See also:
draw_graph(), draw_axeX(), draw_axeXY().

CImg& draw_axeXY ( const double  x0,
const double  x1,
const double  y0,
const double  y1,
const T *const   color,
const double  precisionx = 0,
const double  precisiony = 0,
const float  opacity = 1 
)

Draw a labelled coordinate system (X,Y) on the instance image.

Parameters:
x0 = lower bound of the x-range.
x1 = upper bound of the x-range.
y0 = lower bound of the y-range.
y1 = upper bound of the y-range.
color = an array of dimv() values of type T, defining the drawing color.
precisionx = precision of the labels along the X-axis.
precisiony = precision of the labels along the Y-axis.
opacity = opacity of the drawing.
Note:
if precision==0, precision of the labels along the specified axix is automatically computed.
See also:
draw_graph(), draw_axeX(), draw_axeY().

CImg& draw_fill ( const int  x,
const int  y,
const int  z,
const T *const   color,
CImg< t > &  region,
const float  sigma = 0,
const float  opacity = 1 
)

Draw a 3D filled region starting from a point (x,y,\ z) in the instance image.

Parameters:
x = X-coordinate of the starting point of the region to fill.
y = Y-coordinate of the starting point of the region to fill.
z = Z-coordinate of the starting point of the region to fill.
color = an array of dimv() values of type T, defining the drawing color.
region = image that will contain the mask of the filled region mask, as an output.
sigma = tolerance concerning neighborhood values.
opacity = opacity of the drawing.
Returns:
region is initialized with the binary mask of the filled region.

CImg& draw_fill ( const int  x,
const int  y,
const int  z,
const T *const   color,
const float  sigma = 0,
const float  opacity = 1 
)

Draw a 3D filled region starting from a point (x,y,\ z) in the instance image.

Parameters:
x = X-coordinate of the starting point of the region to fill.
y = Y-coordinate of the starting point of the region to fill.
z = Z-coordinate of the starting point of the region to fill.
color = an array of dimv() values of type T, defining the drawing color.
sigma = tolerance concerning neighborhood values.
opacity = opacity of the drawing.

CImg& draw_fill ( const int  x,
const int  y,
const T *const   color,
const float  sigma = 0,
const float  opacity = 1 
)

Draw a 2D filled region starting from a point (x,y) in the instance image.

Parameters:
x = X-coordinate of the starting point of the region to fill.
y = Y-coordinate of the starting point of the region to fill.
color = an array of dimv() values of type T, defining the drawing color.
sigma = tolerance concerning neighborhood values.
opacity = opacity of the drawing.

CImg& draw_plasma ( const int  x0,
const int  y0,
const int  x1,
const int  y1,
const double  alpha = 1.0,
const double  beta = 1.0,
const float  opacity = 1 
)

Draw a plasma square in the instance image.

Parameters:
x0 = X-coordinate of the upper-left corner of the plasma.
y0 = Y-coordinate of the upper-left corner of the plasma.
x1 = X-coordinate of the lower-right corner of the plasma.
y1 = Y-coordinate of the lower-right corner of the plasma.
alpha = Alpha-parameter of the plasma.
beta = Beta-parameter of the plasma.
opacity = opacity of the drawing.

CImg& draw_plasma ( const double  alpha = 1.0,
const double  beta = 1.0,
const float  opacity = 1 
)

Draw a plasma in the instance image.

Parameters:
alpha = Alpha-parameter of the plasma.
beta = Beta-parameter of the plasma.
opacity = opacity of the drawing.

CImg& draw_gaussian ( const float  xc,
const double  sigma,
const T *const   color,
const float  opacity = 1 
)

Draw a 1D gaussian function in the instance image.

Parameters:
xc = X-coordinate of the gaussian center.
sigma = Standard variation of the gaussian distribution.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.

CImg& draw_gaussian ( const float  xc,
const float  yc,
const CImg< t > &  tensor,
const T *const   color,
const float  opacity = 1 
)

Draw an anisotropic 2D gaussian function in the instance image.

Parameters:
xc = X-coordinate of the gaussian center.
yc = Y-coordinate of the gaussian center.
tensor = 2x2 covariance matrix.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.

CImg& draw_gaussian ( const float  xc,
const float  yc,
const float  sigma,
const T *const   color,
const float  opacity = 1 
)

Draw an isotropic 2D gaussian function in the instance image.

Parameters:
xc = X-coordinate of the gaussian center.
yc = Y-coordinate of the gaussian center.
sigma = standard variation of the gaussian distribution.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.

CImg& draw_gaussian ( const float  xc,
const float  yc,
const float  zc,
const CImg< t > &  tensor,
const T *const   color,
const float  opacity = 1 
)

Draw an anisotropic 3D gaussian function in the instance image.

Parameters:
xc = X-coordinate of the gaussian center.
yc = Y-coordinate of the gaussian center.
zc = Z-coordinate of the gaussian center.
tensor = 3x3 covariance matrix.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.

CImg& draw_gaussian ( const float  xc,
const float  yc,
const float  zc,
const double  sigma,
const T *const   color,
const float  opacity = 1 
)

Draw an isotropic 3D gaussian function in the instance image.

Parameters:
xc = X-coordinate of the gaussian center.
yc = Y-coordinate of the gaussian center.
zc = Z-coordinate of the gaussian center.
sigma = standard variation of the gaussian distribution.
color = array of dimv() values of type T, defining the drawing color.
opacity = opacity of the drawing.

CImg<typename largest<T,t>::type> get_correlate ( const CImg< t > &  mask,
const unsigned int  cond = 1,
const bool  weighted_correl = false 
) const

Return the correlation of the image by a mask.

The result res of the correlation 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)

Parameters:
mask = the correlation kernel.
cond = the border condition type (0=zero, 1=dirichlet)
weighted_correl = enable local normalization.

CImg& correlate ( const CImg< t > &  mask,
const unsigned int  cond = 1,
const bool  weighted_correl = false 
)

Correlate the image by a mask.

This is the in-place version of get_correlate.

See also:
get_correlate

CImg<typename largest<T,t>::type> get_convolve ( const CImg< t > &  mask,
const unsigned int  cond = 1,
const bool  weighted_convol = false 
) const

Return the convolution of the image by a mask.

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)

Parameters:
mask = the correlation kernel.
cond = the border condition type (0=zero, 1=dirichlet)
weighted_convol = enable local normalization.

CImg& convolve ( const CImg< t > &  mask,
const unsigned int  cond = 1,
const bool  weighted_convol = false 
)

Convolve the image by a mask.

This is the in-place version of get_convolve().

See also:
get_convolve()

CImg& noise ( const double  sigma = -20,
const unsigned int  ntype = 0 
)

Add noise to the image.

This is the in-place version of get_noise.

See also:
get_noise.

CImg get_noise ( const double  sigma = -20,
const unsigned int  ntype = 0 
) const

Return a noisy image.

Parameters:
sigma = power of the noise. if sigma<0, it corresponds to the percentage of the maximum image value.
ntype = noise type. can be 0=gaussian, 1=uniform or 2=Salt and Pepper.
Returns:
A noisy version of the instance image.

CImg& deriche ( const float  sigma = 1,
const int  order = 0,
const char  axe = 'x',
const unsigned int  cond = 1 
)

Apply a deriche filter on the image.

This is the in-place version of get_deriche

See also:
get_deriche.

CImg get_deriche ( const float  sigma = 1,
const int  order = 0,
const char  axe = 'x',
const unsigned int  cond = 1 
) const

Return the result of the Deriche filter.

The Canny-Deriche filter is a recursive algorithm allowing to compute blurred derivatives of order 0,1 or 2 of an image.

See also:
blur

CImg& blur ( const float  sigmax,
const float  sigmay,
const float  sigmaz,
const unsigned int  cond = 1 
)

Blur the image with a Deriche filter (anisotropically).

This is the in-place version of get_blur().

See also:
get_blur().

CImg& blur ( const float  sigma = 1,
const unsigned int  cond = 1 
)

Blur the image with a Canny-Deriche filter.

This is the in-place version of ().

CImg get_blur ( const float  sigmax,
const float  sigmay,
const float  sigmaz,
const unsigned int  cond = 1 
) const

Return a blurred version of the image, using a Canny-Deriche filter.

Blur the image with an anisotropic exponential filter (Deriche filter of order 0).

CImg& blur_anisotropic ( const CImg< t > &  G,
const float  amplitude = 30.0f,
const float  dl = 0.8f,
const float  da = 30.0f,
const float  gauss_prec = 2.0f,
const unsigned int  scheme = 0 
)

Blur an image following a field of diffusion tensors.

This is the in-place version of get_blur_anisotropic().

CImg get_blur_anisotropic ( const CImg< t > &  G,
const float  amplitude = 30.0f,
const float  dl = 0.8f,
const float  da = 30.0f,
const float  gauss_prec = 2.0f,
const unsigned int  scheme = 0 
) const

Get a blurred version of an image following a field of diffusion tensors.

Parameters:
G = Field of square roots of diffusion tensors used to drive the smoothing.
amplitude = amplitude of the smoothing.
dl = spatial discretization.
da = angular discretization.
gauss_prec = precision of the gaussian function.
scheme Used interpolation scheme (0 = nearest-neighbor, 1 = linear, 2 = Runge-Kutta)

CImg get_blur_anisotropic ( const float  amplitude,
const float  sharpness = 0.8f,
const float  anisotropy = 0.8f,
const float  alpha = 0.2f,
const float  sigma = 0.8f,
const float  dl = 0.8f,
const float  da = 30.0f,
const float  gauss_prec = 2.0f,
const unsigned int  scheme = 0 
) const

Blur an image following a field of diffusion tensors.

Parameters:
amplitude = amplitude of the smoothing.
sharpness = define the contour preservation.
anisotropy = define the smoothing anisotropy.
alpha = image pre-blurring (gaussian).
sigma = regularity of the tensor-valued geometry.
dl = spatial discretization.
da = angular discretization.
gauss_prec = precision of the gaussian function.
scheme Used interpolation scheme (0 = nearest-neighbor, 1 = linear, 2 = Runge-Kutta)

const CImg& display ( const int  min_size = 128,
const int  max_size = 1024 
) const

Display an image in a window, with a default title. See also.

See also:
display() for details on parameters.

static CImg get_load ( const char *  filename  )  [static]

Load an image from a file.

Parameters:
filename = name of the image file to load.
Returns:
A CImg<T> instance containing the pixel data defined in the image file.
Note:
The extension of filename defines the file format. If no filename extension is provided, CImg<T>::get_load() will try to load a CRAW file (CImg Raw file).

CImg& load ( const char *  filename  ) 

Load an image from a file.

This is the in-place version of get_load().

CImg& load_ascii ( const char *  filename  ) 

Load an image from an ASCII file (in-place version).

This is the in-place version of get_load_ascii().

CImg& load_dlm ( const char *  filename  ) 

Load an image from a DLM file (in-place version).

This is the in-place version of get_load_dlm().

const CImg& save ( const char *  filename,
const int  number = -1 
) const

Save the image as a file.

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.
If normalize is true, a normalized version of the image (between [0,255]) is saved.

const CImg& save_convert ( const char *  filename  )  const

Save the image using ImageMagick's convert.

Function that saves the image for other file formats that are not natively handled by CImg, using the tool 'convert' from the ImageMagick package.
This is the case for all compressed image formats (GIF,PNG,JPG,TIF,...). You need to install the ImageMagick package in order to get this function working properly (see http://www.imagemagick.org ).

const CImg& save_png ( const char *  filename,
const bool  png16 = false 
) const

Save an image to a PNG file.

Parameters:
filename = name of the png image file to load
png16 = specifies wether or not to use 16 bit per channel png format for saving.
Returns:
*this
Note:
The png format specifies a variety of possible data formats. Grey scale, Grey scale with Alpha, RGB color, RGB color with Alpha, and Palletized color are supported. Per channel bit depths of 1, 2, 4, 8, and 16 are natively supported. In this saving function only 8 and 16 bit channel depths are supported based upon the bool parameter /c png16. The type of file saved depends on the number of channels in the CImg file. If there is 4 or more channels, the image will be saved as an RGB color with Alpha image using the bottom 4 channels. If there are 3 channels, the saved image will be an RGB color image. If 2 channels then the image saved will be Grey scale with Alpha, and if 1 channel will be saved as a Grey scale image.


Member Data Documentation

unsigned int width

Number of columns in the instance image (size along the X-axis).

unsigned int height

Number of rows in the instance image (size along the Y-axis).

unsigned int depth

Number of slices in the instance image (size along the Z-axis).

unsigned int dim

Number of vector channels in the instance image (size along the V-axis).

T* data

Pointer to pixel values (array of elements T).

The CImg Library - C++ Template Image Processing Library