skimage.feature.hog (http://scikit-image.org/docs/dev/api/skimage.feature.html#hog)Extrait les fonctionnalités HOG de l'image d'entrée, mais le résultat de sortie est 1d-C'est un tableau, et il y a un problème dont je ne sais pas ce que c'est. https://github.com/holtzhau/scikits.image/blob/master/skimage/feature/hog.Vous pouvez lire le code dans py pour voir comment interpréter ce tableau.
### Arguments d'entrée importants
--```orientations```: Nombre de cases dans l'histogramme (par défaut = 9)
--``` pixels_per_cell```: taille de la cellule (par défaut = (8,8))
--``` cells_per_block```: Nombre de cellules par bloc (par défaut = (3, 3))
### Jetez un œil à la sortie
Ligne 180
#### **`hog.py`**
```py
return normalised_blocks.ravel()
Je voulais que tu le rendes sans te défiler ici. En regardant la déclaration de normalised_blocks,
Ligne 160
hog.py
n_blocksx = (n_cellsx - bx) + 1
n_blocksy = (n_cellsy - by) + 1
normalised_blocks = np.zeros((n_blocksx, n_blocksy, bx, by, orientations))
Les variables utilisées ici sont déclarées vers la ligne 100
hog.py
sx, sy = image.shape
cx, cy = pixels_per_cell
bx, by = cells_per_block
n_cellsx = int(np.floor(sx // cx)) # number of cells in x
n_cellsy = int(np.floor(sy // cy)) # number of cells in y
Ainsi, le tableau 1-d (disons
retval```) obtenu en tournant hog est
retval.reshape((n_blocksx, n_blocksy, bx, by, orientations))
Si vous le donnez comme, vous pouvez le remettre à sa forme d'origine.
Par exemple, la direction du gradient maximum pour chaque bloc peut être visualisée.
visualize_argmaxhog.py
from skimage.feature import hog
from skimage.data import camera
import matplotlib.pyplot as plt
img = camera()
orientations = 9
pixels_per_cell = (8, 8)
cells_per_block = (3, 3)
h = hog(img, orientations=orientations, pixels_per_cell=pixels_per_cell, cells_per_block=cells_per_block)
sx, sy = img.shape[:2]
cx, cy = (8, 8)
bx, by = (3, 3)
n_cellsx = int(np.floor(sx // cx)) # number of cells in x
n_cellsy = int(np.floor(sy // cy)) # number of cells in y
n_blocksx = (n_cellsx - bx) + 1
n_blocksy = (n_cellsy - by) + 1
himg = h.reshape((n_blocksx * n_blocksy, bx, by, orientations))
vis = np.array([np.argmax(x.sum(axis=(0, 1))) for x in himg]).reshape((n_blocksx, n_blocksy))
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.axis('off')
plt.subplot(1, 2, 2)
plt.imshow(vis, interpolation='nearest')
plt.axis('off')
Recommended Posts