a834e45c5bee292bb33c8897ff9e54fbf0d353bb
[platform/upstream/opencv.git] / modules / objdetect / src / routine.cpp
1 #include "precomp.hpp"
2 #include "_lsvm_routine.h"
3
4 int allocFilterObject(CvLSVMFilterObject **obj, const int sizeX,
5                       const int sizeY, const int numFeatures)
6 {
7     int i;
8     (*obj) = (CvLSVMFilterObject *)malloc(sizeof(CvLSVMFilterObject));
9     (*obj)->sizeX           = sizeX;
10     (*obj)->sizeY           = sizeY;
11     (*obj)->numFeatures     = numFeatures;
12     (*obj)->fineFunction[0] = 0.0f;
13     (*obj)->fineFunction[1] = 0.0f;
14     (*obj)->fineFunction[2] = 0.0f;
15     (*obj)->fineFunction[3] = 0.0f;
16     (*obj)->V.x         = 0;
17     (*obj)->V.y         = 0;
18     (*obj)->V.l         = 0;
19     (*obj)->H = (float *) malloc(sizeof (float) *
20                                 (sizeX * sizeY  * numFeatures));
21     for(i = 0; i < sizeX * sizeY * numFeatures; i++)
22     {
23         (*obj)->H[i] = 0.0f;
24     }
25     return LATENT_SVM_OK;
26 }
27 int freeFilterObject (CvLSVMFilterObject **obj)
28 {
29     if(*obj == NULL) return LATENT_SVM_MEM_NULL;
30     free((*obj)->H);
31     free(*obj);
32     (*obj) = NULL;
33     return LATENT_SVM_OK;
34 }
35
36 int allocFeatureMapObject(CvLSVMFeatureMap **obj, const int sizeX,
37                           const int sizeY, const int numFeatures)
38 {
39     int i;
40     (*obj) = (CvLSVMFeatureMap *)malloc(sizeof(CvLSVMFeatureMap));
41     (*obj)->sizeX       = sizeX;
42     (*obj)->sizeY       = sizeY;
43     (*obj)->numFeatures = numFeatures;
44     (*obj)->map = (float *) malloc(sizeof (float) *
45                                   (sizeX * sizeY  * numFeatures));
46     for(i = 0; i < sizeX * sizeY * numFeatures; i++)
47     {
48         (*obj)->map[i] = 0.0f;
49     }
50     return LATENT_SVM_OK;
51 }
52 int freeFeatureMapObject (CvLSVMFeatureMap **obj)
53 {
54     if(*obj == NULL) return LATENT_SVM_MEM_NULL;
55     free((*obj)->map);
56     free(*obj);
57     (*obj) = NULL;
58     return LATENT_SVM_OK;
59 }
60
61 int allocFeaturePyramidObject(CvLSVMFeaturePyramid **obj,
62                               const int numLevels)
63 {
64     (*obj) = (CvLSVMFeaturePyramid *)malloc(sizeof(CvLSVMFeaturePyramid));
65     (*obj)->numLevels = numLevels;
66     (*obj)->pyramid    = (CvLSVMFeatureMap **)malloc(
67                          sizeof(CvLSVMFeatureMap *) * numLevels);
68     return LATENT_SVM_OK;
69 }
70
71 int freeFeaturePyramidObject (CvLSVMFeaturePyramid **obj)
72 {
73     int i;
74     if(*obj == NULL) return LATENT_SVM_MEM_NULL;
75     for(i = 0; i < (*obj)->numLevels; i++)
76     {
77         freeFeatureMapObject(&((*obj)->pyramid[i]));
78     }
79     free((*obj)->pyramid);
80     free(*obj);
81     (*obj) = NULL;
82     return LATENT_SVM_OK;
83 }
84
85 int allocFFTImage(CvLSVMFftImage **image, int numFeatures, int dimX, int dimY)
86 {
87     int i, j, size;
88     *image = (CvLSVMFftImage *)malloc(sizeof(CvLSVMFftImage));
89     (*image)->numFeatures = numFeatures;
90     (*image)->dimX         = dimX;
91     (*image)->dimY         = dimY;
92     (*image)->channels     = (float **)malloc(sizeof(float *) * numFeatures);
93     size = 2 * dimX * dimY;
94     for (i = 0; i < numFeatures; i++)
95     {
96         (*image)->channels[i] = (float *)malloc(sizeof(float) * size);
97         for (j = 0; j < size; j++)
98         {
99             (*image)->channels[i][j] = 0.0f;
100         }
101     }
102     return LATENT_SVM_OK;
103 }
104
105 int freeFFTImage(CvLSVMFftImage **image)
106 {
107     int i;
108     if (*image == NULL) return LATENT_SVM_OK;
109     for (i = 0; i < (*image)->numFeatures; i++)
110     {
111         free((*image)->channels[i]);
112         (*image)->channels[i] = NULL;
113     }
114     free((*image)->channels);
115     (*image)->channels = NULL;
116     return LATENT_SVM_OK;
117 }