/* Create a 3D index array into which gradient values are accumulated. After filling array, copy values back into vec. */ void KeySampleVec(float *vec, KKeypoint key, Image grad, Image ori, float scale, float row, float col) { int i, j, k, v; float index[IndexSize][IndexSize][OriSize]; /* Initialize index array. */ for (i = 0; i < IndexSize; i++) for (j = 0; j < IndexSize; j++) for (k = 0; k < OriSize; k++) index[i][j][k] = 0.0; KeySample(index, key, grad, ori, scale, row, col); /* Unwrap the 3D index values into 1D vec. */ v = 0; for (i = 0; i < IndexSize; i++) for (j = 0; j < IndexSize; j++) for (k = 0; k < OriSize; k++) vec[v++] = index[i][j][k]; }
/* Create a 3D index array into which gradient values are accumulated. After filling array, copy values back into vec. */ void KeySampleVec( keypoint& key, const flimage& grad, float scale, float row, float col,siftPar &par) { float index[IndexSize][IndexSize][OriSize]; /* Initialize index array. */ for (int i = 0; i < IndexSize; i++) for (int j = 0; j < IndexSize; j++) for (int k = 0; k < OriSize; k++) index[i][j][k] = 0.0; KeySample(index, key, grad, scale, row, col, par); /* Unwrap the 3D index values into 1D vec. */ int v = 0; for (int i = 0; i < IndexSize; i++) for (int j = 0; j < IndexSize; j++) for (int k = 0; k < OriSize; k++) key.vec[v++] = index[i][j][k]; }