X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkImageArithmGenericFilter.txx;h=38f7c505ba3cd3cf3bad54011e1269794c86cc08;hb=5c8da3de9d30123425a37bdfc227af9c62cf9a26;hp=c2f08f838f0ac1f70cb9be719b08e299ca8c809c;hpb=c06ec8031c5a00490e0ae217ca1b04993fb63591;p=clitk.git diff --git a/tools/clitkImageArithmGenericFilter.txx b/tools/clitkImageArithmGenericFilter.txx old mode 100755 new mode 100644 index c2f08f8..38f7c50 --- a/tools/clitkImageArithmGenericFilter.txx +++ b/tools/clitkImageArithmGenericFilter.txx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,12 +14,14 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #ifndef CLITKIMAGEARITHMGENERICFILTER_TXX #define CLITKIMAGEARITHMGENERICFILTER_TXX #include "clitkImageCommon.h" +#include "itkMinimumMaximumImageCalculator.h" + namespace clitk { @@ -110,6 +112,15 @@ void ImageArithmGenericFilter::UpdateWithInputImageType() typename ImageType::Pointer input2 = NULL; IteratorType it2; + // Special case for normalisation + if (mTypeOfOperation == 12) { + typedef itk::MinimumMaximumImageCalculator MinMaxFilterType; + typename MinMaxFilterType::Pointer ff = MinMaxFilterType::New(); + ff->SetImage(input1); + ff->ComputeMaximum(); + mScalar = ff->GetMaximum(); + mTypeOfOperation = 11; // divide + } if (mIsOperationUseASecondImage) { // Read input2 @@ -370,6 +381,13 @@ void clitk::ImageArithmGenericFilter::ComputeImage(Iter1 it, Ite ++ito; } break; + case 11: // divide + while (!it.IsAtEnd()) { + ito.Set(PixelTypeDownCast((double)it.Get() / mScalar) ); + ++it; + ++ito; + } + break; default: // error ? std::cerr << "ERROR : the operation number (" << mTypeOfOperation << ") is not known." << std::endl; exit(-1);