USGS

Isis 3.0 Object Programmers' Reference

Home

MaximumCorrelation.cpp
1 #include "MaximumCorrelation.h"
2 #include "Chip.h"
4 
5 namespace Isis {
6  double MaximumCorrelation::MatchAlgorithm(Chip &pattern, Chip &subsearch) {
8  std::vector <double> pdn, sdn;
9  pdn.resize(pattern.Samples());
10  sdn.resize(pattern.Samples());
11 
12  for(int l = 1; l <= pattern.Lines(); l++) {
13  for(int s = 1; s <= pattern.Samples(); s++) {
14  pdn[s-1] = pattern.GetValue(s, l);
15  sdn[s-1] = subsearch.GetValue(s, l);
16  }
17  mv.AddData(&pdn[0], &sdn[0], pattern.Samples());
18  }
19  double percentValid = (double) mv.ValidPixels() /
20  (pattern.Lines() * pattern.Samples());
21  if(percentValid * 100.0 < this->PatternValidPercent()) return Isis::Null;
22 
23  double r = mv.Correlation();
24  if(r == Isis::Null) return Isis::Null;
25  return fabs(r);
26  }
27 
35  bool MaximumCorrelation::CompareFits(double fit1, double fit2) {
36  return (fit1 >= fit2);
37  }
38 }
39 
40 extern "C" Isis::AutoReg *MaximumCorrelationPlugin(Isis::Pvl &pvl) {
41  return new Isis::MaximumCorrelation(pvl);
42 }
43