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

NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > Class Template Reference
[Image Iterator Adapters]

Circulator that walks around a given location in a given image. More...

#include <vigra/pixelneighborhood.hxx>

Inheritance diagram for NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >:
RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >

List of all members.

Public Types

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

Public Member Functions

base_type const & base () const
base_type center () const
Diff2D const & diff () const
Direction direction () const
unsigned int directionBit () const
bool isDiagonal () const
NeighborhoodCirculatormoveCenterToNeighbor ()
 NeighborhoodCirculator (IMAGEITERATOR const &center=IMAGEITERATOR(), Direction d=NEIGHBOROFFSETCIRCULATOR::InitialDirection)
bool operator!= (NeighborhoodCirculator const &rhs) const
reference operator* () const
NeighborhoodCirculator operator+ (difference_type d) const
NeighborhoodCirculator operator++ (int)
NeighborhoodCirculatoroperator++ ()
NeighborhoodCirculatoroperator+= (difference_type d)
difference_type operator- (NeighborhoodCirculator const &rhs) const
NeighborhoodCirculator operator- (difference_type d) const
NeighborhoodCirculator operator-- (int)
NeighborhoodCirculatoroperator-- ()
NeighborhoodCirculatoroperator-= (difference_type d)
pointer operator-> () const
bool operator== (NeighborhoodCirculator const &rhs) const
index_reference operator[] (difference_type d) const
NeighborhoodCirculatorswapCenterNeighbor ()
NeighborhoodCirculatorturnLeft ()
NeighborhoodCirculatorturnRight ()
NeighborhoodCirculatorturnRound ()
NeighborhoodCirculatorturnTo (Direction d)

Detailed Description

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

Circulator that walks around a given location in a given image.

The template parameters define the kind of neighborhood used and the underlying image. The access functions return the value of the current neighbor pixel. Use center() to access the center pixel of the neighborhood. The center can be changed by calling moveCenterToNeighbor() or swapCenterNeighbor(). Note that this circulator cannot when the center is at the image border. You must then use vigra::RestrictedNeighborhoodCirculator

Usage:

#include <vigra/pixelneighborhood.hxx>
Namespace: vigra

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

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

    ++upperleft.y; // avoid image border
    for(int y=1; y<height-1; ++y, ++upperleft.y)
    {
        BImage::traverser ix = upperleft + Diff2D(1,0);
        for(int x=1; x<width-1; ++x, ++ix.x)
        {
            // analyse all neighbors of a pixel (use FourNeighborCode
            // instead of EightNeighborCode for 4-neighborhood):
            NeighborhoodCirculator<BImage::traverser, EightNeighborCode>
                           circulator(ix),
                           end(circulator);
            do
            {
                analysisFunc(*circulator, ...); // do sth. with current neighbor
            }
            while(++circulator != end); // compare with start/end circulator
        }
    }

Member Typedef Documentation

typedef IMAGEITERATOR base_type

type of the underlying image iterator

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

typedef NEIGHBORCODE NeighborCode

type of the used neighbor code

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

typedef IMAGEITERATOR::value_type value_type

the circulator's value type

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

typedef NEIGHBORCODE::Direction Direction

type of the direction code

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

typedef IMAGEITERATOR::reference reference

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

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

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

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

typedef IMAGEITERATOR::pointer pointer

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

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

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

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

the circulator tag (random_access_circulator_tag)

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.


Constructor & Destructor Documentation

NeighborhoodCirculator ( IMAGEITERATOR const &  center = IMAGEITERATOR(),
Direction  d = NEIGHBOROFFSETCIRCULATOR::InitialDirection 
)

Construct circulator with given center pixel, pointing to the neighbor at the given direction d.


Member Function Documentation

NeighborhoodCirculator& operator++ (  ) 
NeighborhoodCirculator operator++ ( int   ) 
NeighborhoodCirculator& operator-- (  ) 
NeighborhoodCirculator operator-- ( int   ) 
NeighborhoodCirculator& operator+= ( difference_type  d  ) 
NeighborhoodCirculator& operator-= ( difference_type  d  ) 
NeighborhoodCirculator operator+ ( difference_type  d  )  const
NeighborhoodCirculator operator- ( difference_type  d  )  const
NeighborhoodCirculator& turnRight (  ) 

Move to the direction that is 'right' relative to the current direction. This is equivalent to four_circulator-- and eight_circulator -= 2 respectively.

NeighborhoodCirculator& turnLeft (  ) 

Move to the direction that is 'left' relative to the current direction. This is equivalent to four_circulator++ and eight_circulator += 2 respectively.

NeighborhoodCirculator& turnRound (  ) 

Move to the opposite direction of the current direction. This is equivalent to four_circulator += 2 and eight_circulator += 4 respectively.

NeighborhoodCirculator& turnTo ( Direction  d  ) 

Move to the given direction.

NeighborhoodCirculator& moveCenterToNeighbor (  ) 

Move the center in the current direction. The current neighbor becomes the new center, the direction does not change.

NeighborhoodCirculator& swapCenterNeighbor (  ) 

Exchange the center with the current neighbor. Equivalent to circ.moveCenterToNeighbor().turnRound() (but shorter and more efficient).

bool operator== ( NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &  rhs  )  const
bool operator!= ( NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &  rhs  )  const
difference_type operator- ( NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const &  rhs  )  const
reference operator* (  )  const
index_reference operator[] ( difference_type  d  )  const

index

pointer operator-> (  )  const
base_type const& base (  )  const

Get the base iterator for the current neighbor.

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

base_type center (  )  const

Get the base iterator for the center of the circulator.

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

Direction direction (  )  const

Get the current direction.

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

unsigned int directionBit (  )  const

Get the current direction bit.

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

Diff2D const& diff (  )  const

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

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.

bool isDiagonal (  )  const

Is the current neighbor a diagonal neighbor?

Reimplemented in RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >.


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

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
VIGRA 1.6.0 (5 Nov 2009)