[PYTHON] Über die HOG-Ausgabe von Scikit-Image

skimage.feature.hog (http://scikit-image.org/docs/dev/api/skimage.feature.html#hog)Extrahiert HOG-Features aus dem Eingabebild, aber das Ausgabeergebnis ist 1d-Es ist ein Array, und es gibt ein Problem, bei dem ich nicht weiß, was es ist. https://github.com/holtzhau/scikits.image/blob/master/skimage/feature/hog.Sie können den Code in py lesen, um zu sehen, wie dieses Array interpretiert wird.



### Wichtige Eingabeargumente

 --``` Ausrichtung```: Anzahl der Fächer im Histogramm (Standard = 9)
 --``` pixels_per_cell```: Zellengröße (Standard = (8,8))
 --``` cells_per_block```: Anzahl der Zellen pro Block (Standard = (3, 3))

### Schauen Sie sich die Ausgabe an

 Zeile 180


#### **`hog.py`**
```py

return normalised_blocks.ravel()

Ich wollte, dass du es zurückbringst, ohne hier zu rappen. Betrachtet man die Deklaration von normalized_blocks,

Zeile 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))

Die hier verwendeten Variablen werden um Zeile 100 deklariert

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

Das 1-d-Array (sagen wir `` `retval```), das durch Drehen von Schwein erhalten wird, ist also

retval.reshape((n_blocksx, n_blocksy, bx, by, orientations))

Wenn Sie es als geben, können Sie es in seine ursprüngliche Form zurückbringen.

Anwendungsbeispiel

Beispielsweise kann die maximale Gradientenrichtung für jeden Block visualisiert werden.

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')

kobito.1422522927.516947.png

Recommended Posts

Über die HOG-Ausgabe von Scikit-Image
Über alles von numpy
Über die Zuweisung von numpy.ndarray
Über Variable von Chainer
Grundlagen von Python: Ausgabe
Über max_iter von LogisticRegression () von scikit-learn
Über den japanischen Weg von Pyminizip
Über die japanische Unterstützung von Cometchat
Über alle von numpy (2.)
Über die Kostenberechnung von MeCab
Über den ungefähren Bruchteil des Umfangsverhältnisses
Über die Komponenten von Luigi
Ausgabe Debug-Ausgabe des Kelchbefehls
Über die Funktionen von Python
Über die Datenverwaltung von Amboss-App-Server
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Über den Grundtyp von Go
Über die Obergrenze von Threads-max
Über die zirkuläre Überkreuzung genetischer Algorithmen
Über das Verhalten von Yield_per von SqlAlchemy
Informationen zum Importfehler von PyQt5.QtWidgets (Anaconda)
Über die Größe der Punkte in Matplotlib
Über die Farbhalbtonverarbeitung von Bildern
Informationen zur Grundlagenliste der Python-Grundlagen