QXRD  0.11.16
Public Slots | Public Member Functions | Properties | Private Attributes | List of all members
QxrdDistortionCorrection Class Reference

#include <qxrddistortioncorrection.h>

Inheritance diagram for QxrdDistortionCorrection:
Inheritance graph
[legend]
Collaboration diagram for QxrdDistortionCorrection:
Collaboration graph
[legend]

Public Slots

QPointF transform (QPointF pt)
 
QPointF inverse (QPointF pt)
 
void clearGridPoints ()
 
void appendGridPoint (int i, int j, double x, double y)
 
void fitCalibrationGrid ()
 
void evalCalibrationGrid ()
 
void dumpCalibrationGrid (QString path)
 
- Public Slots inherited from QcepObject
virtual void printLine (QString line)
 
virtual void printMessage (QString msg, QDateTime dt=QDateTime::currentDateTime()) const
 
virtual void criticalMessage (QString msg, QDateTime ts=QDateTime::currentDateTime()) const
 
virtual void statusMessage (QString msg, QDateTime ts=QDateTime::currentDateTime()) const
 
virtual QString settingsScript ()
 
QString scriptValueLiteral (QVariant v)
 

Public Member Functions

 QxrdDistortionCorrection (QcepSettingsSaverWPtr saver, QxrdExperimentWPtr expt)
 
void evaluateFitGrid (double parms[], double hx[], int m, int n)
 
- Public Member Functions inherited from QcepObject
 QcepObject (QString name, QcepObject *parent)
 
virtual ~QcepObject ()
 
virtual void writeSettings (QSettings *set, QString section)
 
virtual void readSettings (QSettings *set, QString section)
 
QString get_Name () const
 
void set_Name (QString name)
 

Properties

QString distortionImagePath
 
QPointF p0
 
QPointF p1
 
QPointF p2
 
int n1
 
int n2
 
QPointF f0
 
QPointF f1
 
QPointF f2
 
QcepIntVector iVals
 
QcepIntVector jVals
 
QcepDoubleVector xVals
 
QcepDoubleVector yVals
 
QcepDoubleVector fxVals
 
QcepDoubleVector fyVals
 
QcepDoubleVector dxVals
 
QcepDoubleVector dyVals
 
double wMin
 
double wMax
 
double wNom
 
double ratMin
 
double hgtMin
 
QPointF distMax
 
- Properties inherited from QcepObject
QString name
 

Private Attributes

QMutex m_Mutex
 
QxrdExperimentWPtr m_Experiment
 
QcepDoubleImageDataPtr m_Data
 

Additional Inherited Members

- Static Public Member Functions inherited from QcepObject
static int allocatedObjects ()
 
static int deletedObjects ()
 
static QSet< QcepObject * > allocatedObjectsSet ()
 
static QString addSlashes (QString str)
 

Detailed Description

Definition at line 12 of file qxrddistortioncorrection.h.

Constructor & Destructor Documentation

QxrdDistortionCorrection::QxrdDistortionCorrection ( QcepSettingsSaverWPtr  saver,
QxrdExperimentWPtr  expt 
)
explicit

Definition at line 9 of file qxrddistortioncorrection.cpp.

10  : QcepObject("distortion", NULL),
11  m_DistortionImagePath(saver, this, "distortionImagePath", "", "File path for distortion calibration image"),
12  m_P0(saver, this, "p0", QPointF(100,100), "Origin of distortion image grid"),
13  m_P1(saver, this, "p1", QPointF(200,100), "1st X Position on distortion grid"),
14  m_P2(saver, this, "p2", QPointF(100,200), "1st Y Position on distortion grid"),
15  m_N1(saver, this, "n1", 40, "Number of grid points along x"),
16  m_N2(saver, this, "n2", 40, "Number of grid points along y"),
17  m_F0(saver, this, "f0", QPointF(100,100), "Fitted Origin of distortion image grid"),
18  m_F1(saver, this, "f1", QPointF(200,100), "Fitted 1st X Position on distortion grid"),
19  m_F2(saver, this, "f2", QPointF(100,200), "Fitted 1st Y Position on distortion grid"),
20  m_IVals(saver, this, "iVals", QcepIntVector(), "Grid point i indices"),
21  m_JVals(saver, this, "jVals", QcepIntVector(), "Grid point j indices"),
22  m_XVals(saver, this, "xVals", QcepDoubleVector(), "Grid point x coords"),
23  m_YVals(saver, this, "yVals", QcepDoubleVector(), "Grid point y coords"),
24  m_FXVals(saver, this, "fxVals", QcepDoubleVector(), "Fitted x coords"),
25  m_FYVals(saver, this, "fyVals", QcepDoubleVector(), "Fitted y coords"),
26  m_DXVals(saver, this, "dxVals", QcepDoubleVector(), "Delta x coords"),
27  m_DYVals(saver, this, "dyVals", QcepDoubleVector(), "Delta y coords"),
28  m_WMin(saver, this, "wMin", 1, "Minimum acceptable grid peak width (pixels)"),
29  m_WMax(saver, this, "wMax", 4, "Maximum acceptable grid peak width (pixels)"),
30  m_WNom(saver, this, "wNom", 2, "Nominal initial grid peak width (pixels)"),
31  m_RatMin(saver, this, "ratMin", 3, "Minimum acceptable peak/background ratio for grid peaks"),
32  m_HgtMin(saver, this, "hgtMin", 1000, "Minimum acceptable peak height for grid peaks"),
33  m_DistMax(saver, this, "distMax", QPointF(5,5), "Maximum acceptable grid peak position distance from nominal"),
34  m_Experiment(expt)
35 {
36 }
QVector< int > QcepIntVector
Definition: qcepmacros.h:23
QVector< double > QcepDoubleVector
Definition: qcepmacros.h:19
QcepObject(QString name, QcepObject *parent)
Definition: qcepobject.cpp:16

Member Function Documentation

void QxrdDistortionCorrection::appendGridPoint ( int  i,
int  j,
double  x,
double  y 
)
slot

Definition at line 60 of file qxrddistortioncorrection.cpp.

61 {
62  prop_IVals()->appendValue(i);
63  prop_JVals()->appendValue(j);
64  prop_XVals()->appendValue(x);
65  prop_YVals()->appendValue(y);
66 // prop_FXVals()->appendValue(0);
67 // prop_FYVals()->appendValue(0);
68 // prop_DXVals()->appendValue(0);
69 // prop_DYVals()->appendValue(0);
70 }
void QxrdDistortionCorrection::clearGridPoints ( )
slot

Definition at line 48 of file qxrddistortioncorrection.cpp.

49 {
50  prop_IVals()->clear();
51  prop_JVals()->clear();
52  prop_XVals()->clear();
53  prop_YVals()->clear();
54  prop_FXVals()->clear();
55  prop_FYVals()->clear();
56  prop_DXVals()->clear();
57  prop_DYVals()->clear();
58 }
void QxrdDistortionCorrection::dumpCalibrationGrid ( QString  path)
slot

Definition at line 154 of file qxrddistortioncorrection.cpp.

References m_Experiment.

155 {
156  int n = get_IVals().count();
157 
159 
160  FILE *f = fopen(qPrintable(path), "a+");
161 
162  if (f) {
163  fprintf(f, "i\tj\tx\ty\tfx\tfy\tdx\tdy\n");
164 
165  for (int i=0; i<n; i++) {
166  fprintf(f, "%d\t%d\t%g\t%g\t%g\t%g\t%g\t%g\n",
167  get_IVals()[i], get_JVals()[i],
168  get_XVals()[i], get_YVals()[i],
169  get_FXVals()[i], get_FYVals()[i],
170  get_DXVals()[i], get_DYVals()[i]);
171  }
172 
173  fclose(f);
174  }
175 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
void QxrdDistortionCorrection::evalCalibrationGrid ( )
slot

Definition at line 127 of file qxrddistortioncorrection.cpp.

128 {
129  double p0x = get_F0().x();
130  double p0y = get_F0().y();
131  double dxx = get_F1().x() - p0x;
132  double dxy = get_F1().y() - p0y;
133  double dyx = get_F2().x() - p0x;
134  double dyy = get_F2().y() - p0y;
135 
136  int n = get_IVals().count();
137 
138  for (int i=0; i<n; i++) {
139  int ii = get_IVals()[i];
140  int jj = get_JVals()[i];
141  double fx = p0x + ii*dxx + jj*dyx;
142  double fy = p0y + ii*dxy + jj*dyy;
143 
144  double dx = fx - get_XVals()[i];
145  double dy = fy - get_YVals()[i];
146 
147  prop_FXVals()->appendValue(fx);
148  prop_FYVals()->appendValue(fy);
149  prop_DXVals()->appendValue(dx);
150  prop_DYVals()->appendValue(dy);
151  }
152 }
void QxrdDistortionCorrection::evaluateFitGrid ( double  parms[],
double  hx[],
int  m,
int  n 
)

Definition at line 72 of file qxrddistortioncorrection.cpp.

Referenced by fitGrid().

73 {
74  double p0x = parms[0];
75  double p0y = parms[1];
76  double dxx = parms[2]-p0x;
77  double dxy = parms[3]-p0y;
78  double dyx = parms[4]-p0x;
79  double dyy = parms[5]-p0y;
80 
81  for (int i=0; i<n; i++) {
82  int ii = get_IVals()[i];
83  int jj = get_JVals()[i];
84  double fx = p0x + ii*dxx + jj*dyx;
85  double fy = p0y + ii*dxy + jj*dyy;
86 
87  double dx = fx - get_XVals()[i];
88  double dy = fy - get_YVals()[i];
89 
90  hx[i] = sqrt(dx*dx + dy*dy);
91  }
92 }

Here is the caller graph for this function:

void QxrdDistortionCorrection::fitCalibrationGrid ( )
slot

Definition at line 103 of file qxrddistortioncorrection.cpp.

References fitGrid().

Referenced by QxrdDistortionCorrectionDialog::QxrdDistortionCorrectionDialog().

104 {
105  double parms[6];
106 
107  parms[0] = get_P0().x();
108  parms[1] = get_P0().y();
109  parms[2] = get_P1().x();
110  parms[3] = get_P1().y();
111  parms[4] = get_P2().x();
112  parms[5] = get_P2().y();
113 
114  double info[LM_INFO_SZ];
115 
116  int ndata = get_IVals().count();
117 
118  int niter = dlevmar_dif(fitGrid, parms, NULL, 6, ndata, 300, NULL, info, NULL, NULL, this);
119 
120  if (niter >= 0) {
121  set_F0(QPointF(parms[0], parms[1]));
122  set_F1(QPointF(parms[2], parms[3]));
123  set_F2(QPointF(parms[4], parms[5]));
124  }
125 }
static void fitGrid(double parms[], double hx[], int m, int n, void *adata)

Here is the call graph for this function:

Here is the caller graph for this function:

QPointF QxrdDistortionCorrection::inverse ( QPointF  pt)
slot

Definition at line 43 of file qxrddistortioncorrection.cpp.

44 {
45  return pt;
46 }
QPointF QxrdDistortionCorrection::transform ( QPointF  pt)
slot

Definition at line 38 of file qxrddistortioncorrection.cpp.

39 {
40  return pt;
41 }

Member Data Documentation

QcepDoubleImageDataPtr QxrdDistortionCorrection::m_Data
private

Definition at line 106 of file qxrddistortioncorrection.h.

QxrdExperimentWPtr QxrdDistortionCorrection::m_Experiment
private

Definition at line 105 of file qxrddistortioncorrection.h.

Referenced by dumpCalibrationGrid().

QMutex QxrdDistortionCorrection::m_Mutex
mutableprivate

Definition at line 104 of file qxrddistortioncorrection.h.

Property Documentation

QPointF QxrdDistortionCorrection::distMax
readwrite

Definition at line 85 of file qxrddistortioncorrection.h.

QString QxrdDistortionCorrection::distortionImagePath
readwrite

Definition at line 19 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::dxVals
readwrite

Definition at line 64 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::dyVals
readwrite

Definition at line 67 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::f0
readwrite

Definition at line 37 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::f1
readwrite

Definition at line 40 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::f2
readwrite

Definition at line 43 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::fxVals
readwrite

Definition at line 58 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::fyVals
readwrite

Definition at line 61 of file qxrddistortioncorrection.h.

double QxrdDistortionCorrection::hgtMin
readwrite

Definition at line 82 of file qxrddistortioncorrection.h.

QcepIntVector QxrdDistortionCorrection::iVals
readwrite

Definition at line 46 of file qxrddistortioncorrection.h.

QcepIntVector QxrdDistortionCorrection::jVals
readwrite

Definition at line 49 of file qxrddistortioncorrection.h.

int QxrdDistortionCorrection::n1
readwrite

Definition at line 31 of file qxrddistortioncorrection.h.

int QxrdDistortionCorrection::n2
readwrite

Definition at line 34 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::p0
readwrite

Definition at line 22 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::p1
readwrite

Definition at line 25 of file qxrddistortioncorrection.h.

QPointF QxrdDistortionCorrection::p2
readwrite

Definition at line 28 of file qxrddistortioncorrection.h.

double QxrdDistortionCorrection::ratMin
readwrite

Definition at line 79 of file qxrddistortioncorrection.h.

double QxrdDistortionCorrection::wMax
readwrite

Definition at line 73 of file qxrddistortioncorrection.h.

double QxrdDistortionCorrection::wMin
readwrite

Definition at line 70 of file qxrddistortioncorrection.h.

double QxrdDistortionCorrection::wNom
readwrite

Definition at line 76 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::xVals
readwrite

Definition at line 52 of file qxrddistortioncorrection.h.

QcepDoubleVector QxrdDistortionCorrection::yVals
readwrite

Definition at line 55 of file qxrddistortioncorrection.h.


The documentation for this class was generated from the following files: