Im Allgemeinen wird eine Faltung durchgeführt, indem das Integral des Produkts zweier Funktionen in einem Schiebefenster verwendet wird. Wenn Sie jedoch keinen mathematischen Hintergrund haben, ist dies keine sehr hilfreiche Erklärung, und Sie erhalten mit Sicherheit keine nützliche Intuition dafür. Intuitiver lässt eine Faltung zu, dass mehrere Punkte in einem Eingangssignal einen einzelnen Punkt in einem Ausgangssignal beeinflussen.
Da Sie mit Faltungen nicht besonders vertraut sind, lassen Sie uns zunächst untersuchen, was eine Faltung in einem diskreten Kontext wie diesem bedeutet, und dann eine einfachere Unschärfe behandeln.
In unserem diskreten Kontext können wir unsere zwei Signale multiplizieren, indem wir einfach jedes entsprechende Sample multiplizieren. Das Integral ist auch einfach zu diskretisieren. Wir addieren einfach jedes Sample in dem Intervall, über das wir integrieren. Eine einfache diskrete Faltung ist die Berechnung eines gleitenden Durchschnitts. Wenn Sie den gleitenden Durchschnitt von 10 Samples berechnen möchten, können Sie sich vorstellen, dass Ihr Signal durch eine 10-malige und 0,1-malige Verteilung gewickelt wird. Jedes Sample im Fenster wird zuerst mit 0,1 multipliziert und dann werden alle 10 addiert, um zu produzieren der Durchschnitt. Dies zeigt auch einen interessanten und wichtigen Unterschied: Wenn Sie mit einer Faltung verwischen, sollte die verwendete Verteilung über alle Samples hinweg 1,0 ergeben. Andernfalls wird die Gesamthelligkeit des Bildes beim Anwenden erhöht oder verringert.
Nachdem wir uns nun die Windungen angesehen haben, können wir zu Unschärfen übergehen. Eine Gaußsche Unschärfe wird implementiert, indem ein Bild durch eine Gaußsche Verteilung gefaltet wird. Andere Unschärfen werden im Allgemeinen implementiert, indem das Bild durch andere Verteilungen gefaltet wird. Die einfachste Unschärfe ist die Rahmenunschärfe. Sie verwendet die oben beschriebene Verteilung, einen Rahmen mit Flächeneinheit. Wenn Sie einen Bereich von 10 x 10 verwischen möchten, multiplizieren Sie jedes Sample in der Box mit 0,01 und addieren Sie alle Werte, um das mittlere Pixel zu erhalten. Wir müssen weiterhin sicherstellen, dass die Gesamtsumme aller Samples in unserer Unschärfeverteilung 1,0 beträgt, um sicherzustellen, dass das Bild nicht heller oder dunkler wird.
Eine Gaußsche Unschärfe folgt dem gleichen breiten Verfahren wie eine Kastenunschärfe, verwendet jedoch eine komplexere Formel, um die Gewichte zu bestimmen. Die Verteilung kann basierend auf dem Abstand vom Zentrum berechnet werden r
, indem ausgewertet wird. Die Summe aller Abtastwerte in einem Gaußschen wird schließlich sein Ungefähr 1,0, wenn Sie jeden einzelnen Pixel abtasten, aber die Tatsache, dass ein Gauß'scher Wert unendlich unterstützt wird (er hat überall Werte), bedeutet, dass Sie eine leicht modifizierte Version verwenden müssen, die mit nur wenigen Werten 1,0 ergibt.
e−x2/22π−−√
Natürlich können beide Prozesse sehr teuer sein, wenn Sie sie in einem sehr großen Radius ausführen, da Sie viele Pixel abtasten müssen, um die Unschärfe zu berechnen. Hier kommt der letzte Trick ins Spiel: Sowohl eine Gaußsche Unschärfe als auch eine Kastenunschärfe werden als "trennbare" Unschärfe bezeichnet. Dies bedeutet, dass, wenn Sie die Unschärfe entlang einer Achse und anschließend entlang der anderen Achse ausführen, genau das gleiche Ergebnis erzielt wird, als ob Sie sie entlang beider Achsen gleichzeitig ausgeführt hätten. Dies kann enorm wichtig sein. Wenn Ihre Unschärfe 10 Pixel breit ist, werden 100 Proben in der naiven Form benötigt, aber nur 20, wenn sie getrennt sind. Der Unterschied wird nur größer, da die kombinierte Unschärfe , während die getrennte Form .O(n2)O(n)