ImageD  v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
d_makro_ciliaspheretracker.h
Go to the documentation of this file.
1 /************************************
2  * added: ??.10.2019 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_MAKRO_CILIASPHERETRACKER_H
10 #define D_MAKRO_CILIASPHERETRACKER_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_proc.h>
16 #include <d_plot.h>
17 #include <d_stat.h>
18 #include <d_viewer.h>
19 #include <d_storage.h>
20 #include <d_table.h>
21 #include <d_popup_listedit.h>
22 #include <d_videoslicer.h>
23 #include <d_videowriter.h>
24 #include <d_pdf_writer.h>
25 #include <d_geo_pointset_2d.h>
26 #include <d_geo_lineset_2d.h>
27 #include <d_geo_line_2d.h>
28 #include <d_geo_point_2d.h>
29 #include <d_datavolume_3d.h>
30 
31 //Qt
32 #include <QMainWindow>
33 #include <QFileDialog>
34 #include <QFileInfo>
35 #include <QFileInfoList>
36 #include <QDir>
37 #include <QDateTime>
38 #include <QComboBox>
39 #include <QCloseEvent>
40 #include <QResizeEvent>
41 #include <QInputDialog>
42 #include <qplaintextedit.h>
43 #include <QColorDialog>
44 #include <QPdfWriter>
45 #include <QLabel>
46 //#include <QWinTaskbarButton>
47 //#include <QWinTaskbarProgress>
48 
49 //Qt::Charts
50 #include <QChartView>
51 #include <QChart>
52 
53 //general
54 #include <iostream>
55 #include <sstream>
56 #include <fstream>
57 #include <vector>
58 #include <algorithm>
59 #include <cmath>
60 
61 //openCV
62 #include <opencv2/core/core.hpp>
63 #include <opencv2/highgui/highgui.hpp>
64 #include <opencv2/imgproc/imgproc.hpp>
65 
66 //namespaces
67 using namespace std;
68 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
69 #include <d_opencv_typedefs.h>
70 
71 namespace Ui {
73 }
74 
75 class D_MAKRO_CiliaSphereTracker : public QMainWindow
76 {
77  Q_OBJECT
78 
79 public:
80  explicit D_MAKRO_CiliaSphereTracker(D_Storage *pStorage, QWidget *parent = nullptr);
82 
83  void closeEvent(QCloseEvent *event);
84  void resizeEvent(QResizeEvent *event);
85  void set_ClosingPossible(bool closeable) {ClosingPossible = closeable;}
86 
87 private slots:
88  void Update_Ui();
89  void Update_Views();
90  void Update_Images();
91  void Update_Image_Proc();
92  void Update_Image_Results();
93 
94  void Update_ImgProc_All();
95  void Update_ImgProc(int step_start);
96  void Update_ImgProc_Step(int step);
97 
98  void Update_VideoProc_All();
99 
100  void TimeProjectSum_Init();
101  void TimeProjectSum_Add();
102 
103  void Update_Results();
104 
105  void Update_Result_GraphicsTimeProjectSum();
106  void Update_Result_GraphicsVectors();
107  void Update_Result_GraphicsHeatmap();
108  void Update_Result_GridSummary();
109  D_Geo_Point_2D CalcVortexCenter(D_Geo_LineSet_2D *lines, double *deviation, vector<double> *v_residuals_all, vector<double> *v_residuals_used, double well_diameter_px, Point P_VideoOffset, int t_start = 0, int t_end = -1);
110  void Update_Result_GraphicsVortexCenter();
111  void Update_Result_SpeedStatCustom();
112  void Update_Result_AngleStatCustom();
113  void Update_Result_SpeedAnalysis();
114  void Update_Result_AngleAnalysis();
115  void Update_Result_Histogram();
116 
117  void Save_AnalysisAll();
118  void Save_AnalysisSingle();
119  void Save_ResultVectorFieldVideo(QString Path_Out, int gridCellsHorizontal, int gridCellsVertical, double timeWindowSeconds, int backgroundMode);
120 
121  void Data_Add();
122  void Data_Clear();
123  void Data_SelectVideo();
124  void Data_SelectRoiTime();
125  void Data_SelectRoiSpace();
126 
127  double Data_GetVideoPos(QFileInfo FI_Video);
128  double Data_GetSetVideoPos_Current();
129 
130  void Data_CalcFullVideoStats();
131  void Data_CalcFullVideoStats_AngularSpeed();
132  void Data_Split2GridSampling();
133 
134  void Update_Ui_Roi();
135  void Update_Ui_ResParam();
136  void Update_Ui_ResMovAv();
137 
138  void Populate_CB_Single(QComboBox *CB, QStringList QSL, int index_init);
139  void Populate_CB_Start();
140 
141  void BlockSignals_FrameSelection(bool block);
142  void BlockSignals_FrameSelection_MovingAverage(bool block);
143 
144  void on_horizontalSlider_Proc_Frame_valueChanged(int value);
145  void on_spinBox_Proc_Frame_valueChanged(int arg1);
146  void on_doubleSpinBox_Proc_Time_valueChanged(double arg1);
147 
148  void on_comboBox_Data_Videos_currentIndexChanged(int index);
149  void on_comboBox_Proc_Step_currentIndexChanged(int index);
150 
151  void on_doubleSpinBox_Param_Scale_Px_valueChanged(double arg1);
152  void on_doubleSpinBox_Param_Scale_mm_valueChanged(double arg1);
153  void on_doubleSpinBox_Param_Crop_Start_valueChanged(double arg1);
154  void on_doubleSpinBox_Param_Crop_End_valueChanged(double arg1);
155  void on_spinBox_Param_Crop_Top_valueChanged(int arg1);
156  void on_spinBox_Param_Crop_Bottom_valueChanged(int arg1);
157  void on_spinBox_Param_Crop_Left_valueChanged(int arg1);
158  void on_spinBox_Param_Crop_Right_valueChanged(int arg1);
159  void on_spinBox_Param_Blur_Size_valueChanged(int arg1);
160  void on_doubleSpinBox_Param_Blur_Sigma_valueChanged(double arg1);
161 
162  void on_checkBox_Res_TimeProjSum_Gamma_stateChanged(int arg1);
163  void on_doubleSpinBox_Res_TimeProjSum_ColorLow_valueChanged(double arg1);
164  void on_doubleSpinBox_Res_TimeProjSum_ColorHigh_valueChanged(double arg1);
165 
166  void on_checkBox_Res_TimeProjSum_ColorLow_stateChanged(int arg1);
167  void on_checkBox_Res_TimeProjSum_ColorHigh_stateChanged(int arg1);
168 
169  void on_spinBox_Param_FrameCountSmooth_valueChanged(int arg1);
170 
171  void on_comboBox_Res_Type_currentIndexChanged(int index);
172 
173  void on_spinBox_ParamGridVertical_valueChanged(int arg1);
174 
175  void on_spinBox_ParamGridHorizontal_valueChanged(int arg1);
176 
177  void on_spinBox_Res_MovAv_WindowFrames_valueChanged(int arg1);
178 
179  void on_doubleSpinBox_Res_MovAv_WindowTime_valueChanged(double arg1);
180 
181  void on_spinBox_Res_MovAv_CurrentFrame_valueChanged(int arg1);
182 
183  void on_doubleSpinBox_Res_MovAv_CurrentTime_valueChanged(double arg1);
184 
185  void on_horizontalSlider_Res_MovAv_CurrentStart_valueChanged(int value);
186 
187  void on_horizontalSlider_Res_MovAv_CurrentEnd_valueChanged(int value);
188 
189  void on_comboBox_Res_MovAv_TimeWindow_currentIndexChanged(int index);
190 
191  void on_comboBox_Res_MovAv_Background_currentIndexChanged(int index);
192 
193  void on_spinBox_ParamGrid_CellStart_valueChanged(int arg1);
194 
195  void on_spinBox_ParamGrid_CellEnd_valueChanged(int arg1);
196 
197  void on_comboBox_Res_PlotLine_FixRange_T_currentIndexChanged(int index);
198 
199  void on_checkBox_Res_PlotLine_FixRange_S_stateChanged(int arg1);
200 
201  void on_checkBox_Res_PlotLine_FixRange_A_stateChanged(int arg1);
202 
203  void on_spinBox_Res_PlotPoincare_Shift_Frames_valueChanged(int arg1);
204 
205  void on_doubleSpinBox_Res_PlotPoincare_Shift_Seconds_valueChanged(double arg1);
206 
207  void on_checkBox_Res_VortexCenter_MovingAverage_stateChanged(int arg1);
208  void on_checkBox_Res_VortexCenter_Ransac_stateChanged(int arg1);
209 
210  void on_doubleSpinBox_Res_VortexCenter_MoveingAverage_TimeWindow_sec_valueChanged(double arg1);
211 
212  void on_spinBox_Res_VortexCenter_MoveingAverage_TimeWindow_frm_valueChanged(int arg1);
213 
214  void on_comboBox_Res_VectorFieldParam_ShiftType_currentIndexChanged(int index);
215 
216  void on_comboBox_Res_Histo_Type_currentIndexChanged(int index);
217 
218  void on_pushButton_Param_CropTime_To1s_clicked();
219 
220  void on_comboBox_Res_FieldSumary_StatType_currentIndexChanged(int index);
221 
222 private:
223  Ui::D_MAKRO_CiliaSphereTracker *ui;
224  bool ClosingPossible = false;
225 
226  //Storage
227  D_Storage *pStore;
228 
229  //task bar progress
230  //QWinTaskbarButton *pTaskBarButton;
231  //QWinTaskbarProgress *pTaskBarProgress;
232 
233  //Paths
234  QFileInfoList FIL_Videos;
235  QStringList QSL_Videos_Names;
236  QStringList QSL_Videos_Paths;
237  QStringList QSL_Videos_Suffix;
238  QDir DIR_SaveMaster;
239  QDir DIR_SaveStack;
240  QDir DIR_SaveStackGraphics;
241  QDir DIR_SaveStackGraphics_Heatmap;
242  QDir DIR_SaveStackGraphics_Vortex;
243  QDir DIR_SaveStackGraphics_Chaos;
244  QDir DIR_SaveStackGraphics_Vector;
245  QDir DIR_SaveStackGraphics_Angle;
246  QDir DIR_SaveStackGraphics_Speed;
247  QDir DIR_SaveStackGraphics_Video;
248  QDir DIR_SaveStackPlot;
249  QDir DIR_SaveStackPlot_Overview;
250  QDir DIR_SaveStackPlot_Speed;
251  QDir DIR_SaveStackPlot_Angle;
252  QDir DIR_SaveStackPlot_Vortex;
253  QDir DIR_SaveStackOverview;
254  QDir DIR_SaveSingles;
255  QDir DIR_SaveCurrent;
256  QDir DIR_SaveCurrentTables;
257  QDir DIR_SaveCurrentGraphics;
258  QDir DIR_SaveCurrentPlot;
259 
260  //Images (one Frame only to save Ram)
261  D_VideoSlicer VS_InputVideo;
262  vector<Mat> vMA_ProcSteps;
263  Mat MA_Result;
264  Mat MA_Result_HeatmapLegend;
265  Mat MA_TimeProject_Sum;
266  Mat MA_TimeProject_Show;
267  Mat MA_TimeProject_LastBinary;
268 
269  //size conversion
270  double conv_px2um = 1.00723;
271  double conv_um2px = 0.992817941;
272 
273  //Data of objects
274  vector<vector<Point2f>> vv_FrmObjPositions;
275  vector<vector<double>> vv_FrmObjShifts;
276  vector<vector<double>> vv_FrmObjAngles;
277 
278  //detected vortex center
279  bool state_vortex_center_calced = false;
280  D_Geo_Point_2D P_VortexCenter;
281  vector<double> v_VortexCenterResiduals_Used;
282  vector<double> v_VortexCenterResiduals_All;
283 
284  //gathered containers
285  vector<double> vShiftsAll_px_frm;
286  vector<double> vShiftsAll_um_s;
287  vector<double> vShiftsAll_grad_s;
288  vector<double> vDistancesToVortexCenter_All_um;
289  vector<double> vAnglesAll_Rad;
290  vector<double> vAnglesAll_Grad;
291 
292  //Summary of Data (full video)
293  vector<double> v_VideoStats_Shifts_px_frm;
294  vector<double> v_VideoStats_Shifts_um_s;
295  vector<double> v_VideoStats_Shifts_grad_s;
296  vector<double> v_VideoStats_DistancesToVortexCenter_All_um;
297  vector<double> v_VideoStats_Angles_Rad;
298  vector<double> v_VideoStats_Angles_Grad;
299 
300  //Grid Sampling
301  vector<vector<vector<vector<Point2f>>>> vvvv_XYFrmObjPositions;
302  vector<vector<vector<vector<double>>>> vvvv_XYFrmObjShifts;
303  vector<vector<vector<vector<double>>>> vvvv_XYFrmObjAngles;
304  vector<vector<vector<Point2f>>> vvv_XYObjPositions;
305  vector<vector<vector<double>>> vvv_XYObjShifts;
306  vector<vector<vector<double>>> vvv_XYObjAngles;
307 
308  //Viewers
309  D_Viewer View_Proc;
310  D_Viewer View_Results;
311  D_Table Table_Results;
312 
313  //Plot
314  QChartView *pChartView_Results_Line;
315  QChartView *pChartView_Results_Poincare;
316 
317  QChartView *pChartView_Results_Overview1_SpeedLine;
318  QChartView *pChartView_Results_Overview1_AngleLine;
319  QChartView *pChartView_Results_Overview1_SpeedPoincare;
320  QChartView *pChartView_Results_Overview1_AnglePoincare;
321 
322  QChartView *pChartView_Results_Overview2_SpeedLinear_Line;
323  QChartView *pChartView_Results_Overview2_SpeedAngular_Line;
324  QChartView *pChartView_Results_Overview2_SpeedLinear_Hist;
325  QChartView *pChartView_Results_Overview2_SpeedAngular_Hist;
326  QChartView *pChartView_Results_Overview2_DistCenterIntersections_Hist;
327 
328  //ROI (Time)
329  int frame_start = 4 * 24;//1
330  int frame_end = (20 - 2) * 24;//1
331  int spatial_roi_width = 1250;//px
332  int spatial_roi_height = 1000;//px
333  //for results
334  int frame_start_ana = 4 * 24 + 12;
335 
336  //Moving Average Window
337  int movav_window_frames = 24;
338  int movav_current_start = 0;
339 
340  //states
341  bool state_VideosLoaded = false;
342  bool state_VideoSelected = false;
343  bool state_RoiTimeSelected = false;
344  bool state_RoiSpaceSelected = false;
345  bool state_ImgProcUp2date = false;
346  bool state_VidProcUp2date = false;
347  bool state_VidProcActive = false;
348  void state_set_VidProcUp2date(bool is_up2date);
349  bool state_TimeProjectInit = false;
350  bool state_GridSamplingSplit = false;
351  bool state_StackProcessing = false;
352  bool state_StatSummaryCalced = false;
353  bool state_StatSummaryCalced_angularSpeed = false;
354  bool state_blockResultUpdate = false;
355 
356  //statusbar
357  QLabel *L_SB_ValAtPos;
358 
359  //error handling
360  D_Error_Handler ER;
361  void ERR(int err, QString func = "no specified", QString detail = "no specified");
362 
363  //CONSTANTS
364  enum PROC_STEPS {
365  STEP_LOAD,
366  STEP_GRAY,
367  STEP_CROP,
368  STEP_BLUR,
369  STEP_BINARY,
370  STEP_NUMBER_OF
371  };
372  const QStringList QSL_ProcSteps = {
373  "Load Image",
374  "Extract Green Channel",
375  "Crop Roi",
376  "Blur",
377  "Binarize"
378  };
379 
380  enum SHIFT_TYPE {
381  SHIFT_TYPE_LINEAR,
382  SHIFT_TYPE_ANGULAR,
383  SHIFT_TYPE_NUMBER_OF
384  };
385 
386  enum HIST_TYPE {
387  HIST_LINEAR_SPEED,
388  HIST_ANGULAR_SPEED,
389  HIST_DIST_CENTER_INTERSECTIONS,
390  HIST_TYPE_NUMBER_OF
391  };
392 
393  enum DATA_TYPES {
394  DATA_TYPE_SPEED_LINEAR,
395  DATA_TYPE_SPEED_ANGULAR,
396  DATA_TYPE_ANGLE,
397  DATA_TYPE_NUMBER_OF
398  };
399  const QStringList QSL_DataTypes = {
400  "Linear Speed",
401  "Angular Speed",
402  "Angle"
403  };
404 
405  enum HEATMAP_TYPE {
406  HEAT_SPEED_LINEAR,
407  HEAT_SPEED_ANGULAR,
408  HEAT_ANGLE,
409  HEAT_SPEED_LINEAR_AND_ANGLE,
410  HEAT_TIME
411  };
412  const QStringList QSL_HeatmapTypes = {
413  "Linear speed as color (blue=slow, red=fast)",
414  "Angular speed as color (blue = slow, red = fast)",
415  "Angle as color (red=0°)",
416  "Linear speed as saturation (gray=slow, intense=fast), angle as color (red=0°)",
417  "Time as color (blue=old, red=new)"
418  };
419 
420  enum BACKGR {
421  BACKGR_PROJECTION,
422  BACKGR_VIDEO,
423  BACKGR_NUMBER_OF
424  };
425  const QStringList QSL_Background{
426  "Time Projection",
427  "Input Video"
428  };
429 
430  enum TIME_WINDOW {
431  TIME_WINDOW_FULL_VIDEO,
432  TIME_WINDOW_MOVING_AVERAGE,
433  TIME_WINDOW_NUMBER_OF
434  };
435  const QStringList QSL_TimeWindow = {
436  "Full Video",
437  "Moving Average"
438  };
439 
440  enum PLOT_TIME {
441  PLOT_TIME_VIDEO_LENGTH,
442  PLOT_TIME_CUSTOM,
443  PLOT_TIME_DEFAULT,
444  PLOT_TIME_NUMBER_OF
445  };
446  const QStringList QSL_PlotTime {
447  "Video length",
448  "Custom",
449  "Default"
450  };
451 
452  enum PLOT_SUMMARY {
453  PLOT_SUMMARY_LOW,
454  PLOT_SUMMARY_MID,
455  PLOT_SUMMARY_HIGH,
456  PLOT_SUMMARY_NUMBER_OF
457  };
458 
459  enum RES_TYPE {
460  RES_TYPE_LINE,
461  RES_TYPE_POINCARE,
462  RES_TYPE_TABLE,
463  RES_TYPE_NUMBER_OF
464  };
465 
466  enum RESULTS_TYPES {
467  RES_GRAPHICS_TIME_SUM_PROJ,
468  RES_GRAPHICS_VECTORS,
469  RES_GRAPHICS_HEATMAP,
470  RES_GRAPHICS_FIELD_SUMMARY,
471  RES_GRAPHICS_VORTEX_CENTER,
472  RES_SPEED_STAT_CUSTOM,
473  RES_ANGLE_STAT_CUSTOM,
474  RES_SPEED_ANALYSIS,
475  RES_ANGLE_ANALYSIS,
476  RES_HISTOGRAM,
477  RES_OVERVIEW1,
478  RES_OVERVIEW2,
479  RES_NUMBER_OF
480  };
481  const QStringList QSL_ResTypes = {
482  "Graphics: Time Sum-Projection of Objects",
483  "Graphics: Movement Vectors",
484  "Graphics: Heatmap",
485  "Graphics: Field Summary",
486  "Graphics: Vortex Center",
487  "Custom Statistical Speed Analysis",
488  "Custom Statistical Angle Analysis",
489  "Main Speed Analysis",
490  "Main Angle Analysis",
491  "Histogram",
492  "Overview Old",
493  "Overview New"
494  };
495 
496  enum FIELD_SUMMARY_WEIGHTS {
497  FIELD_SUMMARY_WEIGHT_1,
498  FIELD_SUMMARY_WEIGHT_COUNT,
499  FIELD_SUMMARY_WEIGHT_SPEED,
500  FIELD_SUMMARY_WEIGHT_NUMBER_OF
501  };
502  const QStringList QSL_FieldSummaryWeights = {
503  "1",
504  "Count",
505  "Speed"
506  };
507 };
508 
509 #endif // D_MAKRO_CILIASPHERETRACKER_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_Img_Proc::Crop_Rect_Abs
static int Crop_Rect_Abs(Mat *pMA_Out, Mat *pMA_In, int x, int y, int width, int height)
Definition: d_img_proc.cpp:5514
D_Viewer::Update_View
void Update_View()
D_Viewer::Update_View Starts the workflow to show an image.
Definition: d_viewer.cpp:2096
D_Img_Proc::Draw_Line
static int Draw_Line(Mat *pMA_Target, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, unsigned int thickness=1, double value=255)
Definition: d_img_proc.cpp:17134
D_Geo_LineSet_2D::size
size_t size()
D_Geo_LineSet_2D::size number of lines in line set.
Definition: d_geo_lineset_2d.cpp:84
D_Geo_LineSet_2D
Definition: d_geo_lineset_2d.h:40
D_Geo_LineSet_2D::intersection_ransac
D_Geo_Point_2D intersection_ransac(double *least_deviation, double lines_needed_for_modell_rel, double p_good_guess, double p_outliers, bool subset_of_points_not_lines)
D_Geo_LineSet_2D::intersection_ransac Find best guess for intersections center of line set.
Definition: d_geo_lineset_2d.cpp:123
c_STAT_CIRC_BALANCE_PI_OR_180
@ c_STAT_CIRC_BALANCE_PI_OR_180
Definition: d_enum.h:901
c_STAT_QUANTIL_90
@ c_STAT_QUANTIL_90
Definition: d_enum.h:772
D_Img_Proc::Math_ImgImg_Diff
static int Math_ImgImg_Diff(Mat *pMA_Out, Mat *pMA_In1, Mat *pMA_In2)
Definition: d_img_proc.cpp:13125
D_Img_Proc::Draw_Dot
static int Draw_Dot(Mat *pMA_Target, int x, int y, int d, uchar val)
Definition: d_img_proc.cpp:17060
D_QS_Version
const QString D_QS_Version
Definition: d_enum.h:18
D_Stat::MeanWeighted
static double MeanWeighted(vector< double > v_data, vector< double > v_weights, double nan_value=NAN)
Definition: d_stat.cpp:3664
c_STAT_CONST_1
@ c_STAT_CONST_1
Definition: d_enum.h:794
c_COL2MONO_GREEN
@ c_COL2MONO_GREEN
Definition: d_enum.h:653
d_geo_pointset_2d.h
d_viewer.h
d_plot.h
D_VideoWriter::set_Size
int set_Size(Size size_out)
Definition: d_videowriter.cpp:16
d_makro_ciliaspheretracker.h
D_Img_Proc::Draw_CircleField
static int Draw_CircleField(Mat *pMA_Target, vector< vector< double >> vv_XY_radius_value, vector< vector< double >> vv_XY_radius_error, uchar value=255, int circle_thickness=1, bool circles_filled=true, bool grid_add=false, int grid_thicknes=2, bool label_add=false, int label_thickness=2, double label_scale=1.0)
Definition: d_img_proc.cpp:17593
D_Viewer
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
D_Stat::Calc_Stats_Circ_Rad
static int Calc_Stats_Circ_Rad(vector< double > *v_stats, vector< double > v_data_a)
Definition: d_stat.cpp:460
D_Geo_LineSet_2D::add_line_point_angle
void add_line_point_angle(D_Geo_Point_2D P_support, double angle_rad)
Definition: d_geo_lineset_2d.cpp:38
D_Storage
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
D_Plot::Plot_Poincare_XY_Single
static int Plot_Poincare_XY_Single(QChartView *pChartView, vector< double > v_Data, QString name_title, QString name_series, QString name_x, QString name_y, size_t shift_elements=1, bool show_dots=true, bool show_ellipse=true, bool show_line_YequalX=true, Qt::Alignment legend_pos=Qt::AlignTop)
Definition: d_plot.cpp:2340
D_VideoSlicer::get_FramePos
Mat get_FramePos(int frame_number)
Definition: d_videoslicer.cpp:95
D_VideoWriter::init_VideoWriter
int init_VideoWriter()
Definition: d_videowriter.cpp:67
c_STAT_CIRC_CONST_PI
@ c_STAT_CIRC_CONST_PI
Definition: d_enum.h:921
D_Img_Proc::Draw_ArcField
static int Draw_ArcField(Mat *pMA_Target, vector< vector< double >> vv_XY_arc_angle_value, vector< vector< double >> vv_XY_arc_angle_error, vector< vector< double >> vv_XY_arc_orientation_value, vector< vector< double >> vv_XY_arc_radius_value, vector< vector< size_t > > vv_XY_draw_if_non_zero, uchar value=255, int thickness=3, int arc_draw_steps=360, bool grid_add=true, int grid_thicknes=2, bool label_add=false, int label_thickness=2, double label_scale=1.0)
Definition: d_img_proc.cpp:17517
c_STAT_CIRC_BALANCE
@ c_STAT_CIRC_BALANCE
Definition: d_enum.h:900
D_Img_Proc::Draw_MarkerSymbol
static int Draw_MarkerSymbol(Mat *pMA_Target, int x1, int y1, int x2, int y2, int symbol_id, uchar r, uchar g, uchar b, double scale=1)
Definition: d_img_proc.cpp:18352
D_Math::Distance_AngleRad_Shortest_Signed
static double Distance_AngleRad_Shortest_Signed(double a1, double a2)
Definition: d_math.cpp:1701
D_VideoSlicer::get_Height
int get_Height()
Definition: d_videoslicer.h:83
D_Viewer::Update_Image
void Update_Image(Mat *MA_new)
D_Viewer::Update_Image Set and show image.
Definition: d_viewer.cpp:2079
D_MAKRO_CiliaSphereTracker
Definition: d_makro_ciliaspheretracker.h:76
D_MAKRO_CiliaSphereTracker::closeEvent
void closeEvent(QCloseEvent *event)
Definition: d_makro_ciliaspheretracker.cpp:256
D_Geo_Point_2D::distance
double distance(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:160
d_table.h
D_Geo_Line_2D::intersection_rect
bool intersection_rect(D_Geo_Point_2D *P1, D_Geo_Point_2D *P2, double t, double b, double l, double r)
Definition: d_geo_line_2d.cpp:156
D_Viewer::Set_Transformation_Mode
void Set_Transformation_Mode(bool smooth)
D_Viewer::Set_Transformation_Mode Set transformation mode to fit an image to a viewer of different si...
Definition: d_viewer.cpp:2213
D_VideoSlicer
The D_VideoSlicer class Extracts frames from videos as images.
Definition: d_videoslicer.h:54
D_MAKRO_CiliaSphereTracker::~D_MAKRO_CiliaSphereTracker
~D_MAKRO_CiliaSphereTracker()
Definition: d_makro_ciliaspheretracker.cpp:251
D_Geo_LineSet_2D::intersections_pairwise
D_Geo_PointSet_2D intersections_pairwise()
D_Geo_LineSet_2D::intersections_pairwise calc pairwise intersections of lines in set.
Definition: d_geo_lineset_2d.cpp:93
c_STAT_CIRC_BALANCE_PI_OR_180_1SIGMA
@ c_STAT_CIRC_BALANCE_PI_OR_180_1SIGMA
Definition: d_enum.h:902
PI_0_5
const double PI_0_5
Definition: d_enum.h:2538
D_Geo_Point_2D::vanishing
bool vanishing(double delta=0)
Definition: d_geo_point_2d.cpp:135
D_VideoSlicer::set_VideoPath
int set_VideoPath(string S_VideoPath)
Definition: d_videoslicer.cpp:31
D_VideoSlicer::get_Width
int get_Width()
Definition: d_videoslicer.h:82
D_Table::set_TW
void set_TW(QTableWidget *TW)
Definition: d_table.cpp:16
D_Geo_Point_2D::in_rect
bool in_rect(size_t t, size_t b, size_t l, size_t r)
Definition: d_geo_point_2d.cpp:167
D_QS_Release
const QString D_QS_Release
Definition: d_enum.h:19
D_Stat::Function_SingleStat
static function< double(vector< double >)> Function_SingleStat(int stat)
Definition: d_stat.cpp:683
D_MAKRO_CiliaSphereTracker::D_MAKRO_CiliaSphereTracker
D_MAKRO_CiliaSphereTracker(D_Storage *pStorage, QWidget *parent=nullptr)
Definition: d_makro_ciliaspheretracker.cpp:12
D_VideoSlicer::get_FrameRateFps
double get_FrameRateFps()
Definition: d_videoslicer.h:75
D_Img_Proc::Calc_Centroids
static int Calc_Centroids(vector< Point2f > *pvCentroids, Mat *pMA_In, int connectivity=8)
Definition: d_img_proc.cpp:16613
D_Img_Proc::ExtremeValuesColor
static int ExtremeValuesColor(Mat *pMA_Out, Mat *pMA_In, double rel_low=0.1, double rel_high=0.9, double gamma=1.0, bool color_low=false, bool color_high=true, bool zero_as_lowest=true)
Definition: d_img_proc.cpp:19664
D_Stat
The D_Stat class Calculate statistical quantities of vectors of values.
Definition: d_stat.h:38
D_Img_Proc::Threshold_Auto
static int Threshold_Auto(Mat *pMA_Out, Mat *pMA_In, int out_mode, double max_val, int auto_mode)
Definition: d_img_proc.cpp:6653
D_Stat::Calc_Stats_Circ_Grad
static int Calc_Stats_Circ_Grad(vector< double > *v_stats, vector< double > v_data_a)
Definition: d_stat.cpp:572
Point
cv::Point Point
Definition: d_opencv_typedefs.h:35
d_geo_lineset_2d.h
D_Img_Proc::OverlayOverwrite
static int OverlayOverwrite(Mat *pMA_Out, Mat *pMA_In, Mat *pMA_Overlay, double intensity_overlay=1.0, double intensity_backgr=1.0)
Definition: d_img_proc.cpp:19556
D_Storage::set_dir_M_CiliaSphereTracker
void set_dir_M_CiliaSphereTracker(QString path)
Definition: d_storage.h:115
QSL_StatListCirc
const QStringList QSL_StatListCirc
Definition: d_enum.h:924
D_Geo_Line_2D
The D_Geo_Line_2D class represents a 2D line and offers usefulls methods for standard tasks for 2D po...
Definition: d_geo_line_2d.h:43
D_Geo_Point_2D::CV_Point
Point CV_Point()
Definition: d_geo_point_2d.h:66
D_Img_Proc::ObjectsMovement
static int ObjectsMovement(vector< double > *pvShift_PxPerFrame, vector< double > *pvDirection_Rad, vector< Point2f > *pvPositions, vector< Mat > *pvMA_In, vector< vector< Point2f >> *pvvCentroids, double max_Shift_PxPerFrame=INFINITY, size_t index_NewImg=0, int connectivity=8)
Definition: d_img_proc.cpp:20212
c_STAT_STAN_DEV_TOTAL
@ c_STAT_STAN_DEV_TOTAL
Definition: d_enum.h:750
c_STAT_MEDIAN
@ c_STAT_MEDIAN
Definition: d_enum.h:764
D_Img_Proc::Draw_Circle
static int Draw_Circle(Mat *pMA_Out, Mat *pMA_In, int x, int y, int r, int val=255, int thickness=1, bool filled=false)
Definition: d_img_proc.cpp:18255
D_Viewer::pQI
QImage * pQI()
Definition: d_viewer.h:84
D_Geo_Point_2D::y
double y()
Definition: d_geo_point_2d.h:63
D_Img_Proc::ObjectsMovement_Heatmap
static int ObjectsMovement_Heatmap(Mat *pMA_OutHeatmap, Mat *pMA_OutLegend, Mat *pMA_InValue, vector< vector< Point2f >> vv_FrmObjPositions, vector< vector< double >> vv_FrmObjShifts, vector< vector< double >> vv_FrmObjAngles, Point2f P_VortexCenter, double shift_scale, double value_scale, int blur_size_x, int blur_size_y, int mode, int legend_width, int legend_height, double legend_scale, double legend_thickness, int legend_examples=5, double min_rel=0.1, double max_rel=0.9, double frame2time=0.0417)
Definition: d_img_proc.cpp:20374
D_VideoWriter
The D_VideoWriter class Creates a video from a sequence of images and saves it as a file.
Definition: d_videowriter.h:53
d_geo_line_2d.h
D_Table
The D_Table class Display tables in QTableWidget in the user interface.
Definition: d_table.h:42
D_Geo_Point_2D::scale
D_Geo_Point_2D scale(double factor)
Definition: d_geo_point_2d.cpp:95
D_VideoSlicer::get_FrameTimeSec
double get_FrameTimeSec()
Definition: d_videoslicer.h:77
D_Geo_PointSet_2D::size
size_t size()
Definition: d_geo_pointset_2d.h:51
D_Error_Handler
The D_Error_Handler class takes error codes from D_ERROR_ENUM and shows a popup if an error occures.
Definition: d_error_handler.h:38
D_Img_Proc::Split
static int Split(Mat *pMA_Out, Mat *pMA_In, unsigned int channel)
Definition: d_img_proc.cpp:4007
D_VideoWriter::EndVideoWriting
int EndVideoWriting()
Definition: d_videowriter.cpp:133
D_Geo_PointSet_2D::point
D_Geo_Point_2D point(size_t i)
Definition: d_geo_pointset_2d.h:53
D_Geo_Point_2D::CV_Point2f
Point2f CV_Point2f()
Definition: d_geo_point_2d.h:67
D_Plot::Plot_Line_XY_Multi
static int Plot_Line_XY_Multi(QChartView *pChartView, vector< vector< double >> vv_XY_Data, QString name_title, QString name_series, QString name_x, QString name_y, int x_trans=c_AXE_TRANS_LIN, int y_trans=c_AXE_TRANS_LIN, bool dots_visible=false, bool heat_color=false, bool heat_color_AllColors=false, Qt::Alignment legend_pos=Qt::AlignTop)
D_Img_Proc::MinMax_of_Mat
static int MinMax_of_Mat(Mat *pMA_In, double *min_ext, double *max_ext)
Definition: d_img_proc.cpp:2052
D_VideoWriter::set_PathOut
int set_PathOut(string S_OutPath)
Definition: d_videowriter.cpp:140
d_datavolume_3d.h
D_Geo_LineSet_2D::intersection
D_Geo_Point_2D intersection(double *deviation)
Definition: d_geo_lineset_2d.cpp:105
d_pdf_writer.h
Scalar
cv::Scalar Scalar
Definition: d_opencv_typedefs.h:30
D_Img_Proc::Math_Special_IncreaseIfSet
static int Math_Special_IncreaseIfSet(Mat *pMA_Count, Mat *pMA_Check)
Definition: d_img_proc.cpp:14027
D_VideoWriter::set_FPS
int set_FPS(double fps)
Definition: d_videowriter.cpp:42
c_STAT_CIRC_NUMBER_OF
@ c_STAT_CIRC_NUMBER_OF
Definition: d_enum.h:922
D_Plot::Plot_Hist_WithStats
static int Plot_Hist_WithStats(QChartView *pChartView, vector< double > v_Data, size_t n_classes, QString name_title, QString name_x, bool uni=true, bool acc=false, size_t axe_tick_count=AXE_TICK_COUNT_MAJOR_DEFAULT)
Definition: d_plot.cpp:399
D_MAKRO_CiliaSphereTracker::set_ClosingPossible
void set_ClosingPossible(bool closeable)
Definition: d_makro_ciliaspheretracker.h:85
d_geo_point_2d.h
D_Geo_Point_2D::x
double x()
Definition: d_geo_point_2d.h:62
D_Table::clear_data
void clear_data()
Definition: d_table.cpp:148
c_STAT_QUANTIL_10
@ c_STAT_QUANTIL_10
Definition: d_enum.h:756
D_Img_Proc::Insert
static int Insert(Mat *pMA_Target, Mat *pMA_Insert, int offset_x, int offset_y)
Definition: d_img_proc.cpp:2405
d_popup_listedit.h
D_Viewer::set_GV
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
D_Plot::Plot_Empty
static int Plot_Empty(QChartView *pChartView, QString QS_Text="No_Additional_Information")
Definition: d_plot.cpp:16
D_Stat::Function_SingleStat_Circ_Rad
static function< double(vector< double >)> Function_SingleStat_Circ_Rad(int stat)
Definition: d_stat.cpp:2825
Ui
Definition: d_analysiswindow.h:58
ER_other
@ ER_other
Definition: d_enum.h:134
D_Geo_PointSet_2D
Definition: d_geo_pointset_2d.h:38
c_STAT_CIRC_MEAN_ANG
@ c_STAT_CIRC_MEAN_ANG
Definition: d_enum.h:898
D_Geo_Point_2D::add_inhomo
D_Geo_Point_2D add_inhomo(D_Geo_Point_2D P)
Definition: d_geo_point_2d.cpp:107
c_MARKER_SYMBOL_CROSS
@ c_MARKER_SYMBOL_CROSS
Definition: d_enum.h:2040
d_storage.h
c_STAT_STAN_DEV_SAMPLE
@ c_STAT_STAN_DEV_SAMPLE
Definition: d_enum.h:751
D_Img_Proc::Draw_Grid
static int Draw_Grid(Mat *pMA_Target, int nx, int ny, bool lines_add, int grid_thickness, bool label_add, int label_thickness, double label_scale, double value)
Definition: d_img_proc.cpp:17899
D_Stat::Mean
static double Mean(vector< double > v_data, double nan_value=NAN)
Definition: d_stat.cpp:3650
D_VideoSlicer::get_DurationSec
double get_DurationSec()
Definition: d_videoslicer.h:79
D_Plot::Plot_Hist_WithStats_Color
static int Plot_Hist_WithStats_Color(QChartView *pChartView, vector< double > v_DataHist, vector< double > v_DataColor, function< double(vector< double >)> F_ColorStat_Hue, function< double(vector< double >)> F_ColorStat_Value, double min_x_hist, double max_x_hist, double min_x_color_hue, double max_x_color_hue, double min_x_color_value, double max_x_color_value, size_t n_classes, double mean_hist, double std_hist, QString name_title, QString name_x, bool uni=true, bool acc=false, size_t axe_tick_count=AXE_TICK_COUNT_MAJOR_DEFAULT)
Definition: d_plot.cpp:632
d_videoslicer.h
d_opencv_typedefs.h
c_STAT_CONST_0
@ c_STAT_CONST_0
Definition: d_enum.h:793
D_Img_Proc::Convert_Color
static int Convert_Color(Mat *pMA_Out, Mat *pMA_In, int cvt_mode)
Definition: d_img_proc.cpp:2524
D_Viewer::connect_Zoom
void connect_Zoom(D_Viewer *viewer)
Definition: d_viewer.cpp:128
QSL_StatList
const QStringList QSL_StatList
Definition: d_enum.h:797
D_PDF_Writer
The D_PDF_Writer class Create PDFs by calling simple to use methods.
Definition: d_pdf_writer.h:55
D_VideoSlicer::get_frame_2_timeSec
double get_frame_2_timeSec()
Definition: d_videoslicer.h:89
d_enum.h
D_VideoWriter::AddFrame
int AddFrame(Mat frame2add)
Definition: d_videowriter.cpp:101
c_STAT_NUMBER_OF_STATS
@ c_STAT_NUMBER_OF_STATS
Definition: d_enum.h:795
Rad2Grad
const double Rad2Grad
Definition: d_enum.h:2541
D_Viewer::Save_Image
QString Save_Image()
D_Viewer::Save_Image Saves the image at FI_LastSaved.
Definition: d_viewer.cpp:2157
D_Geo_LineSet_2D::line
D_Geo_Line_2D line(size_t i)
Definition: d_geo_lineset_2d.cpp:75
d_error_handler.h
BORDER_DEFAULT
const int BORDER_DEFAULT
Definition: d_opencv_typedefs.h:78
D_VideoWriter::is_Init
bool is_Init()
Definition: d_videowriter.cpp:90
D_Storage::dir_M_CiliaSphereTracker
QDir * dir_M_CiliaSphereTracker()
Definition: d_storage.h:87
D_Geo_Point_2D
The D_Geo_Point_2D class represents a 2D point and offers usefulls methods for standard tasks for 2D ...
Definition: d_geo_point_2d.h:43
D_Storage::get_Adress
Mat * get_Adress(size_t pos)
Definition: d_storage.h:54
d_videowriter.h
D_Img_Proc::Filter_Gauss
static int Filter_Gauss(Mat *pMA_Out, Mat *pMA_In, int size_x, int size_y, int border, double sigma_x, double sigma_y)
Definition: d_img_proc.cpp:9083
D_Img_Proc::Convert_Color2Mono
static int Convert_Color2Mono(Mat *pMA_Out, Mat *pMA_In, int col2mono_code)
Definition: d_img_proc.cpp:2662
D_VideoWriter::set_isColor
int set_isColor(bool is_color)
Definition: d_videowriter.cpp:56
d_visdat_proc.h
D_Stat::Calc_Stats
static int Calc_Stats(vector< double > *v_stats, vector< double > v_data, bool calc_sorted)
Definition: d_stat.cpp:16
D_MAKRO_CiliaSphereTracker::resizeEvent
void resizeEvent(QResizeEvent *event)
Definition: d_makro_ciliaspheretracker.cpp:270
c_STAT_CIRC_CONST_0
@ c_STAT_CIRC_CONST_0
Definition: d_enum.h:919
c_STAT_MEAN_ARITMETIC
@ c_STAT_MEAN_ARITMETIC
Definition: d_enum.h:740
D_Img_Proc::Draw_VectorField
static int Draw_VectorField(Mat *pMA_Target, vector< vector< double >> vv_XY_length_value, vector< vector< double >> vv_XY_angle_value, vector< vector< double >> vv_XY_length_error, vector< vector< double >> vv_XY_angle_error, uchar value=255, int vector_thickness=3, int error_steps=360, int error_thickness=1, bool grid_add=true, int grid_thicknes=2, bool label_add=false, int label_thickness=2, double label_scale=1.0)
Definition: d_img_proc.cpp:17443
D_VideoSlicer::get_FrameCount
long int get_FrameCount()
Definition: d_videoslicer.h:81
d_stat.h