X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkGenericMetric.txx;h=cbbcaa04a81ed6a02e088a4f364a7f7c0292c36f;hb=9fdcc35cbc41d66aa305948e76b9d9560363f1e2;hp=41e519cf0a6fda471cddb0ce18f2dd919c7921ea;hpb=21c3eb5adf66f43be7443ac026a8de1d02d8d31a;p=clitk.git diff --git a/registration/clitkGenericMetric.txx b/registration/clitkGenericMetric.txx index 41e519c..cbbcaa0 100644 --- a/registration/clitkGenericMetric.txx +++ b/registration/clitkGenericMetric.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,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #ifndef __clitkGenericMetric_txx #define __clitkGenericMetric_txx @@ -35,7 +35,7 @@ GenericMetric::GenericMetric() m_Maximize=false; m_Verbose=false; m_FixedImageRegionGiven=false; -#ifdef ITK_USE_OPTIMISED_REGISTRATION_METHODS +#if defined(ITK_USE_OPTIMIZED_REGISTRATION_METHODS) || ITK_VERSION_MAJOR >= 4 m_FixedImageSamplesIntensityThreshold=0; m_UseFixedImageSamplesIntensityThreshold=false; #endif @@ -257,20 +257,24 @@ GenericMetric::GetMetricPointer( typedef itk::ImageMaskSpatialObject ImageMaskSpatialObjectType; - typename ImageMaskSpatialObjectType::ConstPointer mask = dynamic_cast(m_FixedImageMask.GetPointer()); - + typename ImageMaskSpatialObjectType::ConstPointer mask = NULL; + if (m_FixedImageMask.IsNotNull()) + mask = dynamic_cast(m_FixedImageMask.GetPointer()); + typedef typename ImageMaskSpatialObjectType::RegionType ImageMaskRegionType; - ImageMaskRegionType mask_region = mask->GetAxisAlignedBoundingBoxRegion(); - + ImageMaskRegionType mask_region; + if (mask.IsNotNull()) + mask_region = mask->GetAxisAlignedBoundingBoxRegion(); + // Common properties - if( m_FixedImageMask.IsNotNull() ) + if( m_FixedImageMask.IsNotNull() ) m_Metric->SetFixedImageMask(m_FixedImageMask); - + m_Metric->SetFixedImageRegion(m_FixedImageRegion); //m_Metric->SetFixedImageRegion(mask_region); -#ifdef ITK_USE_OPTIMIZED_REGISTRATION_METHODS +#if defined(ITK_USE_OPTIMIZED_REGISTRATION_METHODS) || ITK_VERSION_MAJOR >= 4 //============================================================================ // Set the lower intensity threshold @@ -300,7 +304,7 @@ GenericMetric::GetMetricPointer( // Calculate the number const unsigned int totalNumberOfPixels = m_FixedImageRegion.GetNumberOfPixels(); - //const unsigned int totalNumberOfPixels = mask_region.GetNumberOfPixels(); + const unsigned int totalNumberOfMaskPixels = mask_region.GetNumberOfPixels(); const unsigned int numberOfDemandedPixels = static_cast< unsigned int >( (double) totalNumberOfPixels *m_ArgsInfo.samples_arg ); // -------------------------------------------------- @@ -333,11 +337,13 @@ GenericMetric::GetMetricPointer( } // Intensity? + /* if( m_UseFixedImageSamplesIntensityThreshold && ( regionIter.Get() < m_FixedImageSamplesIntensityThreshold) ) { ++regionIter; // jump to next pixel continue; } + */ // Add point to the numbers fiic.push_back(index); @@ -396,13 +402,13 @@ GenericMetric::GetMetricPointer( } // Intensity? - if( m_UseFixedImageSamplesIntensityThreshold && - randIter.Get() < m_FixedImageSamplesIntensityThreshold ) { - ++randIter; - //if (m_Verbose) std::cout << "not in threshold" << std::endl; - count_not_thres++; - continue; - } +// if( m_UseFixedImageSamplesIntensityThreshold && +// randIter.Get() < m_FixedImageSamplesIntensityThreshold ) { +// ++randIter; +// //if (m_Verbose) std::cout << "not in threshold" << std::endl; +// count_not_thres++; +// continue; +// } // Add point to the numbers fiic.push_back(index); @@ -427,6 +433,7 @@ GenericMetric::GetMetricPointer( if (m_Verbose) std::cout<<"A fraction of "<