/*M/////////////////////////////////////////////////////////////////////////////////////// // // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. // // 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 // // Copyright (C) 2010-2013, University of Nizhny Novgorod, 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: // // * Redistribution's of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistribution's 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. // // * The name of the copyright holders may not 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 the Intel Corporation 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. // //M*/ //Modified from latentsvm module's "_lsvmc_latentsvm.h". /*****************************************************************************/ /* Latent SVM prediction API */ /*****************************************************************************/ #ifndef _FHOG_H_ #define _FHOG_H_ #include //#include "_lsvmc_types.h" //#include "_lsvmc_error.h" //#include "_lsvmc_routine.h" //#include "opencv2/imgproc.hpp" #include "opencv2/imgproc/imgproc_c.h" //modified from "_lsvmc_types.h" // DataType: STRUCT featureMap // FEATURE MAP DESCRIPTION // Rectangular map (sizeX x sizeY), // every cell stores feature vector (dimension = numFeatures) // map - matrix of feature vectors // to set and get feature vectors (i,j) // used formula map[(j * sizeX + i) * p + k], where // k - component of feature vector in cell (i, j) typedef struct{ int sizeX; int sizeY; int numFeatures; float *map; } CvLSVMFeatureMapCaskade; #include "float.h" #define PI CV_PI #define EPS 0.000001 #define F_MAX FLT_MAX #define F_MIN -FLT_MAX // The number of elements in bin // The number of sectors in gradient histogram building #define NUM_SECTOR 9 // The number of levels in image resize procedure // We need Lambda levels to resize image twice #define LAMBDA 10 // Block size. Used in feature pyramid building procedure #define SIDE_LENGTH 8 #define VAL_OF_TRUNCATE 0.2f //modified from "_lsvm_error.h" #define LATENT_SVM_OK 0 #define LATENT_SVM_MEM_NULL 2 #define DISTANCE_TRANSFORM_OK 1 #define DISTANCE_TRANSFORM_GET_INTERSECTION_ERROR -1 #define DISTANCE_TRANSFORM_ERROR -2 #define DISTANCE_TRANSFORM_EQUAL_POINTS -3 #define LATENT_SVM_GET_FEATURE_PYRAMID_FAILED -4 #define LATENT_SVM_SEARCH_OBJECT_FAILED -5 #define LATENT_SVM_FAILED_SUPERPOSITION -6 #define FILTER_OUT_OF_BOUNDARIES -7 #define LATENT_SVM_TBB_SCHEDULE_CREATION_FAILED -8 #define LATENT_SVM_TBB_NUMTHREADS_NOT_CORRECT -9 #define FFT_OK 2 #define FFT_ERROR -10 #define LSVM_PARSER_FILE_NOT_FOUND -11 /* // Getting feature map for the selected subimage // // API // int getFeatureMaps(const IplImage * image, const int k, featureMap **map); // INPUT // image - selected subimage // k - size of cells // OUTPUT // map - feature map // RESULT // Error status */ int getFeatureMaps(const IplImage * image, const int k, CvLSVMFeatureMapCaskade **map); /* // Feature map Normalization and Truncation // // API // int normalizationAndTruncationFeatureMaps(featureMap *map, const float alfa); // INPUT // map - feature map // alfa - truncation threshold // OUTPUT // map - truncated and normalized feature map // RESULT // Error status */ int normalizeAndTruncate(CvLSVMFeatureMapCaskade *map, const float alfa); /* // Feature map reduction // In each cell we reduce dimension of the feature vector // according to original paper special procedure // // API // int PCAFeatureMaps(featureMap *map) // INPUT // map - feature map // OUTPUT // map - feature map // RESULT // Error status */ int PCAFeatureMaps(CvLSVMFeatureMapCaskade *map); //modified from "lsvmc_routine.h" int allocFeatureMapObject(CvLSVMFeatureMapCaskade **obj, const int sizeX, const int sizeY, const int p); int freeFeatureMapObject (CvLSVMFeatureMapCaskade **obj); #endif