Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

qgar::LabeledSkeletonImage Class Reference
[Skeletonization]

#include <qgarlib/LabeledSkeletonImage.H>

Inheritance diagram for qgar::LabeledSkeletonImage:

qgar::GenImage< unsigned char > qgar::GenImage_NoCheck< unsigned char > List of all members.

Detailed Description

Skeleton computed using the (3,4)-distance transform.

As described by Gabriella Sanniti di Baja in [Sanniti di Baja, 1994]

Definition at line 74 of file LabeledSkeletonImage.H.

Public Types

typedef unsigned char value_type
 Type of the elements stored in the pixel map.
typedef value_typereference
 Reference to qgar::GenImage::value_type.
typedef const value_typeconst_reference
 Constant reference to qgar::GenImage::value_type.
typedef value_typepointer
 Pointer to qgar::GenImage::value_type.
typedef const value_typeconst_pointer
 Constant pointer to qgar::GenImage::value_type.

Public Member Functions

 GenImage ()
 Default constructor.
 GenImage (unsigned int aWidth, unsigned int aHeight)
 Initialize with given width and height.
 GenImage (unsigned int aWidth, unsigned int aHeight, pointer aPtPixMap) throw (QgarErrorInvalidArg)
 Initialize from a pixmap.
 GenImage (const GenImage &anImg)
 Copy constructor.
 GenImage (const GenImage< value_type, OtherCheckPolicy > &anImg)
 Conversion of an image of the same type, using policies.
 GenImage (const GenImage< U, UCheckPolicy > &anImg)
 Initialize from an image with pixels of a type different from T.
 GenImage (const GenImage< value_type, OtherCheckPolicy > &anImg, const BoundingBox &aBox, value_type aPixVal=static_cast< value_type >(0))
 Initialize by copying a rectangular area, defined by a bounding box, of a given image.
 GenImage (const GenImage< value_type, OtherCheckPolicy > &anImg, unsigned int aXTopLeft, unsigned int aYTopLeft, unsigned int aXBottomRight, unsigned int aYBottomRight, value_type aPixVal=static_cast< value_type >(0))
 Initialize by copying a rectangular area, defined by the coordinates of its top left and bottom right corners, of a given image.
 GenImage (AbstractPbmPlusFile &aPbmPlusFile)
 Initialize with an image in a PBM+ file.
int width () const
 Get the image width.
int height () const
 Get the image height.
int bytesPerPixel () const
 Get the number of bytes per pixel.
value_type pixel (unsigned int aX, unsigned int aY) const
 Get a pixel value.
void row (unsigned int aRowIdx, pointer aRow) const
 Get a row of pixels.
void column (unsigned int aColIdx, pointer aCol) const
 Get a column of pixels.
pointer pPixel (unsigned int aRowIdx, unsigned int aColIdx) const
 Get a pointer on a given pixel of the image.
pointer pRow (unsigned int aRowIdx) const
 Get a pointer on a row of pixels.
pointer pColumn (unsigned int aColIdx) const
 Get a pointer on a column of pixels.
pointer pPixMap () const
 Get the pointer to the pixel map.
void setPixel (unsigned int aX, unsigned int aY, value_type aPixVal)
 Set a pixel value.
void setRow (unsigned int aRowIdx, const_pointer const aRow)
 Set a given row of pixels.
void setColumn (unsigned int aColIdx, const_pointer const aCol)
 Set a given column of pixels.
void draw (const Segment &aSeg, value_type aPixVal=(value_type) 1)
 Draw a segment in the pixel map.
GenImage shallowCopy ()
 Shallow copy: The pixel map of the current image is not duplicated.
GenImage< value_type, GenImage_NoCheckoperator+ (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Same as function qgar::GenImage::plus.
GenImageoperator+= (const GenImage< value_type, OtherCheckPolicy > &anImg)
 Same as function qgar::GenImage::plusEqual.
GenImage< value_type, GenImage_NoCheckoperator- (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Same as function qgar::GenImage::minus.
GenImageoperator-= (const GenImage< value_type, OtherCheckPolicy > &anImg)
 Same as function qgar::GenImage::minusEqual.
GenImage< value_type, GenImage_NoCheckoperator * (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Same as function qgar::GenImage::times.
GenImageoperator *= (const GenImage< value_type, OtherCheckPolicy > &anImg)
 Same as function qgar::GenImage::timesEqual.
GenImage< value_type, GenImage_NoCheckplus (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Add each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.
GenImageplusEqual (const GenImage< value_type, OtherCheckPolicy > &anImg) throw (QgarErrorDomain)
 Add a given image to the current image.
GenImage< value_type, GenImage_NoCheckminus (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Subtract each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.
GenImageminusEqual (const GenImage< value_type, OtherCheckPolicy > &anImg) throw (QgarErrorDomain)
 Subtract a given image to the current image.
GenImage< value_type, GenImage_NoChecktimes (const GenImage< value_type, OtherCheckPolicy > &anImg) const
 Multiply each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.
GenImagetimesEqual (const GenImage< value_type, OtherCheckPolicy > &anImg) throw (QgarErrorDomain)
 Multiply a given image by the current image.
void save (AbstractPbmPlusFile &aPbmPlusFile) const
 Store current image into a PBM+ file.
int borderRows (int aRowIdx) const
 Mirror border rows for convolutions.
int borderCols (int aColIdx) const
 Mirror border columns for convolutions.
void checkRange (const unsigned char *const aPPixmap, int aWidth, const BoundingBox &aRange) const
 Check a range.
Constructors
 LabeledSkeletonImage (const Dist34BlackCCImage &img, int maxPruning=0)
 Construct from given (3,4)-distance transform image.
Destructor
virtual ~LabeledSkeletonImage ()
 Virtual destructor.

Protected Member Functions

 GenImage (unsigned int aBytesCnt, int *aPtRefCnt, unsigned int aWidth, unsigned int aHeight, pointer aPtPixMap)
 Initialize from all data.
void copyBox (const GenImage< value_type, GenImage_NoCheck > &anImg, unsigned int aXTopLeft, unsigned int aYTopLeft, unsigned int aXBottomRight, unsigned int aYBottomRight, value_type aPixVal=static_cast< value_type >(0))
 Copy a rectangular area of the given image into the current image.

Protected Attributes

unsigned int _bytesPerPixel
 Number of bytes per pixel.
int * _pRefCnt
 Reference counter.
int _width
 Image width.
int _height
 Image height.
pointer _pPixMap
 Pointer to the pixel map, organized as consecutive rows.
The skeleton image
unsigned char * _pixMap2
 The marker map.

Private Member Functions

Auxiliaries
In all subsequent labellings, neighbors are numbered as following:
  2 3 4
  1 0 5
  8 7 6


void parallelSkelet ()
 Find parallelwise detectable skeletal pixels.
void sequentSkelet ()
 Find sequentially detectable skeletal pixels.
void finalThinning ()
 Hole filling and final thinning.
void pruning (std::vector< GenPoint< int > > &myEndPoints, int maxPruning)
 Pruning.
void removeJaggedness ()
 Remove jaggedness.
void loadLabeledNeighbors (unsigned char *p, unsigned char *n)
 Load the right labels for a neighborhood.
void loadBinaryNeighbors (unsigned char *p, unsigned char *n)
 Load the binary image of a neighborhood.
void loadSuitXBinary (unsigned char suitbin[], unsigned char n[])
 Load suitable X binary neighbors.
void loadSuitCBinary (unsigned char suitbin[], unsigned char n[])
 Load suitable C binary neighbors.
int connexityCnt (unsigned char n[])
 Number of 8-connected components in a neighborhood.
int crossingCnt (unsigned char n[])
 Number of 4-connected components in a neighborhood.
int degree (unsigned char *p)
 Degree of a point: Its number of marked neighbors.
int oddEvenOddLab3 (unsigned char n[], int debut)
 Triple consecutive neighbors all labeled 3 (after changes all labeled 1).
void gradient (unsigned char n[], float grad[])
 Gradient in a 3x3 neighborhood.
int maxGradientPos1 (unsigned char *p, float grad[])
 Position of maximum gradient.
int maxGradientPos2 (float grad[], unsigned char *p, int indmax)
 Find, if any, second position with same maximum gradient.
void unitWidth (unsigned char *p, unsigned char lab[])
 Reduce to unit width.


Member Typedef Documentation

typedef const value_type* qgar::GenImage< unsigned char , GenImage_NoCheck >::const_pointer [inherited]
 

Constant pointer to qgar::GenImage::value_type.

Reimplemented in qgar::ContrastEnhancedImage, qgar::DilatedBinaryImage, qgar::DilatedImage, qgar::Dist34BlackCCImage, qgar::Dist8cBlackCCImage, qgar::ErodedBinaryImage, qgar::GeodesicRecEroBinaryImage, qgar::HysteresisBinaryImage, qgar::LinDilatedImage, qgar::RegionalMaxBinaryImage, qgar::RegionalMinImage, qgar::ThresBinaryImage, qgar::TTBinaryImage, and qgar::UltimateErodedBinaryImage.

Definition at line 422 of file GenImage.H.

typedef const value_type& qgar::GenImage< unsigned char , GenImage_NoCheck >::const_reference [inherited]
 

Constant reference to qgar::GenImage::value_type.

Reimplemented in qgar::ContrastEnhancedImage, qgar::DilatedBinaryImage, qgar::DilatedImage, qgar::Dist34BlackCCImage, qgar::Dist8cBlackCCImage, qgar::ErodedBinaryImage, qgar::GeodesicRecEroBinaryImage, qgar::HysteresisBinaryImage, qgar::LinDilatedImage, qgar::RegionalMaxBinaryImage, qgar::RegionalMinImage, qgar::ThresBinaryImage, qgar::TTBinaryImage, and qgar::UltimateErodedBinaryImage.

Definition at line 412 of file GenImage.H.

typedef value_type* qgar::GenImage< unsigned char , GenImage_NoCheck >::pointer [inherited]
 

Pointer to qgar::GenImage::value_type.

Reimplemented in qgar::ContrastEnhancedImage, qgar::DilatedBinaryImage, qgar::DilatedImage, qgar::Dist34BlackCCImage, qgar::Dist8cBlackCCImage, qgar::ErodedBinaryImage, qgar::GeodesicRecEroBinaryImage, qgar::HysteresisBinaryImage, qgar::LinDilatedImage, qgar::RegionalMaxBinaryImage, qgar::RegionalMinImage, qgar::ThresBinaryImage, qgar::TTBinaryImage, and qgar::UltimateErodedBinaryImage.

Definition at line 417 of file GenImage.H.

typedef value_type& qgar::GenImage< unsigned char , GenImage_NoCheck >::reference [inherited]
 

Reference to qgar::GenImage::value_type.

Reimplemented in qgar::ContrastEnhancedImage, qgar::DilatedBinaryImage, qgar::DilatedImage, qgar::Dist34BlackCCImage, qgar::Dist8cBlackCCImage, qgar::ErodedBinaryImage, qgar::GeodesicRecEroBinaryImage, qgar::HysteresisBinaryImage, qgar::LinDilatedImage, qgar::RegionalMaxBinaryImage, qgar::RegionalMinImage, qgar::ThresBinaryImage, qgar::TTBinaryImage, and qgar::UltimateErodedBinaryImage.

Definition at line 407 of file GenImage.H.

typedef unsigned char qgar::GenImage< unsigned char , GenImage_NoCheck >::value_type [inherited]
 

Type of the elements stored in the pixel map.

Reimplemented in qgar::ContrastEnhancedImage, qgar::DilatedBinaryImage, qgar::DilatedImage, qgar::Dist34BlackCCImage, qgar::Dist8cBlackCCImage, qgar::ErodedBinaryImage, qgar::GeodesicRecEroBinaryImage, qgar::HysteresisBinaryImage, qgar::LinDilatedImage, qgar::RegionalMaxBinaryImage, qgar::RegionalMinImage, qgar::ThresBinaryImage, qgar::TTBinaryImage, and qgar::UltimateErodedBinaryImage.

Definition at line 402 of file GenImage.H.


Constructor & Destructor Documentation

qgar::LabeledSkeletonImage::LabeledSkeletonImage const Dist34BlackCCImage img,
int  maxPruning = 0
 

Construct from given (3,4)-distance transform image.

Parameters:
img 3-4 distance transform image from which the skeleton is created
maxPruning maximum number of peripheral rows and/or columns which may be missed (default 0, no pruning)

Definition at line 63 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_height, _pixMap2, qgar::GenImage< unsigned char >::_pPixMap, qgar::GenImage< unsigned char >::_width, crossingCnt(), finalThinning(), qgar::GenImage< T, CheckPolicy >::height(), loadBinaryNeighbors(), parallelSkelet(), pruning(), removeJaggedness(), sequentSkelet(), and qgar::GenImage< T, CheckPolicy >::width().

qgar::LabeledSkeletonImage::~LabeledSkeletonImage  )  [virtual]
 

Virtual destructor.

Definition at line 189 of file LabeledSkeletonImage.C.

References _pixMap2.


Member Function Documentation

int qgar::GenImage< unsigned char , GenImage_NoCheck >::borderCols int  aColIdx  )  const [inherited]
 

Mirror border columns for convolutions.

Parameters:
aColIdx index of the column

int qgar::GenImage< unsigned char , GenImage_NoCheck >::borderRows int  aRowIdx  )  const [inherited]
 

Mirror border rows for convolutions.

Parameters:
aRowIdx index of the row

int qgar::GenImage< unsigned char , GenImage_NoCheck >::bytesPerPixel  )  const [inline, inherited]
 

Get the number of bytes per pixel.

void qgar::GenImage_NoCheck< unsigned char >::checkRange const unsigned char *const   aPPixmap,
int  aWidth,
const BoundingBox aRange
const [inline, inherited]
 

Check a range.

Parameters:
aPPixmap a pointer to the pixel map of an image
aWidth 
aRange 
Exceptions:
qgar::QgarErrorDomain (pixel value out of range)

Definition at line 110 of file GenImage.H.

void qgar::GenImage< unsigned char , GenImage_NoCheck >::column unsigned int  aColIdx,
pointer  aCol
const [inherited]
 

Get a column of pixels.

Parameters:
aColIdx column index in image
aCol buffer to store the column of pixels
Warning:
The behavior of the function is undefined if the buffer size is smaller than the column size.

int qgar::LabeledSkeletonImage::connexityCnt unsigned char  n[]  )  [private]
 

Number of 8-connected components in a neighborhood.

Definition at line 864 of file LabeledSkeletonImage.C.

Referenced by parallelSkelet().

void qgar::GenImage< unsigned char , GenImage_NoCheck >::copyBox const GenImage< value_type, GenImage_NoCheck > &  anImg,
unsigned int  aXTopLeft,
unsigned int  aYTopLeft,
unsigned int  aXBottomRight,
unsigned int  aYBottomRight,
value_type  aPixVal = static_cast<value_type>(0)
[protected, inherited]
 

Copy a rectangular area of the given image into the current image.

The sides of the rectangle are parallel to the coordinate axis.

Parameters:
anImg initial image
aXTopLeft X coordinate of the area top left corner
aYTopLeft Y coordinate of the area left corner
aXBottomRight X coordinate of the area bottom right corner
aYBottomRight Y coordinate of the area bottom right corner
aPixVal pixel value to fill non-overlaping zones (default (T)0)
Warning:
The intersection between the rectangle and the given image must be non-empty. If the overlaping zone is only partial, the non-overlaping zone(s) are filled with pixels having value aPixVal.
Todo:
To be reimplemented.

int qgar::LabeledSkeletonImage::crossingCnt unsigned char  n[]  )  [private]
 

Number of 4-connected components in a neighborhood.

Definition at line 884 of file LabeledSkeletonImage.C.

Referenced by LabeledSkeletonImage(), and parallelSkelet().

int qgar::LabeledSkeletonImage::degree unsigned char *  p  )  [private]
 

Degree of a point: Its number of marked neighbors.

Definition at line 903 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_width.

Referenced by removeJaggedness().

void qgar::GenImage< unsigned char , GenImage_NoCheck >::draw const Segment aSeg,
value_type  aPixVal = (value_type)1
[inherited]
 

Draw a segment in the pixel map.

The segment pixels are set using Bresenham's algorithm. See W.M. Newman and R.F. Sproull, Principles of Interactive Computer Graphics, pp. 25-26.

Parameters:
aSeg segment to be drawn
aPixVal value to set pixels with (default (T)1)

void qgar::LabeledSkeletonImage::finalThinning  )  [private]
 

Hole filling and final thinning.

Definition at line 412 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_height, _pixMap2, qgar::GenImage< unsigned char >::_width, loadLabeledNeighbors(), and unitWidth().

Referenced by LabeledSkeletonImage().

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage unsigned int  aBytesCnt,
int *  aPtRefCnt,
unsigned int  aWidth,
unsigned int  aHeight,
pointer  aPtPixMap
[protected, inherited]
 

Initialize from all data.

Parameters:
aBytesCnt bytes per pixel
aPtRefCnt pointer to a reference counter
aWidth width of the image
aHeight height of the image
aPtPixMap pointer to a pixel map
Warning:
Using this constructor may lead to serious bugs due to dynamic memory space management. Be sure that the value of the given reference counter (pointed by aPtRefCnt) is correct: If the given pixel map (pointed by aPtPixMap) is not shared by another object, this value must be 0. Otherwise, one must add 1 to the value, before using the constructor:
(*_pRefCnt)++;

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage AbstractPbmPlusFile aPbmPlusFile  )  [explicit, inherited]
 

Initialize with an image in a PBM+ file.

The given PBM+ file is opened (in READ ONLY mode) at the call, and closed before returning.

Parameters:
aPbmPlusFile a PBM+ file containing an image
Warning:
This kind of conversion must be explicitely specified by the client.
Todo:
Constructor qgar::GenImage::GenImage(AbstractPbmPlusFile&) should just work when T is instantiated by an unsigned char because function qgar::AbstractPbmPlusFile::readRow only works with rows of unsigned integers whereas the first argument of function qgar::GenImage::setRow is a pointer to a row of type T!

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage const GenImage< value_type, OtherCheckPolicy > &  anImg,
unsigned int  aXTopLeft,
unsigned int  aYTopLeft,
unsigned int  aXBottomRight,
unsigned int  aYBottomRight,
value_type  aPixVal = static_cast<value_type>(0)
[inherited]
 

Initialize by copying a rectangular area, defined by the coordinates of its top left and bottom right corners, of a given image.

The rectangle sides are parallel to the coordinate axis.

Parameters:
anImg initial image
aXTopLeft X coordinate of the area top left corner
aYTopLeft Y coordinate of the area top left corner
aXBottomRight X coordinate of the area bottom right corner
aYBottomRight Y coordinate of the area bottom right corner
aPixVal pixel value to fill non-overlaping zones (default (T)0)
Warning:
The intersection between the rectangle and the given image must be non-empty. If the overlaping zone is only partial, the non-overlaping zone(s) are filled with pixels having value aPixVal.

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage const GenImage< value_type, OtherCheckPolicy > &  anImg,
const BoundingBox aBox,
value_type  aPixVal = static_cast<value_type>(0)
[inherited]
 

Initialize by copying a rectangular area, defined by a bounding box, of a given image.

The rectangle sides are parallel to the coordinate axis.

Parameters:
anImg initial image
aBox box defining the rectangular area to copy
aPixVal pixel value to fill non-overlaping zones (default (T)0)
Warning:
The intersection between the rectangle and the given image must be non-empty. If the overlaping zone is only partial, the non-overlaping zone(s) are filled with pixels having value aPixVal.

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage const GenImage< U, UCheckPolicy > &  anImg  )  [explicit, inherited]
 

Initialize from an image with pixels of a type different from T.

Parameters:
anImg an image with pixels of type U (different from T)
Warning:
Perform a deep copy: The pixel map of the source image is duplicated. This kind of conversion must be explicitely specified by the client.

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage const GenImage< value_type, OtherCheckPolicy > &  anImg  )  [inherited]
 

Conversion of an image of the same type, using policies.

Parameters:
anImg an image with the same pixel type having different policies

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage const GenImage< unsigned char > &  anImg  )  [inherited]
 

Copy constructor.

Perform a deep copy: The pixel map of the source image is duplicated.

Parameters:
anImg image to be copied
See also:
qgar::GenImage::operator= and qgar::GenImage::shallowCopy

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage unsigned int  aWidth,
unsigned int  aHeight,
pointer  aPtPixMap
throw (QgarErrorInvalidArg) [inherited]
 

Initialize from a pixmap.

Parameters:
aWidth width of the image (in pixels)
aHeight height of the image (in pixels)
aPtPixMap pointer to a pixel map
Warning:
This constructor takes the ownership of the given pixmap. The created instance will be responsible for deleting it.
Exceptions:
qgar::QgarErrorInvalidArg (pixel map not allocated)

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage unsigned int  aWidth,
unsigned int  aHeight
[inherited]
 

Initialize with given width and height.

Parameters:
aWidth width of the image (in pixels)
aHeight height of the image (in pixels)
Warning:
The pixel map is allocated but is not initialized.

qgar::GenImage< unsigned char , GenImage_NoCheck >::GenImage  )  [inherited]
 

Default constructor.

Set 0 to width, to height, to pointer to pixel map, and to reference counter.

void qgar::LabeledSkeletonImage::gradient unsigned char  n[],
float  grad[]
[private]
 

Gradient in a 3x3 neighborhood.

Definition at line 960 of file LabeledSkeletonImage.C.

Referenced by sequentSkelet().

int qgar::GenImage< unsigned char , GenImage_NoCheck >::height  )  const [inline, inherited]
 

Get the image height.

Referenced by qgar::GeodesicRecEroBinaryImage::perform().

void qgar::LabeledSkeletonImage::loadBinaryNeighbors unsigned char *  p,
unsigned char *  n
[private]
 

Load the binary image of a neighborhood.

Definition at line 793 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_width.

Referenced by LabeledSkeletonImage(), and removeJaggedness().

void qgar::LabeledSkeletonImage::loadLabeledNeighbors unsigned char *  p,
unsigned char *  n
[private]
 

Load the right labels for a neighborhood.

Definition at line 764 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_width.

Referenced by finalThinning(), parallelSkelet(), and sequentSkelet().

void qgar::LabeledSkeletonImage::loadSuitCBinary unsigned char  suitbin[],
unsigned char  n[]
[private]
 

Load suitable C binary neighbors.

Definition at line 843 of file LabeledSkeletonImage.C.

Referenced by parallelSkelet().

void qgar::LabeledSkeletonImage::loadSuitXBinary unsigned char  suitbin[],
unsigned char  n[]
[private]
 

Load suitable X binary neighbors.

Definition at line 822 of file LabeledSkeletonImage.C.

Referenced by parallelSkelet().

int qgar::LabeledSkeletonImage::maxGradientPos1 unsigned char *  p,
float  grad[]
[private]
 

Position of maximum gradient.

Definition at line 979 of file LabeledSkeletonImage.C.

Referenced by sequentSkelet().

int qgar::LabeledSkeletonImage::maxGradientPos2 float  grad[],
unsigned char *  p,
int  indmax
[private]
 

Find, if any, second position with same maximum gradient.

Definition at line 1002 of file LabeledSkeletonImage.C.

Referenced by sequentSkelet().

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::minus const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Subtract each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.

Returns:
A new image constructed from this new pixel map
Parameters:
anImg image to be subtracted to the current image
Warning:
Given and current images must have the same width and height. The subtraction is not normalized: Each result is stored in the new pixel map without any checking.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::minusEqual const GenImage< value_type, OtherCheckPolicy > &  anImg  )  throw (QgarErrorDomain) [inherited]
 

Subtract a given image to the current image.

Parameters:
anImg image to be subtracted to the current image
Subtract each pixel of the given image to the corresponding pixel of the current image and store each result in the pixel map of the current image.

Warning:
Given and current images must have the same width and height. The subtraction is not normalized: Each result is stored in the pixel map of the current image without any checking.
Exceptions:
qgar::QgarErrorDomain (image sizes do not match)

int qgar::LabeledSkeletonImage::oddEvenOddLab3 unsigned char  n[],
int  debut
[private]
 

Triple consecutive neighbors all labeled 3 (after changes all labeled 1).

Definition at line 949 of file LabeledSkeletonImage.C.

Referenced by parallelSkelet().

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::operator * const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Same as function qgar::GenImage::times.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::operator *= const GenImage< value_type, OtherCheckPolicy > &  anImg  )  [inherited]
 

Same as function qgar::GenImage::timesEqual.

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::operator+ const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Same as function qgar::GenImage::plus.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::operator+= const GenImage< value_type, OtherCheckPolicy > &  anImg  )  [inherited]
 

Same as function qgar::GenImage::plusEqual.

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::operator- const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Same as function qgar::GenImage::minus.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::operator-= const GenImage< value_type, OtherCheckPolicy > &  anImg  )  [inherited]
 

Same as function qgar::GenImage::minusEqual.

void qgar::LabeledSkeletonImage::parallelSkelet  )  [private]
 

Find parallelwise detectable skeletal pixels.

Definition at line 207 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_height, _pixMap2, qgar::GenImage< unsigned char >::_pPixMap, qgar::GenImage< unsigned char >::_width, connexityCnt(), crossingCnt(), loadLabeledNeighbors(), loadSuitCBinary(), loadSuitXBinary(), and oddEvenOddLab3().

Referenced by LabeledSkeletonImage().

pointer qgar::GenImage< unsigned char , GenImage_NoCheck >::pColumn unsigned int  aColIdx  )  const [inline, inherited]
 

Get a pointer on a column of pixels.

Parameters:
aColIdx column index in image

value_type qgar::GenImage< unsigned char , GenImage_NoCheck >::pixel unsigned int  aX,
unsigned int  aY
const [inherited]
 

Get a pixel value.

Parameters:
aX X coordinate (column index) of the pixel
aY Y coordinate (row index) of the pixel

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::plus const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Add each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.

Parameters:
anImg image to be added to the current image
Returns:
A new image constructed from this new pixel map
Warning:
Given and current images must have the same width and height. The addition is not normalized: Each result is stored in the new pixel map without any checking.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::plusEqual const GenImage< value_type, OtherCheckPolicy > &  anImg  )  throw (QgarErrorDomain) [inherited]
 

Add a given image to the current image.

Add each pixel of the given image to the corresponding pixel of the current image and store each result in the pixel map of the current image.

Parameters:
anImg image to be added to the current image
Warning:
Given and current images must have the same width and height. The addition is not normalized: Each result is stored in the pixel map of the current image without any checking.
Exceptions:
qgar::QgarErrorDomain (image sizes do not match)

pointer qgar::GenImage< unsigned char , GenImage_NoCheck >::pPixel unsigned int  aRowIdx,
unsigned int  aColIdx
const [inline, inherited]
 

Get a pointer on a given pixel of the image.

Parameters:
aRowIdx row index of the pixel
aColIdx column index of the pixel

pointer qgar::GenImage< unsigned char , GenImage_NoCheck >::pPixMap  )  const [inline, inherited]
 

Get the pointer to the pixel map.

Referenced by qgar::ThresBinaryImage::ThresBinaryImage(), and qgar::TTBinaryImage::TTBinaryImage().

pointer qgar::GenImage< unsigned char , GenImage_NoCheck >::pRow unsigned int  aRowIdx  )  const [inline, inherited]
 

Get a pointer on a row of pixels.

Parameters:
aRowIdx row index in image

void qgar::LabeledSkeletonImage::pruning std::vector< GenPoint< int > > &  myEndPoints,
int  maxPruning
[private]
 

Pruning.

Referenced by LabeledSkeletonImage().

void qgar::LabeledSkeletonImage::removeJaggedness  )  [private]
 

Remove jaggedness.

Definition at line 716 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_height, _pixMap2, qgar::GenImage< unsigned char >::_pPixMap, qgar::GenImage< unsigned char >::_width, degree(), and loadBinaryNeighbors().

Referenced by LabeledSkeletonImage().

void qgar::GenImage< unsigned char , GenImage_NoCheck >::row unsigned int  aRowIdx,
pointer  aRow
const [inherited]
 

Get a row of pixels.

Parameters:
aRowIdx row index in image
aRow buffer to store the row of pixels
Warning:
The behavior of the function is undefined if the buffer size is smaller than the row size.

void qgar::GenImage< unsigned char , GenImage_NoCheck >::save AbstractPbmPlusFile aPbmPlusFile  )  const [inherited]
 

Store current image into a PBM+ file.

The given PBM+ file is opened (in WRITE ONLY mode) at the call, and closed before returning.

Parameters:
aPbmPlusFile a PBM+ file

void qgar::LabeledSkeletonImage::sequentSkelet  )  [private]
 

Find sequentially detectable skeletal pixels.

Definition at line 303 of file LabeledSkeletonImage.C.

References qgar::GenImage< unsigned char >::_height, _pixMap2, qgar::GenImage< unsigned char >::_pPixMap, qgar::GenImage< unsigned char >::_width, gradient(), loadLabeledNeighbors(), maxGradientPos1(), and maxGradientPos2().

Referenced by LabeledSkeletonImage().

void qgar::GenImage< unsigned char , GenImage_NoCheck >::setColumn unsigned int  aColIdx,
const_pointer const   aCol
[inherited]
 

Set a given column of pixels.

Parameters:
aColIdx column index in image
aCol column of pixels to store into the pixel map

void qgar::GenImage< unsigned char , GenImage_NoCheck >::setPixel unsigned int  aX,
unsigned int  aY,
value_type  aPixVal
[inherited]
 

Set a pixel value.

Parameters:
aX X coordinate (column index) of the pixel
aY Y coordinate (row index) of the pixel
aPixVal value of the pixel

void qgar::GenImage< unsigned char , GenImage_NoCheck >::setRow unsigned int  aRowIdx,
const_pointer const   aRow
[inherited]
 

Set a given row of pixels.

Parameters:
aRowIdx row index in image
aRow row of pixels to store into the pixel map

GenImage qgar::GenImage< unsigned char , GenImage_NoCheck >::shallowCopy  )  [inherited]
 

Shallow copy: The pixel map of the current image is not duplicated.

See also:
qgar::GenImage::operator= and copy constructor.
Warning:
When the copy is completed, the pixel map of the new image is the same memory space as the pixel map of the current image.

GenImage<value_type, GenImage_NoCheck> qgar::GenImage< unsigned char , GenImage_NoCheck >::times const GenImage< value_type, OtherCheckPolicy > &  anImg  )  const [inherited]
 

Multiply each pixel of the given image to the corresponding pixel of the current image and store each result in a new pixel map.

Parameters:
anImg image to be multiplied by the current image
Returns:
A new image constructed from this new pixel map
Warning:
Given and current images must have the same width and height. The multiplication is not normalized: Each result is stored in the new pixel map without any checking.

GenImage& qgar::GenImage< unsigned char , GenImage_NoCheck >::timesEqual const GenImage< value_type, OtherCheckPolicy > &  anImg  )  throw (QgarErrorDomain) [inherited]
 

Multiply a given image by the current image.

Multiply each pixel of the given image by the corresponding pixel of the current image and store each result in the pixel map of the current image.

Parameters:
anImg image to be multiplied by the current image
Warning:
Given and current images must have the same width and height. The multiplication is not normalized: Each result is stored in the pixel map of the current image without any checking.
Exceptions:
qgar::QgarErrorDomain (image sizes do not match)

void qgar::LabeledSkeletonImage::unitWidth unsigned char *  p,
unsigned char  lab[]
[private]
 

Reduce to unit width.

Erase marker from any marked pixel satisfying both:

  • at least one odd-neighbor is not marked,
  • at least a triplet of neighbors (nk, nk+2, nk+5) (k odd, addition modulo 8) exists such that nk and nk+2 are marked, and nk+5 is not marked.

Definition at line 1034 of file LabeledSkeletonImage.C.

Referenced by finalThinning().

int qgar::GenImage< unsigned char , GenImage_NoCheck >::width  )  const [inline, inherited]
 

Get the image width.

Referenced by qgar::GeodesicRecEroBinaryImage::perform().


Member Data Documentation

unsigned int qgar::GenImage< unsigned char , GenImage_NoCheck >::_bytesPerPixel [protected, inherited]
 

Number of bytes per pixel.

Definition at line 1096 of file GenImage.H.

int qgar::GenImage< unsigned char , GenImage_NoCheck >::_height [protected, inherited]
 

Image height.

Definition at line 1114 of file GenImage.H.

Referenced by qgar::Dist34BlackCCImage::Dist34BlackCCImage(), qgar::Dist8cBlackCCImage::Dist8cBlackCCImage(), finalThinning(), LabeledSkeletonImage(), parallelSkelet(), removeJaggedness(), sequentSkelet(), and qgar::ThresBinaryImage::ThresBinaryImage().

unsigned char* qgar::LabeledSkeletonImage::_pixMap2 [protected]
 

The marker map.

Definition at line 124 of file LabeledSkeletonImage.H.

Referenced by finalThinning(), LabeledSkeletonImage(), parallelSkelet(), removeJaggedness(), sequentSkelet(), and ~LabeledSkeletonImage().

pointer qgar::GenImage< unsigned char , GenImage_NoCheck >::_pPixMap [protected, inherited]
 

Pointer to the pixel map, organized as consecutive rows.

Definition at line 1120 of file GenImage.H.

Referenced by qgar::Dist34BlackCCImage::Dist34BlackCCImage(), qgar::Dist8cBlackCCImage::Dist8cBlackCCImage(), LabeledSkeletonImage(), parallelSkelet(), removeJaggedness(), and sequentSkelet().

int* qgar::GenImage< unsigned char , GenImage_NoCheck >::_pRefCnt [protected, inherited]
 

Reference counter.

Its value represent the number of other images with which the current image shares its pixel map.

Definition at line 1104 of file GenImage.H.

int qgar::GenImage< unsigned char , GenImage_NoCheck >::_width [protected, inherited]
 

Image width.

Definition at line 1109 of file GenImage.H.

Referenced by degree(), qgar::Dist34BlackCCImage::Dist34BlackCCImage(), qgar::Dist8cBlackCCImage::Dist8cBlackCCImage(), finalThinning(), LabeledSkeletonImage(), loadBinaryNeighbors(), loadLabeledNeighbors(), parallelSkelet(), removeJaggedness(), sequentSkelet(), and qgar::ThresBinaryImage::ThresBinaryImage().


The documentation for this class was generated from the following files: