X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkBooleanOperatorLabelImageFilter.txx;h=1a7a98bd91eb3e22fdc3d374e89c6e4e4101344c;hb=3c89981c4f78fe15b1087f40e51e37c0c1fb087c;hp=20f811aa7a09aa4883a9839fb3f9ad827df99f80;hpb=fdc97293cc66a4894a2c1c4f04f53d6473ab8ab2;p=clitk.git diff --git a/itk/clitkBooleanOperatorLabelImageFilter.txx b/itk/clitkBooleanOperatorLabelImageFilter.txx index 20f811a..1a7a98b 100644 --- a/itk/clitkBooleanOperatorLabelImageFilter.txx +++ b/itk/clitkBooleanOperatorLabelImageFilter.txx @@ -154,9 +154,6 @@ namespace clitk { } // Compute intersection bounding box (in physical coordinate) and regions (in pixel coordinate) - // DD(input1->GetLargestPossibleRegion()); - // DD(input2->GetLargestPossibleRegion()); - // DD(outputImage->GetLargestPossibleRegion()); typedef itk::BoundingBox BBType; typename BBType::Pointer bbInput1 = BBType::New(); ComputeBBFromImageRegion(input1, input1->GetLargestPossibleRegion(), bbInput1); @@ -165,20 +162,13 @@ namespace clitk { typename BBType::Pointer bbOutput = BBType::New(); ComputeBBFromImageRegion(outputImage, outputImage->GetLargestPossibleRegion(), bbOutput); - // DD(bbInput1); - // DD(bbInput2); - // DD(bbOutput); - typename BBType::Pointer bb = BBType::New(); ComputeBBIntersection(bb, bbInput1, bbInput2); - // DD(bb); ComputeBBIntersection(bb, bb, bbOutput); - // DD(bb); ComputeRegionFromBB(input1, bb, input1Region); ComputeRegionFromBB(input2, bb, input2Region); ComputeRegionFromBB(outputImage, bb, outputRegion); - } //-------------------------------------------------------------------- @@ -212,9 +202,6 @@ namespace clitk { OutputImagePointer output = this->GetOutput(0); // Get Region iterators - // DD(input1Region); - // DD(input2Region); - // DD(outputRegion); itk::ImageRegionConstIterator it1(input1, input1Region); itk::ImageRegionConstIterator it2(input2, input2Region); itk::ImageRegionIterator ot (output, outputRegion); @@ -225,6 +212,7 @@ namespace clitk { switch (m_OperationType) { case AndNot: LoopAndNot(it1, it2, ot); break; case And: LoopAnd(it1, it2, ot); break; + case Or: LoopOr(it1, it2, ot); break; } } //-------------------------------------------------------------------- @@ -245,7 +233,8 @@ namespace clitk { //-------------------------------------------------------------------- LOOP_BEGIN(LoopAndNot) - if ((it1.Get() != mBackgroundValue1) && (it2.Get() == mBackgroundValue2)) { ot.Set(mForegroundValue); } + if ((it1.Get() != mBackgroundValue1) && (it2.Get() == mBackgroundValue2)) + { ot.Set(mForegroundValue); } else { ot.Set(mBackgroundValue); } LOOP_END //-------------------------------------------------------------------- @@ -253,7 +242,17 @@ namespace clitk { //-------------------------------------------------------------------- LOOP_BEGIN(LoopAnd) - if ((it1.Get() != mBackgroundValue1) && (it2.Get() != mBackgroundValue2)) { ot.Set(mForegroundValue); } + if ((it1.Get() != mBackgroundValue1) && (it2.Get() != mBackgroundValue2)) + { ot.Set(mForegroundValue); } + else { ot.Set(mBackgroundValue); } + LOOP_END + //-------------------------------------------------------------------- + + + //-------------------------------------------------------------------- + LOOP_BEGIN(LoopOr) + if ((it1.Get() != mBackgroundValue1) || (it2.Get() != mBackgroundValue2)) + { ot.Set(mForegroundValue); } else { ot.Set(mBackgroundValue); } LOOP_END //--------------------------------------------------------------------