-
Notifications
You must be signed in to change notification settings - Fork 2
/
feature_add_feature.c
61 lines (50 loc) · 1.21 KB
/
feature_add_feature.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "header.h"
#include "proto.h"
void feature_add_feature(
int octave,
int interval,
int i,
int j,
double xinterval,
double xi,
double xj,
double sigma,
double sigma_octave,
double ori,
double *descr,
int descr_nbr,
feat_struct **pfeat_arr,
int *pfeat_nbr
)
{
feat_struct *feat_arr;
int feat_nbr;
feat_arr= (*pfeat_arr);
feat_nbr= (*pfeat_nbr);
if ( feat_nbr == 0 ) {
feat_arr= (feat_struct *)calloc(feat_nbr+1,sizeof(feat_struct));
}
else {
feat_arr= (feat_struct *)realloc(feat_arr,(feat_nbr+1)*sizeof(feat_struct));
}
feat_arr[feat_nbr].octave= octave;
feat_arr[feat_nbr].interval= interval;
feat_arr[feat_nbr].i= i;
feat_arr[feat_nbr].j= j;
feat_arr[feat_nbr].xinterval= xinterval;
feat_arr[feat_nbr].xi= xi;
feat_arr[feat_nbr].xj= xj;
feat_arr[feat_nbr].sigma= sigma;
feat_arr[feat_nbr].sigma_octave= sigma_octave;
feat_arr[feat_nbr].ori= ori;
feat_arr[feat_nbr].descr= descr;
feat_arr[feat_nbr].descr_nbr= descr_nbr;
/*
Compute position w/r to original image and store
*/
feat_arr[feat_nbr].pos_x= ((double)j+xj)*pow(2,(double)octave);
feat_arr[feat_nbr].pos_y= ((double)i+xi)*pow(2,(double)octave);
feat_nbr++;
(*pfeat_arr)= feat_arr;
(*pfeat_nbr)= feat_nbr;
}