4 - Algoritmos


4.2.1 - Operator Multiple

    El operator multiple está pensado para operaciones pixel a pixel entre varias imágenes, por ejemplo sumas, productos , etc.
    La clase mantiene una lista de imágenes que deben ser de igual dimensión y tamaño. La que se inserte primero en la lista se convierte automáticamante en el acumulador, las operaciones se harán con todas las imágenes de la lista y el resultado se escribe en la primera.
La idea es muy similar a la de un OperatorUnary, pero aquí para efectuar la operación se le pasa al objeto un bicotiPixelOperatorBinary que toma dos Pixeles y devuelve otro. Se recorren las imágenes con iteradores aplicandole el operador binario a cada par de imágenes y acumulando el resultado en la primera.

Por ejemplo si queremos sumar dos imágenes de flotantes:

    Primero creamos el Operator Multiple :

        bicotiOperatorMultiple< float > oper;

    Agregamos las imágenes a la lista, hay que pasar punteros a las imágenes.

        oper.Append( ptr_ima_1 )
        oper.Append( ptr_ima_2 )

    La imagen apuntada por ptr_ima_1 es el acumulador.

    Ahora creo el operador de pixeles.

        bicotiPixelOperatorBinary< float > * ptr_pix_op;
        ptr_pix_op = new bicotiPixelOperatorBinaryAddition< float >;

    Corro el operador :

        oper.Apply( ptr_pix_op );

    Al final tendre la suma en ptr_ima_1 sin cambiar ptr_ima_2.

    Este proceso para sumar dos imágenes puede ser muy molesto por la cantidad de objetos que se deben
    crear, pero esto permite una flexibilidad muy grande ya que se puede usar para imágenes de cualquier
    dimensión y con cualquier operador de dos pixeles en uno.
    La fachada de OperatorMultiple provee una forma más sencilla de hacer esta operación.

Ver más detalles en :

bicotiOperatorMultiple