Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkHistogramMatching.h"
00019
00020 namespace mitk {
00021
00022 HistogramMatching::HistogramMatching()
00023 {
00024 m_ThresholdAtMeanIntensity = true;
00025 m_NumberOfHistogramLevels = 1024;
00026 m_NumberOfMatchPoints = 7;
00027 }
00028
00029 HistogramMatching::~HistogramMatching()
00030 {
00031 }
00032
00033 void HistogramMatching::SetNumberOfHistogramLevels(int histogrammLevels)
00034 {
00035 m_NumberOfHistogramLevels = histogrammLevels;
00036 }
00037
00038 void HistogramMatching::SetNumberOfMatchPoints(int matchPoints)
00039 {
00040 m_NumberOfMatchPoints = matchPoints;
00041 }
00042
00043 void HistogramMatching::SetThresholdAtMeanIntensity(bool on)
00044 {
00045 m_ThresholdAtMeanIntensity = on;
00046 }
00047
00048 template < typename TPixel, unsigned int VImageDimension >
00049 void HistogramMatching::GenerateData2( itk::Image<TPixel, VImageDimension>* itkImage1)
00050 {
00051 typedef typename itk::Image< TPixel, VImageDimension > FixedImageType;
00052 typedef typename itk::Image< TPixel, VImageDimension > MovingImageType;
00053
00054 typedef float InternalPixelType;
00055 typedef typename itk::Image< InternalPixelType, VImageDimension > InternalImageType;
00056 typedef typename itk::CastImageFilter< FixedImageType,
00057 InternalImageType > FixedImageCasterType;
00058 typedef typename itk::CastImageFilter< MovingImageType,
00059 InternalImageType > MovingImageCasterType;
00060 typedef typename itk::HistogramMatchingImageFilter<
00061 InternalImageType,
00062 InternalImageType > MatchingFilterType;
00063
00064 typename FixedImageType::Pointer fixedImage = FixedImageType::New();
00065 mitk::CastToItkImage(m_ReferenceImage, fixedImage);
00066 typename MovingImageType::Pointer movingImage = itkImage1;
00067 if (fixedImage.IsNotNull() && movingImage.IsNotNull())
00068 {
00069 typename FixedImageCasterType::Pointer fixedImageCaster = FixedImageCasterType::New();
00070 fixedImageCaster->SetInput(fixedImage);
00071 typename MovingImageCasterType::Pointer movingImageCaster = MovingImageCasterType::New();
00072 movingImageCaster->SetInput(movingImage);
00073 typename MatchingFilterType::Pointer matcher = MatchingFilterType::New();
00074 matcher->SetInput( movingImageCaster->GetOutput() );
00075 matcher->SetReferenceImage( fixedImageCaster->GetOutput() );
00076 matcher->SetNumberOfHistogramLevels( m_NumberOfHistogramLevels );
00077 matcher->SetNumberOfMatchPoints( m_NumberOfMatchPoints );
00078 matcher->SetThresholdAtMeanIntensity(m_ThresholdAtMeanIntensity);
00079 matcher->Update();
00080 Image::Pointer outputImage = this->GetOutput();
00081 mitk::CastToMitkImage( matcher->GetOutput(), outputImage );
00082 }
00083 }
00084 }