Computer Vision: Warum verhalten sich Zufallsfilter ähnlich wie Kantendetektoren?


7

Ich habe hier gelesen , dass "ein zufällig initialisierter Filter sehr ähnlich wie ein Kantendetektor wirkt!". Ich möchte wissen, ob es Papiere gibt, die dieses Phänomen beschreiben und erklären.


Sie interessieren sich nur für Papier oder eine vernünftige Erklärung würde ausreichen? Da der Kernelfilter bei einer solchen Verwendung zwar ein Kantendetektor ist, aber "Phänomen", wie Sie es nennen, nur "Winkel zu meinem Detektor gleichmäßig auswählen" ist, wird jede Diskontinuität bei bestimmten Winkeln erkannt - wenn sie nicht alle 0 sind.
Böse

Da Sie nach Papieren suchen - ich empfehle Ihnen nur zu lesen, wie Kantendetektoren hergestellt werden -, werden diese für bestimmte Winkel berechnet. Wenn Sie sich jedoch nicht so sehr für einen bestimmten Winkel interessieren, verwenden Sie sie nach der Auswahl konsequent, um Ihr Netzwerk zu versorgen sind fast alle einheitlichen Zahlen gut (Nullfall, Identitätsfall und degenerierte Augenfälle sollten verworfen werden). Wenn Sie Filter nehmen, um etwas zu füttern, muss es nicht einmal normalisiert werden.
Böse

Antworten:


7

Intuition für einen kleinen Fall

Warum? Schauen wir uns den einfachsten Fall an, in dem der Kernel 1x2 groß ist (dh zwei Pixel breit und ein Pixel hoch).

Hier ist eine Kernelmatrix für einen Kantendetektor, der vertikale Kanten erkennt:

E.1=[- -1+1]]

Hier ist eine weitere Matrix für einen Kantendetektor, der auch vertikale Kanten erkennt:

E.2=[+1- -1]]

Insbesondere Faltung mit E.1 Reagiert stark auf vertikale Kanten, bei denen die rechte Seite der Kante eine höhere Intensität und die linke Seite eine geringere Intensität aufweist (rechts weißer, links schwärzer). E.2 Reagiert stark auf vertikale Kanten mit entgegengesetzter Intensitätsänderung (links weißer, rechts schwärzer).

Wir können sehen, dass dies auch für andere Beispiele gilt. Betrachten Sie zum Beispiel

E.3=[+1.7- -1.7]]

Dies verhält sich fast identisch mit E.2, außer für die Neuskalierung am Ausgang.

Konzentrieren wir uns der Einfachheit halber auf Faltungskerne, die normalisiert wurden, sodass ihre Einträge zu Null summieren. (Viele Faltungskerne, die wir in der Praxis verwenden, haben diese Form, weil sie schöne Eigenschaften haben.)

Was ist mit einer zufälligen 1x2-Matrix? Nun, wenn es normalisiert wurde, dann wird es notwendigerweise die Form haben

M.=[+α- -α]]

für eine Konstante α (wo αist zufällig). Egal wasα ist, wir sehen, dass sich dies wie entweder verhält E.1 oder E.2.

Schlussfolgerung: Ein zufälliges, normalisiertes 1x2-Faltungsfilter verhält sich mit hoher Wahrscheinlichkeit wie ein vertikaler Kantendetektor.

Größere Fälle

Dies kann auf andere Kernelgrößen verallgemeinert werden. Für einen zufälligen, normalisierten 2x1-Kernel erhalten wir grundsätzlich einen horizontalen Kantendetektor. Ein zufälliger, normalisierter 2x2-Kernel reagiert wahrscheinlich auf Kanten in einer bestimmten Richtung (möglicherweise in einem bestimmten Winkel; die spezifische Richtung hängt von den Einträgen der Matrix ab).

Wenn die Matrix größer und größer wird, nimmt dieser Effekt ab (glaube ich). In der Praxis verwenden wir jedoch normalerweise einen relativ kleinen Faltungskern (ein ziemlich kleines Empfangsfeld), sodass wir uns hauptsächlich um das Verhalten mit kleinen Faltungskernen kümmern.

Normalisierung

Was ist mit Normalisierung? Bisher habe ich über Matrizen gesprochen, die zufällig generiert und dann auf Null normiert wurden. Was ist, wenn wir den Normalisierungsschritt überspringen?

Nun, das ändert sich nicht sehr. Ohne Normalisierung am×n Zufallsmatrix M. kann zerlegt werden in M.=M.'+cEIN wo M.' wird normalisiert, so dass seine Einträge zu Null summieren, c ist eine Konstante, EIN ist die Matrix enthaltend 1/.(mn) in jedem Eintrag.

Das Eingabebild mit falten M.'hat eine gute Chance, im Grunde genommen einen Kantendetektorfilter auf das Eingangsbild anzuwenden (wie oben diskutiert). Das Eingabebild mit faltencEIN verwischt im Grunde das Bild und multipliziert es dann mit c. Somit ist das Ausgabebild die (gewichtete) Summe dieser beiden: die (gewichtete) Summe eines Kantendetektorfilters plus einer unscharfen Version des Bildes.

Für eine zufällige Matrix gibt es eine gute Chance, dass c wird relativ klein sein (da der Mittelwert der Summe einer Reihe von Zufallsvariablen oft ziemlich klein ist), also multiplizieren mit cbewirkt, dass das Ausgabebild mehr durch den Kantendetektor als durch die Unschärfe bestimmt wird. Wennc klein ist, können wir grundsätzlich den zweiten Term der Summe ignorieren und das Ausgabebild als Ergebnis eines Kantendetektorfilters approximieren.

Aus diesem Grund hat die Faltung mit einer Zufallsmatrix eine gute Chance, dass eine Art Kantendetektor auf das Eingabebild angewendet wird.

Wenn ich mir die Beispielbilder auf diesen Seiten ansehe, sieht das erste für mich mehr oder weniger wie ein Kantendetektor aus, und das zweite sieht mehr oder weniger wie ein Unschärfeoperator aus. Dies steht im Einklang mit der obigen Analyse.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.