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_component_list_context.h
Go to the documentation of this file.
1 /************************************
2  * added: 25.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_COMPONENT_LIST_CONTEXT_H
10 #define D_COMPONENT_LIST_CONTEXT_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_component.h>
15 #include <d_component_list.h>
16 #include <d_stat.h>
17 #include <d_math.h>
18 
19 //general
20 #include <iostream>
21 #include <vector>
22 #include <algorithm>
23 #include <cmath>
24 #include <fstream>
25 #include <thread>
26 
27 //Qt
28 #include <QString>
29 #include <QDebug>
30 #include <QStringList>
31 #include <QDir>
32 #include <QFileInfo>
33 
34 //openCV
35 #include <opencv2/core/core.hpp>
36 #include <opencv2/highgui/highgui.hpp>
37 #include <opencv2/imgproc/imgproc.hpp>
38 
39 //namespaces
40 using namespace std;
41 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
42 #include <d_opencv_typedefs.h>
43 
53 {
54 public:
56  D_Component_List_Context (Mat *pMA_BinaryOrLabel, int connectivity = 8);
57 
58  int set_Mat (Mat *pMA_BinaryOrLabel, int connectivity = 8);
59 
60  bool InDist_Comp2Comp (int c1, int pt_type1, int c2, int pt_type2, double dist_min, double dist_max);
61  vector<int> InDist_CompsIndices (int c1, int pt_type1, int pt_type2, double dist_min, double dist_max);
62 
63  vector<double> get_AllComps_StatFeatInDist (int type1, int type2, double dist_min, double dist_max, int feat, int stat);
64  vector<double> get_AllComps_StatFeatInDist_BG (int type1, int type2, double dist_min, double dist_max, int feat, int stat);
65 
66  bool IsCouple_CompareFeats (int c1, int c2, int feat1, int feat2, function<bool(double, double)> comparison);
67 
68  vector<vector<Point>> get_PointCouples_Closest (int type1, int type2, double dist_min, double dist_max, int feat1, int feat2, function<bool(double, double)> comparison);
69  vector<vector<Point>> get_PointCouples_AllInRange (int type1, int type2, double dist_min, double dist_max, int feat1, int feat2, function<bool(double, double)> comparison);
70 
71  //Member acces
72  D_Component_List *get_pCompList() {return &CompList;}
73 
74 private:
75 
76  Point Point_Comp (int c, int type);
77  Point2f Point2f_Comp (int c, int type);
78  double Dist_Comp2Comp (int c1, int type1, int c2, int type2);
79 
80  int CompCount = 0;
81  bool CompList_Calced = false;
82  D_Component_List CompList;
83 };
84 
85 #endif // D_COMPONENT_LIST_CONTEXT_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
D_Component_List_Context::get_PointCouples_Closest
vector< vector< Point > > get_PointCouples_Closest(int type1, int type2, double dist_min, double dist_max, int feat1, int feat2, function< bool(double, double)> comparison)
Definition: d_component_list_context.cpp:187
ER_okay
@ ER_okay
Definition: d_enum.h:133
c_FEAT_CIRC_ENCLOSE_CENTER_X
@ c_FEAT_CIRC_ENCLOSE_CENTER_X
Definition: d_enum.h:1402
D_Stat::Optimize_Init
static double Optimize_Init(int opt_type)
Definition: d_stat.cpp:4185
c_COMPDIST_CONVEX_HULL
@ c_COMPDIST_CONVEX_HULL
Definition: d_enum.h:2088
D_Math::Distance
static double Distance(Point pt1, Point pt2)
Definition: d_math.cpp:1511
d_component.h
c_FEAT_ELLIPSE_FIT_CENTER_Y
@ c_FEAT_ELLIPSE_FIT_CENTER_Y
Definition: d_enum.h:1412
d_math.h
D_Math::Pythagoras
static double Pythagoras(double x, double y)
Definition: d_math.cpp:1601
Point2f
cv::Point2f Point2f
Definition: d_opencv_typedefs.h:37
D_Component_List::size
size_t size()
Definition: d_component_list.h:94
c_FEAT_CIRC_INCLOSE_CENTER_X
@ c_FEAT_CIRC_INCLOSE_CENTER_X
Definition: d_enum.h:1401
c_FEAT_CIRC_INCLOSE_CENTER_Y
@ c_FEAT_CIRC_INCLOSE_CENTER_Y
Definition: d_enum.h:1410
D_Component_List_Context::IsCouple_CompareFeats
bool IsCouple_CompareFeats(int c1, int c2, int feat1, int feat2, function< bool(double, double)> comparison)
Definition: d_component_list_context.cpp:179
D_Component_List::get_Offset
Point get_Offset(int comp)
Definition: d_component_list.h:73
c_FEAT_CIRC_ENCLOSE_CENTER_Y
@ c_FEAT_CIRC_ENCLOSE_CENTER_Y
Definition: d_enum.h:1411
D_Component_List_Context::get_AllComps_StatFeatInDist
vector< double > get_AllComps_StatFeatInDist(int type1, int type2, double dist_min, double dist_max, int feat, int stat)
Definition: d_component_list_context.cpp:121
c_COMPDIST_CENTER_MASS
@ c_COMPDIST_CENTER_MASS
Definition: d_enum.h:2090
c_COMPDIST_CENTER_ELLIPSE_FIT
@ c_COMPDIST_CENTER_ELLIPSE_FIT
Definition: d_enum.h:2095
c_FEAT_RECT_AXEPAR_CENTER_X
@ c_FEAT_RECT_AXEPAR_CENTER_X
Definition: d_enum.h:1399
c_OPT_1D_MINIMUM
@ c_OPT_1D_MINIMUM
Definition: d_enum.h:957
d_component_list_context.h
c_COMPDIST_OFFSET
@ c_COMPDIST_OFFSET
Definition: d_enum.h:2089
D_Stat::Function_SingleStat
static function< double(vector< double >)> Function_SingleStat(int stat)
Definition: d_stat.cpp:683
c_COMPDIST_CENTER_CIRC_ENCLOSE
@ c_COMPDIST_CENTER_CIRC_ENCLOSE
Definition: d_enum.h:2094
Point
cv::Point Point
Definition: d_opencv_typedefs.h:35
c_FEAT_ELLIPSE_FIT_CENTER_X
@ c_FEAT_ELLIPSE_FIT_CENTER_X
Definition: d_enum.h:1403
D_Stat::Optimize
static bool Optimize(double val, double *opt, int opt_type)
Definition: d_stat.cpp:4140
c_COMPDIST_CENTER_CIRC_INCLOSE
@ c_COMPDIST_CENTER_CIRC_INCLOSE
Definition: d_enum.h:2093
D_Component_List_Context::InDist_CompsIndices
vector< int > InDist_CompsIndices(int c1, int pt_type1, int pt_type2, double dist_min, double dist_max)
Definition: d_component_list_context.cpp:107
c_COMPDIST_CENTER_RECT_AXEPAR
@ c_COMPDIST_CENTER_RECT_AXEPAR
Definition: d_enum.h:2091
D_Component_List::get_Component
D_Component get_Component(size_t index)
Definition: d_component_list.h:56
D_Component_List_Context::get_pCompList
D_Component_List * get_pCompList()
Definition: d_component_list_context.h:72
c_FEAT_CIRC_ENCLOSE_RADIUS
@ c_FEAT_CIRC_ENCLOSE_RADIUS
Definition: d_enum.h:1389
D_Component_List_Context::set_Mat
int set_Mat(Mat *pMA_BinaryOrLabel, int connectivity=8)
Definition: d_component_list_context.cpp:21
d_component_list.h
D_Component_List::get_Centroid
Point2f get_Centroid(int comp)
Definition: d_component_list.h:69
c_FEAT_RECT_AXEPAR_CENTER_Y
@ c_FEAT_RECT_AXEPAR_CENTER_Y
Definition: d_enum.h:1408
D_Component_List::set_Mat
int set_Mat(Mat *pMA_BinaryOrLabel, int connectivity=8)
Definition: d_component_list.cpp:22
D_Component_List_Context::get_PointCouples_AllInRange
vector< vector< Point > > get_PointCouples_AllInRange(int type1, int type2, double dist_min, double dist_max, int feat1, int feat2, function< bool(double, double)> comparison)
Definition: d_component_list_context.cpp:397
D_Component::get_Contour
vector< Point > get_Contour()
Definition: d_component.h:67
D_Component_List
The D_Component_List class is a list of D_Component representing the blobs in a binary image.
Definition: d_component_list.h:46
D_Component_List_Context
The D_Component_List_Context class inherits D_Component_List and calculates features of the blobs dep...
Definition: d_component_list_context.h:53
D_Component_List_Context::D_Component_List_Context
D_Component_List_Context()
Definition: d_component_list_context.cpp:11
d_opencv_typedefs.h
D_Component::get_Contour_ConvexHull
vector< Point > get_Contour_ConvexHull()
Definition: d_component.h:69
c_COMPDIST_NUMBER_OF
@ c_COMPDIST_NUMBER_OF
Definition: d_enum.h:2096
c_COMPDIST_CONTOUR
@ c_COMPDIST_CONTOUR
Definition: d_enum.h:2087
d_enum.h
D_Component_List::get_Feature
double get_Feature(int comp, int feat)
Definition: d_component_list.h:60
D_Component_List_Context::get_AllComps_StatFeatInDist_BG
vector< double > get_AllComps_StatFeatInDist_BG(int type1, int type2, double dist_min, double dist_max, int feat, int stat)
Definition: d_component_list_context.cpp:150
c_FEAT_RECT_ROTATE_CENTER_Y
@ c_FEAT_RECT_ROTATE_CENTER_Y
Definition: d_enum.h:1409
D_Component_List_Context::InDist_Comp2Comp
bool InDist_Comp2Comp(int c1, int pt_type1, int c2, int pt_type2, double dist_min, double dist_max)
Definition: d_component_list_context.cpp:33
c_FEAT_RECT_ROTATE_CENTER_X
@ c_FEAT_RECT_ROTATE_CENTER_X
Definition: d_enum.h:1400
c_COMPDIST_CENTER_RECT_ROTATE
@ c_COMPDIST_CENTER_RECT_ROTATE
Definition: d_enum.h:2092
d_stat.h