points_harrisT_points_harrisPointsHarrisPointsHarris (Operator)

Name

points_harrisT_points_harrisPointsHarrisPointsHarris — Suche nach signifikanten Punkten mittels des Harris-Operators.

Signatur

points_harris(Image : : SigmaGrad, SigmaSmooth, Alpha, Threshold : Row, Column)

Herror T_points_harris(const Hobject Image, const Htuple SigmaGrad, const Htuple SigmaSmooth, const Htuple Alpha, const Htuple Threshold, Htuple* Row, Htuple* Column)

void PointsHarris(const HObject& Image, const HTuple& SigmaGrad, const HTuple& SigmaSmooth, const HTuple& Alpha, const HTuple& Threshold, HTuple* Row, HTuple* Column)

void HImage::PointsHarris(double SigmaGrad, double SigmaSmooth, double Alpha, const HTuple& Threshold, HTuple* Row, HTuple* Column) const

void HImage::PointsHarris(double SigmaGrad, double SigmaSmooth, double Alpha, double Threshold, HTuple* Row, HTuple* Column) const

static void HOperatorSet.PointsHarris(HObject image, HTuple sigmaGrad, HTuple sigmaSmooth, HTuple alpha, HTuple threshold, out HTuple row, out HTuple column)

void HImage.PointsHarris(double sigmaGrad, double sigmaSmooth, double alpha, HTuple threshold, out HTuple row, out HTuple column)

void HImage.PointsHarris(double sigmaGrad, double sigmaSmooth, double alpha, double threshold, out HTuple row, out HTuple column)

Beschreibung

points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris extrahiert signifikante Punkte aus einem Bild. Der Harris Operator-basiert auf der geglätteten Matrix wobei für eine Gaußsche Glättung der Größe SigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothsigmaSmooth und und für die ersten Ableitungen der einzelnen Bildkanäle stehen. Die Ableitungen werden mittels eines Gaußfilters der Größe SigmaGradSigmaGradSigmaGradSigmaGradsigmaGrad implementiert. Die resultierenden Punkte sind dann die positiven lokalen Maxima von Nötigenfalls können die extrahierten Punkte auf diejenigen mit einer minimalen Filterantwort von ThresholdThresholdThresholdThresholdthreshold eingeschränkt werden. Die Koordinaten der Punkte werden mit Subpixelgenauigkeit berechnet.

Achtung

points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris wird durch SSE2 Instruktionen beschleunigt, falls der Systemparameter 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable" auf 'true'"true""true""true""true" gesetzt ist (dies ist Standard, sofern SSE2 auf Ihrem Rechner verfügbar ist). Diese Implementierung ist aufgrund numerischer Probleme im Vergleich zur reinen C Version etwas ungenauer (für 'byte' Bilder bewegt sich der Unterschied von RowRowRowRowrow und ColumnColumnColumnColumncolumn in einer Größenordnung von 1.0e-5). Falls für Ihre Anwendung Genauigkeit wichtiger ist als Geschwindigkeit können Sie 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable" auf 'false'"false""false""false""false" setzen, bevor Sie points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris aufrufen. Dadurch verwendet points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris keine SSE2 Beschleunigungen. Vergessen Sie nicht 'sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable" danach wieder auf 'true'"true""true""true""true" zu setzen.

points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris kann auf OpenCL-Geräten ausgeführt werden, sofern SigmaGradSigmaGradSigmaGradSigmaGradsigmaGrad und SigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothsigmaSmooth zu einer Filtergröße kleiner gleich 129 Pixeln führen. Dies entspricht einem Wert kleiner 20.7 für beide Parameter. Wie bei der SSE2-Variante kann es zu geringfühgigen Unterschieden zwischen dem Ergebnis der OpenCL-Implementierung und dem der reinen C-Implementierung kommen.

Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image objectHImageHImageHobject (byte* / uint2* / real*) *erlaubt für Compute Devices

Eingabebild.

SigmaGradSigmaGradSigmaGradSigmaGradsigmaGrad (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Stärke der Glättung zur Berechnung des Gradienten.

Defaultwert: 0.7

Wertevorschläge: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0

Typischer Wertebereich: 0.7 ≤ SigmaGrad SigmaGrad SigmaGrad SigmaGrad sigmaGrad ≤ 50.0

Empfohlene Schrittweite: 0.1

Restriktion: SigmaGrad > 0.0

SigmaSmoothSigmaSmoothSigmaSmoothSigmaSmoothsigmaSmooth (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Stärke der Glättung zur Integration der Gradienten.

Defaultwert: 2.0

Wertevorschläge: 0.7, 0.8, 0.9, 1.0, 1.2, 1.5, 2.0, 3.0

Typischer Wertebereich: 0.7 ≤ SigmaSmooth SigmaSmooth SigmaSmooth SigmaSmooth sigmaSmooth ≤ 50.0

Empfohlene Schrittweite: 0.1

Restriktion: SigmaSmooth > 0.0

AlphaAlphaAlphaAlphaalpha (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Gewichtung der quadrierten Spur der Matrix der quadrierten Gradienten.

Defaultwert: 0.08

Wertevorschläge: 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08

Typischer Wertebereich: 0.001 ≤ Alpha Alpha Alpha Alpha alpha ≤ 0.1

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 0.01

Restriktion: Alpha > 0.0

ThresholdThresholdThresholdThresholdthreshold (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Minimale Filterantwort der Punkte.

Defaultwert: 1000.0

Restriktion: Threshold >= 0.0

RowRowRowRowrow (output_control)  point.y-array HTupleHTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten der gefundenen Punkte.

ColumnColumnColumnColumncolumn (output_control)  point.x-array HTupleHTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten der gefundenen Punkte.

Ergebnis

Sind die Parameterwerte korrekt und tritt kein Fehler während der Berechnung auf, liefert points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

gen_cross_contour_xldgen_cross_contour_xldGenCrossContourXldGenCrossContourXldGenCrossContourXld

Alternativen

points_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstner, points_lepetitpoints_lepetitPointsLepetitPointsLepetitPointsLepetit, points_harris_binomialpoints_harris_binomialPointsHarrisBinomialPointsHarrisBinomialPointsHarrisBinomial

Literatur

C. Harris, M. Stephens: „A combined corner and edge detector“. Proceedings of the 4th Alvey Vision Conference, pp. 147-151, 1988.
V. Gouet, N.Boujemaa: „Object-based queries using color points of interest“. IEEE Workshop on Content-Based Access of Image and Video Libraries, CVPR/CBAIVL 2001, Hawaii, USA, 2001.

Modul

Foundation