diff --git a/modules/adas/tools/fcw_train.cpp b/modules/adas/tools/fcw_train.cpp index a24771fe8..fc0f2025f 100644 --- a/modules/adas/tools/fcw_train.cpp +++ b/modules/adas/tools/fcw_train.cpp @@ -17,8 +17,7 @@ using std::stringstream; #include using cv::Rect; -#include -#include +#include using cv::adas::ICFDetectorParams; using cv::adas::ICFDetector; diff --git a/modules/xobjdetect/include/opencv2/xobjdetect.hpp b/modules/xobjdetect/include/opencv2/xobjdetect.hpp index 520f5b375..be490d786 100644 --- a/modules/xobjdetect/include/opencv2/xobjdetect.hpp +++ b/modules/xobjdetect/include/opencv2/xobjdetect.hpp @@ -1,9 +1,227 @@ +/* + +By downloading, copying, installing or using the software you agree to this +license. If you do not agree to this license, do not download, install, +copy or use the software. + + + License Agreement + For Open Source Computer Vision Library + (3-clause BSD License) + +Copyright (C) 2013, OpenCV Foundation, all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the names of the copyright holders nor the names of the contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are +disclaimed. In no event shall copyright holders or contributors be liable for +any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused +and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. + +*/ + #ifndef __OPENCV_XOBJDETECT_XOBJDETECT_HPP__ #define __OPENCV_XOBJDETECT_XOBJDETECT_HPP__ -#include "xobjdetect/stump.hpp" -#include "xobjdetect/waldboost.hpp" -#include "xobjdetect/acffeature.hpp" -#include "xobjdetect/icfdetector.hpp" +#include +#include +#include + +namespace cv +{ +namespace adas +{ + +/* Compute channel pyramid for acf features + + image — image, for which channels should be computed + + channels — output array for computed channels + +*/ +void computeChannels(InputArray image, OutputArrayOfArrays channels); + +class CV_EXPORTS ACFFeatureEvaluator +{ +public: + /* Construct evaluator, set features to evaluate */ + ACFFeatureEvaluator(const std::vector& features); + + /* Set channels for feature evaluation */ + void setChannels(InputArrayOfArrays channels); + + /* Set window position */ + void setPosition(Size position); + + /* Evaluate feature with given index for current channels + and window position */ + int evaluate(size_t feature_ind) const; + + /* Evaluate all features for current channels and window position + + Returns matrix-column of features + */ + void evaluateAll(OutputArray feature_values) const; + +private: + /* Features to evaluate */ + std::vector features_; + /* Channels for feature evaluation */ + std::vector channels_; + /* Channels window position */ + Size position_; +}; + +/* Generate acf features + + window_size — size of window in which features should be evaluated + + count — number of features to generate. + Max number of features is min(count, # possible distinct features) + +Returns vector of distinct acf features +*/ +std::vector +generateFeatures(Size window_size, int count = INT_MAX); + + +struct CV_EXPORTS WaldBoostParams +{ + int weak_count; + float alpha; +}; + + +class CV_EXPORTS Stump +{ +public: + + /* Initialize zero stump */ + Stump(): threshold_(0), polarity_(1), pos_value_(1), neg_value_(-1) {} + + /* Initialize stump with given threshold, polarity + and classification values */ + Stump(int threshold, int polarity, float pos_value, float neg_value): + threshold_(threshold), polarity_(polarity), + pos_value_(pos_value), neg_value_(neg_value) {} + + /* Train stump for given data + + data — matrix of feature values, size M x N, one feature per row + + labels — matrix of sample class labels, size 1 x N. Labels can be from + {-1, +1} + + weights — matrix of sample weights, size 1 x N + + Returns chosen feature index. Feature enumeration starts from 0 + */ + int train(const Mat& data, const Mat& labels, const Mat& weights); + + /* Predict object class given + + value — feature value. Feature must be the same as was chosen + during training stump + + Returns real value, sign(value) means class + */ + float predict(int value); + +private: + /* Stump decision threshold */ + int threshold_; + /* Stump polarity, can be from {-1, +1} */ + int polarity_; + /* Classification values for positive and negative classes */ + float pos_value_, neg_value_; +}; + +class CV_EXPORTS WaldBoost +{ +public: + /* Initialize WaldBoost cascade with default of specified parameters */ + WaldBoost(const WaldBoostParams& params); + + /* Train WaldBoost cascade for given data + + data — matrix of feature values, size M x N, one feature per row + + labels — matrix of sample class labels, size 1 x N. Labels can be from + {-1, +1} + + Returns feature indices chosen for cascade. + Feature enumeration starts from 0 + */ + std::vector train(const Mat& data, + const Mat& labels); + + /* Predict object class given object that can compute object features + + feature_evaluator — object that can compute features by demand + + Returns confidence_value — measure of confidense that object + is from class +1 + */ + float predict(const Ptr& feature_evaluator); + +private: + /* Parameters for cascade training */ + WaldBoostParams params_; + /* Stumps in cascade */ + std::vector stumps_; + /* Rejection thresholds for linear combination at every stump evaluation */ + std::vector thresholds_; +}; + +struct CV_EXPORTS ICFDetectorParams +{ + int feature_count; + int weak_count; + int model_n_rows; + int model_n_cols; + double overlap; +}; + +class CV_EXPORTS ICFDetector +{ +public: + /* Train detector + + image_filenames — filenames of images for training + + labelling — vector of object bounding boxes per every image + + params — parameters for detector training + */ + void train(const std::vector& image_filenames, + const std::vector >& labelling, + ICFDetectorParams params = ICFDetectorParams()); + + /* Save detector in file, return true on success, false otherwise */ + bool save(const std::string& filename); +}; + +} /* namespace adas */ +} /* namespace cv */ + #endif /* __OPENCV_XOBJDETECT_XOBJDETECT_HPP__ */ diff --git a/modules/xobjdetect/include/opencv2/xobjdetect/acffeature.hpp b/modules/xobjdetect/include/opencv2/xobjdetect/acffeature.hpp deleted file mode 100644 index 06832d3e3..000000000 --- a/modules/xobjdetect/include/opencv2/xobjdetect/acffeature.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - -By downloading, copying, installing or using the software you agree to this -license. If you do not agree to this license, do not download, install, -copy or use the software. - - - License Agreement - For Open Source Computer Vision Library - (3-clause BSD License) - -Copyright (C) 2013, OpenCV Foundation, all rights reserved. -Third party copyrights are property of their respective owners. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the names of the copyright holders nor the names of the contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall copyright holders or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused -and on any theory of liability, whether in contract, strict liability, -or tort (including negligence or otherwise) arising in any way out of -the use of this software, even if advised of the possibility of such damage. - -*/ - -#ifndef __OPENCV_ADAS_ACFFEATURE_HPP__ -#define __OPENCV_ADAS_ACFFEATURE_HPP__ - -#include -#include - -namespace cv -{ -namespace adas -{ - -/* Compute channel pyramid for acf features - - image — image, for which channels should be computed - - channels — output array for computed channels - -*/ -void computeChannels(InputArray image, OutputArrayOfArrays channels); - -class CV_EXPORTS ACFFeatureEvaluator -{ -public: - /* Construct evaluator, set features to evaluate */ - ACFFeatureEvaluator(const std::vector& features); - - /* Set channels for feature evaluation */ - void setChannels(InputArrayOfArrays channels); - - /* Set window position */ - void setPosition(Size position); - - /* Evaluate feature with given index for current channels - and window position */ - int evaluate(size_t feature_ind) const; - - /* Evaluate all features for current channels and window position - - Returns matrix-column of features - */ - void evaluateAll(OutputArray feature_values) const; - -private: - /* Features to evaluate */ - std::vector features_; - /* Channels for feature evaluation */ - std::vector channels_; - /* Channels window position */ - Size position_; -}; - -/* Generate acf features - - window_size — size of window in which features should be evaluated - - count — number of features to generate. - Max number of features is min(count, # possible distinct features) - -Returns vector of distinct acf features -*/ -std::vector -generateFeatures(Size window_size, int count = INT_MAX); - -} /* namespace adas */ -} /* namespace cv */ - -#endif /* __OPENCV_ADAS_ACFFEATURE_HPP__ */ diff --git a/modules/xobjdetect/include/opencv2/xobjdetect/icfdetector.hpp b/modules/xobjdetect/include/opencv2/xobjdetect/icfdetector.hpp deleted file mode 100644 index e674c7096..000000000 --- a/modules/xobjdetect/include/opencv2/xobjdetect/icfdetector.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - -By downloading, copying, installing or using the software you agree to this -license. If you do not agree to this license, do not download, install, -copy or use the software. - - - License Agreement - For Open Source Computer Vision Library - (3-clause BSD License) - -Copyright (C) 2013, OpenCV Foundation, all rights reserved. -Third party copyrights are property of their respective owners. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the names of the copyright holders nor the names of the contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall copyright holders or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused -and on any theory of liability, whether in contract, strict liability, -or tort (including negligence or otherwise) arising in any way out of -the use of this software, even if advised of the possibility of such damage. - -*/ - -#ifndef __OPENCV_ADAS_ICFDETECTOR_HPP__ -#define __OPENCV_ADAS_ICFDETECTOR_HPP__ - -#include -#include - -#include - -namespace cv -{ -namespace adas -{ - -struct CV_EXPORTS ICFDetectorParams -{ - int feature_count; - int weak_count; - int model_n_rows; - int model_n_cols; - double overlap; -}; - -class CV_EXPORTS ICFDetector -{ -public: - /* Train detector - - image_filenames — filenames of images for training - - labelling — vector of object bounding boxes per every image - - params — parameters for detector training - */ - void train(const std::vector& image_filenames, - const std::vector >& labelling, - ICFDetectorParams params = ICFDetectorParams()); - - /* Save detector in file, return true on success, false otherwise */ - bool save(const std::string& filename); -}; - -} /* namespace adas */ -} /* namespace cv */ -#endif /* __OPENCV_ADAS_ICFDETECTOR_HPP__ */ diff --git a/modules/xobjdetect/include/opencv2/xobjdetect/stump.hpp b/modules/xobjdetect/include/opencv2/xobjdetect/stump.hpp deleted file mode 100644 index 8afa0080f..000000000 --- a/modules/xobjdetect/include/opencv2/xobjdetect/stump.hpp +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef __OPENCV_ADAS_STUMP_HPP__ -#define __OPENCV_ADAS_STUMP_HPP__ - -#include - -namespace cv -{ -namespace adas -{ - -class CV_EXPORTS Stump -{ -public: - - /* Initialize zero stump */ - Stump(): threshold_(0), polarity_(1), pos_value_(1), neg_value_(-1) {} - - /* Initialize stump with given threshold, polarity - and classification values */ - Stump(int threshold, int polarity, float pos_value, float neg_value): - threshold_(threshold), polarity_(polarity), - pos_value_(pos_value), neg_value_(neg_value) {} - - /* Train stump for given data - - data — matrix of feature values, size M x N, one feature per row - - labels — matrix of sample class labels, size 1 x N. Labels can be from - {-1, +1} - - weights — matrix of sample weights, size 1 x N - - Returns chosen feature index. Feature enumeration starts from 0 - */ - int train(const Mat& data, const Mat& labels, const Mat& weights); - - /* Predict object class given - - value — feature value. Feature must be the same as was chosen - during training stump - - Returns real value, sign(value) means class - */ - float predict(int value); - -private: - /* Stump decision threshold */ - int threshold_; - /* Stump polarity, can be from {-1, +1} */ - int polarity_; - /* Classification values for positive and negative classes */ - float pos_value_, neg_value_; -}; - -} /* namespace adas */ -} /* namespace cv */ - -#endif /* __OPENCV_ADAS_STUMP_HPP__ */ diff --git a/modules/xobjdetect/include/opencv2/xobjdetect/waldboost.hpp b/modules/xobjdetect/include/opencv2/xobjdetect/waldboost.hpp deleted file mode 100644 index de2d06b7b..000000000 --- a/modules/xobjdetect/include/opencv2/xobjdetect/waldboost.hpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - -By downloading, copying, installing or using the software you agree to this -license. If you do not agree to this license, do not download, install, -copy or use the software. - - - License Agreement - For Open Source Computer Vision Library - (3-clause BSD License) - -Copyright (C) 2013, OpenCV Foundation, all rights reserved. -Third party copyrights are property of their respective owners. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the names of the copyright holders nor the names of the contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall copyright holders or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused -and on any theory of liability, whether in contract, strict liability, -or tort (including negligence or otherwise) arising in any way out of -the use of this software, even if advised of the possibility of such damage. - -*/ - -#ifndef __OPENCV_ADAS_WALDBOOST_HPP__ -#define __OPENCV_ADAS_WALDBOOST_HPP__ - -#include - -#include -#include - -namespace cv -{ -namespace adas -{ - -struct CV_EXPORTS WaldBoostParams -{ - int weak_count; - float alpha; -}; - -class CV_EXPORTS WaldBoost -{ -public: - /* Initialize WaldBoost cascade with default of specified parameters */ - WaldBoost(const WaldBoostParams& params); - - /* Train WaldBoost cascade for given data - - data — matrix of feature values, size M x N, one feature per row - - labels — matrix of sample class labels, size 1 x N. Labels can be from - {-1, +1} - - Returns feature indices chosen for cascade. - Feature enumeration starts from 0 - */ - std::vector train(const Mat& data, - const Mat& labels); - - /* Predict object class given object that can compute object features - - feature_evaluator — object that can compute features by demand - - Returns confidence_value — measure of confidense that object - is from class +1 - */ - float predict(const Ptr& feature_evaluator); - -private: - /* Parameters for cascade training */ - WaldBoostParams params_; - /* Stumps in cascade */ - std::vector stumps_; - /* Rejection thresholds for linear combination at every stump evaluation */ - std::vector thresholds_; -}; - -} /* namespace adas */ -} /* namespace cv */ - -#endif /* __OPENCV_ADAS_WALDBOOST_HPP__ */ diff --git a/modules/xobjdetect/src/acffeature.cpp b/modules/xobjdetect/src/acffeature.cpp index 1dfbdd197..3754ffee8 100644 --- a/modules/xobjdetect/src/acffeature.cpp +++ b/modules/xobjdetect/src/acffeature.cpp @@ -1,4 +1,4 @@ -#include +#include using std::vector; diff --git a/modules/xobjdetect/src/icfdetector.cpp b/modules/xobjdetect/src/icfdetector.cpp index 8e24a49cc..e4f33ec8a 100644 --- a/modules/xobjdetect/src/icfdetector.cpp +++ b/modules/xobjdetect/src/icfdetector.cpp @@ -1,5 +1,4 @@ -#include -#include +#include #include diff --git a/modules/xobjdetect/src/stump.cpp b/modules/xobjdetect/src/stump.cpp index d7e11e71c..eec36e058 100644 --- a/modules/xobjdetect/src/stump.cpp +++ b/modules/xobjdetect/src/stump.cpp @@ -1,4 +1,4 @@ -#include +#include namespace cv { diff --git a/modules/xobjdetect/src/waldboost.cpp b/modules/xobjdetect/src/waldboost.cpp index 9224cee57..5cce4c5f2 100644 --- a/modules/xobjdetect/src/waldboost.cpp +++ b/modules/xobjdetect/src/waldboost.cpp @@ -3,7 +3,7 @@ #include using std::swap; -#include +#include using std::vector;