 |
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_MAKRO_DNAFIBER_H
10 #define D_MAKRO_DNAFIBER_H
23 #include <QMainWindow>
24 #include <QFileDialog>
26 #include <QFileInfoList>
30 #include <QCloseEvent>
31 #include <QResizeEvent>
32 #include <QInputDialog>
46 #include <opencv2/core/core.hpp>
47 #include <opencv2/highgui/highgui.hpp>
48 #include <opencv2/imgproc/imgproc.hpp>
69 void closeEvent(QCloseEvent *event);
70 void resizeEvent(QResizeEvent *event);
76 void Param_SetToDefault();
77 bool Param_LoadFromFile();
78 void Param_SaveInFile();
83 void Update_View_ImgProc();
84 void Update_View_Results();
87 void Update_ImgProc(
int step_start = 0);
88 void Update_ImgProc_Step(
int step);
89 void Update_ImgProc_Visualization();
91 void UpdateSave_AllSingle();
92 void UpdateSave_AllStack();
94 void Calc_DiaHist_Single();
95 void Calc_DiaHist_Stack();
96 void Calc_DiaHist_ClassCount();
97 void Calc_Results_All();
98 void Calc_Results_InputHist();
99 void Calc_Results_DataVector();
100 void Calc_Results_EulerNumber();
101 void Calc_Results_StatVector();
103 void Update_Results();
104 void Update_Results_Visualization();
105 void Update_Results_InputHist();
106 void Update_Results_DiameterHist();
107 void Update_Results_DiameterStat();
108 void Update_Results_Euler();
109 void Update_Results_PixelRatio();
111 void Save_Image_Proc();
112 void Save_Image_Vis();
113 void Save_Plot_DiaHist();
114 void Save_Plot_InputHist();
115 void Save_Table_DiaStat();
116 void Save_Table_Euler();
117 void Save_Table_PixelRatio();
119 void Save_Image_Proc(QString path);
120 void Save_Image_Vis(QString path);
121 void Save_Plot_DiaHist(QString path);
122 void Save_Plot_InputHist(QString path);
123 void Save_Table_DiaStat(QString path);
124 void Save_Table_Euler(QString path);
125 void Save_Table_PixelRatio(QString path);
129 void Populate_CB_Single(QComboBox *CB, QStringList QSL,
int index_init);
134 void BlockSignals_ImgProc(
bool block);
135 void BlockSignals_Viewer(
bool block);
136 void SpacingAdapt_XY_to_Z();
137 void SpacingAdapt_Z_to_XY();
138 void SpacingAdapt_Viewer();
139 void Skelleton_ThresOfVol_Adapt();
142 void on_doubleSpinBox_Controls_Spacing_XY_valueChanged(
double arg1);
143 void on_doubleSpinBox_Controls_Spacing_Z_valueChanged(
double arg1);
145 void on_spinBox_Controls_Median_Size_XY_valueChanged(
int arg1);
146 void on_spinBox_Controls_Median_Size_Z_valueChanged(
int arg1);
147 void on_spinBox_Controls_Binary_Thres_valueChanged(
int arg1);
148 void on_spinBox_Controls_Eilenstein_XY_valueChanged(
int arg1);
149 void on_spinBox_Controls_Eilenstein_Z_valueChanged(
int arg1);
150 void on_spinBox_Controls_Skelleton_Thres_valueChanged(
int arg1);
152 void on_comboBox_ImgProc_View_Plane_currentIndexChanged(
int index);
153 void on_spinBox_ImgProc_View_X_valueChanged(
int arg1);
154 void on_spinBox_ImgProc_View_Y_valueChanged(
int arg1);
155 void on_spinBox_ImgProc_View_Z_valueChanged(
int arg1);
157 void on_comboBox_ImgProc_Img_currentIndexChanged(
int index);
158 void on_comboBox_ImgProc_Step_currentIndexChanged(
int index);
161 void on_action_Update_Image_Processing_triggered();
163 void on_action_Update_Results_triggered();
166 void on_pushButton_Controls_SaveParam_clicked();
168 void on_comboBox_ResAna_SingleStack_currentIndexChanged(
int index);
171 Ui::D_MAKRO_DnaFiber *ui;
172 bool ClosingPossible =
false;
175 double Spacing_XY_nm = 2;
176 double Spacing_Z_nm = 3;
177 double Spacing_XY_to_Z = Spacing_Z_nm / Spacing_XY_nm;
178 double Spacing_Z_to_XY = Spacing_XY_nm / Spacing_Z_nm;
181 QStringList QSL_InputImages;
182 QStringList QSL_InputImages_Names;
183 QFileInfoList FIL_InputImages;
184 QFileInfoList FIL_RoiImages;
185 QFileInfoList FIL_Parameters;
189 vector<D_VisDat_Obj> vVD_ProcSteps;
193 vector<double> v_Data_Single;
194 vector<double> v_Data_Stack;
195 vector<double> v_Stat_Single;
196 vector<double> v_Stat_Stack;
197 vector<size_t> v_Volume;
198 size_t count_pixels_single = 0;
199 size_t count_pixels_stack = 0;
200 size_t count_zeros_single = 0;
201 size_t count_zeros_stack = 0;
202 double euler_number_single = 0;
203 vector<double> v_euler_number_stack;
204 vector<double> v_hist_input_single;
205 vector<double> v_hist_input_stack;
207 vector<vector<double>> vv_hist_diameters_single;
208 vector<vector<double>> vv_hist_diameters_single_acc;
209 vector<double> v_hist_diameters_stack_equal;
210 vector<double> v_hist_diameters_stack_equal_acc;
211 vector<double> v_hist_diameters_stack_vol;
212 vector<double> v_hist_diameters_stack_vol_acc;
213 const double hist_diameters_min = 0.0;
214 const double hist_diameters_max = 201.0;
215 const double hist_diameters_step = 1.0;
216 size_t hist_diameters_class_count;
235 QChartView *pChartView_DiameterHist;
236 QChartView *pChartView_InputHist;
239 QDir DIR_SaveDefault;
242 QDir DIR_SaveStack_Sub;
245 bool state_cur_img_loaded =
false;
246 bool state_cur_img_processed =
false;
247 bool state_cur_img_visualization =
false;
248 bool state_cur_res_calced =
false;
249 bool state_stack_processed =
false;
250 bool state_stack_res_calced =
false;
251 bool state_analyse_single =
false;
252 bool state_analyse_stack =
false;
255 vector<double> vParam;
259 void ERR(
int err, QString func =
"not specified", QString detail =
"not specified");
265 PARAM_Spacing_Size_XY,
266 PARAM_Spacing_Size_Z,
270 PARAM_Eilenstein_Size_XY,
271 PARAM_Eilenstein_Size_Z,
272 PARAM_Skelleton_Thresh,
275 const QStringList QSL_PARAM {
281 "Eilenstein_Size_XY",
294 const QStringList QSL_XYZ_Planes
316 const QStringList QSL_ProcSteps =
319 "1 - White Foreground",
321 "3 - Load Region of Interest",
322 "4 - Crop Region of Interest",
325 "7 - Eilenstein Filter",
336 c_RES_STYLE_NUMBER_OF
341 c_RES_TYPE_INPUT_HIST,
342 c_RES_TYPE_DIAMETER_HIST,
343 c_RES_TYPE_DIAMETER_STAT,
345 c_RES_TYPE_PIXEL_RATIO,
348 const QStringList QSL_ResultsTypes =
351 "Diameter Histogram",
352 "Diameter Statistics",
363 const QStringList QSL_ResultsPool =
366 "Stack of Images (3D each)"
372 c_POOL_WEIGHT_VOLUME,
373 c_POOL_WEIGHT_NUMBER_OF
375 const QStringList QSL_PoolingWeights = {
376 "Pooling weight equal",
377 "Pooling weight by analysed volume"
384 c_RES_PX_RATIO_FG_ALL,
385 c_RES_PX_RATIO_FG_BG,
387 c_RES_PX_RATIO_BG_ALL,
388 c_RES_PX_RATIO_BG_FG,
389 c_RES_PX_RATIO_NUMBER_OF
391 QStringList QSL_PixelRatio =
395 "FG/All Pixel Ratio",
398 "BG/All Pixel Ratio",
402 const double euler_average_edges_per_knot = 4;
406 c_RES_EULER_NUM_PER_VX,
407 c_RES_EULER_KN4_PER_LN_VX,
409 c_RES_EULER_NUMBER_OF
411 QStringList QSL_Euler =
414 "Euler Number per Voxel",
415 "Connections per Voxel (if 2 Fibers per Connection)",
416 "Connections (if 2 Fibers per Connection)"
420 #endif // D_MAKRO_DNAFIBER_H
void closeEvent(QCloseEvent *event)
Definition: d_makro_dnafiber.cpp:78
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
@ ER_okay
Definition: d_enum.h:133
static function< uchar(double x, double y)> Function_2D_to_1D_8bit(int type, double a=1, double b=0, double c=1, double d=0, double e=0, double f=0, uchar nan_val=0, uchar inf_val=0)
Definition: d_math.cpp:527
static int Calc_DataVector_1C(vector< double > *v_data_out, D_VisDat_Obj *pVD_In, bool ignore_zeros)
Definition: d_visdat_proc.cpp:8278
static function< double(double x, double y)> Function_2D_to_1D(int type, double a=1, double b=0, double c=1, double d=0, double e=0, double f=0, double nan_val=0, double inf_val=0)
Definition: d_math.cpp:88
@ c_DIM_X
Definition: d_enum.h:235
@ c_DIM_Z
Definition: d_enum.h:237
@ c_PLANE_XY
Definition: d_enum.h:293
static int Create_VD_SinglePaged(D_VisDat_Obj *pVD_New, QString QS_Path, int DimPage=c_DIM_P, int DimImgX=c_DIM_X, int DimImgY=c_DIM_Y)
Definition: d_visdat_proc.cpp:1485
static int Math_2img_Function(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In0, D_VisDat_Obj *pVD_In1, function< double(double, double)> function_img1_img2)
Definition: d_visdat_proc.cpp:5938
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
@ c_MATH_2D_TO_1D_X_times_Y
Definition: d_enum.h:1037
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
@ c_DIM_Y
Definition: d_enum.h:236
void Update_Image(Mat *MA_new)
D_Viewer::Update_Image Set and show image.
Definition: d_viewer.cpp:2079
@ c_MATH_2D_TO_1D_Y
Definition: d_enum.h:1033
static int Channels_Merge(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In0, D_VisDat_Obj *pVD_In1, D_VisDat_Obj *pVD_In2, D_VisDat_Obj *pVD_In3, int channels_count, bool channels_use[4])
static int Read_2D_Plane(Mat *pMA_Out, D_VisDat_Obj *pVD_In, D_VisDat_Slice_2D InPlane)
Definition: d_visdat_proc.cpp:2946
static int Math_2img_Function_UnequalSize_8bit(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In0, D_VisDat_Obj *pVD_In1, function< uchar(double, double)> function_img1_img2)
Definition: d_visdat_proc.cpp:6121
QString Save_Table()
Definition: d_table.cpp:186
~D_MAKRO_DnaFiber()
Definition: d_makro_dnafiber.cpp:73
const int NORM_MINMAX
Definition: d_opencv_typedefs.h:149
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
static int Write_2D_Plane(D_VisDat_Obj *pVD_Out, Mat *pMA_In, D_VisDat_Slice_2D OutPlane)
Definition: d_visdat_proc.cpp:2303
void set_TW(QTableWidget *TW)
Definition: d_table.cpp:16
@ c_PLANE_XZ
Definition: d_enum.h:294
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 Math_1img_Inversion(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In)
Definition: d_visdat_proc.cpp:5735
The D_VisDat_Obj class Represents a 6D image.
Definition: d_visdat_obj.h:51
Mat * pMA_full()
Definition: d_visdat_obj.h:61
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
@ c_MATH_2D_TO_1D_X
Definition: d_enum.h:1032
void set_data_d_1D_qs_qsl(vector< double > v_data, QString qs_col_name, QStringList qsl_row_names)
Definition: d_table.cpp:23
@ c_STAT_MEDIAN
Definition: d_enum.h:764
@ c_PL_NUMBER_OF
Definition: d_enum.h:43
The D_Table class Display tables in QTableWidget in the user interface.
Definition: d_table.h:42
static int Filter_Function(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, D_VisDat_Obj *pVD_Mask, function< double(double cur, double nei)> F1_CenterImage, function< double(double f1r, double msk)> F2_f1mask, function< double(vector< double > vf2r)> F3_Combine, function< double(double f3r, double cen)> F4_f3center, int border_type=BORDER_CONSTANT, bool DoNonZeroMaskOnly=false)
Definition: d_visdat_proc.cpp:5371
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
const int BORDER_REPLICATE
Definition: d_opencv_typedefs.h:82
static int Transformation_Distance(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int metric, int precision, double spacing_x3d=1.0, double spacing_y3d=1.0, double spacing_z3d=1.0)
Definition: d_visdat_proc.cpp:6401
static int Euler_Number(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, double *euler_number, D_VisDat_Obj *pVD_In)
Definition: d_visdat_proc.cpp:7016
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
static int Create_VD_Single(D_VisDat_Obj *pVD_New, QString QS_Path, int DimImgX=c_DIM_X, int DimImgY=c_DIM_Y)
Definition: d_visdat_proc.cpp:1413
cv::Scalar Scalar
Definition: d_opencv_typedefs.h:30
static function< uchar(vector< double >)> Function_SingleStat_8bit(int stat)
Definition: d_stat.cpp:1779
The D_VisDat_Slice_2D class Represents a 2D slice through a D_VisDat_Obj.
Definition: d_visdat_slice_2d.h:18
static int Calc_Hist_1C_8bit(vector< double > *v_hist, D_VisDat_Obj *pVD_In, bool uniform, bool accum)
Definition: d_visdat_proc.cpp:8248
D_MAKRO_DnaFiber(D_Storage *pStorage, QWidget *parent=0)
Definition: d_makro_dnafiber.cpp:4
static int Threshold_Absolute(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, double thresh)
Definition: d_visdat_proc.cpp:4875
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
The D_VisDat_Slicing class Describes how a D_VisDat_Obj shall be sliced.
Definition: d_visdat_slicing.h:50
@ c_SLICE_3D_XYZ
Definition: d_enum.h:270
Definition: d_analysiswindow.h:58
@ c_PLANE_YZ
Definition: d_enum.h:298
static int Math_2img_SubtractionAbsolute(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In0, D_VisDat_Obj *pVD_In1)
Definition: d_visdat_proc.cpp:5845
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
static int Morphology_Dilation(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int elem_size_X, int elem_size_Y, int elem_size_Z)
Definition: d_visdat_proc.cpp:5563
void set_dir_M_DnaFibre(QString path)
Definition: d_storage.h:110
void connect_Zoom(D_Viewer *viewer)
Definition: d_viewer.cpp:128
const QStringList QSL_StatList
Definition: d_enum.h:797
static int Filter_Eilenstein_Greater_Sum(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int size_x=3, int size_y=3, int size_z=3)
Definition: d_visdat_proc.cpp:5350
Definition: d_makro_dnafiber.h:62
void set_ClosingPossible(bool closeable)
Definition: d_makro_dnafiber.h:71
QString Save_Image()
D_Viewer::Save_Image Saves the image at FI_LastSaved.
Definition: d_viewer.cpp:2157
QString Save_Table_Dialog()
Definition: d_table.cpp:158
static int Normalize(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int norm, int type, double min, double max)
Definition: d_visdat_proc.cpp:4647
void resizeEvent(QResizeEvent *event)
Definition: d_makro_dnafiber.cpp:92
QDir * dir_M_DnaFibre()
Definition: d_storage.h:82
static int Calc_Stats(vector< double > *v_stats, vector< double > v_data, bool calc_sorted)
Definition: d_stat.cpp:16
static int Convert_Depth_NoScaling(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int depth)
Definition: d_visdat_proc.cpp:4666