X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkImageArithmGenericFilter.txx;h=4abb43343463652f899748d818f7d5bea3682d20;hb=1bc8f00b17a81decd50a5b01dc19623b486f51d6;hp=24ebbbdac8d2d472ec6ddca3eebbdcfdd5f33f6f;hpb=1a8450d4940e31424315290bec3139418aadd87c;p=clitk.git diff --git a/tools/clitkImageArithmGenericFilter.txx b/tools/clitkImageArithmGenericFilter.txx index 24ebbbd..4abb433 100644 --- a/tools/clitkImageArithmGenericFilter.txx +++ b/tools/clitkImageArithmGenericFilter.txx @@ -45,6 +45,8 @@ template void ImageArithmGenericFilter::InitializeImageType() { ADD_DEFAULT_IMAGE_TYPES(Dim); + ADD_VEC_IMAGE_TYPE(3u,3u,float); + ADD_VEC_IMAGE_TYPE(3u,3u,double); } //-------------------------------------------------------------------- @@ -65,7 +67,7 @@ void ImageArithmGenericFilter::SetArgsInfo(const args_info_type mArgsInfo=a; // Set value - SetIOVerbose(mArgsInfo.verbose_flag); + this->SetIOVerbose(mArgsInfo.verbose_flag); mTypeOfOperation = mArgsInfo.operation_arg; mDefaultPixelValue = mArgsInfo.pixelValue_arg; mScalar = mArgsInfo.scalar_arg; @@ -73,13 +75,13 @@ void ImageArithmGenericFilter::SetArgsInfo(const args_info_type if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); - if (mArgsInfo.input1_given) AddInputFilename(mArgsInfo.input1_arg); + if (mArgsInfo.input1_given) this->AddInputFilename(mArgsInfo.input1_arg); if (mArgsInfo.input2_given) { mIsOperationUseASecondImage = true; - AddInputFilename(mArgsInfo.input2_arg); + this->AddInputFilename(mArgsInfo.input2_arg); } - if (mArgsInfo.output_given) SetOutputFilename(mArgsInfo.output_arg); + if (mArgsInfo.output_given) this->SetOutputFilename(mArgsInfo.output_arg); // Check type of operation (with scalar or with other image) if ((mArgsInfo.input2_given) && (mArgsInfo.scalar_given)) { @@ -391,6 +393,18 @@ void clitk::ImageArithmGenericFilter::ComputeImage(Iter1 it, Ite ++ito; } break; + case 13: // -ln I/I0 + while (!it.IsAtEnd()) { + if (it.Get() == 0) { // special case for fluence image with 0 value in a pixel -> consider 0.5 + ito.Set(-log(0.5 / mScalar) ); + } + else { + ito.Set(-log(PixelTypeDownCast((double)it.Get() / mScalar)) ); + } + ++it; + ++ito; + } + break; default: // error ? std::cerr << "ERROR : the operation number (" << mTypeOfOperation << ") is not known." << std::endl; exit(-1); @@ -398,6 +412,8 @@ void clitk::ImageArithmGenericFilter::ComputeImage(Iter1 it, Ite } //-------------------------------------------------------------------- + + } // end namespace #endif //#define CLITKIMAGEARITHMGENERICFILTER_TXX