CPPxDIC
C++ Digital Image Correlation library for fingertip 3D reconstruction
Loading...
Searching...
No Matches
visualization.h
Go to the documentation of this file.
1
7#ifndef VISUALIZATION_H
8#define VISUALIZATION_H
9
10#include "dic_structures.h"
11#include "config.h"
12#include <opencv2/opencv.hpp>
13#include <string>
14#include <vector>
15#include <map>
16
17namespace cppxdic {
18
22enum class ExportFormat {
23 VTK, // VTK Legacy format (for ParaView, VisIt)
24 PLY, // PLY format (for MeshLab, CloudCompare)
25 CSV // CSV format (for custom analysis)
26};
27
32struct VisData {
33 std::vector<Point3DFrame> Points3D; // 3D points per frame
34 std::vector<int> Faces; // Triangle faces (Nx3 flattened)
35 std::vector<std::vector<double>> FaceColors; // Face colors per frame
36 std::map<std::string, std::vector<std::vector<double>>> FaceScalars; // Scalar fields per frame
37 std::map<std::string, std::vector<std::vector<double>>> FaceVectors; // Vector fields per frame
38 size_t n_frames;
39};
40
46public:
47 Visualization(const Config& config);
48 ~Visualization() = default;
49
55 DIC3DPPresults loadFromBinaryCache(const std::string& filepath);
56
63
70 std::vector<double> applySpatialSmooth(
71 const std::vector<double>& face_data,
72 const std::vector<int>& faces);
73
81
88 void exportData(const VisData& vis_data,
89 const std::string& output_path,
90 int frame_idx = -1);
91
95 void exportFrameVTK(const VisData& vis_data,
96 const std::string& filepath,
97 int frame_idx);
98
102 void exportFramePLY(const VisData& vis_data,
103 const std::string& filepath,
104 int frame_idx);
105
109 void exportFrameCSV(const VisData& vis_data,
110 const std::string& filepath,
111 int frame_idx);
112
121 void generateVideo(const VisData& vis_data,
122 const std::string& output_path,
123 const std::string& field_name = "");
124
130 void generateSummaryStats(const DIC3DPPresults& results,
131 const std::string& output_path);
132
137 void printTrialInfo(const DIC3DPPresults& results);
138
139private:
140 Config config_;
141 ExportFormat export_format_;
142
146 ExportFormat parseExportFormat(const std::string& format_str);
147
154 std::vector<std::vector<double>> extractScalarField(
155 const DIC3DPPresults& results,
156 const std::string& field_name);
157
162 void applyCorrelationFilter(std::vector<std::vector<double>>& face_data,
163 const std::vector<std::vector<double>>& corr_data);
164
168 void applyGapFilter(std::vector<std::vector<double>>& face_data,
169 const std::vector<int>& FacePairInds);
170
175 void computePrincipalStrains(const DIC3DPPresults& results,
176 std::vector<std::vector<double>>& Epc1,
177 std::vector<std::vector<double>>& Epc2);
178
186 std::vector<std::vector<double>> butterworthFilter(
187 const std::vector<std::vector<double>>& data,
188 double cutoff_freq,
189 double sample_freq);
190
195 cv::Mat renderFrame(const VisData& vis_data, int frame_idx,
196 const std::string& field_name,
197 double data_min, double data_max,
198 int width, int height);
199
204 static cv::Vec3b applyJetColormap(double val);
205};
206
207} // namespace cppxdic
208
209#endif // VISUALIZATION_H
Visualization manager class Handles loading, filtering, and exporting DIC results.
std::vector< double > applySpatialSmooth(const std::vector< double > &face_data, const std::vector< int > &faces)
Apply spatial smoothing to face measures.
void exportFramePLY(const VisData &vis_data, const std::string &filepath, int frame_idx)
Export single frame to PLY format.
void exportFrameCSV(const VisData &vis_data, const std::string &filepath, int frame_idx)
Export single frame to CSV format.
void generateVideo(const VisData &vis_data, const std::string &output_path, const std::string &field_name="")
Generate video from visualization data Renders each frame as a 2D projection of the colored mesh and ...
void exportData(const VisData &vis_data, const std::string &output_path, int frame_idx=-1)
Export visualization data to file.
VisData prepareVisualizationData(const DIC3DPPresults &results)
Prepare visualization data from DIC results Extracts requested fields (Epc1, Epc2,...
void printTrialInfo(const DIC3DPPresults &results)
Print trial information (equivalent to MATLAB's fprintf info)
void applyTemporalFilter(DIC3DPPresults &results)
Apply temporal filtering to measures Equivalent to MATLAB's filter_measures function.
void generateSummaryStats(const DIC3DPPresults &results, const std::string &output_path)
Generate summary statistics file.
DIC3DPPresults loadFromBinaryCache(const std::string &filepath)
Load DIC results from binary cache file.
void exportFrameVTK(const VisData &vis_data, const std::string &filepath, int frame_idx)
Export single frame to VTK format.
DataSerializer - Abstract base class for format-agnostic DIC data I/O.
ExportFormat
Visualization export formats.
DIC 3D Post-Processing Results Equivalent to MATLAB's DIC3DPPresults.
Visualization data container Holds filtered and processed data ready for export.
std::vector< int > Faces
std::vector< Point3DFrame > Points3D
std::vector< std::vector< double > > FaceColors
std::map< std::string, std::vector< std::vector< double > > > FaceVectors
std::map< std::string, std::vector< std::vector< double > > > FaceScalars