Wie mache ich eine Gaussi Glättung in der 3. Dimension?
Ich habe diese Erkennungspyramide, die Stimmen wurden auf vier Skalen gesammelt. Objekte werden an jedem Peak gefunden.
Ich habe bereits jede von ihnen in 2d geglättet, und in meinen Papieren gelesen, dass ich die dritte Dimension mit einem \ sigma = 1 filtern muss, was ich vorher nicht versucht habe, ich bin nicht einmal sicher, was es bedeutet.
>Ich habe herausgefunden, wie es in Matlab geht, und brauche etwas ähnliches in opencv / c ++.
Matlab Rohwerte: Matlab Glättung mit M0 = smooth3 (M0, 'gaussian'); :
Vor langer Zeit (2008-2009) habe ich eine kleine C ++ Template-Lib entwickelt, um einige einfache Transformationen und Faltungsfilter anzuwenden. Die Quelle der Bibliothek befindet sich in der Linderdaum Engine - sie hat nichts mit dem Rest des Motors zu tun und nutzt keine der Funktionen des Motors. Die Lizenz ist MIT, also mach was du willst damit.
Sieh dir den Source Code von Linderdaum an ( Ссылка ) bei Src / Linderdau / Images / VolumeLib. *
Die Funktion zum Vorbereiten des Kernels ist PrepareGaussianFilter () und MakeScalarVolumeConvolution () wendet den Filter an. Es ist einfach, die Bibliothek für die verschiedenen Datenquellen anzupassen, da die E / A über Callback-Funktionen implementiert wird.
Gaußsche Filter sind trennbar. Sie wenden 1D-Filter für jede Dimension wie folgt an:
%Vor%Ich würde OpenCV für eine Implementierung eines Gauß-Filters (und Bildverarbeitung im Allgemeinen) in C ++ empfehlen.
Beachten Sie, dass davon ausgegangen wird, dass Ihre Pyramidenebenen alle die gleiche Größe haben. Sie können Ihre eigenen Funktionen haben, die Ihre Scale-Space-Pyramide im laufenden Betrieb abtasten, während Sie die dritte Dimension falten, aber wenn Sie genügend Speicher haben, glaube ich, dass es schneller wäre, Ihre gröbere Ebene zu vergrößern, um die gleiche Größe der feinsten Ebene zu haben .
Tags und Links opencv image-processing gaussian