Apprendre à comprendre comment la direction de gradient d'image histogramme (histogramme de gradient)

Lei Note du réseau Feng: L'auteur Slyne_D, contenue dans l'auteur du livre original Jane maison, Lei Feng Publié avec la permission.

Cet article traduit Histogramme de l'article orienté Dégradés.

Descripteur Feature (Descriptor Feature)

Dans lequel le descripteur d'image est exprimée, les informations utiles, a perdu des informations non pertinentes extraites. Typiquement, un descripteur de fonctionnalité w * h * 3 (largeur et hauteur 3, 3 canaux) image en un vecteur de longueur n / matrice. Par exemple, une image de 128 * 64 * 3, l'image est convertie et la longueur du vecteur de sortie peut être 3780.

Caractéristiques ce qui est utile? Supposons que nous voulons prévoir des vêtements au-dessus d'une image à l'intérieur des boutons, des boutons sont généralement rondes, mais il y a quelques trous dans le haut, vous pouvez utiliser la détection de bord (détecteur de bord), l'image devient seulement le bord de l'image, puis vous pouvez facilement distinguer, alors ce tableau est utile pour obtenir des informations de bord, les informations de couleur est d'aucune utilité. Et les bonnes caractéristiques devraient être en mesure de faire la différence de boutons circulaires et d'autres choses.

Histogramme de gradient orienté (le HOG), la direction du gradient est utilisé comme caractéristique de distribution. Gradient le long de la direction d'un X et l'image de Y est utile parce que les valeurs de gradient du bord et le point d'angle est grand, et nous savons que les informations de forme de coin bord contient un grand nombre d'objets.

(HOG fonctions peuvent ne pas être limité à une longueur de descripteur, il peut être dans de nombreuses autres longueurs, où seulement une méthode de calcul de l'enregistrement).

Comment calculer Histogramme de Dégradés Oriented il?

Nous allons d'abord utiliser une image de patch pour expliquer.

La première étape: prétraitement

Patch peut être de toute taille, mais il y a un rapport fixe, par exemple lorsque le rapport d'aspect de patch de 1: 2, et que la taille du timbre peut être de 100 * 200, 128 * 256 ou 1000 * 2000 * 205101 mais ne sont pas.

Il est de 720 * carte 475, nous choisissons la taille de timbre de 100 * 200 pour calculer les caractéristiques HOG, de retirer le patch de l'intérieur de l'image, puis d'ajuster la taille de 64 * 128.

hog_preprocess

Deuxième étape: calculer une image de gradient

Tout d'abord on calcule un gradient horizontal et vertical, le calcul de l'histogramme de gradient à nouveau. la taille du noyau peut être utilisée pour calculer les deux ci-dessous noyau, qui peut être directement utilisé comme opérateur de Sobel 1 OpenCV calculé.

horizontal_vertical_gradient_kernel

Code d'appel OpenCV est le suivant:

// C ++ calcul de gradient.

// Lire l'image

Mat img = imread ( "bolt.png");

img.convertTo (img, CV_32F, 1 / 255,0);

// Calcul des gradients gx, gy

Mat gx, gy;

Sobel (img, gx, CV_32F, 1, 0, 1);

Sobel (img, gy, CV_32F, 0, 1, 1);

# Calcul de gradient python

# Lire imageim = cv2.imread ( 'bolt.png')

im = np.float32 (im) / 255,0

# Calculer gradient

gx = cv2.Sobel (img, cv2.CV_32F, 1, 0, ksize = 1)

gy = cv2.Sobel (img, cv2.CV_32F, 0, 1, ksize = 1)

Par la suite, en utilisant la formule suivante pour calculer une grandeur de gradient et la direction g thêta:

gradient_direction_formula

fonction CartToPolar OpenCV peut être calculée:

// C ++ Calculer le gradient grandeur et en direction (en degrés)

Mat mag, l'angle;

cartToPolar (gx, gy, mag, angle, 1);

# Python Calcul grandeur de gradient et la direction (en degrés) mag, angle = cv2.cartToPolar (gx, gy, angleInDegrees = true)

gradient calculé figure comme suit:

Gauche: milieu de valeurs absolues de gradient dans l'axe des x: valeur absolue du côté droit du gradient de l'axe y: l'amplitude du gradient

De ce qui précède, on peut voir la direction d'axe x image des gradients met en évidence les principales lignes dans la direction verticale, direction d'axe y de la pente du gradient dans la direction horizontale met en évidence, met en évidence les valeurs de pixel d'amplitude de gradient local sont très variables. (Note: l'origine est le coin supérieur gauche de l'image de l'image, l'axe x est horizontal, l'axe y est vertical)

l'image de gradient pour supprimer un grand nombre d'informations inutiles (telles que la couleur d'arrière-plan inchangé), le profil accru. En d'autres termes, vous pouvez facilement trouver l'image des gradients personnels.

Dans chaque pixel, a une amplitude (Magnitude) et la direction, pour les images couleur, nous allons calculer le gradient dans tous les trois canaux. Ensuite, l'amplitude correspondante est l'amplitude maximale du canal trois, l'angle (direction) est l'angle correspondant à l'amplitude maximale.

Troisième étape: gradient calculé grille d'histogramme 8 * 8

Dans cette étape, l'image de patch ci-dessus est divisé en 8 * 8 maillage (voir ci-dessous), chaque maille calcule un histogramme de gradient. Alors, pourquoi est divisé en 8 * 8 il? Avec un descripteur de caractéristique importante est qu'il fournit un compact (compact) / représentation compressée. L'image a un 8 * 8 * 8 * 8 = 3192 valeurs de pixels, chaque pixel comporte deux valeurs (amplitude et la direction d'amplitude de direction, le canal trois prenant l'amplitude maximale), ajouter jusqu'à 8 * 8 * 2 = 128, nous verrons plus tard comment ce nombre 128 avec un histogramme 9 bin est représenté comme un tableau de neuf chiffres. Non seulement peut avoir une représentation compacte en utilisant un histogramme pour représenter un patch peut aussi être plus résistant au bruit, il peut y avoir un bruit de gradient, mais après un histogramme pour représenter non moins sensible au bruit.

La taille de la parcelle est de 64 * 128, est divisé en 8 * 8 Cell, puis un total de 8 = 128/864/8 * 16 * 128 mesh =

Pour un morceau de timbre 64 * 128, le maillage 8 * 8 a assez grand pour représenter des caractéristiques intéressantes telles que le visage, la tête et similaires.

La figure 9 est un compartiment d'histogramme vectoriel, ce qui représente l'angle de 0,20,40,60 ..... 160.

Le regard de chaque cellule Let à un gradient de 8x8 est ce qu'il ressemble à:

Moyen: un gradient de maille représentée par la flèche sur la droite: ce gradient représentation numérique avec un maillage

Cet intermédiaire est une direction de la flèche de la figure amplitude du gradient de la longueur de gradient, peut être trouvée dans la direction de pointage de la flèche est la direction du changement d'intensité de pixel, l'amplitude de l'intensité varie tailles.

La direction du gradient de la matrice peut être vu dans l'angle droit 0-180, 0-360 pas, cela est appelé (gradients non signés « ») « unsigned » gradient, en tant que gradient négatif et il est le même une représentation numérique, qui est un gradient et la direction de la flèche de la flèche après sa rotation de 180 degrés est considéré comme étant le même. Pourquoi 0-360 degrés la représentent? Trouver des gradients non signés mieux que les gradients signés dans la tâche de détection des piétons en cas. HOG atteindre certains d'entre vous permet de spécifier des gradients signés.

L'étape suivante consiste à créer une grille de ces 8 * 8 histogramme bin histogramme contient neuf correspondent à 0,20,40, 160 ... ces angles.

Le tableau ci-dessous illustre ce processus. Nous utilisons la grandeur de gradient et la direction de la grille sur un intérieur de la carte. Bin avec laquelle, en fonction de la valeur d'amplitude de sous-bin pour déterminer la direction de sélection. comparer d'abord sur le pixel bleu est bloqué, ce qui correspond à l'angle 80, le sous-valeur est 2, de sorte que dans le cinquième bac qui a ajouté 2, regard de cercle rouge sur les pixels entourés d'un cercle, son angle 10, la sous-valeur est 4, étant donné que l'angle entre le 10 (moitié droite) intermédiaire de 0-20 degrés, de sorte que l'amplitude de la traversée en deux bin 0 et 20 à l'intérieur.

histogramme gradient

Voici un détail de noter que si un angle supérieur à 160 degrés, ce qui se situe entre 160-180 degrés, 0180 degrés angle, nous savons ici est le même, donc dans l'exemple ci-dessous, l'angle de 165 degrés pixels temps, il est nécessaire de mettre à l'échelle l'amplitude dans le bac 0 et 160 à l'intérieur.

Un angle supérieur à 160

Cette cellule 8 * 8 pixels à l'intérieur de tous ces points sont appliqués à l'intérieur du bac à 9, pour construire un histogramme 9-bin, l'histogramme ci-dessus correspond la grille suivante:

8 * 8 histogramme de grille

Ici, dans notre représentation, l'axe Y est de 0 degrés (à partir du haut). Vous pouvez voir beaucoup de valeur dans 0180 la distribution à l'intérieur du bac, qui signifie en fait que bon nombre de mailles qui la direction suivante du gradient sont soit vers le haut ou vers le bas.

Quatrième étape: 16 * 16 normalisé

Les étapes ci-dessus, nous créons un histogramme en fonction du gradient de l'image, mais une image du gradient sera très sensible à la lumière sur toute l'image. Si vous mettez tous les pixels sont divisés par 2, puis sera réduit l'ampleur du gradient de moitié, puis à l'intérieur de la valeur de l'histogramme serait réduit de moitié, de sorte que cela ne supprime pas l'influence de la lumière. Idéalement donc, nous nous attendons à notre fonction de transformation descripteur peut être indépendant, et la lumière, donc nous voulons que notre histogramme normalisé de telle sorte que la lumière ne soit pas affecté par le changement.

Envisagez des mesures de vecteur normalisé est utilisé I2 sont:

v =

0,5 ^ = 146,64

Chaque élément de la v obtenue en divisant 146,64

Prenons un autre vecteur 2 * v, le vecteur peut être normalisé encore . Vous pouvez voir la normalisation à l'échelle est supprimée.

Vous pouvez penser directement dans l'histogramme ci-dessus 9 * 1, nous arrivons à faire la normalisation, qui peut être, mais une meilleure façon de faire est la normalisation d'un 16 * 16 bloc, qui est 41 9 * histogrammes sont combinés en un vecteur 36 * 1, puis faire la normalisation, la fenêtre et ensuite déplacé pixel 8 (voir action figure) vers l'arrière. Répétez ce processus pour traverser à nouveau la carte entière.

porc-16x16-bloc-normalisation

Cinquième étape: fonction calcul des vecteurs HOG

Afin de calculer la totalité du patch de ce vecteur caractéristique, le vecteur nécessite 36 * 1 Tous les combinés pour former un vecteur énorme. Donc, pour calculer l'ampleur du vecteur:

  • nombre d'entre nous ont 16 * 16 blocs? 7 horizontal, vertical 15, un total de 7 * 15 = mouvement 105 fois.

  • Chaque bloc représente un 16 * 1636 * 1 vecteur. Donc, mettre tous ensemble est 36 * 105 = vecteur 3780 dimensions.

  • visualisation HOG

    descripteurs HOG se caractérisent généralement dessinée grille 8x8 normalisée histogramme 9 * 1, voir ci-dessous. Vous pouvez trouver les principales captures d'histogramme de direction l'apparence de l'homme, en particulier dans le torse et les jambes.

    visualizing_histogram

    China Mobile a finalement fournir un service cellulaire d'Apple Watch, qui soutient sept villes, aussi libre
    Précédent
    Choqué! « Elle explique: » le feu vert à la deuxième semaine au champion du box-office?
    Prochain
    La ville connue sous le nom « Silver City », mais maintenant elle est devenue une « ville intelligente »
    algorithme de reconnaissance de comportement humain basé sur la profondeur de l'apprentissage
    Yann LeCun nouveau travail: 473 types de grand modèle de contraste, au Japon et en Corée du Sud, qui codant pour utiliser la classification de texte à la fin?
    Regardez Yuelu sommet « Hunan Mobile » Comment aider le développement du Hunan
    étude approfondie tensorflow basée sur la reconnaissance de chiffres manuscrits et applications
    SUV grab marché paysage cheval sombre 580 ou à Dieu voiture Terminator
    GRAINS raid pluie Quanzhou! La voiture a heurté l'arbre vers le bas! Qingming retour ...... détour s'il vous plaît
    « Bowen série » Xilinx-7Series-FPGA utilisations d'émetteur-récepteur à grande vitesse -RX étude décrit l'extrémité de réception
    Puis toute l'évolution, la nouvelle transformation magnifique Kia K2
    « Les points chauds de l'industrie » Pourquoi la puce intérieure insuffisante? Vraiment difficile à faire parce que
    Directeur général des élections de caractère populaire jeu en 8 DAY1201816 autocollants de vote des femmes
    100000 indépendants des familles de travailleurs pour répondre à la demande intérieure pour les voitures SUV