26 #ifndef GRALE_MONOPOLEGRID_H
28 #define GRALE_MONOPOLEGRID_H
30 #include "graleconfig.h"
31 #include "monopolebasisfunction.h"
32 #include <errut/errorbase.h>
33 #include <serut/serializationinterface.h>
42 class GRALE_IMPORTEXPORT MonopoleGrid :
public errut::ErrorBase
48 bool init(
const std::list<ImagesData *> images,
const Real2DDerivableFunction &target,
49 Vector2D<double> center,
double areaSize,
int subDiv = 32,
double zeroPointFactor = 2.0);
51 int getNumberOfBasisFunctions()
const {
return m_monoPoleFunctions.size(); }
52 void setBasisWeights(
const std::vector<double> &w) {
if (w.size() == m_monoPoleWeights.size()) m_monoPoleWeights = w; }
54 double getZeroPoint(
int i)
const {
return m_monoPoleFunctions[i].getZeroPoint(); }
55 double getLengthScale(
int i)
const {
return m_monoPoleFunctions[i].getLengthScale(); }
56 Vector2D<double> getPosition(
int i)
const {
return m_monoPoleCenters[i]; }
58 void prepareFitnessCalculation();
59 void calculateFitness(
double *pFlatness,
double *pNegative,
double scale);
61 bool write(serut::SerializationInterface &si)
const;
62 bool read(serut::SerializationInterface &si);
66 std::vector<MonopoleBasisFunction> m_monoPoleFunctions;
67 std::vector<Vector2D<double> > m_monoPoleCenters;
68 std::vector<double> m_monoPoleWeights;
69 std::vector<std::vector<int> > m_pixelDependencies;
71 std::vector<double> m_targetMap;
72 std::vector<Vector2D<double> > m_targetGradientMap;
74 std::vector<double> m_monoPoleMap;
75 std::vector<Vector2D<double> > m_monoPoleGradientMap;
77 Vector2D<double> m_bottomLeft;
84 #endif // GRALE_MONOPOLEGRID_H