Was ist der Unterschied zwischen kreisförmiger und linearer Faltung? Wann würde ich einen über den anderen wählen? Welche Art von Faltung sollte ich bei der Bildverarbeitung wählen, bei der ein Filter auf ein Bild mit einer Maske angewendet wird?
Was ist der Unterschied zwischen kreisförmiger und linearer Faltung? Wann würde ich einen über den anderen wählen? Welche Art von Faltung sollte ich bei der Bildverarbeitung wählen, bei der ein Filter auf ein Bild mit einer Maske angewendet wird?
Antworten:
Wenn Sie einen , der aus den Elementen , werden sie in der Reihenfolge linear , beginnend mit und endend mit .
Stellen Sie sich vor, der Datenvektor wird durch einen Zettel dargestellt, in dem die Elemente der Reihe nach geschrieben sind. Stellen Sie sich nun vor, Sie würden den Zettel zu einem Kreis formen, indem Sie das Ende (wo geschrieben ist) bis zum Anfang (wo geschrieben ist) berühren . Faltung das ist kreisförmige Faltung. In der Praxis sind lineare Faltung und kreisförmige Faltung nahezu gleich, wobei der Unterschied zu Beginn und am Ende der linearen Faltung auftritt. Bei der linearen Faltung nehmen Sie an, dass es vor und nach Ihren Daten (dh wir nehmen an, dass " " und " " 0 sind), während wir bei der kreisförmigen Faltung die Daten umbrechen, um sie periodisch zu machen (dh " " und " " ist gleich ).
Die gleichen Prinzipien gelten für mehrdimensionale Arrays. Für die lineare Faltung gibt es für jede Achse einen bestimmten Anfang und ein bestimmtes Ende, wobei vorher und nachher Nullen angenommen werden. Bei einer kreisförmigen Faltung werden die Daten in jeder Achse umschlossen.
When would I choose one over the other?
Mit wenigen sehr seltenen Ausnahmen "wählen" wir keine kreisförmige Faltung. Wir wollen fast immer eine lineare Faltung. Der Grund dafür, dass kreisförmige Faltungen genauso häufig auftreten wie sie, liegt darin, dass Faltungen über FFTs (FFT, Multiplikation, inverse FFT) kreisförmige Faltungen sind, nicht linear.
Wenn Sie Faltung in Bildern implementieren, müssen Sie sich um Grenzwerte kümmern, da Ihre Faltungsmaske irgendwann aus dem zu verarbeitenden Bild "herauskommt". Abhängig davon, wie Sie die fehlenden Werte füllen, wird bestimmt, ob Sie eine zirkuläre Faltung implementieren oder nicht:
Beachten Sie, dass Sie, wenn Sie die Faltung in der Fourier-Domäne implementieren, keine andere Wahl haben als die zirkuläre Faltung, da der FFT-Algorithmus Ihre Bilder implizit periodisiert.
- BEARBEITEN -
Die Faltung wird häufig im Fourier-Bereich implementiert (=> zirkuläre Faltung), da sie dank des FFT-Algorithmus in den meisten Fällen erheblich schneller ist. Es gibt schnelle lineare Faltungsalgorithmen, die jedoch normalerweise dem trennbaren Kernel-Fall vorbehalten sind, in dem Sie das Bild horizontal und vertikal getrennt filtern können, was auch weniger Operationen ergibt als eine naive 2D-Implementierung.