source: pacpusframework/branches/2.0-beta1/include/extlib/EStereo/datastructures.h@ 89

Last change on this file since 89 was 89, checked in by morasjul, 11 years ago

PACPUS 2.0 Beta deployed in new branch

Major changes:
-Add communication interface between components
-Add examples for communications interface (TestComponents)
-Move to Qt5 support

  • Property svn:executable set to *
File size: 4.8 KB
Line 
1/***************************************************************************
2*
3* Copyright 2000 by David Demirdjian. All rights reserved.
4*
5* Developed by David Demirdjian
6*
7* Permission to use, copy, or modify this software and its documentation
8* for educational and research purposes only and without fee is hereby
9* granted, provided that this copyright notice and the original authors's
10* names appear on all copies and supporting documentation. If individual
11* files are separated from this distribution directory structure, this
12* copyright notice must be included. For any other uses of this software,
13* in original or modified form, including but not limited to distribution
14* in whole or in part, specific prior permission must be obtained from
15* MIT. These programs shall not be used, rewritten, or adapted as the
16* basis of a commercial software or hardware product without first
17* obtaining appropriate licenses from David Demirdjian. The author makes
18* no representations about the suitability of this software for any purpose.
19* It is provided "as is" without express or implied warranty.
20*
21**************************************************************************/
22#ifndef _DATASTRUCTURES_H
23#define _DATASTRUCTURES_H
24
25// ********************************************************************
26// ********************************************************************
27// InputImages: structure containing the input images (at a given scale)
28class InputImages {
29public:
30 InputImages();
31 ~InputImages();
32 void alloc(int w, int h, int extra_margin);
33 void deAlloc();
34
35 int numImages; // 2 (pair) or 3
36 unsigned char *subIm_l, *subIm_r, *subIm_t;
37 unsigned char *subIm_l_origin, *subIm_r_origin, *subIm_t_origin;
38};
39
40// **********************************************************************
41// StereoImage: structure representing the depth information (disparity and sub-pixel)
42// at a given scale.
43// This contains in particular: imDepth8u and imDepth32f
44// which contain the disparity images (size width*height, 8bits unsigned char
45// and 32bits float) stored as 1-dim. arrays.
46class StereoImage {
47public:
48 StereoImage();
49 ~StereoImage();
50 void alloc(int w, int h);
51 void deAlloc();
52 void Reset(void);
53
54 void createValidPixelsList(int topmargin);
55 // create some 'borders' around the stereo image
56 void setUndefinedBorders(int leftMargin, int rightMargin);
57 // set the undefined depth value ...
58 void setUndefinedDepthValue(const unsigned char undefined_val);
59
60 void generateDepth32f();
61 void generateDepth8uFromDepth32f();
62
63 // ***** dense representation *************
64 int width,height;
65 // disparity image (8bits unsigned char)
66 unsigned char *imDepth8u, *imDepth8u_origin;
67 // disparity image (32bits float)
68 float *imDepth32f, *imDepth32f_origin;
69
70 // ***** sparse representation *************
71 // index of valid pixels in imDepth
72 int *valid_pixels;
73 short *x, *y;
74 float *depth_float_list;
75 unsigned int m_nGood3DPoints; // nb of valid pixels
76
77 // undefined depth value: all undefined pixels in the disp. image will have this value
78 unsigned char UNDEFINED_DEPTH;
79
80private:
81 int *valid_pixels_origin;
82 short *x_origin, *y_origin;
83 float *depth_float_list_origin;
84};
85
86
87// ***********************************************************************
88// ***********************************************************************
89// ReconstPoints3D: structure representing a 3D Euclidean reconstruction
90class ReconstPoints3D {
91public:
92 ReconstPoints3D();
93 ~ReconstPoints3D();
94 void alloc(int N);
95 void FreeMemoryBuffers(void);
96
97 // I/O functions to load/save a 3D reconstruction
98 int load(char* filename);
99 int save(char* filename);
100
101 // return arrays containing 3-D reconstruction
102 float* getXlist() const;
103 float* getYlist() const;
104 float* getZlist() const;
105 unsigned char* getARGBlist() const; // color (ARGB) list
106 float* getPointSizelist() const; // size of the points
107
108 // return num. of reconstructed points
109 int getNumPoints() const;
110
111 // return 3 images containing X,Y and Z values
112 void getImages_3D(float* X_im, float* Y_im, float* Z_im, const int* valid_pixels);
113
114 friend class Reconst3D;
115
116 // ROI of thte scene
117 float m_fExtentMinX;
118 float m_fExtentMaxX;
119 float m_fExtentMinY;
120 float m_fExtentMaxY;
121 float m_fExtentMinZ;
122 float m_fExtentMaxZ;
123
124protected:
125 // 3D reconstruction
126 float *m_p3DPointsX;
127 float *m_p3DPointsY;
128 float *m_p3DPointsZ;
129 unsigned char *m_p3DPointsC; // list of RGBA values
130 float *m_p3DPointsS; // size of the 3D points
131 unsigned int m_nGood3DPoints; // number of points in the scene
132
133private:
134 // original data pointers
135 float *m_p3DPointsX_origin;
136 float *m_p3DPointsY_origin;
137 float *m_p3DPointsZ_origin;
138};
139
140#endif
Note: See TracBrowser for help on using the repository browser.