renamed filterObject -> CvLSVMFilterObject, position -> CvLSVMFilterPosition etc.

This commit is contained in:
Vadim Pisarevsky 2010-10-18 08:49:18 +00:00
parent f4e5ef6a2c
commit bddaa00e03
12 changed files with 137 additions and 135 deletions

View File

@ -153,7 +153,7 @@ typedef struct
unsigned int x; unsigned int x;
unsigned int y; unsigned int y;
unsigned int l; unsigned int l;
} position; } CvLSVMFilterPosition;
// DataType: STRUCT filterObject // DataType: STRUCT filterObject
// Description of the filter, which corresponds to the part of the object // Description of the filter, which corresponds to the part of the object
@ -173,14 +173,14 @@ typedef struct
// size of row in feature vectors // size of row in feature vectors
// (yp = (int) (p / xp); p = xp * yp) // (yp = (int) (p / xp); p = xp * yp)
typedef struct{ typedef struct{
position V; CvLSVMFilterPosition V;
float fineFunction[4]; float fineFunction[4];
unsigned int sizeX; unsigned int sizeX;
unsigned int sizeY; unsigned int sizeY;
unsigned int p; unsigned int p;
unsigned int xp; unsigned int xp;
float *H; float *H;
} filterObject; } CvLSVMFilterObject;
// data type: STRUCT CvLatentSvmDetector // data type: STRUCT CvLatentSvmDetector
// structure contains internal representation of trained Latent SVM detector // structure contains internal representation of trained Latent SVM detector
@ -195,7 +195,7 @@ typedef struct CvLatentSvmDetector
int num_filters; int num_filters;
int num_components; int num_components;
int* num_part_filters; int* num_part_filters;
filterObject** filters; CvLSVMFilterObject** filters;
float* b; float* b;
float score_threshold; float score_threshold;
} }

View File

@ -40,7 +40,7 @@
int getFeaturePyramid(IplImage * image, int getFeaturePyramid(IplImage * image,
const int lambda, const int k, const int lambda, const int k,
const int startX, const int startY, const int startX, const int startY,
const int W, const int H, featurePyramid **maps); const int W, const int H, CvLSVMFeaturePyramid **maps);
/* /*
// Getting feature map for the selected subimage // Getting feature map for the selected subimage
@ -55,7 +55,7 @@ int getFeaturePyramid(IplImage * image,
// RESULT // RESULT
// Error status // Error status
*/ */
int getFeatureMaps_dp(const IplImage * image, const int k, featureMap **map); int getFeatureMaps_dp(const IplImage * image, const int k, CvLSVMFeatureMap **map);
/* /*
@ -71,7 +71,7 @@ int getFeatureMaps_dp(const IplImage * image, const int k, featureMap **map);
// RESULT // RESULT
// Error status // Error status
*/ */
int normalizationAndTruncationFeatureMaps(featureMap *map, const float alfa); int normalizationAndTruncationFeatureMaps(CvLSVMFeatureMap *map, const float alfa);
/* /*
// Feature map reduction // Feature map reduction
@ -87,7 +87,7 @@ int normalizationAndTruncationFeatureMaps(featureMap *map, const float alfa);
// RESULT // RESULT
// Error status // Error status
*/ */
int PCAFeatureMaps(featureMap *map); int PCAFeatureMaps(CvLSVMFeatureMap *map);
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
// search object // search object
@ -172,7 +172,7 @@ int clippingBoxes(int width, int height,
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
featurePyramid* createFeaturePyramidWithBorder(IplImage *image, CvLSVMFeaturePyramid* createFeaturePyramidWithBorder(IplImage *image,
int maxXBorder, int maxYBorder); int maxXBorder, int maxYBorder);
/* /*
@ -204,7 +204,7 @@ featurePyramid* createFeaturePyramidWithBorder(IplImage *image,
// RESULT // RESULT
// Error status // Error status
*/ */
int searchObject(const featurePyramid *H, const filterObject **all_F, int n, int searchObject(const CvLSVMFeaturePyramid *H, const CvLSVMFilterObject **all_F, int n,
float b, float b,
int maxXBorder, int maxXBorder,
int maxYBorder, int maxYBorder,
@ -242,8 +242,8 @@ int searchObject(const featurePyramid *H, const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int searchObjectThreshold(const featurePyramid *H, int searchObjectThreshold(const CvLSVMFeaturePyramid *H,
const filterObject **all_F, int n, const CvLSVMFilterObject **all_F, int n,
float b, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,
@ -278,8 +278,8 @@ int searchObjectThreshold(const featurePyramid *H,
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
int searchObjectThresholdSomeComponents(const featurePyramid *H, int searchObjectThresholdSomeComponents(const CvLSVMFeaturePyramid *H,
const filterObject **filters, const CvLSVMFilterObject **filters,
int kComponents, const int *kPartFilters, int kComponents, const int *kPartFilters,
const float *b, float scoreThreshold, const float *b, float scoreThreshold,
CvPoint **points, CvPoint **oppPoints, CvPoint **points, CvPoint **oppPoints,
@ -336,7 +336,7 @@ int getOppositePoint(CvPoint point,
// Error status // Error status
*/ */
int showRootFilterBoxes(IplImage *image, int showRootFilterBoxes(IplImage *image,
const filterObject *filter, const CvLSVMFilterObject *filter,
CvPoint *points, int *levels, int kPoints, CvPoint *points, int *levels, int kPoints,
CvScalar color, int thickness, CvScalar color, int thickness,
int line_type, int shift); int line_type, int shift);
@ -367,7 +367,7 @@ int showRootFilterBoxes(IplImage *image,
// Error status // Error status
*/ */
int showPartFilterBoxes(IplImage *image, int showPartFilterBoxes(IplImage *image,
const filterObject **filters, const CvLSVMFilterObject **filters,
int n, CvPoint **partsDisplacement, int n, CvPoint **partsDisplacement,
int *levels, int kPoints, int *levels, int kPoints,
CvScalar color, int thickness, CvScalar color, int thickness,

View File

@ -25,7 +25,7 @@
// RESULT // RESULT
// Error status // Error status
*/ */
int convolution(const filterObject *Fi, const featureMap *map, float *f); int convolution(const CvLSVMFilterObject *Fi, const CvLSVMFeatureMap *map, float *f);
/* /*
// Computation multiplication of FFT images // Computation multiplication of FFT images
@ -97,9 +97,9 @@ int addNullableBars(float *rot2PIFilter, int dimX, int dimY,
// RESULT // RESULT
// Error status // Error status
*/ */
int getFFTImageFilterObject(const filterObject *filter, int getFFTImageFilterObject(const CvLSVMFilterObject *filter,
int mapDimX, int mapDimY, int mapDimX, int mapDimY,
fftImage **image); CvLSVMFftImage **image);
/* /*
// Computation FFT image for feature map // Computation FFT image for feature map
@ -111,7 +111,7 @@ int getFFTImageFilterObject(const filterObject *filter,
// RESULT // RESULT
// Error status // Error status
*/ */
int getFFTImageFeatureMap(const featureMap *map, fftImage **image); int getFFTImageFeatureMap(const CvLSVMFeatureMap *map, CvLSVMFftImage **image);
/* /*
// Function for convolution computation using FFT // Function for convolution computation using FFT
@ -128,7 +128,7 @@ int getFFTImageFeatureMap(const featureMap *map, fftImage **image);
// RESULT // RESULT
// Error status // Error status
*/ */
int convFFTConv2d(const fftImage *featMapImage, const fftImage *filterImage, int convFFTConv2d(const CvLSVMFftImage *featMapImage, const CvLSVMFftImage *filterImage,
int filterDimX, int filterDimY, float **conv); int filterDimX, int filterDimY, float **conv);
/* /*
@ -149,7 +149,7 @@ int convFFTConv2d(const fftImage *featMapImage, const fftImage *filterImage,
// RESULT // RESULT
// Error status // Error status
*/ */
int filterDispositionLevel(const filterObject *Fi, const featureMap *pyramid, int filterDispositionLevel(const CvLSVMFilterObject *Fi, const CvLSVMFeatureMap *pyramid,
float **scoreFi, float **scoreFi,
int **pointsX, int **pointsY); int **pointsX, int **pointsY);
@ -171,7 +171,7 @@ int filterDispositionLevel(const filterObject *Fi, const featureMap *pyramid,
// RESULT // RESULT
// Error status // Error status
*/ */
int filterDispositionLevelFFT(const filterObject *Fi, const fftImage *featMapImage, int filterDispositionLevelFFT(const CvLSVMFilterObject *Fi, const CvLSVMFftImage *featMapImage,
float **scoreFi, float **scoreFi,
int **pointsX, int **pointsY); int **pointsX, int **pointsY);
@ -204,7 +204,7 @@ int computeBorderSize(int maxXBorder, int maxYBorder, int *bx, int *by);
// RESULT // RESULT
// Error status // Error status
*/ */
int addNullableBorder(featureMap *map, int bx, int by); int addNullableBorder(CvLSVMFeatureMap *map, int bx, int by);
/* /*
// Computation the maximum of the score function at the level // Computation the maximum of the score function at the level
@ -234,8 +234,8 @@ int addNullableBorder(featureMap *map, int bx, int by);
// RESULT // RESULT
// Error status // Error status
*/ */
int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n, int maxFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float *score, CvPoint **points, int *kPoints, float *score, CvPoint **points, int *kPoints,
@ -271,8 +271,8 @@ int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n, int thresholdFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,
@ -306,8 +306,8 @@ int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int maxFunctionalScore(const filterObject **all_F, int n, int maxFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, float b, const CvLSVMFeaturePyramid *H, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float *score, float *score,
CvPoint **points, int **levels, int *kPoints, CvPoint **points, int **levels, int *kPoints,
@ -343,8 +343,8 @@ int maxFunctionalScore(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int thresholdFunctionalScore(const filterObject **all_F, int n, int thresholdFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
float b, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,
@ -389,7 +389,7 @@ int nonMaximumSuppression(int numBoxes, const CvPoint *points,
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
int getMaxFilterDims(const filterObject **filters, int kComponents, int getMaxFilterDims(const CvLSVMFilterObject **filters, int kComponents,
const int *kPartFilters, const int *kPartFilters,
unsigned int *maxXBorder, unsigned int *maxYBorder); unsigned int *maxXBorder, unsigned int *maxYBorder);
//} //}

View File

@ -12,24 +12,24 @@
// with all fields including arrays // with all fields including arrays
// Error status is return value // Error status is return value
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
int allocFilterObject(filterObject **obj, const int sizeX, const int sizeY, int allocFilterObject(CvLSVMFilterObject **obj, const int sizeX, const int sizeY,
const int p, const int xp); const int p, const int xp);
int freeFilterObject (filterObject **obj); int freeFilterObject (CvLSVMFilterObject **obj);
int allocFeatureMapObject(featureMap **obj, const int sizeX, const int sizeY, int allocFeatureMapObject(CvLSVMFeatureMap **obj, const int sizeX, const int sizeY,
const int p, const int xp); const int p, const int xp);
int freeFeatureMapObject (featureMap **obj); int freeFeatureMapObject (CvLSVMFeatureMap **obj);
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
int allocFeaturePyramidObject(featurePyramid **obj, int allocFeaturePyramidObject(CvLSVMFeaturePyramid **obj,
const int lambda, const int countLevel); const int lambda, const int countLevel);
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
int freeFeaturePyramidObject (featurePyramid **obj); int freeFeaturePyramidObject (CvLSVMFeaturePyramid **obj);
int allocFFTImage(fftImage **image, int p, int dimX, int dimY); int allocFFTImage(CvLSVMFftImage **image, int p, int dimX, int dimY);
int freeFFTImage(fftImage **image); int freeFFTImage(CvLSVMFftImage **image);
#endif #endif

View File

@ -1,17 +1,19 @@
#ifndef SVM_TYPE #ifndef SVM_TYPE
#define SVM_TYPE #define SVM_TYPE
#include "float.h"
//#define FFT_CONV //#define FFT_CONV
// Çíà÷åíèå ÷èñëà PI // Çíà÷åíèå ÷èñëà PI
#define PI 3.1415926535897932384626433832795 #define PI CV_PI
// Òî÷íîñòü ñðàâíåíèÿ ïàðû âåùåñòâåííûõ ÷èñåë // Òî÷íîñòü ñðàâíåíèÿ ïàðû âåùåñòâåííûõ ÷èñåë
#define EPS 0.000001 #define EPS 0.000001
// Ìèíèìàëüíîå è ìàêñèìàëüíîå çíà÷åíèå äëÿ âåùåñòâåííîãî òèïà äàííûõ // Ìèíèìàëüíîå è ìàêñèìàëüíîå çíà÷åíèå äëÿ âåùåñòâåííîãî òèïà äàííûõ
#define F_MAX 3.402823466e+38 #define F_MAX FLT_MAX
#define F_MIN -3.402823465e+38 #define F_MIN -FLT_MAX
// The number of elements in bin // The number of elements in bin
// The number of sectors in gradient histogram building // The number of sectors in gradient histogram building
@ -46,7 +48,7 @@ typedef struct{
int p; int p;
int xp; int xp;
float *Map; float *Map;
} featureMap; } CvLSVMFeatureMap;
// DataType: STRUCT featurePyramid // DataType: STRUCT featurePyramid
// //
@ -56,8 +58,8 @@ typedef struct{
typedef struct{ typedef struct{
int countLevel; int countLevel;
int lambda; int lambda;
featureMap **pyramid; CvLSVMFeatureMap **pyramid;
} featurePyramid; } CvLSVMFeaturePyramid;
// DataType: STRUCT filterDisposition // DataType: STRUCT filterDisposition
// The structure stores preliminary results in optimization process // The structure stores preliminary results in optimization process
@ -70,7 +72,7 @@ typedef struct{
float *score; float *score;
int *x; int *x;
int *y; int *y;
} filterDisposition; } CvLSVMFilterDisposition;
// DataType: STRUCT fftImage // DataType: STRUCT fftImage
// The structure stores FFT image // The structure stores FFT image
@ -84,6 +86,6 @@ typedef struct{
unsigned int dimX; unsigned int dimX;
unsigned int dimY; unsigned int dimY;
float **channels; float **channels;
} fftImage; } CvLSVMFftImage;
#endif #endif

View File

@ -46,7 +46,8 @@
#define EBTAG (STEP_END + BTAG) #define EBTAG (STEP_END + BTAG)
//extern "C" { //extern "C" {
int LSVMparser(const char * filename, filterObject *** model, int *last, int *max, int **comp, float **b, int *count, float * score); int LSVMparser(const char * filename, CvLSVMFilterObject *** model, int *last, int *max,
int **comp, float **b, int *count, float * score);
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
@ -54,7 +55,7 @@ extern "C"
const char *modelPath, const char *modelPath,
filterObject ***filters, CvLSVMFilterObject ***filters,
int *kFilters, int *kFilters,
int *kComponents, int *kComponents,
int **kPartFilters, int **kPartFilters,

View File

@ -29,7 +29,7 @@ int sign(float r){
// RESULT // RESULT
// Error status // Error status
*/ */
int getFeatureMaps_dp(const IplImage * image,const int k, featureMap **map) int getFeatureMaps_dp(const IplImage * image,const int k, CvLSVMFeatureMap **map)
{ {
int sizeX, sizeY; int sizeX, sizeY;
int p, px, strsz; int p, px, strsz;
@ -226,7 +226,7 @@ int getFeatureMaps_dp(const IplImage * image,const int k, featureMap **map)
// RESULT // RESULT
// Error status // Error status
*/ */
int normalizationAndTruncationFeatureMaps(featureMap *map, const float alfa) int normalizationAndTruncationFeatureMaps(CvLSVMFeatureMap *map, const float alfa)
{ {
int i,j, ii; int i,j, ii;
int sizeX, sizeY, p, pos, pp, xp, pos1, pos2; int sizeX, sizeY, p, pos, pp, xp, pos1, pos2;
@ -351,7 +351,7 @@ int normalizationAndTruncationFeatureMaps(featureMap *map, const float alfa)
// RESULT // RESULT
// Error status // Error status
*/ */
int PCAFeatureMaps(featureMap *map) int PCAFeatureMaps(CvLSVMFeatureMap *map)
{ {
int i,j, ii, jj, k; int i,j, ii, jj, k;
int sizeX, sizeY, p, pp, xp, yp, pos1, pos2; int sizeX, sizeY, p, pp, xp, yp, pos1, pos2;
@ -447,7 +447,7 @@ int PCAFeatureMaps(featureMap *map)
int getFeaturePyramid(IplImage * image, int getFeaturePyramid(IplImage * image,
const int lambda, const int k, const int lambda, const int k,
const int startX, const int startY, const int startX, const int startY,
const int W, const int H, featurePyramid **maps) const int W, const int H, CvLSVMFeaturePyramid **maps)
{ {
IplImage *img2, *imgTmp, *imgResize; IplImage *img2, *imgTmp, *imgResize;
float step, tmp; float step, tmp;
@ -455,7 +455,7 @@ int getFeaturePyramid(IplImage * image,
int maxcall; int maxcall;
int i; int i;
int err; int err;
featureMap *map; CvLSVMFeatureMap *map;
//geting subimage //geting subimage
cvSetImageROI(image, cvRect(startX, startY, W, H)); cvSetImageROI(image, cvRect(startX, startY, W, H));
@ -534,7 +534,7 @@ int getFeaturePyramid(IplImage * image,
// RESULT // RESULT
// Error status // Error status
*/ */
int addBordersToFeatureMaps(featureMap *map, const int bX, const int bY){ int addBordersToFeatureMaps(CvLSVMFeatureMap *map, const int bX, const int bY){
int i,j, jj; int i,j, jj;
int sizeX, sizeY, p, pos1, pos2; int sizeX, sizeY, p, pos1, pos2;
float * new_data; float * new_data;

View File

@ -118,13 +118,13 @@ int clippingBoxes(int width, int height,
// RESULT // RESULT
// Feature pyramid with nullable border // Feature pyramid with nullable border
*/ */
featurePyramid* createFeaturePyramidWithBorder(IplImage *image, CvLSVMFeaturePyramid* createFeaturePyramidWithBorder(IplImage *image,
int maxXBorder, int maxYBorder) int maxXBorder, int maxYBorder)
{ {
int opResult; int opResult;
int bx, by; int bx, by;
int level; int level;
featurePyramid *H; CvLSVMFeaturePyramid *H;
// Obtaining feature pyramid // Obtaining feature pyramid
opResult = getFeaturePyramid(image, LAMBDA, SIDE_LENGTH, 0, 0, opResult = getFeaturePyramid(image, LAMBDA, SIDE_LENGTH, 0, 0,
@ -175,7 +175,7 @@ featurePyramid* createFeaturePyramidWithBorder(IplImage *image,
// RESULT // RESULT
// Error status // Error status
*/ */
int searchObject(const featurePyramid *H, const filterObject **all_F, int searchObject(const CvLSVMFeaturePyramid *H, const CvLSVMFilterObject **all_F,
int n, float b, int n, float b,
int maxXBorder, int maxXBorder,
int maxYBorder, int maxYBorder,
@ -265,8 +265,8 @@ int estimateBoxes(CvPoint *points, int *levels, int kPoints,
// RESULT // RESULT
// Error status // Error status
*/ */
int searchObjectThreshold(const featurePyramid *H, int searchObjectThreshold(const CvLSVMFeaturePyramid *H,
const filterObject **all_F, int n, const CvLSVMFilterObject **all_F, int n,
float b, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,
@ -356,7 +356,7 @@ int getOppositePoint(CvPoint point,
// Error status // Error status
*/ */
int showRootFilterBoxes(IplImage *image, int showRootFilterBoxes(IplImage *image,
const filterObject *filter, const CvLSVMFilterObject *filter,
CvPoint *points, int *levels, int kPoints, CvPoint *points, int *levels, int kPoints,
CvScalar color, int thickness, CvScalar color, int thickness,
int line_type, int shift) int line_type, int shift)
@ -404,7 +404,7 @@ int showRootFilterBoxes(IplImage *image,
// Error status // Error status
*/ */
int showPartFilterBoxes(IplImage *image, int showPartFilterBoxes(IplImage *image,
const filterObject **filters, const CvLSVMFilterObject **filters,
int n, CvPoint **partsDisplacement, int n, CvPoint **partsDisplacement,
int *levels, int kPoints, int *levels, int kPoints,
CvScalar color, int thickness, CvScalar color, int thickness,
@ -484,7 +484,7 @@ int showBoxes(IplImage *img,
// RESULT // RESULT
// Error status // Error status
*/ */
int getMaxFilterDims(const filterObject **filters, int kComponents, int getMaxFilterDims(const CvLSVMFilterObject **filters, int kComponents,
const int *kPartFilters, const int *kPartFilters,
unsigned int *maxXBorder, unsigned int *maxYBorder) unsigned int *maxXBorder, unsigned int *maxYBorder)
{ {
@ -532,8 +532,8 @@ int getMaxFilterDims(const filterObject **filters, int kComponents,
// RESULT // RESULT
// Error status // Error status
*/ */
int searchObjectThresholdSomeComponents(const featurePyramid *H, int searchObjectThresholdSomeComponents(const CvLSVMFeaturePyramid *H,
const filterObject **filters, const CvLSVMFilterObject **filters,
int kComponents, const int *kPartFilters, int kComponents, const int *kPartFilters,
const float *b, float scoreThreshold, const float *b, float scoreThreshold,
CvPoint **points, CvPoint **oppPoints, CvPoint **points, CvPoint **oppPoints,

View File

@ -16,7 +16,7 @@
CvLatentSvmDetector* cvLoadLatentSvmDetector(const char* filename) CvLatentSvmDetector* cvLoadLatentSvmDetector(const char* filename)
{ {
CvLatentSvmDetector* detector = 0; CvLatentSvmDetector* detector = 0;
filterObject** filters = 0; CvLSVMFilterObject** filters = 0;
int kFilters = 0; int kFilters = 0;
int kComponents = 0; int kComponents = 0;
int* kPartFilters = 0; int* kPartFilters = 0;
@ -84,7 +84,7 @@ CvSeq* cvLatentSvmDetectObjects(IplImage* image,
CvMemStorage* storage, CvMemStorage* storage,
float overlap_threshold) float overlap_threshold)
{ {
featurePyramid *H = 0; CvLSVMFeaturePyramid *H = 0;
CvPoint *points = 0, *oppPoints = 0; CvPoint *points = 0, *oppPoints = 0;
int kPoints = 0; int kPoints = 0;
float *score = 0; float *score = 0;
@ -97,11 +97,11 @@ CvSeq* cvLatentSvmDetectObjects(IplImage* image,
cvConvertImage(image, image, CV_CVTIMG_SWAP_RB); cvConvertImage(image, image, CV_CVTIMG_SWAP_RB);
// Getting maximum filter dimensions // Getting maximum filter dimensions
getMaxFilterDims((const filterObject**)(detector->filters), detector->num_components, detector->num_part_filters, &maxXBorder, &maxYBorder); getMaxFilterDims((const CvLSVMFilterObject**)(detector->filters), detector->num_components, detector->num_part_filters, &maxXBorder, &maxYBorder);
// Create feature pyramid with nullable border // Create feature pyramid with nullable border
H = createFeaturePyramidWithBorder(image, maxXBorder, maxYBorder); H = createFeaturePyramidWithBorder(image, maxXBorder, maxYBorder);
// Search object // Search object
searchObjectThresholdSomeComponents(H, (const filterObject**)(detector->filters), detector->num_components, searchObjectThresholdSomeComponents(H, (const CvLSVMFilterObject**)(detector->filters), detector->num_components,
detector->num_part_filters, detector->b, detector->score_threshold, detector->num_part_filters, detector->b, detector->score_threshold,
&points, &oppPoints, &score, &kPoints); &points, &oppPoints, &score, &kPoints);
// Clipping boxes // Clipping boxes

View File

@ -163,23 +163,23 @@ int getTeg(char *str){
return sum; return sum;
} }
void addFilter(filterObject *** model, int *last, int *max){ void addFilter(CvLSVMFilterObject *** model, int *last, int *max){
filterObject ** nmodel; CvLSVMFilterObject ** nmodel;
int i; int i;
(*last) ++; (*last) ++;
if((*last) >= (*max)){ if((*last) >= (*max)){
(*max) += 10; (*max) += 10;
nmodel = (filterObject **)malloc(sizeof(filterObject *) * (*max)); nmodel = (CvLSVMFilterObject **)malloc(sizeof(CvLSVMFilterObject *) * (*max));
for(i = 0; i < *last; i++){ for(i = 0; i < *last; i++){
nmodel[i] = (* model)[i]; nmodel[i] = (* model)[i];
} }
free(* model); free(* model);
(*model) = nmodel; (*model) = nmodel;
} }
(*model) [(*last)] = (filterObject *)malloc(sizeof(filterObject)); (*model) [(*last)] = (CvLSVMFilterObject *)malloc(sizeof(CvLSVMFilterObject));
} }
void parserRFilter (FILE * xmlf, int p, filterObject * model, float *b){ void parserRFilter (FILE * xmlf, int p, CvLSVMFilterObject * model, float *b){
int st = 0; int st = 0;
int sizeX, sizeY; int sizeX, sizeY;
int tag; int tag;
@ -278,7 +278,7 @@ void parserRFilter (FILE * xmlf, int p, filterObject * model, float *b){
} }
} }
void parserV (FILE * xmlf, int p, filterObject * model){ void parserV (FILE * xmlf, int p, CvLSVMFilterObject * model){
int st = 0; int st = 0;
int tag; int tag;
int tagVal; int tagVal;
@ -341,7 +341,7 @@ void parserV (FILE * xmlf, int p, filterObject * model){
} }
} }
} }
void parserD (FILE * xmlf, int p, filterObject * model){ void parserD (FILE * xmlf, int p, CvLSVMFilterObject * model){
int st = 0; int st = 0;
int tag; int tag;
int tagVal; int tagVal;
@ -430,7 +430,7 @@ void parserD (FILE * xmlf, int p, filterObject * model){
} }
} }
void parserPFilter (FILE * xmlf, int p, int N_path, filterObject * model){ void parserPFilter (FILE * xmlf, int p, int N_path, CvLSVMFilterObject * model){
int st = 0; int st = 0;
int sizeX, sizeY; int sizeX, sizeY;
int tag; int tag;
@ -524,7 +524,7 @@ void parserPFilter (FILE * xmlf, int p, int N_path, filterObject * model){
} }
} }
} }
void parserPFilterS (FILE * xmlf, int p, filterObject *** model, int *last, int *max){ void parserPFilterS (FILE * xmlf, int p, CvLSVMFilterObject *** model, int *last, int *max){
int st = 0; int st = 0;
int N_path = 0; int N_path = 0;
int tag; int tag;
@ -573,7 +573,7 @@ void parserPFilterS (FILE * xmlf, int p, filterObject *** model, int *last, int
} }
} }
} }
void parserComp (FILE * xmlf, int p, int *N_comp, filterObject *** model, float *b, int *last, int *max){ void parserComp (FILE * xmlf, int p, int *N_comp, CvLSVMFilterObject *** model, float *b, int *last, int *max){
int st = 0; int st = 0;
int tag; int tag;
int tagVal; int tagVal;
@ -623,7 +623,7 @@ void parserComp (FILE * xmlf, int p, int *N_comp, filterObject *** model, float
} }
} }
} }
void parserModel(FILE * xmlf, filterObject *** model, int *last, int *max, int **comp, float **b, int *count, float * score){ void parserModel(FILE * xmlf, CvLSVMFilterObject *** model, int *last, int *max, int **comp, float **b, int *count, float * score){
int p = 0; int p = 0;
int N_comp = 0; int N_comp = 0;
int * cmp; int * cmp;
@ -720,7 +720,7 @@ void parserModel(FILE * xmlf, filterObject *** model, int *last, int *max, int *
} }
} }
int LSVMparser(const char * filename, filterObject *** model, int *last, int *max, int **comp, float **b, int *count, float * score){ int LSVMparser(const char * filename, CvLSVMFilterObject *** model, int *last, int *max, int **comp, float **b, int *count, float * score){
int st = 0; int st = 0;
int tag; int tag;
char ch; char ch;
@ -731,7 +731,7 @@ int LSVMparser(const char * filename, filterObject *** model, int *last, int *ma
(*max) = 10; (*max) = 10;
(*last) = -1; (*last) = -1;
(*model) = (filterObject ** )malloc((sizeof(filterObject * )) * (*max)); (*model) = (CvLSVMFilterObject ** )malloc((sizeof(CvLSVMFilterObject * )) * (*max));
//printf("parse : %s\n", filename); //printf("parse : %s\n", filename);
@ -773,8 +773,7 @@ int LSVMparser(const char * filename, filterObject *** model, int *last, int *ma
int loadModel( int loadModel(
const char *modelPath, const char *modelPath,
CvLSVMFilterObject ***filters,
filterObject ***filters,
int *kFilters, int *kFilters,
int *kComponents, int *kComponents,
int **kPartFilters, int **kPartFilters,

View File

@ -21,7 +21,7 @@
// RESULT // RESULT
// Error status // Error status
*/ */
int convolution(const filterObject *Fi, const featureMap *map, float *f) int convolution(const CvLSVMFilterObject *Fi, const CvLSVMFeatureMap *map, float *f)
{ {
int n1, m1, n2, m2, p, size, diff1, diff2; int n1, m1, n2, m2, p, size, diff1, diff2;
int i1, i2, j1, j2, k; int i1, i2, j1, j2, k;
@ -161,7 +161,7 @@ int addNullableBars(float *rot2PIFilter, int dimX, int dimY,
// Computation FFT image for filter object // Computation FFT image for filter object
// //
// API // API
// int getFFTImageFilterObject(const filterObject *filter, // int getFFTImageFilterObject(const CvLSVMFilterObject *filter,
int mapDimX, int mapDimY, int mapDimX, int mapDimY,
fftImage **image); fftImage **image);
// INPUT // INPUT
@ -172,9 +172,9 @@ int addNullableBars(float *rot2PIFilter, int dimX, int dimY,
// RESULT // RESULT
// Error status // Error status
*/ */
int getFFTImageFilterObject(const filterObject *filter, int getFFTImageFilterObject(const CvLSVMFilterObject *filter,
int mapDimX, int mapDimY, int mapDimX, int mapDimY,
fftImage **image) CvLSVMFftImage **image)
{ {
unsigned int i, mapSize, filterSize; unsigned int i, mapSize, filterSize;
int res; int res;
@ -211,7 +211,7 @@ int getFFTImageFilterObject(const filterObject *filter,
// RESULT // RESULT
// Error status // Error status
*/ */
int getFFTImageFeatureMap(const featureMap *map, fftImage **image) int getFFTImageFeatureMap(const CvLSVMFeatureMap *map, CvLSVMFftImage **image)
{ {
int i, j, size; int i, j, size;
float *buf; float *buf;
@ -246,7 +246,7 @@ int getFFTImageFeatureMap(const featureMap *map, fftImage **image)
// RESULT // RESULT
// Error status // Error status
*/ */
int convFFTConv2d(const fftImage *featMapImage, const fftImage *filterImage, int convFFTConv2d(const CvLSVMFftImage *featMapImage, const CvLSVMFftImage *filterImage,
int filterDimX, int filterDimY, float **conv) int filterDimX, int filterDimY, float **conv)
{ {
int i, j, size, diffX, diffY, index; int i, j, size, diffX, diffY, index;
@ -289,7 +289,7 @@ int convFFTConv2d(const fftImage *featMapImage, const fftImage *filterImage,
// Computation objective function D according the original paper // Computation objective function D according the original paper
// //
// API // API
// int filterDispositionLevel(const filterObject *Fi, const featurePyramid *H, // int filterDispositionLevel(const CvLSVMFilterObject *Fi, const featurePyramid *H,
int level, float **scoreFi, int level, float **scoreFi,
int **pointsX, int **pointsY); int **pointsX, int **pointsY);
// INPUT // INPUT
@ -304,7 +304,7 @@ int convFFTConv2d(const fftImage *featMapImage, const fftImage *filterImage,
// RESULT // RESULT
// Error status // Error status
*/ */
int filterDispositionLevel(const filterObject *Fi, const featureMap *pyramid, int filterDispositionLevel(const CvLSVMFilterObject *Fi, const CvLSVMFeatureMap *pyramid,
float **scoreFi, float **scoreFi,
int **pointsX, int **pointsY) int **pointsX, int **pointsY)
{ {
@ -375,7 +375,7 @@ int filterDispositionLevel(const filterObject *Fi, const featureMap *pyramid,
// Computation objective function D according the original paper using FFT // Computation objective function D according the original paper using FFT
// //
// API // API
// int filterDispositionLevelFFT(const filterObject *Fi, const fftImage *featMapImage, // int filterDispositionLevelFFT(const CvLSVMFilterObject *Fi, const fftImage *featMapImage,
float **scoreFi, float **scoreFi,
int **pointsX, int **pointsY); int **pointsX, int **pointsY);
// INPUT // INPUT
@ -389,7 +389,7 @@ int filterDispositionLevel(const filterObject *Fi, const featureMap *pyramid,
// RESULT // RESULT
// Error status // Error status
*/ */
int filterDispositionLevelFFT(const filterObject *Fi, const fftImage *featMapImage, int filterDispositionLevelFFT(const CvLSVMFilterObject *Fi, const CvLSVMFftImage *featMapImage,
float **scoreFi, float **scoreFi,
int **pointsX, int **pointsY) int **pointsX, int **pointsY)
{ {
@ -397,7 +397,7 @@ int filterDispositionLevelFFT(const filterObject *Fi, const fftImage *featMapIma
float *f; float *f;
int i1, j1; int i1, j1;
int res; int res;
fftImage *filterImage; CvLSVMFftImage *filterImage;
n1 = featMapImage->dimY; n1 = featMapImage->dimY;
m1 = featMapImage->dimX; m1 = featMapImage->dimX;
@ -493,7 +493,7 @@ int computeBorderSize(int maxXBorder, int maxYBorder, int *bx, int *by)
// RESULT // RESULT
// Error status // Error status
*/ */
int addNullableBorder(featureMap *map, int bx, int by) int addNullableBorder(CvLSVMFeatureMap *map, int bx, int by)
{ {
int sizeX, sizeY, i, j, k; int sizeX, sizeY, i, j, k;
float *new_map; float *new_map;
@ -522,12 +522,12 @@ int addNullableBorder(featureMap *map, int bx, int by)
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
featureMap* featureMapBorderPartFilter(featureMap *map, CvLSVMFeatureMap* featureMapBorderPartFilter(CvLSVMFeatureMap *map,
int maxXBorder, int maxYBorder) int maxXBorder, int maxYBorder)
{ {
int bx, by; int bx, by;
int sizeX, sizeY, i, j, k; int sizeX, sizeY, i, j, k;
featureMap *new_map; CvLSVMFeatureMap *new_map;
computeBorderSize(maxXBorder, maxYBorder, &bx, &by); computeBorderSize(maxXBorder, maxYBorder, &bx, &by);
sizeX = map->sizeX + 2 * bx; sizeX = map->sizeX + 2 * bx;
@ -555,7 +555,7 @@ featureMap* featureMapBorderPartFilter(featureMap *map,
// Computation the maximum of the score function at the level // Computation the maximum of the score function at the level
// //
// API // API
// int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n, // int maxFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const featurePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
@ -579,8 +579,8 @@ featureMap* featureMapBorderPartFilter(featureMap *map,
// RESULT // RESULT
// Error status // Error status
*/ */
int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n, int maxFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float *score, CvPoint **points, float *score, CvPoint **points,
@ -588,14 +588,14 @@ int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n,
{ {
int i, j, k, dimX, dimY, nF0, mF0, p; int i, j, k, dimX, dimY, nF0, mF0, p;
int diff1, diff2, index, last, partsLevel; int diff1, diff2, index, last, partsLevel;
filterDisposition **disposition; CvLSVMFilterDisposition **disposition;
float *f; float *f;
float *scores; float *scores;
float sumScorePartDisposition, maxScore; float sumScorePartDisposition, maxScore;
int res; int res;
featureMap *map; CvLSVMFeatureMap *map;
#ifdef FFT_CONV #ifdef FFT_CONV
fftImage *rootFilterImage, *mapImage; CvLSVMFftImage *rootFilterImage, *mapImage;
#else #else
#endif #endif
@ -631,10 +631,10 @@ int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// Allocation memory for saving values of function D // Allocation memory for saving values of function D
// on the level for each part filter // on the level for each part filter
disposition = (filterDisposition **)malloc(sizeof(filterDisposition *) * n); disposition = (CvLSVMFilterDisposition **)malloc(sizeof(CvLSVMFilterDisposition *) * n);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
disposition[i] = (filterDisposition *)malloc(sizeof(filterDisposition)); disposition[i] = (CvLSVMFilterDisposition *)malloc(sizeof(CvLSVMFilterDisposition));
} }
// Allocation memory for values of score function for each block on the level // Allocation memory for values of score function for each block on the level
@ -801,7 +801,7 @@ int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// Computation score function at the level that exceed threshold // Computation score function at the level that exceed threshold
// //
// API // API
// int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n, // int thresholdFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const featurePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
@ -827,8 +827,8 @@ int maxFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n, int thresholdFunctionalScoreFixedLevel(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
int level, float b, int level, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,
@ -837,14 +837,14 @@ int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n,
{ {
int i, j, k, dimX, dimY, nF0, mF0, p; int i, j, k, dimX, dimY, nF0, mF0, p;
int diff1, diff2, index, last, partsLevel; int diff1, diff2, index, last, partsLevel;
filterDisposition **disposition; CvLSVMFilterDisposition **disposition;
float *f; float *f;
float *scores; float *scores;
float sumScorePartDisposition; float sumScorePartDisposition;
int res; int res;
featureMap *map; CvLSVMFeatureMap *map;
#ifdef FFT_CONV #ifdef FFT_CONV
fftImage *rootFilterImage, *mapImage; CvLSVMFftImage *rootFilterImage, *mapImage;
#else #else
#endif #endif
/* /*
@ -879,10 +879,10 @@ int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// Allocation memory for saving values of function D // Allocation memory for saving values of function D
// on the level for each part filter // on the level for each part filter
disposition = (filterDisposition **)malloc(sizeof(filterDisposition *) * n); disposition = (CvLSVMFilterDisposition **)malloc(sizeof(CvLSVMFilterDisposition *) * n);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
disposition[i] = (filterDisposition *)malloc(sizeof(filterDisposition)); disposition[i] = (CvLSVMFilterDisposition *)malloc(sizeof(CvLSVMFilterDisposition));
} }
// Allocation memory for values of score function for each block on the level // Allocation memory for values of score function for each block on the level
@ -1038,7 +1038,7 @@ int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// Computation the maximum of the score function // Computation the maximum of the score function
// //
// API // API
// int maxFunctionalScore(const filterObject **all_F, int n, // int maxFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, float b, const featurePyramid *H, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float *score, float *score,
@ -1061,8 +1061,8 @@ int thresholdFunctionalScoreFixedLevel(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int maxFunctionalScore(const filterObject **all_F, int n, int maxFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, float b, const CvLSVMFeaturePyramid *H, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float *score, float *score,
CvPoint **points, int **levels, int *kPoints, CvPoint **points, int **levels, int *kPoints,
@ -1197,7 +1197,7 @@ int maxFunctionalScore(const filterObject **all_F, int n,
// Computation score function that exceed threshold // Computation score function that exceed threshold
// //
// API // API
// int thresholdFunctionalScore(const filterObject **all_F, int n, // int thresholdFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const featurePyramid *H,
float b, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
@ -1223,8 +1223,8 @@ int maxFunctionalScore(const filterObject **all_F, int n,
// RESULT // RESULT
// Error status // Error status
*/ */
int thresholdFunctionalScore(const filterObject **all_F, int n, int thresholdFunctionalScore(const CvLSVMFilterObject **all_F, int n,
const featurePyramid *H, const CvLSVMFeaturePyramid *H,
float b, float b,
int maxXBorder, int maxYBorder, int maxXBorder, int maxYBorder,
float scoreThreshold, float scoreThreshold,

View File

@ -1,9 +1,9 @@
#include "precomp.hpp" #include "precomp.hpp"
#include "_lsvm_routine.h" #include "_lsvm_routine.h"
int allocFilterObject(filterObject **obj, const int sizeX, const int sizeY, const int p, const int xp){ int allocFilterObject(CvLSVMFilterObject **obj, const int sizeX, const int sizeY, const int p, const int xp){
int i; int i;
(*obj) = (filterObject *)malloc(sizeof(filterObject)); (*obj) = (CvLSVMFilterObject *)malloc(sizeof(CvLSVMFilterObject));
(*obj)->sizeX = sizeX; (*obj)->sizeX = sizeX;
(*obj)->sizeY = sizeY; (*obj)->sizeY = sizeY;
(*obj)->p = p ; (*obj)->p = p ;
@ -21,7 +21,7 @@ int allocFilterObject(filterObject **obj, const int sizeX, const int sizeY, cons
} }
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int freeFilterObject (filterObject **obj){ int freeFilterObject (CvLSVMFilterObject **obj){
if(*obj == NULL) return 0; if(*obj == NULL) return 0;
free((*obj)->H); free((*obj)->H);
free(*obj); free(*obj);
@ -29,9 +29,9 @@ int freeFilterObject (filterObject **obj){
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int allocFeatureMapObject(featureMap **obj, const int sizeX, const int sizeY, const int p, const int xp){ int allocFeatureMapObject(CvLSVMFeatureMap **obj, const int sizeX, const int sizeY, const int p, const int xp){
int i; int i;
(*obj) = (featureMap *)malloc(sizeof(featureMap)); (*obj) = (CvLSVMFeatureMap *)malloc(sizeof(CvLSVMFeatureMap));
(*obj)->sizeX = sizeX; (*obj)->sizeX = sizeX;
(*obj)->sizeY = sizeY; (*obj)->sizeY = sizeY;
(*obj)->p = p ; (*obj)->p = p ;
@ -42,7 +42,7 @@ int allocFeatureMapObject(featureMap **obj, const int sizeX, const int sizeY, co
} }
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int freeFeatureMapObject (featureMap **obj){ int freeFeatureMapObject (CvLSVMFeatureMap **obj){
if(*obj == NULL) return 0; if(*obj == NULL) return 0;
free((*obj)->Map); free((*obj)->Map);
free(*obj); free(*obj);
@ -50,15 +50,15 @@ int freeFeatureMapObject (featureMap **obj){
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int allocFeaturePyramidObject(featurePyramid **obj, const int lambda, const int countLevel){ int allocFeaturePyramidObject(CvLSVMFeaturePyramid **obj, const int lambda, const int countLevel){
(*obj) = (featurePyramid *)malloc(sizeof(featurePyramid)); (*obj) = (CvLSVMFeaturePyramid *)malloc(sizeof(CvLSVMFeaturePyramid));
(*obj)->countLevel = countLevel; (*obj)->countLevel = countLevel;
(*obj)->pyramid = (featureMap **)malloc(sizeof(featureMap *) * countLevel); (*obj)->pyramid = (CvLSVMFeatureMap **)malloc(sizeof(CvLSVMFeatureMap *) * countLevel);
(*obj)->lambda = lambda; (*obj)->lambda = lambda;
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int freeFeaturePyramidObject (featurePyramid **obj){ int freeFeaturePyramidObject (CvLSVMFeaturePyramid **obj){
int i; int i;
if(*obj == NULL) return 0; if(*obj == NULL) return 0;
for(i = 0; i < (*obj)->countLevel; i++) for(i = 0; i < (*obj)->countLevel; i++)
@ -69,10 +69,10 @@ int freeFeaturePyramidObject (featurePyramid **obj){
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int allocFFTImage(fftImage **image, int p, int dimX, int dimY) int allocFFTImage(CvLSVMFftImage **image, int p, int dimX, int dimY)
{ {
int i, j, size; int i, j, size;
*image = (fftImage *)malloc(sizeof(fftImage)); *image = (CvLSVMFftImage *)malloc(sizeof(CvLSVMFftImage));
(*image)->p = p; (*image)->p = p;
(*image)->dimX = dimX; (*image)->dimX = dimX;
(*image)->dimY = dimY; (*image)->dimY = dimY;
@ -89,7 +89,7 @@ int allocFFTImage(fftImage **image, int p, int dimX, int dimY)
return LATENT_SVM_OK; return LATENT_SVM_OK;
} }
int freeFFTImage(fftImage **image) int freeFFTImage(CvLSVMFftImage **image)
{ {
unsigned int i; unsigned int i;
if (*image == NULL) return LATENT_SVM_OK; if (*image == NULL) return LATENT_SVM_OK;