|
Isis 3.0 Object Programmers' Reference |
Home |
00001 #include "MaximumCorrelation.h" 00002 #include "Chip.h" 00003 #include "MultivariateStatistics.h" 00004 00005 namespace Isis { 00006 double MaximumCorrelation::MatchAlgorithm(Chip &pattern, Chip &subsearch) { 00007 MultivariateStatistics mv; 00008 std::vector <double> pdn, sdn; 00009 pdn.resize(pattern.Samples()); 00010 sdn.resize(pattern.Samples()); 00011 00012 for(int l = 1; l <= pattern.Lines(); l++) { 00013 for(int s = 1; s <= pattern.Samples(); s++) { 00014 pdn[s-1] = pattern.GetValue(s, l); 00015 sdn[s-1] = subsearch.GetValue(s, l); 00016 } 00017 mv.AddData(&pdn[0], &sdn[0], pattern.Samples()); 00018 } 00019 double percentValid = (double) mv.ValidPixels() / 00020 (pattern.Lines() * pattern.Samples()); 00021 if(percentValid * 100.0 < this->PatternValidPercent()) return Isis::Null; 00022 00023 double r = mv.Correlation(); 00024 if(r == Isis::Null) return Isis::Null; 00025 return fabs(r); 00026 } 00027 00035 bool MaximumCorrelation::CompareFits(double fit1, double fit2) { 00036 return (fit1 >= fit2); 00037 } 00038 } 00039 00040 extern "C" Isis::AutoReg *MaximumCorrelationPlugin(Isis::Pvl &pvl) { 00041 return new Isis::MaximumCorrelation(pvl); 00042 } 00043