HOG Trilineare Interpolation von Histogramm-Bins

8

Ich arbeite an Histogramm von Oriented Gradient (HOG) -Features und ich versuche, die trilineare Interpolation von Histogramm-Bins zu implementieren, wie in Dalals Dissertation beschrieben. Und er erklärt den Interpolationsprozess wie folgt:

EDIT: Grob gesagt, werden HOG-Features aus einem 64x128-Pixel-Fenster extrahiert, das in Blöcke unterteilt ist. Jeder Block besteht aus 2x2 Zellen und eine Zelle hat eine Fläche von 8x8 Pixel. Die Extraktion beginnt mit der Berechnung der Ableitungen des Bildes erster Ordnung, dann werden die Orientierung und die Größe jedes Pixels berechnet. Ein Orientierungshistogramm innerhalb des Blocks für jede 8 × 8 Pixelzelle wird berechnet, wobei Pixel zu dem Histogramm mit dem Größenwert basierend auf der Orientierung des Pixels beitragen und die Größe zwischen den benachbarten Intervallzentren sowohl in der Orientierung als auch in der Position interpoliert wird. Histogramm enthält 9 Bins, die 0-180 Grad mit einem Schritt von 20 Grad darstellen. Eine Gesamtdarstellung des Algorithmus ist hier zu sehen: Ссылка

  

Zunächst beschreiben wir die lineare Interpolation   in einem eindimensionalen Raum und dann   erweitern Sie es auf 3D. Sei h ein Histogramm   mit Zwischenablageabstand (Bandbreite) b.   h (x) bezeichnet den Wert von   Histogramm für den um x zentrierten Behälter.   Angenommen, wir wollen interpolieren   Gewicht w am Punkt x in die   Histogramm. Sei x1 und x2 die zwei   nächste benachbarte Behälter des Punktes   x so dass x1 ≤ x & lt; x2. Linear   Interpolation verteilt das Gewicht w   in zwei nächste Nachbarn wie folgt   

     

Sei w am 3-D-Punkt x = [x, y, z]   sei das zu interpolierende Gewicht. Lassen   x1 und x2 sind die beiden Eckvektoren von   der Histogrammwürfel, der x enthält, wobei   in jeder Komponente x1 ≤ x & lt; x2. Annehmen   dass die Bandbreite des Histogramms   entlang der x-, y- und z-Achse ist gegeben durch   b = [bx, durch, bz]. Trilinear   Interpolation verteilt das Gewicht w   zu den 8 umgebenden Behältermitten als   folgt:   

     

.

Wir berechnen Histogramme für Zellen und jedes Pixel trägt mit seinem Betragswert zum Histogramm bei. Was ich aus der Formulierung verstehe, ist, dass x und y die Position der Zellen im Detektionsfenster und z die Bin-Nummer darstellt. In einem 64x128 Detektionsfenster gibt es 8x16 Zellen und 9 Orientierungsbins, so dass unser Histogramm als h (8,16,9) dargestellt wird. Wenn die obigen Aussagen korrekt sind, stellen (x1, y1) und (x2, y2) jeweils die vorherigen und die Buchstabenzellen dar? Bedeutet z1 und z2 die vorherige und die Buchstabenausrichtung? Was ist mit der Bandbreite b = [bx, by, bz]?

Ich wäre sehr dankbar, wenn jemand diese Probleme klären könnte.

Danke.

    
Ahmet Keskin 03.07.2011, 20:35
quelle

2 Antworten

4

Stellen Sie sich (x1, y1, z1) und (x2, y2, z2) zwei Punkte vor, die einen Würfel umgeben, der den Punkt (x, y, z) umgibt, für den Sie einen Wert von h interpolieren möchten. Die Menge von acht Punkten (x1, y1, z1), (x2, y1, z1), (x1, y2, z1), (x1, y1, z2), (x2, y2, z1), (x2, y1, z2), (x1, y2, z2), (x2, y2, z2) bildet den vollständigen Würfel. Eine trilineare Interpolation zwischen (x1, y1, z1) und (x2, y2, z2) bedeutet also eine Interpolation zwischen den 8 Punkten im 3D-Histogramm-Raum, der den Punkt umgibt, an dem Sie interessiert sind! Nun zu deinen Fragen:

(x1, y1), (x2, y2) (und (x1, y2) und (x2, y1) stellen die Zentren von Bins in der (x, y) -Ebene dar. In Ihrem Fall wären dies die Orientierungsvektoren .

z1 und z2 repräsentieren zwei Bin-Ebenen in der Orientierungsrichtung, wie Sie sagen. Kombiniert mit den vier Punkten in der Bildebene ergibt dies insgesamt 8 Bins.

Die Bandbreite b = [bx, by, bz] ist grundsätzlich der Abstand zwischen den Zentren benachbarter Bins in x-, y- und z-Richtung. In Ihrem Fall, mit 8 Bins in x-Richtung und 64 Pixeln in dieser Richtung, 16 Bins in y-Richtung und 128 Pixel in y-Richtung:

%Vor%

Damit bleibt bz, für das ich eigentlich mehr Daten benötige, weil ich nicht den vollen Bereich Ihres Gradienten kenne (d. h. niedrigster bis höchstmöglicher Wert), aber wenn dieser Bereich rg ist, dann:

%Vor%

Im Allgemeinen entspricht die Bandbreite in jeder Richtung dem vollen verfügbaren Bereich in dieser Richtung geteilt durch die Anzahl der Bins in dieser Richtung.

Für eine gute Erklärung der trilinearen Interpolation mit Bildern siehe den Link in Whoplisp's Antwort .

    
jilles de wit 03.07.2011, 21:51
quelle
3

Sehen wir uns zuerst das rechteckige HOG an. Ein Bild ist in ein paar Kacheln aufgeteilt, wie auf Seite 32 gezeigt. Seite 46 zeigt einen R-HOG-Deskriptor in (f). Auf Seite 49 wird erläutert, wie die Daten gruppiert sind.

Ich habe gelernt, wie man 3D-Interpolation macht, indem man Paul Burkes Artikel liest: Ссылка

Entschuldige, ich müsste meine eigenen Bilder erstellen, um zu verstehen, was vor sich geht. Es ist sicherlich eine interessante Technik.

    
whoplisp 03.07.2011 20:42
quelle