+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ # pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ # This software is governed by the CeCILL-B license under French law and
+ # abiding by the rules of distribution of free software. You can use,
+ # modify and/ or redistribute the software under the terms of the CeCILL-B
+ # license as circulated by CEA, CNRS and INRIA at the following URL
+ # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ # or in the file LICENSE.txt.
+ #
+ # As a counterpart to the access to the source code and rights to copy,
+ # modify and redistribute granted by the license, users are provided only
+ # with a limited warranty and the software's author, the holder of the
+ # economic rights, and the successive licensors have only limited
+ # liability.
+ #
+ # The fact that you are presently reading this means that you have had
+ # knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
#include "bbvtkUnaryOperations.h"
#include "bbvtkPackage.h"
namespace bbvtk
ope->SetInput1((vtkDataObject*)bbGetInputIn1());
- ope->SetConstantK(bbGetInputInConstant());
- ope->SetConstantC(bbGetInputInConstant());
-
switch (bbGetInputOperation())
{
case 0:
+ ope->SetConstantC( bbGetInputInConstant() );
ope->SetOperationToAddConstant();
break;
case 1:
-//EED Borrame crearPredeterminado();
- ope->SetInput2((vtkDataSet*) constante);
- ope->SetOperationToSubtract();
+ ope->SetConstantC( -1.0 * bbGetInputInConstant() );
+ ope->SetOperationToAddConstant();
break;
case 2:
- ope->SetInput2((vtkDataSet*) constante);
- ope->SetOperationToMultiply();
+ ope->SetConstantK( bbGetInputInConstant() );
+ ope->SetOperationToMultiplyByK();
+printf("EED UnaryOperations::Process() 2 \n");
break;
case 3:
-
- ope->SetOperationToDivide();
+ ope->SetConstantK( 1.0/bbGetInputInConstant() );
+ ope->SetOperationToMultiplyByK();
+printf("EED UnaryOperations::Process() 3 \n");
break;
case 4:
ope->SetOperationToInvert();
break;
- case 9:
- ope->SetOperationToAbsoluteValue();
- break;
case 5:
-
ope->SetOperationToSin();
break;
case 6:
-
ope->SetOperationToCos();
break;
case 7:
-
ope->SetOperationToExp();
break;
case 8:
-
ope->SetOperationToLog();
break;
+ case 9:
+ ope->SetOperationToAbsoluteValue();
+ break;
case 10:
- substractWithMinimum();
- bbSetOutputOut(constante);
- return;
+ ope->SetOperationToSquareRoot();
break;
case 11:
- MultiplyBy();
- bbSetOutputOut(constante);
- return;
+ ope->SetConstantC( bbGetInputInConstant() );
+ ope->SetConstantK( bbGetInputNewValue() );
+ ope->SetOperationToReplaceCByK();
break;
+
+
+
+
default:
std::cout << "Invalid Operation" << std::endl;
return;
break;
}
+ ope->Modified();
ope->Update();
vtkImageData* salida = ope->GetOutput();
}
-/* Borrame Eduardo - Juan Pablo
-void UnaryOperations::crearPredeterminado()
-{
- int ext[6];
- vtkImageData* inicial = bbGetInputIn1();
-
-
- if (constante == NULL)
- {
- inicial->GetExtent(ext);
- constante = vtkImageData::New();
- constante->SetExtent(ext);
- constante->SetScalarType(inicial->GetScalarType());
- constante->AllocateScalars();
- constante->Update();
- }
-
- for (int i=ext[0]; i<=ext[1]; i++)
- {
- for (int j=ext[2]; j<=ext[3]; j++)
- {
- for (int k=ext[4]; k<=ext[5]; k++)
- {
- unsigned short* value = (unsigned short*)constante->GetScalarPointer(i,j,k);
- *value = bbGetInputInConstant();
- }
- }
- }
-}
-*/
-
-
-void UnaryOperations::substractWithMinimum()
-{
- int ext[6];
- double spc[3];
- vtkImageData* inicial = bbGetInputIn1();
-
-
- if (constante == NULL)
- {
- inicial->GetExtent(ext);
- inicial->GetSpacing(spc);
- constante = vtkImageData::New();
- constante->SetExtent(ext);
- constante->SetSpacing(spc);
- constante->SetOrigin(inicial->GetOrigin());
- constante->SetScalarType(inicial->GetScalarType());
- constante->AllocateScalars();
- constante->Update();
- }
-
- for (int i=ext[0]; i<=ext[1]; i++)
- {
- for (int j=ext[2]; j<=ext[3]; j++)
- {
- for (int k=ext[4]; k<=ext[5]; k++)
- {
- double temp1 = lector.getPixelValue(i,j,k,inicial);
- double temp = temp1 - bbGetInputInConstant();
- if (temp < 0)
- temp = 0;
- lector.setPixelValue(i,j,k,constante,temp);
- }
- }
- }
-}
void UnaryOperations::bbUserSetDefaultValues()
bbSetInputIn1(NULL);
bbSetOutputOut(NULL);
bbSetInputInConstant(0);
+ bbSetInputNewValue(0);
bbSetInputOperation(0);
ope = vtkImageMathematics::New();
constante = NULL;