 |
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.
|
Go to the documentation of this file.
9 #ifndef D_ANALYSISWINDOW_H
10 #define D_ANALYSISWINDOW_H
31 #include <QMainWindow>
40 #include <QInputDialog>
42 #include <QElapsedTimer>
49 #include <opencv2/core/core.hpp>
50 #include <opencv2/highgui/highgui.hpp>
51 #include <opencv2/imgproc/imgproc.hpp>
75 void resizeEvent(QResizeEvent* event);
79 void Image_Label_Get();
80 void Image_Binary_Add();
81 void Image_Value_Add_Dialog();
82 void Image_Value_Add(
Mat *pMA_add, QString name);
83 void Image_Value_Clear();
85 void Save_ImagePlotTable();
92 void Calc_ImgComVal();
93 void Calc_ImgComAxeClaSta();
94 void Calc_ImgComSta();
96 void Calc_ImgStaSta();
98 void Calc_StaStaSta();
100 void Update_Images();
101 void Update_Image_Label();
102 void Update_Image_Value();
103 void Update_Image_Stat();
104 void Update_Image_Feature();
107 void Update_View_Label();
108 void Update_View_Value();
109 void Update_View_Stat();
110 void Update_View_Feature();
111 void Update_View_Plot();
115 void Plot_Pixel_Histogram();
116 void Plot_Pixel_Values_on_Axis();
117 void Plot_Pixel_ScatterValue();
118 void Plot_Pixel_ScatterHist();
119 void Plot_Pixel_ScatterAxe();
121 void Plot_Comp_Feature();
122 void Plot_Comp_FeatureHist();
123 void Plot_Comp_FeatureScatter();
124 void Plot_Comp_Stat();
125 void Plot_Comp_StatHist();
126 void Plot_Comp_StatScatter();
127 void Plot_Comp_StatFeatScatter();
129 void Plot_Img_Feature();
130 void Plot_Img_FeatureHist();
131 void Plot_Img_Stat();
132 void Plot_Img_StatHist();
133 void Plot_Img_StatScatter();
134 void Plot_Img_StatFeatScatter();
136 void Plot_Stack_Stat();
139 void Populate_CB_Stats();
140 void Populate_CB_Feature();
141 void Populate_CB_ImageNames();
142 void Populate_CB_ImageNames_Single(QComboBox *CB);
143 void Populate_CB_ComponentNames();
144 void Populate_CB_ComponentNames_Single(QComboBox *CB);
145 void Populate_CB_Geometrics();
146 void Populate_CB_Geometrics_Single(QComboBox *CB);
147 void Populate_CB_Axe();
148 void Populate_CB_PlotTypes();
149 void Populate_CB_Single(QComboBox *CB, QStringList QSL);
150 void Populate_CB_PlotModePixel();
151 void Populate_CB_PlotModeComp();
153 void Init_ComponentNames();
155 void Rename_Component();
157 void on_comboBox_ImgLab_Connectivity_currentIndexChanged(
int index);
159 void on_comboBox_PlotPixel_Hist_Mode_currentIndexChanged(
int index);
160 void on_comboBox_PlotPixel_Axe_Mode_currentIndexChanged(
int index);
161 void on_comboBox_PlotPixel_ScatterValue_Mode_currentIndexChanged(
int index);
162 void on_comboBox_PlotPixel_ScatterHist_Mode_currentIndexChanged(
int index);
163 void on_comboBox_PlotPixel_ScatterAxe_Mode_currentIndexChanged(
int index);
165 void on_comboBox_PlotComp_Stat_Mode_currentIndexChanged(
int index);
166 void on_comboBox_PlotComp_StatHist_Mode_currentIndexChanged(
int index);
167 void on_comboBox_PlotComp_StatScatter_Mode_currentIndexChanged(
int index);
169 void on_comboBox_PlotComp_StatFeatScatter_Mode_currentIndexChanged(
int index);
171 void on_checkBox_Plot_X_Range_clicked(
bool checked);
173 void on_checkBox_Plot_Y_Range_clicked(
bool checked);
176 Ui::D_AnalysisWindow *ui;
182 int connectivity = 8;
185 vector<Mat> vMA_Images;
186 vector<Mat> vMA_Images_8bit;
187 vector<D_Value_Distribution_List> v_ValDistList;
188 QStringList QSL_ImageNames;
189 QStringList QSL_ImageNames_noBinary;
190 QStringList QSL_ComponentNames;
198 bool b_LabelLoaded =
false;
199 bool b_Calced_ValDistr =
false;
200 bool b_Calced_ImgComVal =
false;
201 bool b_Calced_ImgComAxeClaSta =
false;
202 bool b_Calced_ImgComSta =
false;
203 bool b_Calced_ComFea =
false;
204 bool b_Calced_ImgStaSta =
false;
205 bool b_Calced_FeaSta =
false;
206 bool b_Calced_StaStaSta =
false;
210 vector<vector<vector<double>>> vvvd_ImgComVal_val;
211 vector<vector<vector<vector<vector<double>>>>> vvvvvd_ImgComAxeClaSta_val;
212 vector<vector<vector<vector<vector<double>>>>> vvvvvd_ImgComAxeStaCla_val;
214 vector<vector<vector<double>>> vvvd_ImgComSta_val;
215 vector<vector<vector<double>>> vvvd_ImgStaCom_val;
216 vector<vector<double>> vvd_ComFea_fea;
217 vector<vector<double>> vvd_FeaCom_fea;
219 vector<vector<vector<double>>> vvvd_ImgStaSta_val;
220 vector<vector<double>> vvd_FeaSta_fea;
222 vector<vector<vector<double>>> vvvd_StaStaSta_val;
229 QChartView *pChartView_Plot;
236 bool AutoSave =
false;
240 void ERR(
int err, QString func =
"not specified", QString detail =
"not specified");
253 enum PLOT_TYPE_MASTER {
261 enum PLOT_TYPE_PIXEL {
264 PLOT_PIXEL_SCATTER_VALUE,
265 PLOT_PIXEL_SCATTER_HIST,
266 PLOT_PIXEL_SCATTER_AXE
268 const QStringList QSL_PlotTypes_Pixel =
270 "Histogram of Pixel Values",
271 "Value Distribution on Axis",
273 "Compare Histograms",
274 "Compare Values on Axis"
278 enum PLOT_MODE_COMP {
279 PLOT_MODE_COMP_SINGLE,
280 PLOT_MODE_COMP_ALL_IMG
282 const QStringList QSL_PlotModes_Comp =
289 enum PLOT_TYPE_COMP {
292 PLOT_COMP_FEAT_SCATTER,
295 PLOT_COMP_STAT_SCATTER,
296 PLOT_COMP_STATFEAT_SCATTER
298 const QStringList QSL_PlotTypes_Component =
301 "Features Histogram",
304 "Statistics Histogram",
305 "Statistics Compare",
306 "Statistics vs Feature"
310 enum PLOT_MODE_PIXEL {
311 PLOT_MODE_PIXEL_SINGLE,
312 PLOT_MODE_PIXEL_ALL_COMP,
313 PLOT_MODE_PIXEL_ALL_IMG
315 const QStringList QSL_PlotModes_Pixel =
323 enum PLOT_TYPE_IMAGE {
326 PLOT_IMAGE_STAT_HIST,
327 PLOT_IMAGE_STAT_SCATTER
331 const QStringList QSL_PlotTypes_Image =
335 "Statistics Histogram",
342 enum PLOT_TYPE_STACK {
345 const QStringList QSL_PlotTypes_Stack =
352 #endif // D_ANALYSISWINDOW_H
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
@ ER_okay
Definition: d_enum.h:133
The D_AnalysisWindow class GUI based custom analysis of images.
Definition: d_analysiswindow.h:68
void Update_View()
D_Viewer::Update_View Starts the workflow to show an image.
Definition: d_viewer.cpp:2096
static int Plot_Hist_Multi_Classes(QChartView *pChartView, vector< vector< double >> *vv_hist, double min_x, double max_x, double max_y, double step, QString name_title, QString name_series, QString name_x, QString name_y, bool ignore_first)
static int Split_img2vv_value(vector< vector< double >> *vv_data_LabPix, Mat *pMA_Value, Mat *pMA_Label, bool ignore_0)
Definition: d_img_proc.cpp:14833
D_AnalysisWindow(D_Storage *pStorage, QWidget *parent=0)
D_AnalysisWindow::D_AnalysisWindow Constructor.
Definition: d_analysiswindow.cpp:17
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
void set_data_d_1D_qs_count(vector< double > v_data, QString qs_col_name)
Definition: d_table.cpp:50
QDir * dir_Analyzer()
Definition: d_storage.h:77
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
@ ER_size_missmatch
Definition: d_enum.h:141
void set_data_d_2D_qsl_count(vector< vector< double >> vv_data, QStringList qsl_col_names)
Definition: d_table.cpp:98
static int Normalize(Mat *pMA_Out, Mat *pMA_In, unsigned int norm, unsigned int type, double min, double max)
Definition: d_img_proc.cpp:3814
void Update_Image(Mat *MA_new)
D_Viewer::Update_Image Set and show image.
Definition: d_viewer.cpp:2079
QString Save_Table()
Definition: d_table.cpp:186
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
void set_data_d_2D_qsl_step(vector< vector< double >> vv_data, QStringList qsl_col_names, double row_names_start, double row_names_step)
Definition: d_table.cpp:127
void set_TW(QTableWidget *TW)
Definition: d_table.cpp:16
const QStringList QSL_FeatureList
Definition: d_enum.h:1457
QString Save_Image_Dialog()
D_Viewer::Save_Image_Dialog Opens a dialog to save the show image (generated default path)
Definition: d_viewer.cpp:2105
static int Duplicate(Mat *pMA_Out, Mat *pMA_In)
Definition: d_img_proc.cpp:2397
static int Calc_Vector2Hist_2(vector< vector< double >> *vv_hist, vector< vector< double >> *vv_data, unsigned int class_count, double *min_ext, double *max_ext, double *max_y_ext, double *step_ext, bool accumulate, bool uniform)
Definition: d_stat.cpp:3764
~D_AnalysisWindow()
D_AnalysisWindow::~D_AnalysisWindow Destructor.
Definition: d_analysiswindow.cpp:228
static int Plot_Hist_Single_Classes(QChartView *pChartView, vector< double > *v_hist, double min, double step, QString name_title, QString name_series, QString name_x, QString name_y, bool ignore_first)
Definition: d_plot.cpp:769
void set_data_d_1D_qs_qsl(vector< double > v_data, QString qs_col_name, QStringList qsl_row_names)
Definition: d_table.cpp:23
size_t size()
Definition: d_storage.h:57
static int Threshold_Relative_1C(Mat *pMA_Out, Mat *pMA_In, double max_val, double thres_rel)
Definition: d_img_proc.cpp:6352
@ ER_type_bad
Definition: d_enum.h:136
The D_Table class Display tables in QTableWidget in the user interface.
Definition: d_table.h:42
void set_Name(QString viewer_name)
Definition: d_viewer.cpp:69
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
static int Split(Mat *pMA_Out, Mat *pMA_In, unsigned int channel)
Definition: d_img_proc.cpp:4007
static int Plot_Scatter_2D_Multi_Y(QChartView *pChartView, vector< double > *v_X_Val, vector< vector< double >> *vv_Y_SerVal, QString name_title, QString name_series, QString name_x, QString name_y)
static int Plot_BarCore_Multi(QChartView *pChartView, vector< vector< double >> vv_data_SetVal, QString name_title, QStringList qsl_name_sets, QStringList name_categories, QString name_x, QString name_y)
Definition: d_plot.cpp:1374
@ ER_channel_bad
Definition: d_enum.h:144
static int Plot_Scatter_2D_Multi_XY(QChartView *pChartView, vector< vector< double >> *vv_X_SerVal, vector< vector< double >> *vv_Y_SerVal, QString name_title, QString name_series, QString name_x, QString name_y)
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)
void set_data_d_2D_qsl_vd(vector< vector< double >> vv_data, QStringList qsl_col_names, vector< double > v_row_names)
Definition: d_table.cpp:85
const QStringList QSL_Axe
Definition: d_enum.h:2149
void set_data_d_2D_qsl_qsl(vector< vector< double >> vv_data, QStringList qsl_col_names, QStringList qsl_row_names)
Definition: d_table.cpp:74
void set_data_d_1D_qs_vd(vector< double > v_data, QString qs_col_name, vector< double > v_row_names)
Definition: d_table.cpp:38
static int Plot_BarCore_Single(QChartView *pChartView, vector< double > v_data, QString name_title, QString name_series, QStringList name_categories, QString name_x, QString name_y)
Definition: d_plot.cpp:1333
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
static int Plot_Empty(QChartView *pChartView, QString QS_Text="No_Additional_Information")
Definition: d_plot.cpp:16
Definition: d_analysiswindow.h:58
static int Plot_Scatter_2D_Single_Y(QChartView *pChartView, vector< double > v_X_Val, vector< double > v_Y_Val, QString name_title, QString name_series, QString name_x, QString name_y, bool man_axis_style_x=false, bool man_axis_style_y=false, double man_min_x=0, double man_max_x=1, double man_min_y=0, double man_max_y=1, int ticks_x=AXE_TICK_COUNT_MAJOR_DEFAULT, int ticks_y=AXE_TICK_COUNT_MAJOR_DEFAULT)
Definition: d_plot.cpp:1690
static int Plot_Line_XY_Single(QChartView *pChartView, vector< double > v_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 man_axis_style_x=false, bool man_axis_style_y=false, double man_min_x=0, double man_max_x=1, double man_min_y=0, double man_max_y=1, int ticks_x=AXE_TICK_COUNT_MAJOR_DEFAULT, int ticks_y=AXE_TICK_COUNT_MAJOR_DEFAULT)
Definition: d_plot.cpp:3432
@ c_GEO_CONTOUR
Definition: d_enum.h:2052
void set_data_d_1D_qs_step(vector< double > v_data, QString qs_col_name, double row_names_start, double row_names_step)
Definition: d_table.cpp:62
const QStringList QSL_StatList
Definition: d_enum.h:797
@ c_STAT_NUMBER_OF_STATS
Definition: d_enum.h:795
QString Save_Image()
D_Viewer::Save_Image Saves the image at FI_LastSaved.
Definition: d_viewer.cpp:2157
void resizeEvent(QResizeEvent *event)
D_AnalysisWindow::resizeEvent called when window is resized and resizes the D_Viewer s.
Definition: d_analysiswindow.cpp:237
static int Math_ImgScal_Div(Mat *pMA_Out, Mat *pMA_In, double divisor)
Definition: d_img_proc.cpp:13046
QString Save_Table_Dialog()
Definition: d_table.cpp:158
static int Convert_Depth_NoScaling(Mat *pMA_Out, Mat *pMA_In, int depth)
Definition: d_img_proc.cpp:2777
void set_dir_Analyzer(QString path)
Definition: d_storage.h:105
Mat * get_Adress(size_t pos)
Definition: d_storage.h:54
static int Calc_Vector2Hist_1(vector< double > *v_hist, vector< double > *v_data, unsigned int class_count, double *min_ext, double *max_ext, double *max_y_ext, double *step_ext, bool accumulate, bool uniform)
Definition: d_stat.cpp:3688
static int Calc_Stats(vector< double > *v_stats, vector< double > v_data, bool calc_sorted)
Definition: d_stat.cpp:16
@ c_FEAT_NUMBER_OF_FEATS
Definition: d_enum.h:1455
static int Draw_Label_Numbers_LUT_Gray(Mat *pMA_Out, Mat *pMA_In, Mat *pMA_Label, vector< double > v_LUT, int geometric, double scale, int thickness, bool center, int precision)
Definition: d_img_proc.cpp:18927
@ ER_empty
Definition: d_enum.h:135