X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkAutoCropFilter.txx;h=743fe13f5a0bddd5a71fb57b5e8eab02d8398af6;hb=417258c1d2eb6dd20de8496d0c70898cbc6b67fc;hp=6f009261f42acc9c7ad5c5206616ebf329ded775;hpb=38786c4da19b87319bbe3cecc145e3d1771d10da;p=clitk.git diff --git a/itk/clitkAutoCropFilter.txx b/itk/clitkAutoCropFilter.txx index 6f00926..743fe13 100644 --- a/itk/clitkAutoCropFilter.txx +++ b/itk/clitkAutoCropFilter.txx @@ -29,6 +29,7 @@ #include "itkLabelImageToLabelMapFilter.h" #include "itkLabelMapToLabelImageFilter.h" #include "itkRegionOfInterestImageFilter.h" +#include "itkExtractImageFilter.h" namespace clitk { @@ -89,12 +90,12 @@ namespace clitk { typename ImageToMapFilterType::Pointer imageToLabelFilter = ImageToMapFilterType::New(); imageToLabelFilter->SetBackgroundValue(m_BackgroundValue); imageToLabelFilter->SetInput(input); - DD(input->GetLargestPossibleRegion()); // AutoCrop typedef itk::AutoCropLabelMapFilter AutoCropFilterType; typename AutoCropFilterType::Pointer autoCropFilter = AutoCropFilterType::New(); autoCropFilter->SetInput(imageToLabelFilter->GetOutput()); + autoCropFilter->ReleaseDataFlagOff(); // Convert to LabelImage typedef itk::LabelMapToLabelImageFilter MapToImageFilterType; @@ -103,17 +104,17 @@ namespace clitk { // Go ! (needed) labelToImageFilter->Update(); - DD("CHECK AUTOCROP IF NB LABEL == 0 !!!"); m_labeImage = labelToImageFilter->GetOutput(); // Update the output size m_Region = m_labeImage->GetLargestPossibleRegion(); - DD(m_Region); // 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); + DD(m_Region); } output->SetLargestPossibleRegion(m_Region); output->SetRequestedRegion(m_Region); @@ -130,12 +131,19 @@ namespace clitk { // Get input pointers ImageConstPointer input = dynamic_cast(itk::ProcessObject::GetInput(0)); - // Extract the region + // Extract the region with RegionOfInterestImageFilter or ExtractImageFilter ? + // The first is when reducing the nb of dimension (index always zero) + // The second keep index + typedef itk::RegionOfInterestImageFilter CropFilterType; + //typedef itk::ExtractImageFilter CropFilterType; m_labeImage->SetRequestedRegion(m_labeImage->GetLargestPossibleRegion()); typename CropFilterType::Pointer cropFilter = CropFilterType::New(); cropFilter->SetInput(m_labeImage); + cropFilter->SetReleaseDataFlag(this->GetReleaseDataFlag()); + cropFilter->SetRegionOfInterest(m_Region); + //cropFilter->SetExtractionRegion(m_Region); // Go ! cropFilter->Update();