Opencv 3.1 project on GR-PEACH board
Fork of gr-peach-opencv-project by
opencv_3_1/opencv2/face/facerec.hpp@166:3a9487d57a5c, 2017-06-29 (annotated)
- Committer:
- thedo
- Date:
- Thu Jun 29 11:00:41 2017 +0000
- Revision:
- 166:3a9487d57a5c
This is Opencv 3.1 project on GR-PEACH board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
thedo | 166:3a9487d57a5c | 1 | // This file is part of OpenCV project. |
thedo | 166:3a9487d57a5c | 2 | // It is subject to the license terms in the LICENSE file found in the top-level directory |
thedo | 166:3a9487d57a5c | 3 | // of this distribution and at http://opencv.org/license.html. |
thedo | 166:3a9487d57a5c | 4 | |
thedo | 166:3a9487d57a5c | 5 | // Copyright (c) 2011,2012. Philipp Wagner <bytefish[at]gmx[dot]de>. |
thedo | 166:3a9487d57a5c | 6 | // Third party copyrights are property of their respective owners. |
thedo | 166:3a9487d57a5c | 7 | |
thedo | 166:3a9487d57a5c | 8 | #ifndef __OPENCV_FACEREC_HPP__ |
thedo | 166:3a9487d57a5c | 9 | #define __OPENCV_FACEREC_HPP__ |
thedo | 166:3a9487d57a5c | 10 | |
thedo | 166:3a9487d57a5c | 11 | #include "opencv2/face.hpp" |
thedo | 166:3a9487d57a5c | 12 | #include "opencv2/core.hpp" |
thedo | 166:3a9487d57a5c | 13 | |
thedo | 166:3a9487d57a5c | 14 | namespace cv { namespace face { |
thedo | 166:3a9487d57a5c | 15 | |
thedo | 166:3a9487d57a5c | 16 | //! @addtogroup face |
thedo | 166:3a9487d57a5c | 17 | //! @{ |
thedo | 166:3a9487d57a5c | 18 | |
thedo | 166:3a9487d57a5c | 19 | // base for two classes |
thedo | 166:3a9487d57a5c | 20 | class CV_EXPORTS_W BasicFaceRecognizer : public FaceRecognizer |
thedo | 166:3a9487d57a5c | 21 | { |
thedo | 166:3a9487d57a5c | 22 | public: |
thedo | 166:3a9487d57a5c | 23 | /** @see setNumComponents */ |
thedo | 166:3a9487d57a5c | 24 | CV_WRAP virtual int getNumComponents() const = 0; |
thedo | 166:3a9487d57a5c | 25 | /** @copybrief getNumComponents @see getNumComponents */ |
thedo | 166:3a9487d57a5c | 26 | CV_WRAP virtual void setNumComponents(int val) = 0; |
thedo | 166:3a9487d57a5c | 27 | /** @see setThreshold */ |
thedo | 166:3a9487d57a5c | 28 | CV_WRAP virtual double getThreshold() const = 0; |
thedo | 166:3a9487d57a5c | 29 | /** @copybrief getThreshold @see getThreshold */ |
thedo | 166:3a9487d57a5c | 30 | CV_WRAP virtual void setThreshold(double val) = 0; |
thedo | 166:3a9487d57a5c | 31 | CV_WRAP virtual std::vector<cv::Mat> getProjections() const = 0; |
thedo | 166:3a9487d57a5c | 32 | CV_WRAP virtual cv::Mat getLabels() const = 0; |
thedo | 166:3a9487d57a5c | 33 | CV_WRAP virtual cv::Mat getEigenValues() const = 0; |
thedo | 166:3a9487d57a5c | 34 | CV_WRAP virtual cv::Mat getEigenVectors() const = 0; |
thedo | 166:3a9487d57a5c | 35 | CV_WRAP virtual cv::Mat getMean() const = 0; |
thedo | 166:3a9487d57a5c | 36 | }; |
thedo | 166:3a9487d57a5c | 37 | |
thedo | 166:3a9487d57a5c | 38 | /** |
thedo | 166:3a9487d57a5c | 39 | @param num_components The number of components (read: Eigenfaces) kept for this Principal |
thedo | 166:3a9487d57a5c | 40 | Component Analysis. As a hint: There's no rule how many components (read: Eigenfaces) should be |
thedo | 166:3a9487d57a5c | 41 | kept for good reconstruction capabilities. It is based on your input data, so experiment with the |
thedo | 166:3a9487d57a5c | 42 | number. Keeping 80 components should almost always be sufficient. |
thedo | 166:3a9487d57a5c | 43 | @param threshold The threshold applied in the prediction. |
thedo | 166:3a9487d57a5c | 44 | |
thedo | 166:3a9487d57a5c | 45 | ### Notes: |
thedo | 166:3a9487d57a5c | 46 | |
thedo | 166:3a9487d57a5c | 47 | - Training and prediction must be done on grayscale images, use cvtColor to convert between the |
thedo | 166:3a9487d57a5c | 48 | color spaces. |
thedo | 166:3a9487d57a5c | 49 | - **THE EIGENFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL |
thedo | 166:3a9487d57a5c | 50 | SIZE.** (caps-lock, because I got so many mails asking for this). You have to make sure your |
thedo | 166:3a9487d57a5c | 51 | input data has the correct shape, else a meaningful exception is thrown. Use resize to resize |
thedo | 166:3a9487d57a5c | 52 | the images. |
thedo | 166:3a9487d57a5c | 53 | - This model does not support updating. |
thedo | 166:3a9487d57a5c | 54 | |
thedo | 166:3a9487d57a5c | 55 | ### Model internal data: |
thedo | 166:3a9487d57a5c | 56 | |
thedo | 166:3a9487d57a5c | 57 | - num_components see createEigenFaceRecognizer. |
thedo | 166:3a9487d57a5c | 58 | - threshold see createEigenFaceRecognizer. |
thedo | 166:3a9487d57a5c | 59 | - eigenvalues The eigenvalues for this Principal Component Analysis (ordered descending). |
thedo | 166:3a9487d57a5c | 60 | - eigenvectors The eigenvectors for this Principal Component Analysis (ordered by their |
thedo | 166:3a9487d57a5c | 61 | eigenvalue). |
thedo | 166:3a9487d57a5c | 62 | - mean The sample mean calculated from the training data. |
thedo | 166:3a9487d57a5c | 63 | - projections The projections of the training data. |
thedo | 166:3a9487d57a5c | 64 | - labels The threshold applied in the prediction. If the distance to the nearest neighbor is |
thedo | 166:3a9487d57a5c | 65 | larger than the threshold, this method returns -1. |
thedo | 166:3a9487d57a5c | 66 | */ |
thedo | 166:3a9487d57a5c | 67 | CV_EXPORTS_W Ptr<BasicFaceRecognizer> createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); |
thedo | 166:3a9487d57a5c | 68 | |
thedo | 166:3a9487d57a5c | 69 | /** |
thedo | 166:3a9487d57a5c | 70 | @param num_components The number of components (read: Fisherfaces) kept for this Linear |
thedo | 166:3a9487d57a5c | 71 | Discriminant Analysis with the Fisherfaces criterion. It's useful to keep all components, that |
thedo | 166:3a9487d57a5c | 72 | means the number of your classes c (read: subjects, persons you want to recognize). If you leave |
thedo | 166:3a9487d57a5c | 73 | this at the default (0) or set it to a value less-equal 0 or greater (c-1), it will be set to the |
thedo | 166:3a9487d57a5c | 74 | correct number (c-1) automatically. |
thedo | 166:3a9487d57a5c | 75 | @param threshold The threshold applied in the prediction. If the distance to the nearest neighbor |
thedo | 166:3a9487d57a5c | 76 | is larger than the threshold, this method returns -1. |
thedo | 166:3a9487d57a5c | 77 | |
thedo | 166:3a9487d57a5c | 78 | ### Notes: |
thedo | 166:3a9487d57a5c | 79 | |
thedo | 166:3a9487d57a5c | 80 | - Training and prediction must be done on grayscale images, use cvtColor to convert between the |
thedo | 166:3a9487d57a5c | 81 | color spaces. |
thedo | 166:3a9487d57a5c | 82 | - **THE FISHERFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL |
thedo | 166:3a9487d57a5c | 83 | SIZE.** (caps-lock, because I got so many mails asking for this). You have to make sure your |
thedo | 166:3a9487d57a5c | 84 | input data has the correct shape, else a meaningful exception is thrown. Use resize to resize |
thedo | 166:3a9487d57a5c | 85 | the images. |
thedo | 166:3a9487d57a5c | 86 | - This model does not support updating. |
thedo | 166:3a9487d57a5c | 87 | |
thedo | 166:3a9487d57a5c | 88 | ### Model internal data: |
thedo | 166:3a9487d57a5c | 89 | |
thedo | 166:3a9487d57a5c | 90 | - num_components see createFisherFaceRecognizer. |
thedo | 166:3a9487d57a5c | 91 | - threshold see createFisherFaceRecognizer. |
thedo | 166:3a9487d57a5c | 92 | - eigenvalues The eigenvalues for this Linear Discriminant Analysis (ordered descending). |
thedo | 166:3a9487d57a5c | 93 | - eigenvectors The eigenvectors for this Linear Discriminant Analysis (ordered by their |
thedo | 166:3a9487d57a5c | 94 | eigenvalue). |
thedo | 166:3a9487d57a5c | 95 | - mean The sample mean calculated from the training data. |
thedo | 166:3a9487d57a5c | 96 | - projections The projections of the training data. |
thedo | 166:3a9487d57a5c | 97 | - labels The labels corresponding to the projections. |
thedo | 166:3a9487d57a5c | 98 | */ |
thedo | 166:3a9487d57a5c | 99 | CV_EXPORTS_W Ptr<BasicFaceRecognizer> createFisherFaceRecognizer(int num_components = 0, double threshold = DBL_MAX); |
thedo | 166:3a9487d57a5c | 100 | |
thedo | 166:3a9487d57a5c | 101 | class CV_EXPORTS_W LBPHFaceRecognizer : public FaceRecognizer |
thedo | 166:3a9487d57a5c | 102 | { |
thedo | 166:3a9487d57a5c | 103 | public: |
thedo | 166:3a9487d57a5c | 104 | /** @see setGridX */ |
thedo | 166:3a9487d57a5c | 105 | CV_WRAP virtual int getGridX() const = 0; |
thedo | 166:3a9487d57a5c | 106 | /** @copybrief getGridX @see getGridX */ |
thedo | 166:3a9487d57a5c | 107 | CV_WRAP virtual void setGridX(int val) = 0; |
thedo | 166:3a9487d57a5c | 108 | /** @see setGridY */ |
thedo | 166:3a9487d57a5c | 109 | CV_WRAP virtual int getGridY() const = 0; |
thedo | 166:3a9487d57a5c | 110 | /** @copybrief getGridY @see getGridY */ |
thedo | 166:3a9487d57a5c | 111 | CV_WRAP virtual void setGridY(int val) = 0; |
thedo | 166:3a9487d57a5c | 112 | /** @see setRadius */ |
thedo | 166:3a9487d57a5c | 113 | CV_WRAP virtual int getRadius() const = 0; |
thedo | 166:3a9487d57a5c | 114 | /** @copybrief getRadius @see getRadius */ |
thedo | 166:3a9487d57a5c | 115 | CV_WRAP virtual void setRadius(int val) = 0; |
thedo | 166:3a9487d57a5c | 116 | /** @see setNeighbors */ |
thedo | 166:3a9487d57a5c | 117 | CV_WRAP virtual int getNeighbors() const = 0; |
thedo | 166:3a9487d57a5c | 118 | /** @copybrief getNeighbors @see getNeighbors */ |
thedo | 166:3a9487d57a5c | 119 | CV_WRAP virtual void setNeighbors(int val) = 0; |
thedo | 166:3a9487d57a5c | 120 | /** @see setThreshold */ |
thedo | 166:3a9487d57a5c | 121 | CV_WRAP virtual double getThreshold() const = 0; |
thedo | 166:3a9487d57a5c | 122 | /** @copybrief getThreshold @see getThreshold */ |
thedo | 166:3a9487d57a5c | 123 | CV_WRAP virtual void setThreshold(double val) = 0; |
thedo | 166:3a9487d57a5c | 124 | CV_WRAP virtual std::vector<cv::Mat> getHistograms() const = 0; |
thedo | 166:3a9487d57a5c | 125 | CV_WRAP virtual cv::Mat getLabels() const = 0; |
thedo | 166:3a9487d57a5c | 126 | }; |
thedo | 166:3a9487d57a5c | 127 | |
thedo | 166:3a9487d57a5c | 128 | /** |
thedo | 166:3a9487d57a5c | 129 | @param radius The radius used for building the Circular Local Binary Pattern. The greater the |
thedo | 166:3a9487d57a5c | 130 | radius, the |
thedo | 166:3a9487d57a5c | 131 | @param neighbors The number of sample points to build a Circular Local Binary Pattern from. An |
thedo | 166:3a9487d57a5c | 132 | appropriate value is to use `8` sample points. Keep in mind: the more sample points you include, |
thedo | 166:3a9487d57a5c | 133 | the higher the computational cost. |
thedo | 166:3a9487d57a5c | 134 | @param grid_x The number of cells in the horizontal direction, 8 is a common value used in |
thedo | 166:3a9487d57a5c | 135 | publications. The more cells, the finer the grid, the higher the dimensionality of the resulting |
thedo | 166:3a9487d57a5c | 136 | feature vector. |
thedo | 166:3a9487d57a5c | 137 | @param grid_y The number of cells in the vertical direction, 8 is a common value used in |
thedo | 166:3a9487d57a5c | 138 | publications. The more cells, the finer the grid, the higher the dimensionality of the resulting |
thedo | 166:3a9487d57a5c | 139 | feature vector. |
thedo | 166:3a9487d57a5c | 140 | @param threshold The threshold applied in the prediction. If the distance to the nearest neighbor |
thedo | 166:3a9487d57a5c | 141 | is larger than the threshold, this method returns -1. |
thedo | 166:3a9487d57a5c | 142 | |
thedo | 166:3a9487d57a5c | 143 | ### Notes: |
thedo | 166:3a9487d57a5c | 144 | |
thedo | 166:3a9487d57a5c | 145 | - The Circular Local Binary Patterns (used in training and prediction) expect the data given as |
thedo | 166:3a9487d57a5c | 146 | grayscale images, use cvtColor to convert between the color spaces. |
thedo | 166:3a9487d57a5c | 147 | - This model supports updating. |
thedo | 166:3a9487d57a5c | 148 | |
thedo | 166:3a9487d57a5c | 149 | ### Model internal data: |
thedo | 166:3a9487d57a5c | 150 | |
thedo | 166:3a9487d57a5c | 151 | - radius see createLBPHFaceRecognizer. |
thedo | 166:3a9487d57a5c | 152 | - neighbors see createLBPHFaceRecognizer. |
thedo | 166:3a9487d57a5c | 153 | - grid_x see createLBPHFaceRecognizer. |
thedo | 166:3a9487d57a5c | 154 | - grid_y see createLBPHFaceRecognizer. |
thedo | 166:3a9487d57a5c | 155 | - threshold see createLBPHFaceRecognizer. |
thedo | 166:3a9487d57a5c | 156 | - histograms Local Binary Patterns Histograms calculated from the given training data (empty if |
thedo | 166:3a9487d57a5c | 157 | none was given). |
thedo | 166:3a9487d57a5c | 158 | - labels Labels corresponding to the calculated Local Binary Patterns Histograms. |
thedo | 166:3a9487d57a5c | 159 | */ |
thedo | 166:3a9487d57a5c | 160 | CV_EXPORTS_W Ptr<LBPHFaceRecognizer> createLBPHFaceRecognizer(int radius=1, int neighbors=8, int grid_x=8, int grid_y=8, double threshold = DBL_MAX); |
thedo | 166:3a9487d57a5c | 161 | |
thedo | 166:3a9487d57a5c | 162 | //! @} |
thedo | 166:3a9487d57a5c | 163 | |
thedo | 166:3a9487d57a5c | 164 | }} //namespace cv::face |
thedo | 166:3a9487d57a5c | 165 | |
thedo | 166:3a9487d57a5c | 166 | #endif //__OPENCV_FACEREC_HPP__ |
thedo | 166:3a9487d57a5c | 167 |