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.
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:
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 .
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.
Tags und Links image-processing computer-vision