X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkBooleanOperatorLabelImageFilter.txx;h=ff0f5748063503d5b7c5656c714943740020c18c;hb=a523f5be1e221995c0d4d29a0077b5e8b984c96d;hp=20f811aa7a09aa4883a9839fb3f9ad827df99f80;hpb=cc7d70464c9ece01281a987973607eebba30d8dc;p=clitk.git diff --git a/itk/clitkBooleanOperatorLabelImageFilter.txx b/itk/clitkBooleanOperatorLabelImageFilter.txx index 20f811a..ff0f574 100644 --- a/itk/clitkBooleanOperatorLabelImageFilter.txx +++ b/itk/clitkBooleanOperatorLabelImageFilter.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,14 +14,14 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ #ifndef CLITKBOOLEANOPERATORLABELIMAGEFILTER_TXX #define CLITKBOOLEANOPERATORLABELIMAGEFILTER_TXX #include "clitkCommon.h" #include "clitkBooleanOperatorLabelImageFilter.h" -#include "clitkSegmentationUtils.h" +#include "clitkBoundingBoxUtils.h" namespace clitk { @@ -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 //--------------------------------------------------------------------