CPPxDIC
C++ Digital Image Correlation library for fingertip 3D reconstruction
Loading...
Searching...
No Matches
data_serializer.h
Go to the documentation of this file.
1
11#ifndef DATA_SERIALIZER_H
12#define DATA_SERIALIZER_H
13
14#include "dic_structures.h"
15#include <string>
16#include <memory>
17
18namespace cppxdic {
19
21public:
22 virtual ~DataSerializer() = default;
23
25 virtual std::string extension() const = 0;
26
27 // =========================================================================
28 // DIC3Dcombined (Step E output / Step F input)
29 // =========================================================================
30 virtual bool saveDIC3Dcombined(const std::string& path, const DIC3Dcombined& data) = 0;
31 virtual bool loadDIC3Dcombined(const std::string& path, DIC3Dcombined& data) = 0;
32
33 // =========================================================================
34 // DIC3DPPresults (Step F output)
35 // =========================================================================
36 virtual bool saveDIC3DPPresults(const std::string& path, const DIC3DPPresults& data) = 0;
37
38 // =========================================================================
39 // DIC2DPairResults (Step D output / Step E helper)
40 // =========================================================================
41 virtual bool saveDIC2DPairResults(const std::string& path, const DIC2DPairResults& data) = 0;
42 virtual bool loadDIC2DPairResults(const std::string& path, DIC2DPairResults& data) = 0;
43
44 // =========================================================================
45 // Utility: check if a file with this serializer's extension exists
46 // =========================================================================
47 bool fileExists(const std::string& basePath) const;
48
49 // =========================================================================
50 // Factory
51 // =========================================================================
58 static std::unique_ptr<DataSerializer> create(const std::string& format);
59};
60
61// ============================================================================
62// MatSerializer — wraps MatWriter / MatReader
63// ============================================================================
65public:
66 std::string extension() const override { return ".mat"; }
67 bool saveDIC3Dcombined(const std::string& path, const DIC3Dcombined& data) override;
68 bool loadDIC3Dcombined(const std::string& path, DIC3Dcombined& data) override;
69 bool saveDIC3DPPresults(const std::string& path, const DIC3DPPresults& data) override;
70 bool saveDIC2DPairResults(const std::string& path, const DIC2DPairResults& data) override;
71 bool loadDIC2DPairResults(const std::string& path, DIC2DPairResults& data) override;
72};
73
74// ============================================================================
75// BinarySerializer — wraps saveBinary / loadBinary
76// ============================================================================
78public:
79 std::string extension() const override { return ".bin"; }
80 bool saveDIC3Dcombined(const std::string& path, const DIC3Dcombined& data) override;
81 bool loadDIC3Dcombined(const std::string& path, DIC3Dcombined& data) override;
82 bool saveDIC3DPPresults(const std::string& path, const DIC3DPPresults& data) override;
83 bool saveDIC2DPairResults(const std::string& path, const DIC2DPairResults& data) override;
84 bool loadDIC2DPairResults(const std::string& path, DIC2DPairResults& data) override;
85};
86
87// ============================================================================
88// JsonSerializer — uses nlohmann/json following MATLAB structure
89// ============================================================================
91public:
92 std::string extension() const override { return ".json"; }
93 bool saveDIC3Dcombined(const std::string& path, const DIC3Dcombined& data) override;
94 bool loadDIC3Dcombined(const std::string& path, DIC3Dcombined& data) override;
95 bool saveDIC3DPPresults(const std::string& path, const DIC3DPPresults& data) override;
96 bool saveDIC2DPairResults(const std::string& path, const DIC2DPairResults& data) override;
97 bool loadDIC2DPairResults(const std::string& path, DIC2DPairResults& data) override;
98};
99
100} // namespace cppxdic
101
102#endif // DATA_SERIALIZER_H
std::string extension() const override
File extension for this format (e.g., ".mat", ".bin", ".json")
bool saveDIC2DPairResults(const std::string &path, const DIC2DPairResults &data) override
bool loadDIC3Dcombined(const std::string &path, DIC3Dcombined &data) override
bool saveDIC3Dcombined(const std::string &path, const DIC3Dcombined &data) override
bool saveDIC3DPPresults(const std::string &path, const DIC3DPPresults &data) override
bool loadDIC2DPairResults(const std::string &path, DIC2DPairResults &data) override
virtual ~DataSerializer()=default
static std::unique_ptr< DataSerializer > create(const std::string &format)
Create a serializer for the given format string.
virtual bool loadDIC2DPairResults(const std::string &path, DIC2DPairResults &data)=0
virtual std::string extension() const =0
File extension for this format (e.g., ".mat", ".bin", ".json")
virtual bool saveDIC3Dcombined(const std::string &path, const DIC3Dcombined &data)=0
bool fileExists(const std::string &basePath) const
virtual bool saveDIC2DPairResults(const std::string &path, const DIC2DPairResults &data)=0
virtual bool saveDIC3DPPresults(const std::string &path, const DIC3DPPresults &data)=0
virtual bool loadDIC3Dcombined(const std::string &path, DIC3Dcombined &data)=0
bool loadDIC2DPairResults(const std::string &path, DIC2DPairResults &data) override
bool saveDIC2DPairResults(const std::string &path, const DIC2DPairResults &data) override
bool loadDIC3Dcombined(const std::string &path, DIC3Dcombined &data) override
std::string extension() const override
File extension for this format (e.g., ".mat", ".bin", ".json")
bool saveDIC3DPPresults(const std::string &path, const DIC3DPPresults &data) override
bool saveDIC3Dcombined(const std::string &path, const DIC3Dcombined &data) override
std::string extension() const override
File extension for this format (e.g., ".mat", ".bin", ".json")
bool loadDIC3Dcombined(const std::string &path, DIC3Dcombined &data) override
bool saveDIC2DPairResults(const std::string &path, const DIC2DPairResults &data) override
bool loadDIC2DPairResults(const std::string &path, DIC2DPairResults &data) override
bool saveDIC3Dcombined(const std::string &path, const DIC3Dcombined &data) override
bool saveDIC3DPPresults(const std::string &path, const DIC3DPPresults &data) override
DataSerializer - Abstract base class for format-agnostic DIC data I/O.
DIC 2D Pair Results Equivalent to MATLAB's DIC2DpairResults.
DIC 3D Post-Processing Results Equivalent to MATLAB's DIC3DPPresults.
DIC 3D Combined Results Equivalent to MATLAB's DIC3Dcombined This represents stitched results from mu...