]> Creatis software - clitk.git/blobdiff - itk/clitkResampleImageWithOptionsFilter.txx
Add --noAutoCrop option to clitkExtractLung
[clitk.git] / itk / clitkResampleImageWithOptionsFilter.txx
index 0807fc0f09418f68423f669570b8fda2b1541865..7e5eeab4eb78e9d4745d4b9a92fd8f2e34d6430b 100644 (file)
@@ -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,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 // clitk
 #include "clitkDD.h"
@@ -122,13 +122,16 @@ GenerateOutputInformation()
   if (m_OutputIsoSpacing != -1) { // apply isoSpacing
     for(unsigned int i=0; i<dim; i++) {
       m_OutputSpacing[i] = m_OutputIsoSpacing;
-      // I use ceil to be sure not to miss a slice
-      m_OutputSize[i] = (int)ceil(inputSize[i]*inputSpacing[i]/m_OutputSpacing[i]);
+      // floor() is used to intentionally reduce the number of slices 
+      // because, from a clinical point of view, it's better to 
+      // remove data than to add data that privously didn't exist.
+      m_OutputSize[i] = (int)floor(inputSize[i]*inputSpacing[i]/m_OutputSpacing[i]);
     }
   } else {
     if (m_OutputSpacing[0] != -1) { // apply spacing, compute size
       for(unsigned int i=0; i<dim; i++) {
-        m_OutputSize[i] = (int)ceil(inputSize[i]*inputSpacing[i]/m_OutputSpacing[i]);
+       // see comment above for the use of floor()
+       m_OutputSize[i] = (int)floor(inputSize[i]*inputSpacing[i]/m_OutputSpacing[i]);
       }
     } else {
       if (m_OutputSize[0] != 0) { // apply size, compute spacing
@@ -157,7 +160,6 @@ GenerateOutputInformation()
   outputImage->CopyInformation(input);
   outputImage->SetLargestPossibleRegion(m_OutputRegion);
   outputImage->SetSpacing(m_OutputSpacing);
-  outputImage->FillBuffer(GetDefaultPixelValue());
 
   // Init Gaussian sigma
   if (m_GaussianSigma[0] != -1) { // Gaussian filter set by user