Il existe plusieurs tentatives pour optimiser le calcul du descripteur HOG en utilisant des instructions SIMD: OpenCV, Dlib et Simd. Tous utilisent le code scalaire pour ajouter amplitude résultant à histogramme HOG:Optimisation HOG avec utilisation de SIMD
float histogram[height/8][width/8][18];
float ky[height], kx[width];
int idx[size];
float val[size];
for(size_t i = 0; i < size; ++i)
{
histogram[y/8][x/8][idx[i]] += val[i]*ky[y]*kx[x];
histogram[y/8][x/8 + 1][idx[i]] += val[i]*ky[y]*kx[x + 1];
histogram[y/8 + 1][x/8][idx[i]] += val[i]*ky[y + 1]*kx[x];
histogram[y/8 + 1][x/8 + 1][idx[i]] += val[i]*ky[y + 1]*kx[x + 1];
}
Il la valeur de size
dépend de la mise en œuvre, mais en général, le sens est le même.
Je sais que le problème de histogram calculation with using of SIMD n'a pas une solution simple et efficace. Mais dans ce cas, nous avons une petite taille (18) d'histogramme. Peut-il aider dans les optimisations SIMD?
Vous pourriez trouver [cet article] (http://ieeexplore.ieee.org/document/4429976/) utile – Martin