diff options
Diffstat (limited to 'src/calibration.cpp')
| -rw-r--r-- | src/calibration.cpp | 36 |
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, |
