ObjectFinderStereo.h
Go to the documentation of this file.
00001 // ****************************************************************************
00002 // This file is part of the Integrating Vision Toolkit (IVT).
00003 //
00004 // The IVT is maintained by the Karlsruhe Institute of Technology (KIT)
00005 // (www.kit.edu) in cooperation with the company Keyetech (www.keyetech.de).
00006 //
00007 // Copyright (C) 2014 Karlsruhe Institute of Technology (KIT).
00008 // All rights reserved.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are met:
00012 //
00013 // 1. Redistributions of source code must retain the above copyright
00014 //    notice, this list of conditions and the following disclaimer.
00015 //
00016 // 2. Redistributions in binary form must reproduce the above copyright
00017 //    notice, this list of conditions and the following disclaimer in the
00018 //    documentation and/or other materials provided with the distribution.
00019 //
00020 // 3. Neither the name of the KIT nor the names of its contributors may be
00021 //    used to endorse or promote products derived from this software
00022 //    without specific prior written permission.
00023 //
00024 // THIS SOFTWARE IS PROVIDED BY THE KIT AND CONTRIBUTORS “AS IS” AND ANY
00025 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00026 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00027 // DISCLAIMED. IN NO EVENT SHALL THE KIT OR CONTRIBUTORS BE LIABLE FOR ANY
00028 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00029 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00030 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00031 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00032 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00033 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00034 // ****************************************************************************
00035 // ****************************************************************************
00036 // Filename:  ObjectFinderStereo.h
00037 // Author:    Pedram Azad
00038 // Date:      2005
00039 // ****************************************************************************
00040 
00041 
00042 #ifndef _OBJECT_FINDER_STEREO_H_
00043 #define _OBJECT_FINDER_STEREO_H_
00044 
00045 
00046 // ****************************************************************************
00047 // Necessary includes
00048 // ****************************************************************************
00049 
00050 #include "Structs/ObjectDefinitions.h"
00051 #include <string>
00052 
00053 
00054 // ****************************************************************************
00055 // Forward declarations
00056 // ****************************************************************************
00057 
00058 class CRegionFilterInterface;
00059 class CObjectEntryFilterInterface;
00060 class CObjectClassifierInterface;
00061 class CObjectFinder;
00062 class CByteImage;
00063 class CCalibration;
00064 class CStereoCalibration;
00065 class CColorParameterSet;
00066 
00067 
00068 
00069 // ****************************************************************************
00070 // CObjectFinderStereo
00071 // ****************************************************************************
00072 
00073 class CObjectFinderStereo
00074 {
00075 public:
00076         // constructor
00077         CObjectFinderStereo();
00078         
00079         // destructor
00080         ~CObjectFinderStereo();
00081         
00082         
00083         // public methods
00084         bool Init(const char *pCameraParameterFileName);
00085         void Init(CStereoCalibration* pStereoCalibration);
00086         
00087         void SetColorParameterSet(const CColorParameterSet *pColorParameterSet);
00088                 
00089         // first call this method for each new image
00090         void PrepareImages(const CByteImage * const *ppImages, float fROIFactor = -1, bool bCalculateHSVImage = true);
00091         
00092         // then for each color call one of the FindObjects-methods
00093         void FindObjects(const CByteImage * const *ppImages, CByteImage **ppResultImages, ObjectColor color, int nMinPointsPerRegion, bool bShowSegmentedImage);
00094         void FindObjects(const CByteImage * const *ppImages, CByteImage **ppResultImages, ObjectColor color, int nMinPointsPerRegion, CByteImage **ppResultSegmentedImages);
00095         void FindObjects(const CByteImage * const *ppImages, CByteImage **ppResultImages, ObjectColor colorName, int hue, int hue_tol, int min_sat, int max_sat, int min_v, int max_v, int nMinPointsPerRegion, bool bShowSegmentedImage);
00096         void FindObjectsInSegmentedImage(const CByteImage * const *ppImages, CByteImage **ppResultImages, ObjectColor color, int nMinPointsPerRegion, bool bShowSegmentedImage);
00097         
00098         // finally call this method
00099         int Finalize(float dMinZDistance, float fMaxZDistance, bool bInputImagesAreRectified, ObjectColor finalizeColor = eNone, float fMaxEpipolarDistance = 10, bool bUseDistortionParameters = true);
00100         
00101         // member access
00102         CByteImage* GetLeftSegmentationResult();
00103         CByteImage* GetRightSegmentationResult();
00104         const CStereoCalibration* GetStereoCalibration() { return m_pStereoCalibration; }
00105         
00106         // use these methods for setting a region/entry filter
00107         void SetRegionFilter(CRegionFilterInterface *pRegionFilter);
00108         void SetObjectEntryFilter(CObjectEntryFilterInterface *pObjectEntryFilter) { m_pObjectEntryFilter = pObjectEntryFilter; }
00109         
00110         // use these methods for manipulating the internal object list
00111         const Object3DList& GetObject3DList() { return m_objectList; }
00112         void ClearObjectList();
00113         void AddObject(const Object3DEntry &entry);
00114         
00115         // use these methods for adding classifiers (mostly not used)
00116         void AddObjectClassifier(CObjectClassifierInterface *pObjectClassifier);
00117         void RemoveObjectClassifier(CObjectClassifierInterface *pObjectClassifier);
00118         void ClearObjectClassifierList();
00119 
00120         // public attributes
00121         Object3DList m_objectList;
00122 
00123 
00124 protected:
00125         // protected methods
00126         void UpdateObjectFinderLists(Object2DList &resultListLeft, Object2DList &resultListRight);
00127         int DetermineMatches(Object2DList &resultListLeft, Object2DList &resultListRight, float fMinZDistance, float fMaxZDistance, bool bInputImagesAreRectified, bool bUseDistortionParameters, ObjectColor finalizeColor, float fMaxYDiff);
00128 
00129         // protected attributes
00130         CObjectFinder *m_pObjectFinderLeft;
00131         CObjectFinder *m_pObjectFinderRight;
00132         CStereoCalibration *m_pStereoCalibration;
00133                 
00134 private:
00135         // private attributes
00136         std::vector<CObjectClassifierInterface*> m_objectClassifierList;
00137         CObjectEntryFilterInterface *m_pObjectEntryFilter;
00138         bool m_bOwnCalibration;
00139 };
00140 
00141 
00142 
00143 #endif /* _OBJECT_FINDER_STEREO_H_ */


asr_ivt
Author(s): Allgeyer Tobias, Hutmacher Robin, Kleinert Daniel, Meißner Pascal, Scholz Jonas, Stöckle Patrick
autogenerated on Thu Jun 6 2019 21:46:57