#pragma once #include #include #include "constants.h" #include "pixels.h" using CalibrationColumn = std::array; // map [0; discretesInRage] (discretes) to [0; zRangeMm] (mm) using CalibrationTable = std::array; using CalibrationTablePtr = QSharedPointer; constexpr auto calibrationColumnHeight = std::tuple_size(); bool openCalibrationTable(const QString &filename, const CalibrationTablePtr table); // void dumpCalibrationPixels(std::vector &&calibrationPixels); enum class DumpFormat { Json, Binary }; void dumpCalibrationPixels(const std::vector > &calibrationPixels, const DumpFormat format = DumpFormat::Json); bool dump(const CalibrationTablePtr &table, const QString &filename); // TODO: implement median filter QList filter(const QList &rawProfiles); bool calibrateX(const QList &rawProfiles, CalibrationTablePtr table); bool calibrateZ(const QList &rawProfiles, const uint32_t &stepsPerMm, CalibrationTablePtr table); QImage calibrationTableToImage(const CalibrationTablePtr &calibrationTable); void interpolate(const CalibrationTablePtr table); void interpolate(CalibrationColumn &column); // TODO: remove from this file namespace { // static CalibrationTablePtr calibrationTableZ; // static CalibrationTablePtr calibrationTableX; } // namespace