ich versuche, eine Gaußsche Unschärfe mit der Verwendung von FFT zu implementieren und könnte hier das folgende Rezept finden.
Dies bedeutet, dass Sie die Fourier-Transformation des Bildes und der filtere, multipliziere das (komplexe) Ergebnisse, und nehmen Sie dann die Umkehrung Fourier-Transformation.
Ich habe einen Kernel K, eine 7x7 Matrix und ein Image I, eine 512x512 Matrix.
Ich verstehe nicht, wie man K mit I multipliziert. Ist das der einzige Weg, um K so groß wie ich zu machen (512x512)?
Ja, du musst K so groß wie ich machen, indem du es mit Nullen auffüllst. Auch nach dem Auffüllen, aber bevor Sie die FFT des Kernels nehmen, müssen Sie es mit einem Umlauf umwandeln, so dass das Zentrum des Kernels (der Gipfel des Gaußschen) bei (0,0) ist. Andernfalls wird Ihr gefiltertes Bild übersetzt. Alternativ können Sie das resultierende gefilterte Bild übersetzen, sobald Sie fertig sind.
Ein weiterer Punkt: Für kleine Kernel, die die FFT nicht verwenden, ist es vielleicht sogar schneller. Ein 2D-Gauß-Kernel ist trennbar, dh Sie können ihn in zwei 1D-Kernel für x und y aufteilen. Dann können Sie anstelle einer 2D-Faltung zwei 1D-Faltungen in x- und y-Richtung in der räumlichen Domäne ausführen. Für kleinere Kernel, die möglicherweise schneller als die Faltung im Frequenzbereich mit der FFT.
Wenn Sie sich mit Pixelshadern auskennen und FFT hier nicht Ihr Hauptziel ist, sondern Faltung mit Gaussian Blur Kernel IS, dann kann ich mein Tutorial Auf welcher Faltung ist
Grüße.
Tags und Links image-processing fft gaussian blur