2017-10-02 8 views
1

Comment l'HOG (histogramme des dégradés orientés) fonctionne-t-il sur un seul point dans une image? J'utilise la version de Computer Vision Toolbox du descripteur HOG: https://www.mathworks.com/help/vision/ref/extracthogfeatures.html.Calcul de l'histogramme des dégradés orientés sur un seul point

Je veux calculer HOG sur un point spécifique dans une image et quelle est la meilleure taille de cellule et la taille de bloc pour le calcul de HOG sur un seul point?

+0

J'utilise "[features, validPoints] = extractHOGFeatures (I, points)" dans matlab. où les points peuvent M-by-2 matrice de [x, y] coordonnées. voici la référence: https://www.mathworks.com/help/vision/ref/extracthogfeatures.html –

+0

Je comprends. Je vais écrire une réponse. – rayryeng

Répondre

0

Veuillez noter qu'il n'existe pas de descripteur HOG pour un seul point. Le descripteur HOG est un descripteur dense tel que vous obtenez un bloc de pixels qui entoure le point d'intérêt. La fonction extractHOGFeatures prend en entrée une image et éventuellement des coordonnées d'entrée spécifiques sur lesquelles vous souhaitez calculer le descripteur HOG. Ce sont les emplacements (x,y) ou les colonnes et les lignes de l'image dont vous souhaitez calculer le descripteur HOG. Vous spécifiez ceci comme une matrice N x 2 avec chaque ligne étant la coordonnée (x,y) de l'endroit où vous voulez que le descripteur HOG soit calculé. Rappelons que nous calculons le descripteur HOG sur un patch local de pixels. La taille par défaut de ce correctif local ou taille de cellule est 8 x 8 selon l'algorithme de détection des piétons d'origine par Dalal et Triggs. En supposant que nous ignorons le signe de l'orientation dans l'histogramme, le nombre de cases par défaut dans l'histogramme est de 9, ou de considérer les angles par incréments de 20 degrés pour obtenir un total de 180 degrés. Pour chaque patch 8 x 8, nous avons un histogramme de 9 bin. Vous considérez également une composition de cellules qui est un bloc. Chaque bloc est composé d'une grille de cellules, et la valeur par défaut dans MATLAB est une grille de 2 x 2, ce qui en fait une fenêtre de 16 x 16 pixels. Par conséquent, les emplacements que vous spécifiez servent de centre, et nous entourons une fenêtre 16 x 16 autour de ce centre. Vous calculez ensuite quatre histogrammes HOG - un pour chaque cellule du bloc. Comme dernière étape, nous concaténons tous les histogrammes ensemble pour faire un long histogramme, donc 4 x 9 = 36 éléments, et nous normalisons davantage ce vecteur pour calculer le descripteur final représentatif de cette coordonnée.

La sortie est une matrice de N lignes où chaque ligne est le descripteur à l'emplacement central spécifié par la ligne correspondante de la matrice d'emplacement d'entrée. Pour être plus précis, vous obtiendrez une matrice N x 36.

En ce qui concerne la taille de bloc optimale et la taille des cellules, qui dépend de votre application, mais pour la majorité des cas d'utilisation, en particulier dans OpenCV, la valeur par défaut est de prendre une taille de cellule 8 x 8 avec une taille de bloc de 2 x 2 créant ainsi un 16 x 16 patch de pixel. Dalal et Triggs ont expérimenté des cellules et des blocs de tailles différentes et ont trouvé que ces deux tailles étaient les plus optimales pour leur utilisation de la détection des piétons.

+1

beaucoup de confusion est effacée maintenant.Merci beaucoup. –

+0

Vous êtes les bienvenus. J'admets que le descripteur est très déroutant au début. A dû lire beaucoup de tutoriels pour le comprendre. Bonne chance! – rayryeng

+0

Si cela ne vous dérange pas, puis-je poser une autre question qui est spécifiquement liée à la fonction matlab "extractHOGFeature". –