summaryrefslogtreecommitdiff
path: root/src/calibration.h
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-01-12 11:50:34 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-01-12 11:50:34 +0100
commit9dde2ab53c8e2c97647164fce89cf149260fbc8f (patch)
treef428169ce67a93d0532d91883e18892736bb26b4 /src/calibration.h
parent8630381c7e1fa1527026b9c823790dc3f92c6321 (diff)
implement calibration
Diffstat (limited to 'src/calibration.h')
-rw-r--r--src/calibration.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/calibration.h b/src/calibration.h
new file mode 100644
index 0000000..ddb66a6
--- /dev/null
+++ b/src/calibration.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <array>
+
+#include "fuck_intel.h"
+
+#include <QSharedPointer>
+
+#include "constants.h"
+#include "pixels.h"
+
+using CalibrationColumn = std::array<float, calibrationTableHeight>;
+// map [0; discretesInRage] (discretes) to [0; zRangeMm] (mm)
+using CalibrationTable = std::array<CalibrationColumn, img_width>;
+using CalibrationTablePtr = QSharedPointer<CalibrationTable>;
+
+constexpr auto calibrationColumnHeight = std::tuple_size<CalibrationColumn>();
+
+bool openCalibrationTable(const QString &filename, CalibrationTablePtr &table);
+
+void dumpCalibrationPixels(std::vector<Pixels> &&calibrationPixels);
+bool dump(const CalibrationTablePtr &table, const QString &filename);
+
+CalibrationTablePtr calibrateX(const QList<Pixels> &rawProfiles);
+CalibrationTablePtr calibrateZ(const QList<Pixels> &rawProfiles,
+ const uint32_t &stepsPerMm);
+
+QImage calibrationTableToImage(const CalibrationTablePtr &calibrationTable);
+
+void interpolate(CalibrationTablePtr &table);
+void interpolate(CalibrationColumn &column);