X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkVectorArithmGenericFilter.txx;h=b4d61279a86602d3ca1337949a89a60b288ba01a;hb=d9c8c6e6c759655fc24d05d47b962d2ba574b95d;hp=1f4cb721ea246b222c5ceb370cba283597918860;hpb=cb4bdfed13b79735336f2e087a0b9372610aac06;p=clitk.git diff --git a/tools/clitkVectorArithmGenericFilter.txx b/tools/clitkVectorArithmGenericFilter.txx index 1f4cb72..b4d6127 100644 --- a/tools/clitkVectorArithmGenericFilter.txx +++ b/tools/clitkVectorArithmGenericFilter.txx @@ -79,13 +79,16 @@ void VectorArithmGenericFilter::SetArgsInfo(const args_info_type if (mArgsInfo.input2_given) { mIsOperationUseASecondImage = true; this->AddInputFilename(mArgsInfo.input2_arg); - if (mArgsInfo.operation_arg == 1) + if (mArgsInfo.operation_arg == 2) mIsOutputScalar = true; } else if (mArgsInfo.operation_arg == 5 || mArgsInfo.operation_arg == 6) mIsOutputScalar = true; - if (mArgsInfo.output_given) this->SetOutputFilename(mArgsInfo.output_arg); + if (mArgsInfo.output_given) { + this->SetOutputFilename(mArgsInfo.output_arg); + mOverwriteInputImage = false; + } // Check type of operation (with scalar or with other image) if ((mArgsInfo.input2_given) && (mArgsInfo.scalar_given)) { @@ -115,7 +118,7 @@ void VectorArithmGenericFilter::UpdateWithInputImageType() IteratorType it(input1, input1->GetLargestPossibleRegion()); // typedef input2 - typename ImageType::Pointer input2 = NULL; + typename ImageType::Pointer input2 = ITK_NULLPTR; IteratorType it2; // Special case for normalisation @@ -217,16 +220,18 @@ void VectorArithmGenericFilter::ComputeImage(Iter1 it1, Iter2 i ++ito; } break; - /* - case 1: // Multiply + + case 1: // term to term Multiply while (!ito.IsAtEnd()) { - ito.Set(it1.Get() * it2.Get()) ); + typename Iter1::PixelType outputPixel(ito.Get()); + outputPixel.SetVnlVector(element_product(it1.Get().GetVnlVector(),it2.Get().GetVnlVector())); + ito.Set(outputPixel); ++it1; ++it2; ++ito; } break; - */ + /* case 2: // Divide while (!ito.IsAtEnd()) { @@ -457,7 +462,7 @@ void VectorArithmGenericFilter::ComputeScalarImage(Iter1 it1, I typedef typename Iter3::PixelType PixelType; switch (mTypeOfOperation) { - case 1: // Multiply + case 2: // Multiply while (!ito.IsAtEnd()) { ito.Set(it1.Get() * it2.Get()); ++it1;