X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkAutoCropFilter.txx;h=e31e424d43bb2ce99d25889edf74b25464aa048b;hb=2490add275e6bca52f8b6cc23ad09a389fee0f17;hp=cc2c137abdf7e2c8bf04bf1ba5a5fc3979909fcb;hpb=dcf1b58a69fbd464fb447bf4bddef182d1a2dfd4;p=clitk.git diff --git a/itk/clitkAutoCropFilter.txx b/itk/clitkAutoCropFilter.txx index cc2c137..e31e424 100644 --- a/itk/clitkAutoCropFilter.txx +++ b/itk/clitkAutoCropFilter.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,13 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ #ifndef CLITKAUTOCROPFILTER_TXX #define CLITKAUTOCROPFILTER_TXX // clitk #include "clitkCommon.h" -#include "clitkSegmentationUtils.h" // itk #include "itkAutoCropLabelMapFilter.h" @@ -39,6 +38,7 @@ namespace clitk { AutoCropFilter():itk::ImageToImageFilter() { this->SetNumberOfRequiredInputs(1); m_BackgroundValue = 0; + UseBorderOff(); } //-------------------------------------------------------------------- @@ -95,8 +95,17 @@ namespace clitk { typedef itk::AutoCropLabelMapFilter AutoCropFilterType; typename AutoCropFilterType::Pointer autoCropFilter = AutoCropFilterType::New(); autoCropFilter->SetInput(imageToLabelFilter->GetOutput()); - autoCropFilter->ReleaseDataFlagOff(); - + // autoCropFilter->ReleaseDataFlagOff(); + if (GetUseBorder()) { + DD("Crop UseBorder : not correctly implemented do not use (use PadLabelMapFilter)"); + // http://www.itk.org/Doxygen/html/classitk_1_1AutoCropLabelMapFilter.html#a54f49fdff8d9f2d2313134109d510285 + exit(0); + typename ImageType::SizeType s; + for(uint i=0; iSetCropBorder(s); + } + autoCropFilter->ReleaseDataFlagOn(); + // Convert to LabelImage typedef itk::LabelMapToLabelImageFilter MapToImageFilterType; typename MapToImageFilterType::Pointer labelToImageFilter = MapToImageFilterType::New(); @@ -110,10 +119,13 @@ namespace clitk { m_Region = m_labeImage->GetLargestPossibleRegion(); // Sometimes the index is 9223372036854775807 ??? if (m_Region.GetIndex()[0] > 99999) { + std::cerr << "Warning !! BUG int clitkAutoCropFilter ?" << std::endl; typename ImageType::IndexType index; index.Fill(0); m_Region.SetIndex(index); } + + // Set the region to output output->SetLargestPossibleRegion(m_Region); output->SetRequestedRegion(m_Region); output->SetBufferedRegion(m_Region); @@ -129,20 +141,18 @@ namespace clitk { // Get input pointers ImageConstPointer input = dynamic_cast(itk::ProcessObject::GetInput(0)); - // Extract the region + // Extract the region with RegionOfInterestImageFilter or ExtractImageFilter ? + // The second is when reducing the nb of dimension (index always zero) + // The first keep index. + // OLD : typedef itk::ExtractImageFilter CropFilterType; + // OLD : cropFilter->SetExtractionRegion(m_Region); - //TO CHANGE WITH EXTRACTIMAGEFILTER ! - - // typedef itk::RegionOfInterestImageFilter CropFilterType; - typedef itk::ExtractImageFilter CropFilterType; + typedef itk::RegionOfInterestImageFilter CropFilterType; m_labeImage->SetRequestedRegion(m_labeImage->GetLargestPossibleRegion()); typename CropFilterType::Pointer cropFilter = CropFilterType::New(); cropFilter->SetInput(m_labeImage); - - // cropFilter->SetRegionOfInterest(m_Region); - cropFilter->SetExtractionRegion(m_Region); - - cropFilter->ReleaseDataFlagOff(); + cropFilter->SetReleaseDataFlag(this->GetReleaseDataFlag()); + cropFilter->SetRegionOfInterest(m_Region); // Go ! cropFilter->Update();