IVT
StereoMatcher.h
Go to the documentation of this file.
1 // ****************************************************************************
2 // This file is part of the Integrating Vision Toolkit (IVT).
3 //
4 // The IVT is maintained by the Karlsruhe Institute of Technology (KIT)
5 // (www.kit.edu) in cooperation with the company Keyetech (www.keyetech.de).
6 //
7 // Copyright (C) 2014 Karlsruhe Institute of Technology (KIT).
8 // All rights reserved.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are met:
12 //
13 // 1. Redistributions of source code must retain the above copyright
14 // notice, this list of conditions and the following disclaimer.
15 //
16 // 2. Redistributions in binary form must reproduce the above copyright
17 // notice, this list of conditions and the following disclaimer in the
18 // documentation and/or other materials provided with the distribution.
19 //
20 // 3. Neither the name of the KIT nor the names of its contributors may be
21 // used to endorse or promote products derived from this software
22 // without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE KIT AND CONTRIBUTORS “AS IS” AND ANY
25 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 // DISCLAIMED. IN NO EVENT SHALL THE KIT OR CONTRIBUTORS BE LIABLE FOR ANY
28 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 // ****************************************************************************
35 // ****************************************************************************
36 // Filename: StereoMatcher.h
37 // Author: Pedram Azad
38 // Date: 12.03.2007
39 // ****************************************************************************
40 
41 
42 #ifndef _STEREO_MATCHER_H_
43 #define _STEREO_MATCHER_H_
44 
45 
46 // ****************************************************************************
47 // Forward declarations
48 // ****************************************************************************
49 
50 class CStereoCalibration;
51 class CByteImage;
52 struct Vec2d;
53 struct Vec3d;
54 
55 
56 
57 // ****************************************************************************
58 // CStereoMatcher
59 // ****************************************************************************
60 
79 {
80 public:
87 
92 
93 
105  bool LoadCameraParameters(const char *pCameraParameterFileName);
106 
116  void InitCameraParameters(CStereoCalibration *pStereoCalibration, bool bCloneCalibration);
117 
130  int GetDisparityEstimate(const float z);
131 
162  int Match(const CByteImage *pLeftImage, const CByteImage *pRightImage, int x, int y, int nWindowSize, int d1, int d2, Vec2d &result, Vec3d &result_3d, float fThreshold, bool bInputImagesAreUndistorted = false);
163 
193  int MatchZSAD(const CByteImage *pLeftImage, const CByteImage *pRightImage, int x, int y, int nWindowSize, int d1, int d2, Vec2d &result, Vec3d &result_3d, float fThreshold, bool bInputImagesAreUndistorted = false);
194 
195 
196 private:
197  // private methods
198  int SingleZNCC(const CByteImage *pInputImage1, const CByteImage *pInputImage2, int x, int y, int nWindowSize, int d1, int d2, float *values);
199  int SingleZSAD(const CByteImage *pInputImage1, const CByteImage *pInputImage2, int x, int y, int nWindowSize, int d1, int d2, float *values);
200 
201  // private attributes
202  CStereoCalibration *m_pStereoCalibration;
203  bool m_bOwnStereoCalibrationObject;
204 };
205 
206 
207 
208 #endif /* _STEREO_MATCHER_H_ */
int MatchZSAD(const CByteImage *pLeftImage, const CByteImage *pRightImage, int x, int y, int nWindowSize, int d1, int d2, Vec2d &result, Vec3d &result_3d, float fThreshold, bool bInputImagesAreUndistorted=false)
Computes a disparity estimated for a given z-distance using the Zero-Mean Sum of Absolute Differences...
Data structure for the representation of a 2D vector.
Definition: Math2d.h:82
bool LoadCameraParameters(const char *pCameraParameterFileName)
Initializes the internally used camera model, given a file path to a camera parameter file...
void InitCameraParameters(CStereoCalibration *pStereoCalibration, bool bCloneCalibration)
Initializes the internally used camera model, given an instance of CStereoCalibration.
CStereoMatcher()
The default constructor (and only constructor).
Class for computing matches for individual points in stereo image pairs.
Definition: StereoMatcher.h:78
Data structure for the representation of a 3D vector.
Definition: Math3d.h:73
int Match(const CByteImage *pLeftImage, const CByteImage *pRightImage, int x, int y, int nWindowSize, int d1, int d2, Vec2d &result, Vec3d &result_3d, float fThreshold, bool bInputImagesAreUndistorted=false)
Computes a disparity estimated for a given z-distance using the Zero-Mean Normalized Cross Correlatio...
int GetDisparityEstimate(const float z)
Computes a disparity estimated for a given z-distance.
Data structure for the representation of 8-bit grayscale images and 24-bit RGB (or HSV) color images ...
Definition: ByteImage.h:80
Camera model and functions for a stereo camera system.
~CStereoMatcher()
The destructor.