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_segmentationassistant.h
Go to the documentation of this file.
1 /************************************
2  * added: 24.09.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_SEGMENTATIONASSISTANT_H
10 #define D_MAKRO_SEGMENTATIONASSISTANT_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 
22 //Qt
23 #include <QMainWindow>
24 #include <QFileDialog>
25 #include <QFileInfo>
26 #include <QFileInfoList>
27 #include <QDir>
28 #include <QDateTime>
29 #include <QComboBox>
30 #include <QCloseEvent>
31 #include <QResizeEvent>
32 #include <QInputDialog>
33 
34 //Qt::Charts
35 #include <QChartView>
36 #include <QChart>
37 
38 //general
39 #include <iostream>
40 #include <sstream>
41 #include <fstream>
42 #include <vector>
43 #include <algorithm>
44 
45 //openCV
46 #include <opencv2/core/core.hpp>
47 #include <opencv2/highgui/highgui.hpp>
48 #include <opencv2/imgproc/imgproc.hpp>
49 
50 //namespaces
51 using namespace std;
52 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
53 #include <d_opencv_typedefs.h>
54 
55 namespace Ui {
57 }
58 
59 class D_MAKRO_SegmentationAssistant : public QMainWindow
60 {
61  Q_OBJECT
62 
63 public:
64  explicit D_MAKRO_SegmentationAssistant(D_Storage *pStorage, QWidget *parent = 0);
66 
67  void closeEvent(QCloseEvent *event);
68  void resizeEvent(QResizeEvent *event);
69  void set_ClosingPossible(bool closeable) {ClosingPossible = closeable;}
70 
71  void Init();
72 
73  void Populate_CB_Single(QComboBox *CB, QStringList QSL, int index_init);
74  void Populate_CB();
75 
76 private slots:
77  void Update_Views();
78  void Update_Images();
79  void Update_ProcSetps(int step_start);
80  void Update_ProcStep(int step);
81  void Images_Add();
82  void Images_Clear();
83  void Images_Next();
84  void Images_Previous();
85 
86  void on_comboBox_In_Images_currentIndexChanged(int index);
87 
88  void on_spinBox_In_PageDisplay_valueChanged(int arg1);
89 
90  void on_spinBox_Select_Page_valueChanged(int arg1);
91 
92  void on_comboBox_Select_Mono_currentIndexChanged(int index);
93 
94  void on_doubleSpinBox_Blur_Sigma_valueChanged(double arg1);
95 
96  void on_spinBox_Blur_Size_valueChanged(int arg1);
97 
98  void on_doubleSpinBox_Seg_Sigma_valueChanged(double arg1);
99 
100  void on_spinBox_Seg_Size_valueChanged(int arg1);
101 
102  void on_comboBox_Step_currentIndexChanged(int index);
103 
104  void on_checkBox_Seg_InclNonSeed_stateChanged(int arg1);
105 
106  void on_checkBox_Seg_ExclBorder_stateChanged(int arg1);
107 
108  void on_doubleSpinBox_Binary_Thres_valueChanged(double arg1);
109 
110 private:
111  Ui::D_MAKRO_SegmentationAssistant *ui;
112  bool ClosingPossible = false;
113 
114  //Data-Info
115  QFileInfoList FIL_Images;
116  QStringList QSL_Images_Paths;
117  QStringList QSL_Images_Names;
118 
119  //Data
121  vector<D_VisDat_Obj> vVD_Steps;
122  Mat MA_ShowProc;
123 
124  //Storage
125  D_Storage *pStore;
126 
127  //Viewer
128  D_Viewer Viewer_Proc;
129 
130  //states
131  bool state_no_img = true;
132  bool state_cur_img_loaded = false;
133  bool state_img_proc_done = false;
134 
135  //Error handler
136  D_Error_Handler ER;
137  void ERR(int err, QString func = "not specified", QString detail = "not specified");
138 
139  enum c_PROC_STEPS {
140  c_ST_IN,
141  c_ST_SEL_PAGE,
142  c_ST_SEL_CHANNEL,
143  c_ST_BLUR,
144  c_ST_THRES,
145  c_ST_WATERSHED,
146  //c_ST_INF_MERGE,
147  //c_ST_INF_SEPARATE,
148  //c_ST_INF_KICK,
149  c_ST_TRAIN_RECOVER,
150  c_ST_TRAIN_MERGE,
151  c_ST_TRAIN_SEPARATE,
152  c_ST_TRAIN_KICK,
153  c_ST_OUT,
154  c_ST_NUMBER_OF
155  };
156  const QStringList QSL_Steps = {
157  "Input",
158  "Select Page",
159  "Select Mono Mode",
160  "Blur",
161  "Binary",
162  "Watershed",
163  //"Inference Merge",
164  //"Inference Separate",
165  //"Inference Kick",
166  "Recover",
167  "Merge",
168  "Separate",
169  "Kick",
170  "Output"
171  };
172 };
173 
174 #endif // D_MAKRO_SEGMENTATIONASSISTANT_H
D_MAKRO_SegmentationAssistant::Populate_CB
void Populate_CB()
Definition: d_makro_segmentationassistant.cpp:87
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_Viewer::Update_View
void Update_View()
D_Viewer::Update_View Starts the workflow to show an image.
Definition: d_viewer.cpp:2096
d_viewer.h
d_plot.h
D_VisDat_Proc::Create_VD_SinglePaged
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
D_Img_Proc::Load_From_Path
static int Load_From_Path(Mat *pMA_Out, QFileInfo FI_path)
Definition: d_img_proc.cpp:16
D_Viewer
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
D_VisDat_Proc::Copy
static int Copy(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In)
Definition: d_visdat_proc.cpp:3406
D_Storage
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
D_MAKRO_SegmentationAssistant::D_MAKRO_SegmentationAssistant
D_MAKRO_SegmentationAssistant(D_Storage *pStorage, QWidget *parent=0)
Definition: d_makro_segmentationassistant.cpp:12
D_MAKRO_SegmentationAssistant::resizeEvent
void resizeEvent(QResizeEvent *event)
Definition: d_makro_segmentationassistant.cpp:62
D_Viewer::Update_Image
void Update_Image(Mat *MA_new)
D_Viewer::Update_Image Set and show image.
Definition: d_viewer.cpp:2079
d_table.h
D_VisDat_Proc::Read_2D_Plane
static int Read_2D_Plane(Mat *pMA_Out, D_VisDat_Obj *pVD_In, D_VisDat_Slice_2D InPlane)
Definition: d_visdat_proc.cpp:2946
D_MAKRO_SegmentationAssistant::Init
void Init()
Definition: d_makro_segmentationassistant.cpp:68
D_VisDat_Proc::Transformation_Watershed_Auto
static int Transformation_Watershed_Auto(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, D_VisDat_Obj *pVD_Marker, bool include_not_seeded, bool conv_8bit, bool exclude_border)
Definition: d_visdat_proc.cpp:6490
D_VisDat_Proc::Filter_Gauss
static int Filter_Gauss(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int size_x, int size_y, int border, double sigma_x, double sigma_y)
Definition: d_visdat_proc.cpp:5073
D_VisDat_Proc::Draw_Label_Numbers
static int Draw_Label_Numbers(D_VisDat_Slicing slice, D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, D_VisDat_Obj *pVD_Label, double scale, double thickness, bool center)
Definition: d_visdat_proc.cpp:6854
d_makro_segmentationassistant.h
D_Storage::default_img
QFileInfo * default_img()
Definition: d_storage.h:134
QSL_Color2Mono
const QStringList QSL_Color2Mono
Definition: d_enum.h:667
D_MAKRO_SegmentationAssistant::Populate_CB_Single
void Populate_CB_Single(QComboBox *CB, QStringList QSL, int index_init)
Definition: d_makro_segmentationassistant.cpp:78
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_Storage::set_dir_M_SegmentationAssistant
void set_dir_M_SegmentationAssistant(QString path)
Definition: d_storage.h:112
D_MAKRO_SegmentationAssistant::closeEvent
void closeEvent(QCloseEvent *event)
Definition: d_makro_segmentationassistant.cpp:48
D_VisDat_Slice_2D
The D_VisDat_Slice_2D class Represents a 2D slice through a D_VisDat_Obj.
Definition: d_visdat_slice_2d.h:18
D_VisDat_Proc::Threshold_Absolute
static int Threshold_Absolute(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, double thresh)
Definition: d_visdat_proc.cpp:4875
D_Viewer::set_GV
void set_GV(QGraphicsView *GV_ui)
Definition: d_viewer.cpp:49
D_VisDat_Slicing
The D_VisDat_Slicing class Describes how a D_VisDat_Obj shall be sliced.
Definition: d_visdat_slicing.h:50
Ui
Definition: d_analysiswindow.h:58
D_MAKRO_SegmentationAssistant::set_ClosingPossible
void set_ClosingPossible(bool closeable)
Definition: d_makro_segmentationassistant.h:69
d_storage.h
c_COL2MONO_GRAY
@ c_COL2MONO_GRAY
Definition: d_enum.h:651
D_Storage::dir_M_SegmentationAssistant
QDir * dir_M_SegmentationAssistant()
Definition: d_storage.h:84
d_opencv_typedefs.h
D_MAKRO_SegmentationAssistant
Definition: d_makro_segmentationassistant.h:60
D_VisDat_Proc::Convert_Color2Mono
static int Convert_Color2Mono(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, int col2mono_code)
Definition: d_visdat_proc.cpp:4633
d_enum.h
d_error_handler.h
D_MAKRO_SegmentationAssistant::~D_MAKRO_SegmentationAssistant
~D_MAKRO_SegmentationAssistant()
Definition: d_makro_segmentationassistant.cpp:43
BORDER_DEFAULT
const int BORDER_DEFAULT
Definition: d_opencv_typedefs.h:78
D_VisDat_Proc::Dim_Pick
static int Dim_Pick(D_VisDat_Obj *pVD_Out, D_VisDat_Obj *pVD_In, vector< int > pick_pos)
Definition: d_visdat_proc.cpp:3413
d_visdat_proc.h
c_SLICE_2D_XY
@ c_SLICE_2D_XY
Definition: d_enum.h:267
d_stat.h