latest version v1.9 - last update 10 Apr 2010 |
Contour classes: Border-Points. More...
#include <ltiContour.h>
Public Member Functions | |
borderPoints () | |
borderPoints (const borderPoints &other) | |
virtual | ~borderPoints () |
const char * | getTypeName () const |
borderPoints & | castFrom (const areaPoints &theAreaPoints) |
borderPoints & | castFrom (const ioPoints &theIOPoints) |
borderPoints & | castFrom (const polygonPoints &thePolygonPoints) |
borderPoints & | castFrom (const polygonPoints &thePolygonPoints, const int &segments) |
borderPoints & | operator= (const borderPoints &other) |
bool | getFromMask (const channel8 &mask) |
bool | generateMask (channel8 &mask, const bool computeBoundary=true, const bool exactBoundaryDimensions=false, const bool keepMaskData=false) const |
void | invert () |
bool | isConsistent () const |
Contour classes: Border-Points.
For the explanation of the contour description in this class, see following image:
-- 00000000001111111111222222222233 -- 01234567890123456789012345678901 00 -------------------------------- 01 -------------------------------- 02 -------------------------------- 03 --------BBBB------BBBB---------- 04 -------B****BBB----B**B--------- 05 -------B*******B---B***B-------- 06 ------B*******B-----B*B--------- 07 -------B*******BBBBB**B--------- 08 ---------B*************B-------- 09 --------B**----*********B------- 10 --------B**-----********B------- 11 -------B**-----*******BB-------- 12 ------B**-----*******B---------- 13 ------B**-------******BB-------- 14 -----B**---------*******B------- 15 -----B**--------*********B------ 16 ----B**-------**********BB------ 17 ---B***----*******----BB-------- 18 ----BBBBBBBBB*** --*B---------- 19 -------------BBBBBBBB----------- 20 -------------------------------- 21 -------------------------------- 22 -------------------------------- 23 -------------------------------- "-" means background and the rest is part of the object. "B" indicates a borderpoint.
This contour class allows three representations of a contour:
lti::borderPoints::borderPoints | ( | ) |
default constructor creates an empty border-point-list
lti::borderPoints::borderPoints | ( | const borderPoints & | other | ) |
create this pointList as a copy of another pointList
other | the pointList to be copied. |
virtual lti::borderPoints::~borderPoints | ( | ) | [virtual] |
destructor
borderPoints& lti::borderPoints::castFrom | ( | const polygonPoints & | thePolygonPoints, | |
const int & | segments | |||
) |
creates this borderPoint-List from the given PolygonPoint-List interpolating the curve with a cubicspline.
thePolygonPoints | polygon points with source data | |
segments | each space between 2 polygonPoints is parted in segments lines. |
borderPoints& lti::borderPoints::castFrom | ( | const polygonPoints & | thePolygonPoints | ) |
creates this borderPoint-List from the given PolygonPoint-List conecting the points with lines
thePolygonPoints | polygon points with source data |
borderPoints& lti::borderPoints::castFrom | ( | const ioPoints & | theIOPoints | ) |
creates this io-list from the given io-point-list
borderPoints& lti::borderPoints::castFrom | ( | const areaPoints & | theAreaPoints | ) |
creates this border-point-list from the given area-point-list
bool lti::borderPoints::generateMask | ( | channel8 & | mask, | |
const bool | computeBoundary = true , |
|||
const bool | exactBoundaryDimensions = false , |
|||
const bool | keepMaskData = false | |||
) | const |
generate mask from border-points.
The dimensions of the resulting mask are the smallest rectangle to contain the point (0,0) (optional) and all points in this list, plus 1 pixel in both width and heigth. If the boundary of the point list is not up to date, it can be calculated if specified in the parameters:
mask | The calculated mask will be stored here | |
computeBoundary | If false, the internal boundary of the point list will be used, otherwise the boundary will be calculated (but NOT updated!!!). | |
exactBoundaryDimensions | If true, the dimensions of the resulting mask will be the smallest rectangle to contain only the points in this list. The origin (0,0) may not be included, therefore a 1:1 correspondence of coordinates will generally not be given. | |
keepMaskData | if false, the mask will be initialized with zero before getting the area mask. If true, the previous mask data is not deleted, but the mask will be resized if necessary. |
bool lti::borderPoints::getFromMask | ( | const channel8 & | mask | ) |
generate a border-point-list from the given mask image.
This function assumes that the mask contains JUST ONE connected object. To get the biggest object on the mask see the lti::objectsFromMask functor.
const char* lti::borderPoints::getTypeName | ( | void | ) | const [inline, virtual] |
returns the name of this class: "borderPoints"
Reimplemented from lti::tpointList< T >.
void lti::borderPoints::invert | ( | ) |
invert the direction of the border points
bool lti::borderPoints::isConsistent | ( | ) | const |
Check consistency of border points.
Border points are consistent if the D8 distance between any two subsequent points (with the first point being subsequent to the last) is exactly 1, i.e. if every border point is "next to" its predecessor, with "next to" meaning "one of the 8 neighbouring pixels in the grid".
borderPoints& lti::borderPoints::operator= | ( | const borderPoints & | other | ) | [inline] |
assigment operator (alias for copy(other)).
other | the pointList to be copied |
Reimplemented from lti::tpointList< T >.
References lti::tpointList< T >::copy().