bicotiImageFrameIterator
bicotiImageFrameIterator2D
bicotiImageFrameIterator3D
Templates Clases
PixelType
class bicotiImageFrameIterator < class PixelType >
virtual~bicotiImageFrameIterator
(
)
virtual
bicotiFrame< PixelType > * GetCurrentFrame
( ) = 0
virtual
void First ( ) = 0
virtual
void Last ( ) = 0
bool
IsDone
( )
virtual
void operator ++ ( int ) = 0
virtual
void operator -- ( int ) = 0
virtual
void operator += ( unsigned ) = 0
virtual
void operator -= ( unsigned ) = 0
Destructor virtual.
Devuelve
un puntero al frame centrado en el pixel actual.
En el jemplo
de la figura 3.1.3.4.
Figura 3.1.3.4
Si tenemos
un puntero a un frame de enteros.
bicotiFrame<int> * ptr_frame;
y un iterador
:
bicotiImageFrameIterator<int>* ptr_iterator;
ptr_iterator = ptr_image->CreateFrameIterator( 3 , ptr_strategy );
creo un iterador
con frame de tamaño 3 y una estrategia de extrapolación dada.
Si hago :
ptr_frame = ptr_iterator->GetCurrentFrame();
obtengo una
referencia al frame.
La dimensión
del frame depende de la de la imagen, por lo que solo puedo acceder a los
pixeles
a través
de la interfáz estandard del frame. Si se la dimensión puedo
hacerle un casting al tipo
adecuado.
Pone
el puntero en el primer lugar . Es decir que centra el frame en el punto
de coordenadas
( 0, 0, ...
, 0 ).
Pone
el puntero en el último lugar . Es decir que centra el frame en
el punto de coordenadas
( X0dim -
1, X1dim - 1, ... , Xndim - 1 ).
Devuelve
true si estamos en el último punto, el de coordenadas ( X0dim -
1, ... , Xndim - 1 ),
e intentamos
movernos un lugar más.
Mueve
el iterador un lugar, en el ejemplo de la figura 3.3.1.4, tenemos una imagen
2D 7 x 5.
Si estamos
en el punto de coordenadas ( 3 , 2 ) y hacemos:
( * ptr_iterator ) ++;
pasamos al
punto de coordenadas ( 4 , 2 ).
En el caso
2D nos movemos por filas , aumentando X0 y luego X1.
Mueve
el iterador un lugar pero hacia atrás , en el ejemplo de la figura
3.3.1.4,
Si estamos
en el punto de coordenadas ( 3 , 2 ) y hacemos:
( * ptr_iterator ) -- ;
pasamos al
punto de coordenadas ( 2 , 2 ).
En el caso
2D nos movemos por filas , decrementando X0 y luego X1.
Me muevo hacia
adelante tantos lugares como lo indique step.
Hacer :
( * ptr_iterator ) += 2;
Es lo mismo que
hacer :
( * ptr_iterator ) ++;
( * ptr_iterator ) ++;
Me muevo hacia
atrás tantos lugares como lo indique step.
Hacer :
( * ptr_iterator ) -= 2;
Es lo mismo que
hacer :
( * ptr_iterator ) --;
( * ptr_iterator ) --;