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_visdat_dim.h
Go to the documentation of this file.
1 /************************************
2  * added: 16.04.2019 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_VISDAT_DIM_H
10 #define D_VISDAT_DIM_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_header.h>
16 
17 //Qt
18 #include <QString>
19 #include <QStringList>
20 
21 //Qt::Charts
22 
23 //general
24 #include <iostream>
25 #include <sstream>
26 #include <fstream>
27 #include <vector>
28 #include <algorithm>
29 
30 //openCV
31 #include <opencv2/core/core.hpp>
32 #include <opencv2/highgui/highgui.hpp>
33 #include <opencv2/imgproc/imgproc.hpp>
34 
35 //namespaces
36 using namespace std;
37 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
38 #include <d_opencv_typedefs.h>
39 
49 {
50 
51 public:
52  D_VisDat_Dim();
53  D_VisDat_Dim(int X, int Y, int Z = 1, int T = 1, int S = 1, int P = 1);
54  D_VisDat_Dim(vector<int> vDims);
56  D_VisDat_Dim(D_VisDat_Header source_header);
57 
58  int size_PixelCount ();
59  int size_X () {return vSizes[c_DIM_X];}
60  int size_Y () {return vSizes[c_DIM_Y];}
61  int size_Z () {return vSizes[c_DIM_Z];}
62  int size_T () {return vSizes[c_DIM_T];}
63  int size_S () {return vSizes[c_DIM_S];}
64  int size_P () {return vSizes[c_DIM_P];}
65  int size_Dim (int idx) {return idx < vSizes.size() && idx >= 0 ? vSizes[idx] : 1;}
66  vector<int> size_DimsVec () {return vSizes;}
67  Size size_XY () {return Size(vSizes[c_DIM_X], vSizes[c_DIM_Y]);}
68  Size size_XZ () {return Size(vSizes[c_DIM_X], vSizes[c_DIM_Z]);}
69  Size size_YZ () {return Size(vSizes[c_DIM_Y], vSizes[c_DIM_Z]);}
70  Size size_Plane (int i, int j) {return i < c_DIM_NUMBER_OF && i >= 0 && j < c_DIM_NUMBER_OF && j >= 0 ? Size(vSizes[i], vSizes[j]) : size_XY();}
71 
72  QString unit_X () {return QSL_Units[c_DIM_X];}
73  QString unit_Y () {return QSL_Units[c_DIM_Y];}
74  QString unit_Z () {return QSL_Units[c_DIM_Z];}
75  QString unit_T () {return QSL_Units[c_DIM_T];}
76  QString unit_S () {return QSL_Units[c_DIM_S];}
77  QString unit_P () {return QSL_Units[c_DIM_P];}
78  QString unit_Dim (int d) {return d < c_DIM_NUMBER_OF && d >= 0 ? QSL_Units[d] : "error";}
79  QStringList unit_Dims () {return QSL_Units;}
80 
81  double step_X () {return vSteps[c_DIM_X];}
82  double step_Y () {return vSteps[c_DIM_Y];}
83  double step_Z () {return vSteps[c_DIM_Z];}
84  double step_T () {return vSteps[c_DIM_T];}
85  double step_S () {return vSteps[c_DIM_S];}
86  double step_P () {return vSteps[c_DIM_P];}
87  double step_Dim (int d) {return d < c_DIM_NUMBER_OF && d >= 0 ? vSteps[d] : 1;}
88  double step_Dims () {return vSteps[c_DIM_X];}
89 
90  void set_size_X (int X) {vSizes[c_DIM_X] = X;}
91  void set_size_Y (int Y) {vSizes[c_DIM_Y] = Y;}
92  void set_size_Z (int Z) {vSizes[c_DIM_Z] = Z;}
93  void set_size_T (int T) {vSizes[c_DIM_T] = T;}
94  void set_size_S (int S) {vSizes[c_DIM_S] = S;}
95  void set_size_P (int P) {vSizes[c_DIM_P] = P;}
96  void set_size_Dim (int idx, int val) {if(idx < vSizes.size() && idx >= 0) vSizes[idx] = val;}
97  void set_size_Dims (vector<int> sizes) {if(sizes.size() == vSizes.size()) vSizes = sizes;}
98 
99  void set_unit_X (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
100  void set_unit_Y (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
101  void set_unit_Z (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
102  void set_unit_T (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
103  void set_unit_S (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
104  void set_unit_P (double step = 1, QString unit = "px") {if(step > 0) {vSteps[c_DIM_X] = step; QSL_Units[c_DIM_X] = unit;}}
105  void set_unit_Dim (int d, double step = 1, QString unit = "u") {if(step > 0 && d < c_DIM_NUMBER_OF && d >= 0) {vSteps[d] = step; QSL_Units[d] = unit;}}
106 
107  int extended_DimsCount ();
108  QString extended_DimsString ();
109  bool is_Dims (int dims) {return extended_DimsCount() == dims ? true : false;}
110  bool is_DimsAtLeast (int dims) {return extended_DimsCount() >= dims ? true : false;}
111  bool is_1D () {return is_Dims(1);}
112  bool is_2D () {return is_Dims(2);}
113  bool is_3D () {return is_Dims(3);}
114  bool is_4D () {return is_Dims(4);}
115  bool is_5D () {return is_Dims(5);}
116  bool is_6D () {return is_Dims(6);}
117  bool inRangeOf (D_VisDat_Dim VD_container);
119  int DimOutRanged (D_VisDat_Dim VD_container);
120  bool isEqual (D_VisDat_Dim VD_compare);
121 
122  QString info ();
123 
124  //loop positions
125  void loop_Reset () {v_LoopCurPos = {0, 0, 0, 0, 0, 0};}
126  void loop_SetOffset (Vec<int, c_DIM_NUMBER_OF> offset) {v_LoopOffset = offset;}
127  bool loop_Next ();
128  Vec<int, c_DIM_NUMBER_OF> loop_PosCurrent () {return v_LoopCurPos;}
129  Vec<int, c_DIM_NUMBER_OF> loop_PosCurrent_Offset ();
130 
131 private:
132  Vec<int, c_DIM_NUMBER_OF> v_LoopCurPos = {0, 0, 0, 0, 0, 0};
133  Vec<int, c_DIM_NUMBER_OF> v_LoopOffset = {0, 0, 0, 0, 0, 0};
134 
135 private:
136 
137  vector<int> vSizes = {1, 1, 1, 1, 1, 1};
138  vector<double> vSteps = {1, 1, 1, 1, 1, 1};
139  QStringList QSL_Units = {"px", "px", "px", "f", "", ""};
140 
141 };
142 
143 #endif // D_VISDAT_DIM_H
D_VisDat_Dim::set_unit_Z
void set_unit_Z(double step=1, QString unit="px")
Definition: d_visdat_dim.h:101
D_VisDat_Dim::is_Dims
bool is_Dims(int dims)
Definition: d_visdat_dim.h:109
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_VisDat_Dim::step_S
double step_S()
Definition: d_visdat_dim.h:85
D_VisDat_Dim::ForcePosInRange
Vec< int, c_DIM_NUMBER_OF > ForcePosInRange(Vec< int, c_DIM_NUMBER_OF > pos)
Definition: d_visdat_dim.cpp:111
D_VisDat_Dim::size_Y
int size_Y()
Definition: d_visdat_dim.h:60
D_VisDat_Dim::size_S
int size_S()
Definition: d_visdat_dim.h:63
D_VisDat_Dim::unit_Y
QString unit_Y()
Definition: d_visdat_dim.h:73
c_DIM_X
@ c_DIM_X
Definition: d_enum.h:235
D_VisDat_Dim::size_T
int size_T()
Definition: d_visdat_dim.h:62
c_DIM_Z
@ c_DIM_Z
Definition: d_enum.h:237
D_VisDat_Dim::set_size_X
void set_size_X(int X)
Definition: d_visdat_dim.h:90
c_DIM_T
@ c_DIM_T
Definition: d_enum.h:238
D_VisDat_Header::Dim_size_p
int Dim_size_p()
Definition: d_visdat_header.h:49
D_VisDat_Dim::is_1D
bool is_1D()
Definition: d_visdat_dim.h:111
D_VisDat_Dim::step_X
double step_X()
Definition: d_visdat_dim.h:81
c_DIM_Y
@ c_DIM_Y
Definition: d_enum.h:236
ER_dim_Z_out_of_range
@ ER_dim_Z_out_of_range
Definition: d_enum.h:153
D_VisDat_Dim::size_DimsVec
vector< int > size_DimsVec()
Definition: d_visdat_dim.h:66
D_VisDat_Dim::loop_Reset
void loop_Reset()
Definition: d_visdat_dim.h:125
D_VisDat_Dim::unit_Dims
QStringList unit_Dims()
Definition: d_visdat_dim.h:79
D_VisDat_Dim::set_size_Dims
void set_size_Dims(vector< int > sizes)
Definition: d_visdat_dim.h:97
D_VisDat_Dim::is_6D
bool is_6D()
Definition: d_visdat_dim.h:116
D_VisDat_Header::Dim_size_x
int Dim_size_x()
Definition: d_visdat_header.h:44
D_VisDat_Dim::extended_DimsString
QString extended_DimsString()
Definition: d_visdat_dim.cpp:75
D_VisDat_Dim
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
D_VisDat_Dim::set_size_P
void set_size_P(int P)
Definition: d_visdat_dim.h:95
D_VisDat_Dim::set_unit_Dim
void set_unit_Dim(int d, double step=1, QString unit="u")
Definition: d_visdat_dim.h:105
d_visdat_dim.h
c_DIM_S
@ c_DIM_S
Definition: d_enum.h:239
D_VisDat_Dim::loop_SetOffset
void loop_SetOffset(Vec< int, c_DIM_NUMBER_OF > offset)
Definition: d_visdat_dim.h:126
D_VisDat_Dim::size_Z
int size_Z()
Definition: d_visdat_dim.h:61
D_VisDat_Dim::unit_Z
QString unit_Z()
Definition: d_visdat_dim.h:74
ER_dim_P_out_of_range
@ ER_dim_P_out_of_range
Definition: d_enum.h:159
D_VisDat_Dim::unit_X
QString unit_X()
Definition: d_visdat_dim.h:72
D_VisDat_Dim::size_XZ
Size size_XZ()
Definition: d_visdat_dim.h:68
ER_dim_Y_out_of_range
@ ER_dim_Y_out_of_range
Definition: d_enum.h:151
D_VisDat_Dim::is_5D
bool is_5D()
Definition: d_visdat_dim.h:115
D_VisDat_Dim::size_PixelCount
int size_PixelCount()
Definition: d_visdat_dim.cpp:56
D_VisDat_Dim::size_P
int size_P()
Definition: d_visdat_dim.h:64
D_VisDat_Header::Dim_size_t
int Dim_size_t()
Definition: d_visdat_header.h:47
D_VisDat_Dim::unit_S
QString unit_S()
Definition: d_visdat_dim.h:76
D_VisDat_Dim::DimOutRanged
int DimOutRanged(D_VisDat_Dim VD_container)
Definition: d_visdat_dim.cpp:120
D_VisDat_Header::Dim_size_y
int Dim_size_y()
Definition: d_visdat_header.h:45
D_VisDat_Dim::step_T
double step_T()
Definition: d_visdat_dim.h:84
D_VisDat_Dim::step_Dims
double step_Dims()
Definition: d_visdat_dim.h:88
D_VisDat_Dim::unit_P
QString unit_P()
Definition: d_visdat_dim.h:77
D_VisDat_Dim::set_size_Y
void set_size_Y(int Y)
Definition: d_visdat_dim.h:91
D_VisDat_Dim::D_VisDat_Dim
D_VisDat_Dim()
Definition: d_visdat_dim.cpp:11
D_VisDat_Dim::set_size_T
void set_size_T(int T)
Definition: d_visdat_dim.h:93
D_VisDat_Dim::extended_DimsCount
int extended_DimsCount()
Definition: d_visdat_dim.cpp:65
D_VisDat_Dim::size_X
int size_X()
Definition: d_visdat_dim.h:59
D_VisDat_Dim::size_Dim
int size_Dim(int idx)
Definition: d_visdat_dim.h:65
D_VisDat_Dim::set_unit_T
void set_unit_T(double step=1, QString unit="px")
Definition: d_visdat_dim.h:102
D_VisDat_Dim::set_unit_Y
void set_unit_Y(double step=1, QString unit="px")
Definition: d_visdat_dim.h:100
D_VisDat_Dim::is_4D
bool is_4D()
Definition: d_visdat_dim.h:114
D_VisDat_Header::Dim_size_s
int Dim_size_s()
Definition: d_visdat_header.h:48
D_VisDat_Dim::size_Plane
Size size_Plane(int i, int j)
Definition: d_visdat_dim.h:70
D_VisDat_Dim::set_size_Z
void set_size_Z(int Z)
Definition: d_visdat_dim.h:92
D_VisDat_Dim::unit_Dim
QString unit_Dim(int d)
Definition: d_visdat_dim.h:78
D_VisDat_Dim::set_unit_S
void set_unit_S(double step=1, QString unit="px")
Definition: d_visdat_dim.h:103
D_VisDat_Dim::set_size_S
void set_size_S(int S)
Definition: d_visdat_dim.h:94
D_VisDat_Dim::step_Y
double step_Y()
Definition: d_visdat_dim.h:82
c_DIM_P
@ c_DIM_P
Definition: d_enum.h:240
D_VisDat_Dim::step_Z
double step_Z()
Definition: d_visdat_dim.h:83
D_VisDat_Dim::is_3D
bool is_3D()
Definition: d_visdat_dim.h:113
c_DIM_NUMBER_OF
@ c_DIM_NUMBER_OF
Definition: d_enum.h:241
D_VisDat_Dim::step_P
double step_P()
Definition: d_visdat_dim.h:86
d_opencv_typedefs.h
D_VisDat_Header::Dim_size_z
int Dim_size_z()
Definition: d_visdat_header.h:46
D_VisDat_Header
The D_VisDat_Header class Contains the meta data of a D_VisDat_Obj.
Definition: d_visdat_header.h:37
D_VisDat_Dim::loop_Next
bool loop_Next()
Definition: d_visdat_dim.cpp:151
d_enum.h
D_VisDat_Dim::isEqual
bool isEqual(D_VisDat_Dim VD_compare)
Definition: d_visdat_dim.cpp:132
D_VisDat_Dim::set_size_Dim
void set_size_Dim(int idx, int val)
Definition: d_visdat_dim.h:96
D_VisDat_Dim::loop_PosCurrent_Offset
Vec< int, c_DIM_NUMBER_OF > loop_PosCurrent_Offset()
Definition: d_visdat_dim.cpp:168
QSL_DimIndices
const QStringList QSL_DimIndices
Definition: d_enum.h:251
Vec
cv::Vec< T, N > Vec
Definition: d_opencv_typedefs.h:44
d_error_handler.h
D_VisDat_Dim::loop_PosCurrent
Vec< int, c_DIM_NUMBER_OF > loop_PosCurrent()
Definition: d_visdat_dim.h:128
D_VisDat_Dim::is_2D
bool is_2D()
Definition: d_visdat_dim.h:112
D_VisDat_Dim::unit_T
QString unit_T()
Definition: d_visdat_dim.h:75
D_VisDat_Dim::inRangeOf
bool inRangeOf(D_VisDat_Dim VD_container)
Definition: d_visdat_dim.cpp:102
D_VisDat_Dim::info
QString info()
Definition: d_visdat_dim.cpp:141
ER_dim_S_out_of_range
@ ER_dim_S_out_of_range
Definition: d_enum.h:157
ER_dim_X_out_of_range
@ ER_dim_X_out_of_range
Definition: d_enum.h:149
D_VisDat_Dim::set_unit_P
void set_unit_P(double step=1, QString unit="px")
Definition: d_visdat_dim.h:104
D_VisDat_Dim::size_XY
Size size_XY()
Definition: d_visdat_dim.h:67
ER_dim_T_out_of_range
@ ER_dim_T_out_of_range
Definition: d_enum.h:155
D_VisDat_Dim::step_Dim
double step_Dim(int d)
Definition: d_visdat_dim.h:87
D_VisDat_Dim::set_unit_X
void set_unit_X(double step=1, QString unit="px")
Definition: d_visdat_dim.h:99
D_VisDat_Dim::is_DimsAtLeast
bool is_DimsAtLeast(int dims)
Definition: d_visdat_dim.h:110
Size
cv::Size Size
Definition: d_opencv_typedefs.h:31
D_VisDat_Dim::size_YZ
Size size_YZ()
Definition: d_visdat_dim.h:69
d_visdat_header.h