[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]

details RestrictedNeighborhoodCirculator Class Template Reference VIGRA

Circulator that walks around a given location in a given image, unsing a restricted neighborhood. More...

#include "vigra/pixelneighborhood.hxx"

Inheritance diagram for RestrictedNeighborhoodCirculator:

NeighborhoodCirculator List of all members.

Public Types

typedef IMAGEITERATOR base_type
typedef NEIGHBORCODE NeighborCode
typedef BaseType::value_type value_type
typedef BaseType::Direction Direction
typedef BaseType::reference reference
typedef BaseType::index_reference index_reference
typedef BaseType::pointer pointer
typedef BaseType::difference_type difference_type
typedef BaseType::iterator_category iterator_category

Public Methods

 RestrictedNeighborhoodCirculator (IMAGEITERATOR const &center=IMAGEITERATOR(), AtImageBorder atBorder=NotAtBorder)
RestrictedNeighborhoodCirculator & operator++ ()
RestrictedNeighborhoodCirculator operator++ (int)
RestrictedNeighborhoodCirculator & operator-- ()
RestrictedNeighborhoodCirculator operator-- (int)
RestrictedNeighborhoodCirculator & operator+= (difference_type d)
RestrictedNeighborhoodCirculator & operator-= (difference_type d)
RestrictedNeighborhoodCirculator operator+ (difference_type d) const
RestrictedNeighborhoodCirculator operator- (difference_type d) const
bool operator== (RestrictedNeighborhoodCirculator const &rhs) const
bool operator!= (RestrictedNeighborhoodCirculator const &rhs) const
difference_type operator- (RestrictedNeighborhoodCirculator const &rhs) const
reference operator * () const
pointer operator-> () const
base_type const & base () const
base_type center () const
Direction direction () const
unsigned int directionBit () const
Diff2D const & diff () const
bool isDiagonal () const


Detailed Description


template<class IMAGEITERATOR, class NEIGHBORCODE>
class vigra::RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >

Circulator that walks around a given location in a given image, unsing a restricted neighborhood.

This circulator behaves essentially like vigra::NeighborhoodCirculator, but can also be used near the image border, where some of the neighbor points would be outside the image und must not be accessed. The template parameters define the kind of neighborhood used (four or eight) and the underlying image, whereas the required neighbirhood restriction is given by the last constructur argument. This below for typical usage.

The access functions return the value of the current neighbor pixel. Use center() to access the center pixel of the neighborhood.

Usage:

#include "vigra/pixelneighborhood.hxx"
Namespace: vigra

    BImage::traverser upperleft(...), lowerright(...);

    int width  = lowerright.x - upperleft.x;
    int height = lowerright.y - upperleft.y;

    for(int y=0; y<height; ++y, ++upperleft.y)
    {
        BImage::traverser ix = upperleft;
        for(int x=0; x<width; ++x, ++ix.x)
        {
            // use FourNeighborCode instead of EightNeighborCode for 4-neighborhood
            RestrictedNeighborhoodCirculator<BImage::traverser, EightNeighborCode>
                           circulator(ix, isAtImageBorder(x, y, width, height)),
                           end(circulator);
            do
            {
                ... // do something with the circulator
            }
            while(++circulator != end); // out-of-range pixels will be automatically skipped
        }
    }


Member Typedef Documentation


typedef IMAGEITERATOR base_type

 

type of the underlying image iterator

Reimplemented from NeighborhoodCirculator.


typedef BaseType::difference_type difference_type

 

the circulator's difference type (argument type of circ[diff])

Reimplemented from NeighborhoodCirculator.


typedef BaseType::Direction Direction

 

type of the direction code

Reimplemented from NeighborhoodCirculator.


typedef BaseType::index_reference index_reference

 

the circulator's index reference type (return type of circ[n])

Reimplemented from NeighborhoodCirculator.


typedef BaseType::iterator_category iterator_category

 

the circulator tag (random_access_circulator_tag)

Reimplemented from NeighborhoodCirculator.


typedef NEIGHBORCODE NeighborCode

 

type of the used neighbor code

Reimplemented from NeighborhoodCirculator.


typedef BaseType::pointer pointer

 

the circulator's pointer type (return type of operator->)

Reimplemented from NeighborhoodCirculator.


typedef BaseType::reference reference

 

the circulator's reference type (return type of *circ)

Reimplemented from NeighborhoodCirculator.


typedef BaseType::value_type value_type

 

the circulator's value type

Reimplemented from NeighborhoodCirculator.


Constructor & Destructor Documentation


RestrictedNeighborhoodCirculator IMAGEITERATOR const &    center = IMAGEITERATOR(),
AtImageBorder    atBorder = NotAtBorder
[inline]

 

Construct circulator with given center pixel, using the restricted neighborhood given by atBorder.


Member Function Documentation


base_type const& base   const [inline]

 

Get the base iterator for the current neighbor.

Reimplemented from NeighborhoodCirculator.


base_type center   const [inline]

 

Get the base iterator for the center of the circulator.

Reimplemented from NeighborhoodCirculator.


Diff2D const& diff   const [inline]

 

Get the difference vector (Diff2D) from the center to the current neighbor.

Reimplemented from NeighborhoodCirculator.


Direction direction   const [inline]

 

Get the current direction.

Reimplemented from NeighborhoodCirculator.


unsigned int directionBit   const [inline]

 

Get the current direction bit.

Reimplemented from NeighborhoodCirculator.


bool isDiagonal   const [inline]

 

Is the current neighbor a diagonal neighbor?

Reimplemented from NeighborhoodCirculator.


reference operator *   const [inline]

 

dereference

Reimplemented from NeighborhoodCirculator.


bool operator!= RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &    rhs const [inline]

 

inequality


RestrictedNeighborhoodCirculator operator+ difference_type    d const [inline]

 

addition

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator operator++ int    [inline]

 

pre-decrement

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator& operator++   [inline]

 

pre-increment

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator& operator+= difference_type    d [inline]

 

add-assignment

Reimplemented from NeighborhoodCirculator.


difference_type operator- RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &    rhs const [inline]

 

subtraction


RestrictedNeighborhoodCirculator operator- difference_type    d const [inline]

 

subtraction

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator operator-- int    [inline]

 

post-decrement

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator& operator--   [inline]

 

post-increment

Reimplemented from NeighborhoodCirculator.


RestrictedNeighborhoodCirculator& operator-= difference_type    d [inline]

 

subtract-assignment

Reimplemented from NeighborhoodCirculator.


pointer operator->   const [inline]

 

member access

Reimplemented from NeighborhoodCirculator.


bool operator== RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &    rhs const [inline]

 

equality


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

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany

html generated using doxygen and Python
VIGRA 1.4.0 (21 Dec 2005)