[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
NeighborCode Class Reference |
Encapsulation of direction management for the 8-neighborhood. More...
#include <vigra/pixelneighborhood.hxx>
Public Types | |
enum | Direction { Error = -1, East = 0, NorthEast, North, NorthWest, West, SouthWest, South, SouthEast, DirectionCount, CausalFirst = NorthEast, CausalLast = West, AntiCausalFirst = SouthWest, AntiCausalLast = East } |
Static Public Member Functions | |
static Diff2D const & | bottom () |
static Diff2D const & | bottomLeft () |
static Diff2D const & | bottomRight () |
static Direction | code (FourNeighborhood::Direction d) |
static Direction | code (Diff2D const &diff) |
static Diff2D const & | diff (Direction code) |
static Diff2D const & | diff (int code) |
static int | dX (Direction code) |
static int | dX (int code) |
static int | dY (Direction code) |
static int | dY (int code) |
static Diff2D const & | east () |
static bool | isDiagonal (Direction code) |
static Diff2D const & | left () |
static unsigned int | nearBorderDirectionCount (AtImageBorder b) |
static Direction | nearBorderDirections (AtImageBorder b, int index) |
static Diff2D const & | north () |
static Diff2D const & | northEast () |
static Diff2D const & | northWest () |
static Diff2D const & | relativeDiff (Direction fromCode, Direction toCode) |
static Diff2D const & | relativeDiff (int fromCode, int toCode) |
static Diff2D const & | right () |
static Diff2D const & | south () |
static Diff2D const & | southEast () |
static Diff2D const & | southWest () |
static Diff2D const & | top () |
static Diff2D const & | topLeft () |
static Diff2D const & | topRight () |
static Diff2D const & | west () |
Encapsulation of direction management for the 8-neighborhood.
This helper class allows the transformation between Freeman chain codes (East = 0, NorthEast = 1 etc.) and the corresponding Diff2D instances and back.
You can either use the chain codes by explicit qualification:
or you can fix 8-neighborhood by importing the entire namespace in your function:
If you want to pass 8-neighborhood codes as a template parameter, use the class EightNeighborhood::NeighborCode.
#include <vigra/pixelneighborhood.hxx>
Namespace: vigra::EightNeighborhood
enum Direction |
Freeman direction codes for the 8-neighborhood. East = 0
, North = 1
etc. DirectionCount
may be used for portable loop termination conditions. CausalFirst
and CausalLast
are the first and last (inclusive) neighbors in the causal neighborhood, i.e. in the set of neighbors that have already been visited when the image is traversed in scan order. AntiCausalFirst
and AntiCausalLast
are the opposite.
Enumerator | |
---|---|
Error |
|
East |
|
NorthEast |
|
North |
|
NorthWest |
|
West |
|
SouthWest |
|
South |
|
SouthEast |
|
DirectionCount |
|
CausalFirst |
|
CausalLast |
|
AntiCausalFirst |
|
AntiCausalLast |
|
|
static |
The number of valid neighbors if the current center is at the image border.
|
static |
The valid direction codes when the center is at the image border. index must be in the range 0...nearBorderDirectionCount(b)-1
.
Transform direction code into corresponding Diff2D offset. (note: there is no bounds checking on the code you pass.)
|
static |
Equivalent to diff(static_cast<Direction>(code)). (note: there is no bounds checking on the code you pass.)
Get the relative offset from one neighbor to the other. For example, relativeDiff(East, West) == Diff2D(-2,0)
. (note: there is no bounds checking on the code you pass.)
|
static |
Equivalent to relativeDiff(static_cast<Direction>(fromCode), static_cast<Direction>(toCode)). (note: there is no bounds checking on the code you pass.)
|
static |
X-component of diff()
|
static |
Y-component of diff()
|
static |
Transform 4-neighborhood code into 8-neighborhood code.
Transform Diff2D offset into corresponding direction code. The code Direction::Error
will be returned if diff
is not in the 8-neighborhood.
|
static |
Check whether a code refers to a diagonal direction. Useful if you want to abstract the differences between 4- and 8-neighborhood.
|
static |
Offset to the right neighbor
|
static |
Offset to the topRight neighbor
|
static |
Offset to the top neighbor
|
static |
Offset to the topLeft neighbor
|
static |
Offset to the left neighbor
|
static |
Offset to the bottomLeft neighbor
|
static |
Offset to the bottom neighbor
|
static |
Offset to the bottomRight neighbor
|
static |
Offset to the east neighbor
|
static |
Offset to the northEast neighbor
|
static |
Offset to the north neighbor
|
static |
Offset to the northWest neighbor
|
static |
Offset to the west neighbor
|
static |
Offset to the southWest neighbor
|
static |
Offset to the south neighbor
|
static |
Offset to the southEast neighbor
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|