Fawkes API  Fawkes Development Version
triclops.h
1 
2 /***************************************************************************
3  * triclops.h - Stereo processor using the TriclopsSDK
4  *
5  * Created: Fri May 18 16:25:26 2007
6  * Copyright 2007 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef _FIREVISION_STEREO_TRICLOPS_H_
25 #define _FIREVISION_STEREO_TRICLOPS_H_
26 
27 #include <fvstereo/stereo_processor.h>
28 #include <sys/types.h>
29 
30 namespace firevision {
31 
32 class Bumblebee2Camera;
33 class Camera;
34 class TriclopsStereoProcessorData;
35 class RectificationLutInfoBlock;
36 
38 {
39 public:
40  TriclopsStereoProcessor(unsigned int width, unsigned int height, const char *context_file);
42  virtual ~TriclopsStereoProcessor();
43 
44  virtual unsigned int output_image_width();
45  virtual unsigned int output_image_height();
46  virtual bool subpixel_interpolation();
47  virtual bool edge_correlation();
48  virtual bool lowpass();
49  virtual int disparity_range_min();
50  virtual int disparity_range_max();
51  virtual unsigned int edge_masksize();
52  virtual unsigned int stereo_masksize();
53  virtual bool surface_validation();
54  virtual bool texture_validation();
55  virtual unsigned char disparity_mapping_min();
56  virtual unsigned char disparity_mapping_max();
57  virtual bool disparity_mapping();
58 
59  virtual void set_output_image_size(unsigned int width, unsigned int height);
60  virtual void set_subpixel_interpolation(bool enabled);
61  virtual void set_edge_correlation(bool enabled);
62  virtual void set_lowpass(bool enabled);
63  virtual void set_disparity_range(int min, int max);
64  virtual void set_edge_masksize(unsigned int mask_size); // 3-13
65  virtual void set_stereo_masksize(unsigned int mask_size); // 1-15
66  virtual void set_surface_validation(bool enabled);
67  virtual void set_texture_validation(bool enabled);
68  virtual void set_disparity_mapping_range(unsigned char min, unsigned char max);
69  virtual void set_disparity_mapping(bool enabled);
70 
71  virtual bool get_xyz(unsigned int px, unsigned int py, float *x, float *y, float *z);
72 
73  virtual bool get_world_xyz(unsigned int px, unsigned int py, float *x, float *y, float *z);
74 
75  virtual void set_raw_buffer(unsigned char *raw16_buffer);
76  virtual void preprocess_stereo();
77  virtual void calculate_disparity(ROI *roi = 0);
78  virtual void calculate_yuv(bool both = false);
79  virtual unsigned char *disparity_buffer();
80  virtual size_t disparity_buffer_size() const;
81  virtual unsigned char *yuv_buffer_right();
82  virtual unsigned char *yuv_buffer_left();
83 
84  void generate_rectification_lut(const char *lut_file);
85  bool verify_rectification_lut(const char *lut_file);
86 
87  virtual void
88  getall_world_xyz(float ***buffer, int hoff, int voff, int width, int height, float *settings);
89 
90 private:
91  void get_triclops_context_from_camera();
92  void deinterlace_green(unsigned char *src,
93  unsigned char *dest,
94  unsigned int width,
95  unsigned int height);
96 
97  void create_buffers();
98  void setup_triclops();
99 
100 private:
101  Bumblebee2Camera * bb2;
102  TriclopsStereoProcessorData *data;
103 
104  unsigned char *buffer_rgb;
105  unsigned char *buffer_green;
106  unsigned char *buffer_rgb_left;
107  unsigned char *buffer_rgb_right;
108  unsigned char *buffer_rgb_center;
109  unsigned char *buffer_yuv_left;
110  unsigned char *buffer_yuv_right;
111  unsigned char *buffer_yuv_center;
112  unsigned char *_buffer;
113  unsigned char *buffer_deinterlaced;
114  unsigned char *buffer_raw16;
115 
116  unsigned int _width;
117  unsigned int _height;
118 
119  unsigned int _output_image_width;
120  unsigned int _output_image_height;
121 
122  char *_context_file;
123 };
124 
125 } // end namespace firevision
126 
127 #endif
Bumblebee2 camera.
Definition: bumblebee2.h:35
Camera interface for image aquiring devices in FireVision.
Definition: camera.h:33
Region of interest.
Definition: roi.h:55
Stereo processor interface.
Stereo processing using PGR Triclops SDK.
Definition: triclops.h:38
virtual int disparity_range_min()
Get disparity range min value.
Definition: triclops.cpp:427
virtual unsigned char disparity_mapping_min()
Get disparity mapping min value.
Definition: triclops.cpp:493
void generate_rectification_lut(const char *lut_file)
Generate rectification LUT.
Definition: triclops.cpp:821
TriclopsStereoProcessor(unsigned int width, unsigned int height, const char *context_file)
Constructor.
Definition: triclops.cpp:116
virtual bool get_world_xyz(unsigned int px, unsigned int py, float *x, float *y, float *z)
Get transformed coordinates of a point.
Definition: triclops.cpp:758
virtual unsigned char disparity_mapping_max()
Get disparity mapping max value.
Definition: triclops.cpp:504
bool verify_rectification_lut(const char *lut_file)
Verify rectification LUT.
Definition: triclops.cpp:876
virtual bool get_xyz(unsigned int px, unsigned int py, float *x, float *y, float *z)
Get camera-relative coordinates of a point.
Definition: triclops.cpp:723
virtual void set_output_image_size(unsigned int width, unsigned int height)
Set the resolution of the output images.
Definition: triclops.cpp:266
virtual void set_stereo_masksize(unsigned int mask_size)
Set stereo mask.
Definition: triclops.cpp:330
virtual void set_surface_validation(bool enabled)
Enable or disable surface validation.
Definition: triclops.cpp:339
virtual bool texture_validation()
Check state of texture validation.
Definition: triclops.cpp:482
virtual void preprocess_stereo()
Do any pre-processing needed.
Definition: triclops.cpp:523
virtual unsigned int stereo_masksize()
Get stereo mask size.
Definition: triclops.cpp:460
virtual void calculate_disparity(ROI *roi=0)
Caculate disparity images.
Definition: triclops.cpp:546
virtual unsigned int edge_masksize()
Get edge mask size.
Definition: triclops.cpp:449
virtual void set_subpixel_interpolation(bool enabled)
Enable or disable subpixel interpolation.
Definition: triclops.cpp:280
virtual void set_edge_masksize(unsigned int mask_size)
Set edge mask.
Definition: triclops.cpp:320
virtual unsigned char * yuv_buffer_left()
Get YUV-formatted buffer of left camera.
Definition: triclops.cpp:652
virtual unsigned int output_image_height()
Get height of ouput images.
Definition: triclops.cpp:396
virtual void set_disparity_mapping_range(unsigned char min, unsigned char max)
Set disparity mapping range.
Definition: triclops.cpp:358
virtual void calculate_yuv(bool both=false)
Caculate yuv images.
Definition: triclops.cpp:536
virtual unsigned char * yuv_buffer_right()
Get YUV-formatted buffer of reference camera.
Definition: triclops.cpp:658
virtual unsigned int output_image_width()
Get width of ouput images.
Definition: triclops.cpp:387
virtual void set_lowpass(bool enabled)
Enable or disable lowpass filtering before rectification.
Definition: triclops.cpp:299
virtual void set_disparity_mapping(bool enabled)
Enable or disable disparity mapping.
Definition: triclops.cpp:367
virtual size_t disparity_buffer_size() const
Get disparity buffer size.
Definition: triclops.cpp:642
virtual bool lowpass()
Check state of lowpass filtering.
Definition: triclops.cpp:416
virtual void set_disparity_range(int min, int max)
Set disparity range.
Definition: triclops.cpp:309
virtual void getall_world_xyz(float ***buffer, int hoff, int voff, int width, int height, float *settings)
Calculates all three cartesian coordinates of the entire disparity map The values transformed are giv...
Definition: triclops.cpp:977
virtual ~TriclopsStereoProcessor()
Destructor.
Definition: triclops.cpp:222
virtual bool edge_correlation()
Check state of edge correlation.
Definition: triclops.cpp:405
virtual void set_raw_buffer(unsigned char *raw16_buffer)
Set raw buffer.
Definition: triclops.cpp:256
virtual void set_texture_validation(bool enabled)
Enable or disable texture validation.
Definition: triclops.cpp:348
virtual bool subpixel_interpolation()
Check state of subpixel interpolation.
Definition: triclops.cpp:376
virtual void set_edge_correlation(bool enabled)
Enable or disable edge correlation.
Definition: triclops.cpp:290
virtual bool surface_validation()
Check state of surface validation.
Definition: triclops.cpp:471
virtual bool disparity_mapping()
Check state of disparity mapping.
Definition: triclops.cpp:515
virtual unsigned char * disparity_buffer()
Get the disparity image buffer.
Definition: triclops.cpp:632
virtual int disparity_range_max()
Get disparity range max value.
Definition: triclops.cpp:438