summaryrefslogtreecommitdiff
path: root/src/calibration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/calibration.cpp')
-rw-r--r--src/calibration.cpp36
1 files changed, 15 insertions, 21 deletions
diff --git a/src/calibration.cpp b/src/calibration.cpp
index 05aed58..41e6270 100644
--- a/src/calibration.cpp
+++ b/src/calibration.cpp
@@ -13,8 +13,7 @@
#include "imagealgos.h"
-bool openCalibrationTable(
- const QString& filename, CalibrationTablePtr& table)
+bool openCalibrationTable(const QString &filename, const CalibrationTablePtr table)
{
QFile f(filename);
@@ -25,7 +24,6 @@ bool openCalibrationTable(
return false;
}
- table.reset(new CalibrationTable{{0}});
auto bytes = f.read((char*) table.data(), sizeof(CalibrationTable));
if (bytes != sizeof(CalibrationTable)) {
@@ -73,8 +71,7 @@ bool dump(
return true;
}
-void interpolate(
- CalibrationTablePtr& table)
+void interpolate(const CalibrationTablePtr table)
{
std::for_each(std::execution::par,
table->begin(),
@@ -214,8 +211,8 @@ QList<Pixels> filter(
&& it->counters.encoderPosition == sum.counters.encoderPosition) {
sum += *it;
++count;
- ++it;
qDebug() << "\t\t" << __func__ << "enc pos:" << it->counters.encoderPosition;
+ ++it;
}
sum /= float(count);
@@ -225,12 +222,11 @@ QList<Pixels> filter(
return result;
}
-CalibrationTablePtr calibrateZ(
- const QList<Pixels>& rawProfiles, const uint32_t& stepsPerMm)
+bool calibrateZ(const QList<Pixels> &rawProfiles,
+ const uint32_t &stepsPerMm,
+ CalibrationTablePtr table)
{
- CalibrationTablePtr result{new CalibrationTable{{0}}};
-
- for (const auto& rawProfile : rawProfiles) {
+ for (const auto &rawProfile : rawProfiles) {
const float positionMm{float(rawProfile.counters.encoderPosition) /
float(stepsPerMm)};
@@ -247,25 +243,23 @@ CalibrationTablePtr calibrateZ(
<< ":/tinvalid discrete value. col: " << columnIdx
<< ", val: " << pixelValue << std::endl;
- return {};
+ return false;
}
- auto& calibrationColumn = (*result)[columnIdx];
+ auto &calibrationColumn = (*table)[columnIdx];
calibrationColumn[discretePixelValue] = positionMm;
}
}
- return result;
+ return true;
}
-CalibrationTablePtr calibrateX(
- const QList<Pixels>& rawProfiles)
+bool calibrateX(const QList<Pixels> &rawProfiles, CalibrationTablePtr table)
{
// TODO: move to settings
constexpr double triangleBaseMm{8.};
- CalibrationTablePtr result{new CalibrationTable{{0}}};
- for (const auto& rawProfile : rawProfiles) {
+ for (const auto &rawProfile : rawProfiles) {
const auto& pixels = rawProfile.pixels;
auto lines = pixelsToLines(rawProfile);
@@ -342,7 +336,7 @@ CalibrationTablePtr calibrateX(
std::cerr << __func__
<< ":/tinvalid discrete value. col: " << columnIdx
<< ", val: " << pixelValue << std::endl;
- return {};
+ return false;
}
// use value interpolated between line endings (anchors)
@@ -351,11 +345,11 @@ CalibrationTablePtr calibrateX(
const auto xRelative = float(columnX - xLeft) / xLineLen;
const auto xMmValue = xLeftMm + xRelative * (triangleBaseMm / 2.);
- (*result)[columnIdx][discretePixelValue] = xMmValue;
+ (*table)[columnIdx][discretePixelValue] = xMmValue;
}
}
- return result;
+ return true;
}
void dumpCalibrationPixels(const std::vector<std::shared_ptr<Pixels> > &calibrationPixels,