VAT  3.0
Video Analysis Tool
paper3.h
1 #ifndef PAPER3_H
2 #define PAPER3_H
3 #include <map>
4 #include <string>
5 #include <QImage>
6 #include "Datapool.h"
7 #include "ModuleInterface.h"
8 #include <QDir>
9 #include "opencv2/opencv.hpp"
10 #include "VideoAnalysis.h"
11 
12 #include <boost/random.hpp>
13 #include <boost/random/normal_distribution.hpp>
14 #define Nparticles 100
15 //#include <boost/random.hpp>
16 //#include <boost/random/normal_distribution.hpp>
17 #define PI 3.14159265358979323846
18 
19 
20 //Estructura de una bloob para guardarlo en una cola
21 // y sacar datos estadisticos
22 struct BlobPoint
23 {
24  //posicion en la imagen
25  int x;
26  int y;
27  //diferencias entre
28  int delta;
29  //colores correpsondientes
30  uchar R,G,B;
31 };
32 
33 //estructura de un particula del filtro de
34 //de particula
35 struct Particle
36 {
37  //posicion
38  int x;
39  int y;
40  //peso
41  int w;
42  uchar R,G,B;
43 };
44 
45 
46 
47 class paper3: public ModuleInterface {
48 
49 public:
50  paper3(Datapool *i_data);
51  ~paper3();
52 
53  //Set module configuration parameters
54  bool setParameters(QDomNode& config);
55 
56  //Initialization after reading parameters
57  bool init();
58 
59  //Function executed at each frame
60  bool run();
61 
62  //update parameters at runtime.
63  bool updateParameters();
64 
65 
66 private:
67 
68  //función para detectar diferencias relacionadas con el primer filtro que busca colores predominantes
69  //el cual ademas sacaa datos estadisticos de estos puntos
70  QImage Detectar_Deltas(QImage,QRgb);
71  QImage currentimage_shadow;
72 
73  //conjunto de histogramas auxiliares separados porcanal
74  int Histo1R[256];
75  int Histo1G[256];
76  int Histo1B[256];
77 
78  int Histo2R[256];
79  int Histo2G[256];
80  int Histo2B[256];
81 
82  //variables auxiliares para guardar imagenes
83  QImage *PP;
84  QImage *PP2;
85  QRgb MM;
86 
87 
88  //particle filter para color
89  //colas para puntos bloob de segmentación de color(primer filtro)
90  std::deque<BlobPoint> bloob;
91  //colas para particulas para color
92  std::vector<Particle> Particles;
93  //función que acumula los pesos
94  double PesosAcumulados[Nparticles] ;
95  //esperanza de la distribución obtenida en la segmentación a color
96  double E[2];
97  //varianza de la distribución obtenida en la segmentación a color
98  double V[3];
99  //pinta caja asociada a la varianza y esperanza
100  bool paintCaja(QImage *);
101  //imagen que guarda el modelo
102  QImage Model;
103  //funciona para cargar la imagen
104  //en esa función hay que cambiar el parametro
105  void loadModel();
106 
107 
108  //variable que guarda el cuadrado obtenido, mediante
109  //valores de esperanzas y varianzas
110  QRect A;
111 
112  void SeekMaxInModel();
113  //maximos hallados, actualmente se
114  //colocan directamente lo valores
115  //pero con
116  //loadModel()
117  //SeekMaxInModel
118  //se guardan estos maximos del modelo en:
119  int MaxHistrogramModel[3];
120 
121  //funciones para las particulas
122  void resample();
123  int pick_base_sample();
124  void CalculaPesosAcumulados();
125  int BusquedaBinaria();
126 
127  void initRandomParticles();
128  void PropagaEn2Niveles();
129  void calculaPesosConLikelihood();
130 
131  //particle filter para profundidad
132  //segmentacion
133  //limpia histograma
134  void VaciaHistogramaDepth();
135  //llena histograma
136  void llenaHistogramaDepth();
137  //suaviza histograma con gaussiana
138  void suavizarHistograma();
139  //busca minimos locales en el histograma de
140  //profundidad , entre los cuales asigna un color
141  //o etiqueta
142  void MinMaxLocales();
143  //colaca los colores obtenidos de MinMaxLocales
144  void pintaDepth();
145 
146  int HS[256];
147  //histograma de profundidad
148  int HistoDepth[256];
149  //matriz de colores correspondiente a cada tramo de color
150  //encontrado entre minimos locales
151  int segColorDepth[256];
152  //agrupas las funciones anteriores para en conjunto realizar
153  //esta segmentacion
154  void SegmentaDepth();
155 
156  //copias de la info entrante
157  QImage copiaQDepth;
158  cv::Mat copiaCV_Depth;
159  cv::Mat copiaCV_DepthGray;
160 
161  //utilidades
162  cv::Mat formatconv_QT2CV(const QImage );
163  QImage formatconv_CV2QT(const cv::Mat&);
164 
165  boost::random::mt19937 rng;
166  double GaussianValue(float,float,float,float,int,int,int,int);
167 
168 };
169 
170 
171 #endif // PAPER3_H
172 
Definition: paper3.h:47
Definition: ModuleInterface.h:43
Definition: paper3.h:22
An object of this class is instantiated at main code, and this object is used by every class to push ...
Definition: Datapool.h:39
Definition: paper3.h:35