bicotiImageIterator3D

     Clases

bicotiImageIterator
        bicotiImageIterator2D
                    bicotiImageIterator2DArray
                    bicotiImageIterator2DSparse
        bicotiImageIterator3D
                    bicotiImageIterator3DArray
                    bicotiImageIterator3DLinear
 

     Templates Clases

PixelType


class bicotiImageIterator3D < class PixelType >



 Public Methods

virtual ~bicotiImageIterator3D ( )

PixelType &operator * ( )

void operator ++ ( int )
void operator -- ( int )
void operator += ( unsigned )
void operator -= ( unsigned )

void First ( )
void Last ( )
void Locate ( int , int , int )
boolIsDone ( )

void X0Increment ( unsigned =1 )
void X0Decrement ( unsigned =1 )
void X1Increment ( unsigned =1 )
void X1Decrement ( unsigned =1 )
void X2Increment ( unsigned =1 )
void X2Decrement ( unsigned =1 )

int GetCurrentX0 ( )
int GetCurrentX1 ( )
int GetCurrentX2 ( )
PixelType * GetCurrentPixel ( )
virtual void SetCurrentPixel ( PixelType ) = 0

bicotiCoordinate< INTEGER > GetCurrentCoordinateInteger ( )
bicotiCoordinate< REAL > GetCurrentCoordinateReal ( )

virtual void SetExtremeCoordinates ( int , int , int , int , int , int ) = 0
void UseBorderStrategyX0 ( bicotiImageBorderStrategy2DX0< PixelType > )
void UseBorderStrategyX1( bicotiImageBorderStrategy2DX1< PixelType > )
void UseBorderStrategyX2( bicotiImageBorderStrategy2DX1< PixelType > )



virtual ~bicotiImageIterator3D ( )

       Destrutor. A pesar de ser virtual necesita tener definido un destructor virtual.



PixelType &operator * ( )

        Esta función se declara e implementa en la clase base.
      Ver operator *( ) de bicotiImageIterator



void operator ++ ( int )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver operator ++ de bicotiImageIterator



void operator -- ( int )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver operator -- de bicotiImageIterator



void operator += ( unsigned )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver operator += de bicotiImageIterator



void operator -= ( unsigned )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver operator -= de bicotiImageIterator



void First ( )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver First() de bicotiImageIterator



void Last ( )

        Esta función se declara en la clase base y se implementa en esta clase.
      Ver Last() de bicotiImageIterator



void Locate ( int x_0 , int x_1 , int x_2 )

        Esta función permite ubicar al iterador en el punto de coordenadas ( x_0 , x_1 , x_2 )
        Por ejemplo si quiero pararme en la fila 1, columna 4 , profundidad 0 , hago :

                       iterator.Locate( 4 , 1 , 0 );



boolIsDone ( )

        Esta función se declara e implementa en la clase base.
      Ver IsDone( ) de bicotiImageIterator



void X0Increment ( unsigned step )

        Incrementa la coordenada x_0 tantos lugares como lo indique step ( por defecto es 1 ).

Figura 3.1.20

           En el ejemplo de la figura 3.1.20 hacemos :

                 pix = * iterator ;  // pix = 5  ( x_0 = 2 , x_1 = 3 , x_2 = 0 )

                iterator.X0Increment( 2 ) ;  // aumento x_0 en 2
                pix = * iterator ;  // pix = 2  ( x_0 = 4 , x_1 = 3 , x_2 = 0 )

                iterator.X0Increment( ) ;  // aumento x_0 en 1 , paso al otro plano
                pix = * iterator ;  // pix = 4  ( x_0 = 0 , x_1 = 0 , x_2 = 1 )
 



void X0Decrement ( unsigned step )

       Decrementa la coordenada x_0 tantos lugares como lo indique step ( por defecto es 1 ).
 
 

Figura 3.1.21

           En el ejemplo de la figura 3.1.21 hacemos :

                 pix = * iterator ;  // pix = 8  ( x_0 = 0 , x_1 = 0 , x_2 = 1 )

                 iterator.X0Decrement() ;  // bajo x_0 en 1
                 pix = * iterator ;  // pix = 2  ( x_0 = 4 , x_1 = 3 , x_2 = 0 )
 
 



void X1Increment ( unsigned step )

       Incrementa la coordenada x_1 tantos lugares como lo indique step ( por defecto es 1 ).

Figura 3.1.22

                En el ejemplo de la figura 3.1.22 hacemos :

                pix = * iterator ;  // pix = 4  ( x_0 = 4 , x_1 = 0 , x_2 = 0 )

                iterator.X1Increment(3) ;  // aumento x_1 en 3
                pix = * iterator ;  // pix = 2  ( x_0 = 4 , x_1 = 3 , x_2 = 0 )

                iterator.X1Increment() ;  // aumento x_1 en 1
                pix = * iterator ;  // pix = 8  ( x_0 = 0 , x_1 = 0 , x_2 = 1 )
 



void X1Decrement ( unsigned step )

       Decrementa la coordenada x_1 tantos lugares como lo indique step ( por defecto es 1 ).

Figura 3.1.23

                 En el ejemplo de la figura 3.1.23 hacemos :

                 pix = * iterator ;  // pix = 8  ( x_0 = 0 , x_1 = 0 , x_2 = 1 )

                 iterator.X1Decrement(2) ;  // bajo x_1 en 2
                 pix = * iterator ;  // pix = 0  ( x_0 = 4 , x_1 = 2 , x_2 = 0 )

                 iterator.X1Decrement() ;  // bajo x_1 en 1
                 pix = * iterator ;  // pix = 4  ( x_0 = 4 , x_1 = 1 , x_2 = 0 )



void X2Increment ( unsigned step )

       Incrementa la coordenada x_2 tantos lugares como lo indique step ( por defecto es 1 ).


Figura 3.1.24

                En el ejemplo de la figura 3.1.24 hacemos :

                pix = * iterator ;  // pix = 1  ( x_0 = 2 , x_1 = 0 , x_2 = 0 )

                iterator.X2Increment(2) ;  // aumento x_2 en 2
                pix = * iterator ;  // pix = 2  ( x_0 = 2 , x_1 = 0 , x_2 = 2 )

                iterator.X2Increment() ;  // aumento x_2 en 1
                pix = * iterator ;  // pix = 3  ( x_0 = 3 , x_1 = 0 , x_2 = 0 )



void X2Decrement ( unsigned step )

       Decrementa la coordenada x_2 tantos lugares como lo indique step ( por defecto es 1 ).


Figura 3.1.25






                En el ejemplo de la figura 3.1.25 hacemos :

                pix = * iterator ;  // pix = 4  ( x_0 = 3 , x_1 = 0 , x_2 = 2 )

                iterator.X2Decrement() ;  // bajo x_2 en 1
                pix = * iterator ;  // pix = 0  ( x_0 = 3 , x_1 = 0 , x_2 = 1 )



int GetCurrentX0 ( )

        Retorna la componente x_0 de la coordenada de la posición actual, es decir la columna actual.

Figura 3.1.26

        En el ejemplo de la figura 3.1.26.Si hago :

                 columna = iterator.GetCurrentX0();  // obtengo columna = 2



int GetCurrentX1 ( )

        Retorna la componente x_1 de la coordenada de la posición actual, es decir la fila actual.

        En el ejemplo de la figura 3.1.26.Si hago :

                 fila = iterator.GetCurrentX1();  // obtengo fila = 0



int GetCurrentX2 ( )

        Retorna la componente x_2 de la coordenada de la posición actual, es decir la profundidad actual.

        En el ejemplo de la figura 3.1.26.Si hago :

                 prof = iterator.GetCurrentX2();  // obtengo prof = 1



PixelType * GetCurrentPixel ( )

        Esta función se declara e implementa en la clase base.
      Ver GetCurrentPixel( ) de bicotiImageIterator



void SetCurrentPixel ( PixelType )

        Esta función se declara e implementa en la clase base.
      Ver SetCurrentPixel( ) de bicotiImageIterator



bicotiCoordinate< INTEGER > GetCurrentCoordinateInteger ( )

        Esta función se declara e implementa en la clase base.
      Ver GetCurrentCoordinateInteger( ) de bicotiImageIterator



bicotiCoordinate< REAL > GetCurrentCoordinateReal ( )

        Esta función se declara e implementa en la clase base.
      Ver GetCurrentCoordinateReal( ) de bicotiImageIterator



void SetExtremeCoordinates ( int first_x_0 , int first_x_1 , int first_x_2 ,
                                                                                         int last_x_0 , int last_x_1 , int last_x_2 )

        Esta función permite redefinir los valores extremos del iterador.
        En un caso más general, el iterador recorrerá una sub-imagen cuyos extremos son los puntos de
        coordenadas ( first_x_0 , first_x_1 , first_x_2 )  y  ( last_x_0 , last_x_1 , last_x_2 ).


Figura 3.1.26

        En la imagen de la figura 3.1.26. Cuando se crea el iterador, se toma por defecto
                               first_x_0 = 0
                               first_x_1 = 0
                               first_x_2 = 0
                               last_x_0 = 4   ( dim_x_0 - 1 )
                               last_x_1 = 3   ( dim_x_1 - 1 )
                               last_x_2 = 2   ( dim_x_2 - 1 )

       Pero por ejemplo si redefinimos estos valores haciendo :

                        iterator.SetExtremeCoordinates( 1 , 1 , 0 , 4 , 3, 1 );

                               first_x_0 = 1
                               first_x_1 = 1
                               first_x_2 = 0
                               last_x_0 = 4
                               last_x_1 = 3
                               last_x_2 = 1

      La imagen efectiva que se recorrerá será lo que se marca en verde en la figura 3.1.27


Figura 3.1.27



void UseBorderStrategyX0 ( bicotiImageBorderStrategy2DX0< PixelType > )

        Esta función asigna la estrategia de borde horizontal.
        Ver Estrategias de Borde para más detalles.



void UseBorderStrategyX1( bicotiImageBorderStrategy2DX1< PixelType > )

        Esta función asigna la estrategia de borde vertical.
        Ver Estrategias de Borde para más detalles.



void UseBorderStrategyX2( bicotiImageBorderStrategy2DX1< PixelType > )

        Esta función asigna la estrategia de borde para la profundidad.
        Ver Estrategias de Borde para más detalles.