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_range.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_RANGE_H
10 #define D_VISDAT_RANGE_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_dim.h>
16 #include <D_VisDat_Slice_2D.h>
17 
18 //Qt
19 #include <QString>
20 #include <QStringList>
21 
22 //Qt::Charts
23 
24 //general
25 #include <iostream>
26 #include <sstream>
27 #include <fstream>
28 #include <vector>
29 #include <algorithm>
30 
31 //openCV
32 #include <opencv2/core/core.hpp>
33 #include <opencv2/highgui/highgui.hpp>
34 #include <opencv2/imgproc/imgproc.hpp>
35 
36 //namespaces
37 using namespace std;
38 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
39 #include <d_opencv_typedefs.h>
40 
46 {
47 public:
49  D_VisDat_Range(int X1, int X2, int Y1, int Y2, int Z1, int Z2, int T1, int T2, int S1, int S2, int P1, int P2);
51 
52  vector<int> Min () {return vMin;}
53  vector<int> Max () {return vMax;}
54  vector<Range> Ranges ();
55  vector<Range> Ranges (D_VisDat_Dim VD_Dim_Source);
56 
57  //bool isInrangeOf
58 
59  int min_X () {return vMin[c_DIM_X];}
60  int min_Y () {return vMin[c_DIM_Y];}
61  int min_Z () {return vMin[c_DIM_Z];}
62  int min_T () {return vMin[c_DIM_T];}
63  int min_S () {return vMin[c_DIM_S];}
64  int min_P () {return vMin[c_DIM_P];}
65  int min_Dim (size_t d) {return d < c_DIM_NUMBER_OF ? vMin[d] : -1;}
66  vector<int> min_Dims () {return vMin;}
67 
68  int max_X () {return vMax[c_DIM_X];}
69  int max_Y () {return vMax[c_DIM_Y];}
70  int max_Z () {return vMax[c_DIM_Z];}
71  int max_T () {return vMax[c_DIM_T];}
72  int max_S () {return vMax[c_DIM_S];}
73  int max_P () {return vMax[c_DIM_P];}
74  int max_Dim (size_t d) {return d < c_DIM_NUMBER_OF ? vMax[d] : -1;}
75  vector<int> max_Dims () {return vMax;}
76 
77  int range_X () {return range_Dim(c_DIM_X);}
78  int range_Y () {return range_Dim(c_DIM_X);}
79  int range_Z () {return range_Dim(c_DIM_X);}
80  int range_T () {return range_Dim(c_DIM_X);}
81  int range_S () {return range_Dim(c_DIM_X);}
82  int range_P () {return range_Dim(c_DIM_X);}
83  int range_Dim (size_t d) {return (d < c_DIM_NUMBER_OF && vMin[d] >= 0 && vMax[d] >= 0) ? (vMax[d] - vMin[d]) : -1;}
84 
85  void set_Range_X (int min, int max) {vMin[c_DIM_X] = min; vMax[c_DIM_X] = max;}
86  void set_Range_Y (int min, int max) {vMin[c_DIM_Y] = min; vMax[c_DIM_Y] = max;}
87  void set_Range_Z (int min, int max) {vMin[c_DIM_Z] = min; vMax[c_DIM_Z] = max;}
88  void set_Range_T (int min, int max) {vMin[c_DIM_T] = min; vMax[c_DIM_T] = max;}
89  void set_Range_S (int min, int max) {vMin[c_DIM_S] = min; vMax[c_DIM_S] = max;}
90  void set_Range_P (int min, int max) {vMin[c_DIM_P] = min; vMax[c_DIM_P] = max;}
91  void set_Range_Dim (int d, int min, int max) {if(d < c_DIM_NUMBER_OF) {vMin[d] = min; vMax[d] = max;}}
92  void set_Range_Dims (vector<int> vmin, vector<int> vmax) {if(vmin.size() == c_DIM_NUMBER_OF && vmax.size() == c_DIM_NUMBER_OF) {vMin = vmin; vMax = vmax;}}
93 
94  void Dim4Range_Init (D_VisDat_Dim *range_in_this_dim);
95  D_VisDat_Dim Dim4Range_DimIntersect () {return D_VisDat_Dim(Dim4Range_Size());}
96  vector<int> Dim4Range_Size ();
98 
99  QString info();
100 
101 protected:
102  void Init();
103 
104 private:
105  vector<int> vMin;
106  vector<int> vMax;
107  Vec<int, c_DIM_NUMBER_OF> vMin_inDim;
108  Vec<int, c_DIM_NUMBER_OF> vMax_inDim;
109 
110 };
111 
112 #endif // D_VISDAT_RANGE_H
D_VisDat_Range::Dim4Range_Offset
Vec< int, c_DIM_NUMBER_OF > Dim4Range_Offset()
Definition: d_visdat_range.h:97
D_VisDat_Range::min_Dims
vector< int > min_Dims()
Definition: d_visdat_range.h:66
c_DIM_X
@ c_DIM_X
Definition: d_enum.h:235
c_DIM_Z
@ c_DIM_Z
Definition: d_enum.h:237
c_DIM_T
@ c_DIM_T
Definition: d_enum.h:238
D_VisDat_Range::set_Range_Dims
void set_Range_Dims(vector< int > vmin, vector< int > vmax)
Definition: d_visdat_range.h:92
D_VisDat_Slice_Nd::pos_Dim
int pos_Dim(int d)
Definition: d_visdat_slice_nd.h:58
c_DIM_Y
@ c_DIM_Y
Definition: d_enum.h:236
D_VisDat_Range
The D_VisDat_Range class Describes the intersect of two D_VisDat_Dim , so it is a 6D subvolume.
Definition: d_visdat_range.h:46
D_VisDat_Range::min_X
int min_X()
Definition: d_visdat_range.h:59
D_VisDat_Range::min_P
int min_P()
Definition: d_visdat_range.h:64
D_VisDat_Range::set_Range_Dim
void set_Range_Dim(int d, int min, int max)
Definition: d_visdat_range.h:91
D_VisDat_Dim
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
d_visdat_dim.h
c_DIM_S
@ c_DIM_S
Definition: d_enum.h:239
D_VisDat_Range::range_T
int range_T()
Definition: d_visdat_range.h:80
D_VisDat_Range::max_Y
int max_Y()
Definition: d_visdat_range.h:69
D_VisDat_Range::D_VisDat_Range
D_VisDat_Range()
Definition: d_visdat_range.cpp:3
D_VisDat_Range::set_Range_Z
void set_Range_Z(int min, int max)
Definition: d_visdat_range.h:87
D_VisDat_Range::Min
vector< int > Min()
Definition: d_visdat_range.h:52
D_VisDat_Range::info
QString info()
Definition: d_visdat_range.cpp:88
D_VisDat_Range::max_X
int max_X()
Definition: d_visdat_range.h:68
D_VisDat_Range::range_Y
int range_Y()
Definition: d_visdat_range.h:78
D_VisDat_Range::set_Range_P
void set_Range_P(int min, int max)
Definition: d_visdat_range.h:90
D_VisDat_Range::range_Z
int range_Z()
Definition: d_visdat_range.h:79
D_VisDat_Range::max_S
int max_S()
Definition: d_visdat_range.h:72
d_visdat_range.h
D_VisDat_Range::set_Range_X
void set_Range_X(int min, int max)
Definition: d_visdat_range.h:85
D_VisDat_Dim::size_Dim
int size_Dim(int idx)
Definition: d_visdat_dim.h:65
D_VisDat_Range::max_T
int max_T()
Definition: d_visdat_range.h:71
D_VisDat_Range::range_Dim
int range_Dim(size_t d)
Definition: d_visdat_range.h:83
D_VisDat_Range::Dim4Range_DimIntersect
D_VisDat_Dim Dim4Range_DimIntersect()
Definition: d_visdat_range.h:95
D_VisDat_Range::max_Z
int max_Z()
Definition: d_visdat_range.h:70
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
Range
cv::Range Range
Definition: d_opencv_typedefs.h:29
D_VisDat_Range::Init
void Init()
Definition: d_visdat_range.cpp:99
D_VisDat_Range::min_T
int min_T()
Definition: d_visdat_range.h:62
D_VisDat_Range::range_X
int range_X()
Definition: d_visdat_range.h:77
D_VisDat_Range::max_Dims
vector< int > max_Dims()
Definition: d_visdat_range.h:75
D_VisDat_Range::set_Range_S
void set_Range_S(int min, int max)
Definition: d_visdat_range.h:89
D_VisDat_Range::min_Z
int min_Z()
Definition: d_visdat_range.h:61
c_DIM_P
@ c_DIM_P
Definition: d_enum.h:240
D_VisDat_Range::Dim4Range_Init
void Dim4Range_Init(D_VisDat_Dim *range_in_this_dim)
Definition: d_visdat_range.cpp:57
D_VisDat_Range::min_Y
int min_Y()
Definition: d_visdat_range.h:60
D_VisDat_Range::range_S
int range_S()
Definition: d_visdat_range.h:81
c_DIM_NUMBER_OF
@ c_DIM_NUMBER_OF
Definition: d_enum.h:241
d_opencv_typedefs.h
D_VisDat_Range::min_S
int min_S()
Definition: d_visdat_range.h:63
D_VisDat_Range::min_Dim
int min_Dim(size_t d)
Definition: d_visdat_range.h:65
d_enum.h
QSL_DimIndices
const QStringList QSL_DimIndices
Definition: d_enum.h:251
D_VisDat_Range::set_Range_Y
void set_Range_Y(int min, int max)
Definition: d_visdat_range.h:86
Vec
cv::Vec< T, N > Vec
Definition: d_opencv_typedefs.h:44
D_VisDat_Range::range_P
int range_P()
Definition: d_visdat_range.h:82
d_error_handler.h
D_VisDat_Range::set_Range_T
void set_Range_T(int min, int max)
Definition: d_visdat_range.h:88
D_VisDat_Range::Dim4Range_Size
vector< int > Dim4Range_Size()
Definition: d_visdat_range.cpp:80
D_VisDat_Range::Ranges
vector< Range > Ranges()
Definition: d_visdat_range.cpp:34
D_VisDat_Range::max_Dim
int max_Dim(size_t d)
Definition: d_visdat_range.h:74
D_VisDat_Range::Max
vector< int > Max()
Definition: d_visdat_range.h:53
D_VisDat_Range::max_P
int max_P()
Definition: d_visdat_range.h:73