Figura 5.1.9
Clases
bicotiImage2D
bicotiImage3D
bicotiImage2DSingle
bicotiImage2DVectorial
bicotiImage3DSingle
bicotiImage3DVectorial
Templates Clases
ImageType
PixelType
ColorType
PrecisionType
class bicotiImage3D
<
class ImageType, class ColorType ,
class PixelType = ColorType, class PrecisionType = PixelType >
Public Types
typedef PixelType Pixel
typedef ImageType Implementation
typedef bicotiImageIterator< PixelType >
Iterator
typedef bicotiOperatorUnaryFacade< PixelType
> OperatorUnary
typedef bicotiOperatorMultipleFacade< PixelType
> OperatorMultiple
typedef bicotiDexelFacade3D< PixelType > Dexel
typedef bicotiPropertyFacade< bicotiCoordinate3D<
INTEGER > , ColorType , PixelType ,
PrecisionType > Property
typedef bicotiNeighbourFilterFacade3D< PixelType,
PrecisionType > NeighbourFilter
typedef bicotiGeometricalFacade3D< PixelType,
PrecisionType > Geometrical
Public Methods
ImageType
* GetImplementation( )
void
SetImplementation
(
ImageType * )
void
BuildOperatorUnary(
)
bicotiOperatorUnaryFacade<
PixelType > * CreateOperatorUnary( )
bicotiOperatorUnaryFacade<
PixelType > * GetOperatorUnary( )
void
DestroyOperatorUnary(
)
void
BuildOperatorMultiple(
)
bicotiOperatorMultipleFacade<
PixelType > * CreateOperatorMultiple( )
bicotiOperatorMultipleFacade<
PixelType > * GetOperatorMultiple( )
void
DestroyOperatorMultiple(
)
bicotiImageIterator<
PixelType > * CreateIterator( )
bicotiDexelFacade3D<
PixelType > * GetDexel( )
void
DestroyDexel(
)
bicotiPropertyFacade<
bicotiCoordinate3D< INTEGER >, ColorType, PixelType, PrecisionType >
*
GetProperty( )
void
DestroyProperty(
)
bicotiNeighbourFilterFacade3D<
PixelType, PrecisionType > * GetNeighbourFilter(
)
void
DestroyNeighbourFilter(
)
void
LoadNeighbourFilterResult(
)
ImageType
* GetNeighbourFilterResult( )
void
BuildGeometrical(
)
void
DestroyGeometrical(
)
bicotiGeometricalFacade3D<
PixelType, PrecisionType > * GetGeometrical(
)
ImageType
* GetGeometricalResult( )
void
LoadGeometricalResult(
)
Ver GetImplementation en bicotiImage.
Ver SetImplementation en bicotiImage.
Ver DestroyImplementation en bicotiImage.
Construye una fachada de Operator Unary para la implementación de la imagen y mantiene una referencia interna a ella, de modo de poder usar sus funciones.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Creo el Operator Unary haciendo :
imagen.BuildOperatorUnary( );
Ahora puedo acceder al operador a través
del puntero que devuelve la función GetOperatorUnary.
Cuando no necesite más al objeto
es conveniente liberar la memoria con la función
DestroyOperatorUnary. De cualquier
forma, el destructor de la imagen lo hará.
Esta función esconde toda la complejidad que tiene la construcción del operador.
Construye una fachada de Operator Unary para la implementación de la imagen y devuelve una referencia a ella. La diferencia con BuildOperatorUnary es que luego de construida la fachada se pierde referencia a ella.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo tener un puntero a un Operator Unary para esta imagen haciendo :
bicotiImage3DArrayFloat
:: OperatorUnary * ptr_op_un;
ptr_op_un
= imagen.CreateOperatorUnary( );
ptr_op_un es un puntero a una fachada de Operator Unary pero no es "vista" desde imagen, por lo tanto cuando se quiere liberar la memoria hay que hacerlo externamente, la fachada no lo hará.
delete ptr_op_un;
Ver GetOperatorUnary en bicotiImage.
Ver DestroyOperatorUnary en bicotiImage.
Construye una fachada de Operator Multiple para la implementación de la imagen y mantiene una referencia interna a ella, de modo de poder uasr sus funciones.
Por ejemplo si creo :
bicotiImage3DArrayInt imagen;
Creo el OperatorMultiple haciendo :
imagen.BuildOperatorMultiple( );
Ahora puedo acceder al operador a través
del puntero que devuelve la función GetOperatorMultiple.
Cuando no necesite más al objeto
es conveniente liberar la memoria con la función
DestroyOperatorMultiple. De cualquier
forma, el destructor de la imagen lo hará.
Esta función esconde toda la complejidad que tiene la construcción del operador.
Construye una fachada de Operator Multiple para la implementación de la imagen y devuelve una referencia a ella. La diferencia con BuildOperatorMultiple es que luego de construida la fachada se pierde referencia a ella.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo tener un puntero a un OperatorMultiple para esta imagen haciendo :
bicotiImage3DArrayFloat
:: OperatorMultiple * ptr_op_mul;
ptr_op_mul
= imagen.CreateOperatorMultiple( );
ptr_op_mul es un puntero a una fachada de Operator Multiple pero no es "vista" desde imagen, por lo tanto cuando se quiere liberar la memoria hay que hacerlo externamente, la fachada no lo hará.
delete ptr_op_mul;
Ver GetOperatorMultiple en bicotiImage.
Ver DestroyOperatorMultiple en bicotiImage.
Ver CreateIterator en bicotiImage.
Devuelve un puntero a la fachada de Dexel.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo obtener un puntero a la fachada de Dexel haciendo :
bicotiImage3DArrayChar
:: Dexel * ptr_dex;
ptr_dex
= imagen.GetDexel( );
Con este puntero puedo acceder
a todas las funciones de la fachada de Dexel.
Ver Fachada de Dexel.
Obs : Como declaramos
el tipo del puntero a través de la clase, no es necesario instanciar
ningún
template.
Obs : Para tener un puntero
a un objeto creado y no un puntero a NULL que pueden traer
problemas, primero hay que crear dicha fachada con la función BuildDexel
o
CreateDexel.
Ver DestroyDexel en bicotiImage.
Devuelve un puntero a la fachada de Property.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo obtener un puntero a la fachada de Property haciendo :
bicotiImage3DArrayChar
:: Property * ptr_prop;
ptr_prop
= imagen.GetProperty( );
Con este puntero puedo acceder
a todas las funciones de la fachada de Property.
Ver Fachada de Property.
Obs : Como declaramos
el tipo del puntero a través de la clase, no es necesario instanciar
ningún
template.
Obs : Para tener un puntero
a un objeto creado y no un puntero a NULL que pueden traer
problemas, primero hay que crear dicha fachada con la función BuildProperty
o
CreateProperty.
La fachada de una imagen
tiene un puntero a una fachada de Property. Este puntero puede estar
apuntando a una fachada concreta cuando se ha creado
con la función BuldProperty o a NULL si no se ha creado aún
la fachada.
Esta función libera la memoria ocupada por dicho
objeto, si se ha creado.
Es decir que hacer :
imagen.DestroyProperty( );
es lo mismo que :
delete ( imagen.GetProperty( ) );
Si el puntero apunta a NULL la función tira a una exepción.
Devuelve un puntero a la fachada de NeighbourFilter.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo obtener un puntero a la fachada de NeighbourFilter haciendo :
bicotiImage3DArrayChar
:: NeighbourFilter * ptr_filter;
ptr_filter
= imagen.GetNeighbourFilter( );
Con este puntero puedo acceder
a todas las funciones de la fachada de NeighbourFilter.
Ver Fachada de NeighbourFilter.
Obs : Como declaramos
el tipo del puntero a través de la clase, no es necesario instanciar
ningún
template.
Obs : Para tener un puntero
a un objeto creado y no un puntero a NULL que pueden traer
problemas, primero hay que crear dicha fachada con la función BuildNeighbourFilter
o
CreateNeighbourFilter.
La fachada de una
imagen tiene un puntero a una fachada de NeighbourFilter. Este puntero
puede estar apuntando a una fachada concreta cuando se ha creado con la
función BuldNeighbourFilter o a NULL si no se ha creado aún
la fachada.
Esta función libera la memoria ocupada por dicho
objeto, si se ha creado.
Es decir que hacer :
imagen.DestroyNeighbourFilter( );
es lo mismo que :
delete ( imagen.GetNeighbourFilter( ) );
Si el puntero apunta a NULL la función tira a una exepción.
La Fachada de imagen tiene un
puntero a la de NeighbourFilter, la que a su vez tiene dos punteros a implementaciones
de imágenes del tipo adecuado. Una como entrada del filtro y otra
como salida.
Esto se muestra en la figura 5.1.7.
Figura 5.1.7.
La entrada ( image_src ) es la implementación asociada a la fachada y la salida ( image_res ) es del mismo tipo y no se tiene referencia directa a ella desde la fachada de imagen.
La función LoadNeighbourFilterResult ( ) hace que
la fachada de imagen cambie su referencia de image_src a image_res . Borrando
previamente a image_src.
Cuando hago esto, el filtro automáticamente toma
a image_res como su entrada y crea una nueva salida, como se muestra en
la figura 5.1.8.
Figura 5.1.8.
Esta función devuelve
un puntero a la imagen resultante del filtro, según lo que se muestra
en la figura 5.1.7. se devolvería un puntero a image_res.
A diferencia de LoadNeighbourFilterResult, no modifica
los punteros internos, ni destruye una imagen.
Obs : Al destruir el filtro, si esta imagen no fué asignada a la fachada, se borará, por lo que es conveniente hacer una copia de ella si queremos preservarla.
Por ejemplo si hacemos :
bicotiImage3DArrayChar imagen; // imagen original
bicotiImage3DArrayChar :: Implementation * ptr_ima_dest ; // declaro un puntero a una imp.
image.BuildNeighbourFilter( ); // creo la fachada del filtro.
Hago algo con el filtro y después :
ptr_ima_dest = image.GetNeighbourFilterResult( ); // asigno al puntero la salida del filtro.
image.DestroyNeighbourFilter( ); // destruyo la fachada del filtro.
Luego de esto, ptr_ima_dest queda apuntando a cualquier lado.
Construye una fachada de Geomatrical para la implementación de la imagen y mantiene una referencia interna a ella, de modo de poder uasr sus funciones.
Por ejemplo si creo :
bicotiImage3DArrayInt imagen;
Creo la fachada de Geomatrical haciendo :
imagen.BuildGeomatrical( );
Ahora puedo acceder al operador a través
del puntero que devuelve la función GetGeometrical.
Cuando no necesite más al objeto
es conveniente liberar la memoria con la función
DestroyGeometrical. De cualquier forma,
el destructor de la imagen lo hará.
Esta función esconde toda la complejidad que tiene la construcción.
La fachada de una
imagen tiene un puntero a una fachada de Geometrical. Este puntero puede
estar apuntando a una fachada concreta cuando se ha creado con la función
BuldGeometrical o a NULL si no se ha creado aún la fachada.
Esta función libera la memoria ocupada por dicho
objeto, si se ha creado.
Es decir que hacer :
imagen.DestroyGeometrical( );
es lo mismo que :
delete ( imagen.GetGeometrical( ) );
Si el puntero apunta a NULL la función tira a una exepción.
Devuelve un puntero a la fachada de Geometrical.
Por ejemplo si creo :
bicotiImage3DArrayFloat imagen;
Puedo obtener un puntero a la fachada de Geometrical haciendo :
bicotiImage3DArrayChar
:: Geometrical * ptr_prop;
ptr_prop
= imagen.GetGeometrical( );
Con este puntero puedo acceder
a todas las funciones de la fachada de Geometrical.
Ver Fachada de Geometrical.
Obs : Como declaramos
el tipo del puntero a través de la clase, no es necesario instanciar
ningún
template.
Obs : Para tener un puntero
a un objeto creado y no un puntero a NULL que pueden traer
problemas, primero hay que crear dicha fachada con la función BuildGeometrical
o
CreateGeometrical.
Devuelve un puntero al resultado
del "filtrado de Geometrical".
Es muy similar a GetNeighbourFilterResult.
Carga como implementación
asociada a la fachada, al resultado del "filtrado de Geometrical".
Es muy similar a LoadNeighbourFilterResult.