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
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "cmtkImagePairSimilarityMeasureNCC.h"
00034
00035 namespace
00036 cmtk
00037 {
00038
00041
00042 ImagePairSimilarityMeasureNCC::ImagePairSimilarityMeasureNCC
00043 ( const UniformVolume::SmartPtr& refVolume, const UniformVolume::SmartPtr& fltVolume, const Interpolators::InterpolationEnum interpolation )
00044 : ImagePairSimilarityMeasure( refVolume, fltVolume, interpolation )
00045 {}
00046
00047 ImagePairSimilarityMeasureNCC
00048 ::ImagePairSimilarityMeasureNCC( const Self& other ) :
00049 ImagePairSimilarityMeasure( other )
00050 {
00051 SumX = other.SumX;
00052 SumY = other.SumY;
00053 SumXY = other.SumXY;
00054 SumSqX = other.SumSqX;
00055 SumSqY = other.SumSqY;
00056 Samples = other.Samples;
00057 }
00058
00059 ImagePairSimilarityMeasureNCC::ReturnType
00060 ImagePairSimilarityMeasureNCC
00061 ::Get() const
00062 {
00063 const double muX = SumX / Samples;
00064 const double muY = SumY / Samples;
00065
00066 const double p = SumXY - muY * SumX - muX * SumY + Samples * muX * muY;
00067 const double qX = SumSqX - 2.0 * muX * SumX + Samples * muX * muX;
00068 const double qY = SumSqY - 2.0 * muY * SumY + Samples * muY * muY;
00069
00070 return static_cast<Self::ReturnType>( p / sqrt( qX * qY ) );
00071 }
00072
00073 }