parent
cf08b72646
commit
0d97598754
4 changed files with 39 additions and 354 deletions
@ -1,111 +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__ |
||||
|
||||
namespace cv |
||||
{ |
||||
namespace adas |
||||
{ |
||||
|
||||
/* Compute channel pyramid for acf features
|
||||
|
||||
image — image, for which pyramid should be computed |
||||
|
||||
params — pyramid computing parameters |
||||
|
||||
Returns computed channels in vectors N x CH, |
||||
N — number of scales (outer vector), |
||||
CH — number of channels (inner vectors) |
||||
*/ |
||||
std::vector<std::vector<Mat_<int>>> |
||||
computeChannels(const Mat& image, const ScaleParams& params); |
||||
|
||||
class ACFFeatureEvaluator |
||||
{ |
||||
public: |
||||
/* Construct evaluator, set features to evaluate */ |
||||
ACFFeatureEvaluator(const std::vector<Point>& features); |
||||
|
||||
/* Set channels for feature evaluation */ |
||||
void setChannels(const std::vector<Mat_<int>>& 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 |
||||
*/ |
||||
Mat_<int> evaluateAll() const; |
||||
|
||||
private: |
||||
/* Features to evaluate */ |
||||
std::vector<Point> features_; |
||||
/* Channels for feature evaluation */ |
||||
std::vector<Mat_<int>> 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) |
||||
|
||||
seed — random number generator initializer |
||||
|
||||
Returns vector of distinct acf features |
||||
*/ |
||||
std::vector<Point> |
||||
generateFeatures(Size window_size, size_t count = UINT_MAX, int seed = 0); |
||||
|
||||
} /* namespace adas */ |
||||
} /* namespace cv */ |
||||
|
||||
#endif /* __OPENCV_ADAS_ACFFEATURE_HPP__ */ |
@ -1,105 +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__ |
||||
|
||||
namespace cv |
||||
{ |
||||
namespace adas |
||||
{ |
||||
|
||||
class ICFDetector |
||||
{ |
||||
public: |
||||
/* Initialize detector
|
||||
|
||||
min_obj_size — min possible object size on image in pixels (rows x cols) |
||||
|
||||
max_obj_size — max possible object size on image in pixels (rows x cols) |
||||
|
||||
scales_per_octave — number of images in pyramid while going |
||||
from scale x to scale 2x. Affects on speed |
||||
and quality of the detector |
||||
*/ |
||||
ICFDetector(Size min_obj_size, |
||||
Size max_obj_size, |
||||
int scales_per_octave = 8); |
||||
|
||||
/* Load detector from file, return true on success, false otherwise */ |
||||
bool load(const std::string& filename); |
||||
|
||||
/* Run detector on single image
|
||||
|
||||
image — image for detection |
||||
|
||||
bboxes — output array of bounding boxes in format |
||||
Rect(row_from, col_from, n_rows, n_cols) |
||||
|
||||
confidence_values — output array of confidence values from 0 to 1. |
||||
One value per bbox — confidence of detector that corresponding |
||||
bbox contatins object |
||||
*/ |
||||
void detect(InputArray image, |
||||
std::vector<Rect>& bboxes, |
||||
std::vector<float>& confidence_values) const; |
||||
|
||||
|
||||
/* 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<std::string>& image_filenames, |
||||
const std::vector<std::vector<Rect>>& labelling, |
||||
const 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__ */ |
@ -1,135 +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__ |
||||
|
||||
namespace cv |
||||
{ |
||||
namespace adas |
||||
{ |
||||
|
||||
class Stump |
||||
{ |
||||
public: |
||||
/* 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} |
||||
|
||||
Returns chosen feature index. Feature enumeration starts from 0 |
||||
*/ |
||||
int train(const Mat& data, const Mat& labels); |
||||
|
||||
/* Predict object class given
|
||||
|
||||
value — feature value. Feature must be the same as chose during training |
||||
stump |
||||
|
||||
Returns object class from {-1, +1} |
||||
*/ |
||||
int predict(int value); |
||||
|
||||
private: |
||||
/* Stump decision threshold */ |
||||
int threshold_; |
||||
/* Stump polarity, can be from {-1, +1} */ |
||||
int polarity_; |
||||
/* Stump decision rule:
|
||||
h(value) = polarity * sign(value - threshold) |
||||
*/ |
||||
}; |
||||
|
||||
/* Save Stump to FileStorage */ |
||||
FileStorage& operator<< (FileStorage& out, const Stump& classifier); |
||||
/* Load Stump from FileStorage */ |
||||
FileStorage& operator>> (FileStorage& in, Stump& classifier); |
||||
|
||||
class WaldBoost |
||||
{ |
||||
public: |
||||
/* Initialize WaldBoost cascade with default of specified parameters */ |
||||
WaldBoost(const WaldBoostParams& = WaldBoostParams()); |
||||
|
||||
/* 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<int> 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<ACFFeatureEvaluator>& feature_evaluator); |
||||
|
||||
private: |
||||
/* Parameters for cascade training */ |
||||
WaldBoostParams params_; |
||||
/* Stumps in cascade */ |
||||
std::vector<Stump> stumps_; |
||||
/* Weight for stumps in cascade linear combination */ |
||||
std::vector<float> stump_weights_; |
||||
/* Rejection thresholds for linear combination at every stump evaluation */ |
||||
std::vector<float> thresholds_; |
||||
}; |
||||
|
||||
/* Save WaldBoost to FileStorage */ |
||||
FileStorage& operator<< (FileStorage& out, const WaldBoost& classifier); |
||||
/* Load WaldBoost from FileStorage */ |
||||
FileStorage& operator>> (FileStorage& in, WaldBoost& classifier); |
||||
|
||||
} /* namespace adas */ |
||||
} /* namespace cv */ |
||||
|
||||
#endif /* __OPENCV_ADAS_WALDBOOST_HPP__ */ |
Loading…
Reference in new issue