USGS

Isis 3.0 Object Programmers' Reference

Home

MaximumCorrelation.cpp

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