X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FvvImage.txx;h=ab518cb9095f60df17204d5d74e9614096fe8890;hb=8dc75d1449323b08bf7378cded6f0bec24b2016f;hp=a6d37c8cbbd8f0447f69c990235fa0963afedb53;hpb=66eba9893fa3e9184f2d248b75f62af5a8e069fc;p=clitk.git diff --git a/common/vvImage.txx b/common/vvImage.txx index a6d37c8..ab518cb 100644 --- a/common/vvImage.txx +++ b/common/vvImage.txx @@ -16,6 +16,7 @@ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html ===========================================================================*/ #include +#include //-------------------------------------------------------------------- template @@ -24,7 +25,7 @@ void vvImage::AddItkImage(TItkImageType *input) // Update input before conversion to enable exceptions thrown by the ITK pipeline. // Otherwise, vtkImageImport catches the exception for us. input->Update(); - + // Convert from ITK object to VTK object mImageDimension = TItkImageType::ImageDimension; typedef itk::ImageToVTKImageFilter ConverterType; @@ -56,4 +57,45 @@ void vvImage::AddItkImage(TItkImageType *input) mDictionary.push_back(&(input->GetMetaDataDictionary())); } //-------------------------------------------------------------------- + +/** Dispatch the computation of scalar range between vector and scalar image */ +template +void vvImage::ComputeScalarRangeBase(itk::Image *input) +{ + itkStaticConstMacro(Dimension1, unsigned int, itk::PixelTraits< TPixelType >::Dimension); + ComputeScalarRange(DimensionDispatch< Dimension1 >(), input); +} + +//-------------------------------------------------------------------- +/** Compute the scalar range for a vector pixel type */ +/** TO DO*/ +template +void vvImage::ComputeScalarRange(DimensionDispatchBase, itk::Image *input) +{ + cout << "try" << endl; +} + +//-------------------------------------------------------------------- +/** Compute the scalar range for a scalar pixel type */ +template +void vvImage::ComputeScalarRange(DimensionDispatch< 1 >, itk::Image *input) +{ + typedef typename itk::Image TItkImageType; + typedef itk::MinimumMaximumImageCalculator ImageCalculatorFilterType; + + typename ImageCalculatorFilterType::Pointer imageCalculatorFilter = ImageCalculatorFilterType::New (); + TPixelType tempMin, tempMax; + double tempRange[2]; + imageCalculatorFilter->SetImage(input); + imageCalculatorFilter->Compute(); + tempMin= imageCalculatorFilter->GetMinimum(); + tempMax= imageCalculatorFilter->GetMaximum(); + + tempRange[0] = (double) tempMin; + tempRange[1] = (double) tempMax; + + if (tempRange[0] < mrange[0]) mrange[0]=tempRange[0]; + if (tempRange[1] > mrange[1]) mrange[1]=tempRange[1]; +} +//--------------------------------------------------------------------