2013-07-12 8 views

Antwort

26

Um zu entscheiden, ob ein Pixel in einem Bild eine SURF keypoint ist, eine Annäherung der Hesse-Matrix mit den partiellen Ableitungen der Bildintensitäten in einem Patch um das Pixel gebaut. Die Determinante dieser Matrix heißt Hessian und sagt Ihnen, wie robust dieses Pixel als Blob-Zentrum ist.

Die minHessian ist ein Schwellenwert, um zu entscheiden, von welchem ​​Wert Sie bereit sind, Schlüsselpunkte zu akzeptieren. Je höher in der Praxis die minHessian ist, desto weniger Keypoints erhalten Sie, aber Sie erwarten, dass sie repetitiver sind (wr.t. Image Transformationen) und dann nützlicher. Auf der anderen Seite, desto niedriger die minHessian, desto mehr Keypoints erhalten Sie, aber sie können lauter sein.

In normalen Bildern funktioniert ein Wert zwischen 400 und 800 gut.

Beachten Sie, dass SurfFeatureDetector keine Möglichkeit bietet, nur eine feste Anzahl von Schlüsselpunkten auszuwählen. Um dies zu tun, müssen Sie einen niedrigen minHessian setzen, die resultierenden Schlüsselpunkte nach ihrem hessischen Wert sortieren und dann die am wenigsten hartnäckigen entfernen.

+5

Nur eine kurze Anmerkung zu diesem, für Leute, die dieses verwenden müssen. Sie können die hessischen Werte jedes Schlüsselpunktes in 'vector keypoints' erhalten mit: für (int i = 0; i

+0

@ChronoTrigger: "sortiere das Ergebnis Schlüsselpunkte nach ihrem hessischen Wert "welcher Wert? Kannst du die Bedeutung der Werte erklären? Ich sehe Größe, Winkel, Antwort, Oktave und class_id. Was repräsentieren die Werte? Z.B. Alles außer Größe scheint seltsam. –

Verwandte Themen