MCPcopy Create free account
hub / github.com/RoboMaster/RoboRTS / normalizeAndTruncate

Function normalizeAndTruncate

roborts_tracking/KCFcpp/src/fhog.cpp:290–399  ·  view source on GitHub ↗

// Feature map Normalization and Truncation // // API // int normalizeAndTruncate(featureMap *map, const float alfa); // INPUT // map - feature map // alfa - truncation threshold // OUTPUT // map - truncated and normalized feature map // RESULT // Error status */

Source from the content-addressed store, hash-verified

288// Error status
289*/
290int normalizeAndTruncate(CvLSVMFeatureMapCaskade *map, const float alfa)
291{
292 int i,j, ii;
293 int sizeX, sizeY, p, pos, pp, xp, pos1, pos2;
294 float * partOfNorm; // norm of C(i, j)
295 float * newData;
296 float valOfNorm;
297
298 sizeX = map->sizeX;
299 sizeY = map->sizeY;
300 partOfNorm = (float *)malloc (sizeof(float) * (sizeX * sizeY));
301
302 p = NUM_SECTOR;
303 xp = NUM_SECTOR * 3;
304 pp = NUM_SECTOR * 12;
305
306 for(i = 0; i < sizeX * sizeY; i++)
307 {
308 valOfNorm = 0.0f;
309 pos = i * map->numFeatures;
310 for(j = 0; j < p; j++)
311 {
312 valOfNorm += map->map[pos + j] * map->map[pos + j];
313 }/*for(j = 0; j < p; j++)*/
314 partOfNorm[i] = valOfNorm;
315 }/*for(i = 0; i < sizeX * sizeY; i++)*/
316
317 sizeX -= 2;
318 sizeY -= 2;
319
320 newData = (float *)malloc (sizeof(float) * (sizeX * sizeY * pp));
321//normalization
322 for(i = 1; i <= sizeY; i++)
323 {
324 for(j = 1; j <= sizeX; j++)
325 {
326 valOfNorm = sqrtf(
327 partOfNorm[(i )*(sizeX + 2) + (j )] +
328 partOfNorm[(i )*(sizeX + 2) + (j + 1)] +
329 partOfNorm[(i + 1)*(sizeX + 2) + (j )] +
330 partOfNorm[(i + 1)*(sizeX + 2) + (j + 1)]) + FLT_EPSILON;
331 pos1 = (i ) * (sizeX + 2) * xp + (j ) * xp;
332 pos2 = (i-1) * (sizeX ) * pp + (j-1) * pp;
333 for(ii = 0; ii < p; ii++)
334 {
335 newData[pos2 + ii ] = map->map[pos1 + ii ] / valOfNorm;
336 }/*for(ii = 0; ii < p; ii++)*/
337 for(ii = 0; ii < 2 * p; ii++)
338 {
339 newData[pos2 + ii + p * 4] = map->map[pos1 + ii + p] / valOfNorm;
340 }/*for(ii = 0; ii < 2 * p; ii++)*/
341 valOfNorm = sqrtf(
342 partOfNorm[(i )*(sizeX + 2) + (j )] +
343 partOfNorm[(i )*(sizeX + 2) + (j + 1)] +
344 partOfNorm[(i - 1)*(sizeX + 2) + (j )] +
345 partOfNorm[(i - 1)*(sizeX + 2) + (j + 1)]) + FLT_EPSILON;
346 for(ii = 0; ii < p; ii++)
347 {

Callers 1

getFeaturesMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected