OpenCV453
stereo.hpp
1/*M///////////////////////////////////////////////////////////////////////////////////////
2//
3// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4//
5// By downloading, copying, installing or using the software you agree to this license.
6// If you do not agree to this license, do not download, install,
7// copy or use the software.
8//
9//
10// License Agreement
11// For Open Source Computer Vision Library
12//
13// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
16// Third party copyrights are property of their respective owners.
17//
18// Redistribution and use in source and binary forms, with or without modification,
19// are permitted provided that the following conditions are met:
20//
21// * Redistribution's of source code must retain the above copyright notice,
22// this list of conditions and the following disclaimer.
23//
24// * Redistribution's in binary form must reproduce the above copyright notice,
25// this list of conditions and the following disclaimer in the documentation
26// and/or other materials provided with the distribution.
27//
28// * The name of the copyright holders may not be used to endorse or promote products
29// derived from this software without specific prior written permission.
30//
31// This software is provided by the copyright holders and contributors "as is" and
32// any express or implied warranties, including, but not limited to, the implied
33// warranties of merchantability and fitness for a particular purpose are disclaimed.
34// In no event shall the Intel Corporation or contributors be liable for any direct,
35// indirect, incidental, special, exemplary, or consequential damages
36// (including, but not limited to, procurement of substitute goods or services;
37// loss of use, data, or profits; or business interruption) however caused
38// and on any theory of liability, whether in contract, strict liability,
39// or tort (including negligence or otherwise) arising in any way out of
40// the use of this software, even if advised of the possibility of such damage.
41//
42//M*/
43
44#ifndef __OPENCV_STEREO_HPP__
45#define __OPENCV_STEREO_HPP__
46
47#include "opencv2/core.hpp"
48#include "opencv2/stereo/descriptor.hpp"
49#include <opencv2/stereo/quasi_dense_stereo.hpp>
50
56namespace cv
57{
58 namespace stereo
59 {
62
75 class StereoMatcher : public Algorithm
76 {
77 public:
78 enum { DISP_SHIFT = 4,
79 DISP_SCALE = (1 << DISP_SHIFT)
80 };
81
90 virtual void compute( InputArray left, InputArray right,
91 OutputArray disparity ) = 0;
92
93 virtual int getMinDisparity() const = 0;
94 virtual void setMinDisparity(int minDisparity) = 0;
95
96 virtual int getNumDisparities() const = 0;
97 virtual void setNumDisparities(int numDisparities) = 0;
98
99 virtual int getBlockSize() const = 0;
100 virtual void setBlockSize(int blockSize) = 0;
101
102 virtual int getSpeckleWindowSize() const = 0;
103 virtual void setSpeckleWindowSize(int speckleWindowSize) = 0;
104
105 virtual int getSpeckleRange() const = 0;
106 virtual void setSpeckleRange(int speckleRange) = 0;
107
108 virtual int getDisp12MaxDiff() const = 0;
109 virtual void setDisp12MaxDiff(int disp12MaxDiff) = 0;
110
111 };
113 enum {
114 CV_SPECKLE_REMOVAL_ALGORITHM, CV_SPECKLE_REMOVAL_AVG_ALGORITHM
115 };
117 enum{
118 CV_QUADRATIC_INTERPOLATION, CV_SIMETRICV_INTERPOLATION
119 };
124 {
125 public:
126 enum { PREFILTER_NORMALIZED_RESPONSE = 0,
127 PREFILTER_XSOBEL = 1
128 };
129
130 virtual int getPreFilterType() const = 0;
131 virtual void setPreFilterType(int preFilterType) = 0;
132
133 virtual int getPreFilterSize() const = 0;
134 virtual void setPreFilterSize(int preFilterSize) = 0;
135
136 virtual int getPreFilterCap() const = 0;
137 virtual void setPreFilterCap(int preFilterCap) = 0;
138
139 virtual int getTextureThreshold() const = 0;
140 virtual void setTextureThreshold(int textureThreshold) = 0;
141
142 virtual int getUniquenessRatio() const = 0;
143 virtual void setUniquenessRatio(int uniquenessRatio) = 0;
144
145 virtual int getSmallerBlockSize() const = 0;
146 virtual void setSmallerBlockSize(int blockSize) = 0;
147
148 virtual int getScalleFactor() const = 0 ;
149 virtual void setScalleFactor(int factor) = 0;
150
151 virtual int getSpekleRemovalTechnique() const = 0 ;
152 virtual void setSpekleRemovalTechnique(int factor) = 0;
153
154 virtual bool getUsePrefilter() const = 0 ;
155 virtual void setUsePrefilter(bool factor) = 0;
156
157 virtual int getBinaryKernelType() const = 0;
158 virtual void setBinaryKernelType(int value) = 0;
159
160 virtual int getAgregationWindowSize() const = 0;
161 virtual void setAgregationWindowSize(int value) = 0;
175 CV_EXPORTS static Ptr< cv::stereo::StereoBinaryBM > create(int numDisparities = 0, int blockSize = 9);
176 };
177
197 {
198 public:
199 enum
200 {
201 MODE_SGBM = 0,
202 MODE_HH = 1
203 };
204
205 virtual int getPreFilterCap() const = 0;
206 virtual void setPreFilterCap(int preFilterCap) = 0;
207
208 virtual int getUniquenessRatio() const = 0;
209 virtual void setUniquenessRatio(int uniquenessRatio) = 0;
210
211 virtual int getP1() const = 0;
212 virtual void setP1(int P1) = 0;
213
214 virtual int getP2() const = 0;
215 virtual void setP2(int P2) = 0;
216
217 virtual int getMode() const = 0;
218 virtual void setMode(int mode) = 0;
219
220 virtual int getSpekleRemovalTechnique() const = 0 ;
221 virtual void setSpekleRemovalTechnique(int factor) = 0;
222
223 virtual int getBinaryKernelType() const = 0;
224 virtual void setBinaryKernelType(int value) = 0;
225
226 virtual int getSubPixelInterpolationMethod() const = 0;
227 virtual void setSubPixelInterpolationMethod(int value) = 0;
228
266 CV_EXPORTS static Ptr<cv::stereo::StereoBinarySGBM> create(int minDisparity, int numDisparities, int blockSize,
267 int P1 = 100, int P2 = 1000, int disp12MaxDiff = 1,
268 int preFilterCap = 0, int uniquenessRatio = 5,
269 int speckleWindowSize = 400, int speckleRange = 200,
270 int mode = StereoBinarySGBM::MODE_SGBM);
271 };
273 }//stereo
274} // cv
275
276#endif
This type is very similar to InputArray except that it is used for input/output and output function p...
Definition: mat.hpp:295
This is a base class for all more or less complex algorithms in OpenCV
Definition: core.hpp:3091
Class for computing stereo correspondence using the block matching algorithm, introduced and contribu...
Definition: stereo.hpp:124
static CV_EXPORTS Ptr< cv::stereo::StereoBinaryBM > create(int numDisparities=0, int blockSize=9)
Creates StereoBM object
The class implements the modified H. Hirschmuller algorithm that differs from the original one as fo...
Definition: stereo.hpp:197
static CV_EXPORTS Ptr< cv::stereo::StereoBinarySGBM > create(int minDisparity, int numDisparities, int blockSize, int P1=100, int P2=1000, int disp12MaxDiff=1, int preFilterCap=0, int uniquenessRatio=5, int speckleWindowSize=400, int speckleRange=200, int mode=StereoBinarySGBM::MODE_SGBM)
Creates StereoSGBM object
Filters off small noise blobs (speckles) in the disparity map
Definition: stereo.hpp:76
virtual void compute(InputArray left, InputArray right, OutputArray disparity)=0
Computes disparity map for the specified stereo pair
"black box" representation of the file storage associated with a file on disk.
Definition: aruco.hpp:75
Definition: cvstd_wrapper.hpp:74