| Operatoren |
create_uncalib_descriptor_model — Vorbereiten eines Deskriptormodells für Punkt-Matching.
create_uncalib_descriptor_model(Template : : DetectorType, DetectorParamName, DetectorParamValue, DescriptorParamName, DescriptorParamValue, Seed : ModelID)
Der Operator create_uncalib_descriptor_model erstellt ein Deskriptormodell einer Bildregion, die als das Bild Template übergeben wird. Mit Hilfe dieses Modells kann deskriptorbasiertes Matching durchgeführt werden. Durch anschließende Verwendung des Operators find_uncalib_descriptor_model kann damit eine projektive 2D Abbildung (Homographie) von Template zu einem Suchbild ermittelt werden. Der Schwerpunkt des Bildregions im Template wird als Ursprung des Models genommen. Im Gegensatz zu create_calib_descriptor_model ist hier keine kalibrierte Kamera nötig, allerdings ist das Ergebnis eines nachfolgenden Matchings lediglich eine 2D Projektion. Es ist zu beachten, dass der Teil des Objektes, der in dem Template-Bild zu sehen ist, planar sein muss.
Das Deskriptormodell beschreibt einen Satz von Merkmalspunkten. Es speichert die Punktpositionen, sowie unterschiedlichen Beschreibungen ihrer lokalen Bildumgebung. Die Extraktion dieser Merkmalspunkte wird durch DetectorType, DetectorParamName und DetectorParamValue parametrisiert. Der zugehörige Deskriptor für die Umgebung der Merkmalspunkte wird durch DescriptorParamName und DescriptorParamValue parametrisiert. Derzeit wird der Deskriptor durch randomized ferns implementiert. Der Parameter Seed initialisiert den Zufallszahlengenerator, der für den Aufbau der randomized ferns Strukturen verwendet wird. Ist das Deskriptormodell generiert, wird dessen Referenz in ModelID zurückgegeben. Durch Verwendung dieses Modells in find_uncalib_descriptor_model kann ein schnelles, projektivinvariantes Matching zwischen Modell- und Suchbild gewährleistet werden. Da das deskriptorbasierte Matching auf der Existenz von stabilen und repräsentativen Merkmalspunkten basiert, muss das detektierte Objekt ausreichend Textur aufweisen, die sich nicht wiederholt.
Wie bereits erwähnt, ist der Detektor dafür verantwortlich, stabile Merkmalspunkte aus dem Modellbild zu extrahieren. Durch den Parameter DetectorType kann festgelegt werden, welcher Punktoperator verwendet werden soll. Derzeit werden points_lepetit, points_harris oder dessen binomiale Approximation points_harris_binomial unterstützt ('lepetit', 'harris', 'harris_binomial'). Bei Anwendung auf dunkle Modell- / Suchbilder wird die Verwendung eines der Harris-Punktoperatoren empfohlen. Je nach Wahl des Punktoperators DetectorType müssen dessen Parameter eingestellt werden, was über DetectorParamName und DetectorParamValue möglich ist.
Gültige Parameternamen für DetectorParamName und die entsprechenden Defaultwerte sind:
['radius','check_neighbor', 'min_check_neighbor_diff','min_score','subpix']
[ 3, 1, 15, 30, 'interpolation']
['sigma_grad','sigma_smooth','alpha', 'threshold']
[ 0.7, 2.0, 0.08, 1000]
['mask_size_grd','mask_size_smooth', 'alpha','threshold','subpix']
[5, 15, 0.08, 1000, 'on']
Weitere Informationen über diese Parameter können unter der Beschreibung von points_harris, points_harris_binomial beziehungsweise points_lepetit gefunden werden. Für die Parameter, die nicht explizit durch DetectorParamName und DetectorParamValue gesetzt sind, werden die oben genannten Werte für den entsprechenden Punktoperator genommen. Dementsprechend, wenn sowohl DetectorParamName als auch DetectorParamValue auf [] gesetzt sind, werden diese Defaultwerte für alle Parameter übernommen.
Beim Optimieren der Punktoperator-Parameter sollten zwischen 50 und 450 Merkmalspunkte extrahiert werden (je nach Textur und Bildgröße von Template). In den meisten Fällen ist es jedoch ausreichend, die Defaultwerte zu übernehmen ([] in DetectorParamName und DetectorParamValue eingeben).
Der Punktdeskriptor ist ein Klassifikator, der charakteristische Beschreibungen der Grauwertnachbarschaft der Merkmalpunkte aufbaut. Derzeit ist der Deskriptor durch die so genannten randomized ferns implementiert. Diese entnehmen die Polarität der Grauwertdifferenzen von zufällig ausgewählten Pixelpaaren aus der Nachbarschaft des Punktes. Dieser Deskriptor wird danach in find_uncalib_descriptor_model verwendet, um Merkmalspunkte im Suchbild zu klassifizieren, oder mit anderen Worten: um potentielle Modellpunkte auch im Suchbild zu erkennen (matchen).
Der Deskriptor speichert nur die projektiv stabilen Merkmalspunkte (die in vielen projektiven Ansichten des Modellbildes auftauchen). Um die Stabilität einzelner Punkte zu bewerten, wird die folgende Simulation durchgeführt: Template wird vielen affinen Transformationen ausgesetzt, und die Punkte, die in den meisten Ansichten erscheinen, werden als stabil eingestuft. Die affinen Transformationen gelten als eine gute Näherung zu projektiven Transformationen in der lokalen Umgebung der Punkten.
Die folgenden Parameter des Deskriptors und seines Trainings können mit DescriptorParamName und DescriptorParamValue gesetzt werden:
Deskriptorstrukturen-Parameter:
Tiefe des Farns, der für die Punktklassifikation verwendet wird. Ein tieferer Farn kann Merkmalspunkte besser unterscheiden. Andererseits steigt der Speicherbedarf bei Erhöhung der Tiefe um 2 an. Typische Werte sind [5 .. 11], Defaultwert ist 11.
Anzahl der Farne. Mehr Farne erhöhen die Erkennungsrobustheit, aber auch die Laufzeit der Punktdetektion. Soll der Speicherverbrauch des Deskriptormodells minimiert werden, sind viele Farne mit geringer Tiefe empfohlen (z.B. 'number_ferns'=150, 'depth'= 5). Soll hingegen die Detektionszeit verkürzt werden sind wenige Farne mit größerer Tiefe empfohlen (z.B. 'number_ferns'=10, 'depth'=11). Typische Werte sind [1 .. 150], Defaultwert ist 30.
Seitenlänge der quadratischen Umgebung eines Merkmalpunktes. Höhere Werte dieses Parameters können zu längeren Trainingszeiten führen. Typische Werte sind [15 .. 33], Defaultwert ist 17.
Die Parameter 'depth', 'number_ferns' und 'patch_size' erlauben eine transparente Kontrolle über die Robustheit der Erkennung, die Geschwindigkeit und den Speicherverbrauch.
Simulationparameter:
Schalter für projektive Transformationen während des Simulationschrittes. Im eingeschalteten Zustand ('on'), verbessert sich die Robustheit des Modells, indem Objekte mit größerer Neigung gefunden werden können. Im ausgeschalteten Zustand ('off') verkürzt sich die Trainingzeit deutlich, und das Modell kann immer noch projektiv transformierte Objekte erkennen. Mögliche Werte sind ['on', 'off'], Defaultwert ist 'on'.
Minimaler Rotationswinkel um den Normalvektor des Template-Bildes. Typische Werte sind [-180 .. 0], Defaultwert ist -180.
Maximaler Rotationswinkel um den Normalvektor des Template-Bildes. Typische Werte sind [0 .. 180], Defaultwert ist 180.
Minimaler Skalierungsfaktor des Template-Bildes. Typische Werte sind [0.1 .. 1.0], Defaultwert ist 0.5.
Maximaler Skalierungsfaktor des Template-Bildes. Typische Werte sind [1.0 .. 3.5], Defaultwert ist 1.4.
Die Parameter 'min_rot', 'max_rot', 'min_scale' und 'max_scale' ermöglichen eine manuelle Selektion der für das Training durch Affintransformationen erzeugten Ansichten von Template. Eine Einschränkung ist insbesondere in Verbindung mit dem Parameter 'tilt' zur Reduzierung der Trainingszeiten hilfreich. Es ist zu beachten, dass die Einstellung dieser Parameter direkten Einfluss auf die Ergebnisse von find_uncalib_descriptor_model hat. Deshalb sollten sie mit Bedacht verwendet werden. Falls die Rotationsspanne beispielsweise auf 'min_rot' = -10 bis 'max_rot' = 10 eingeschränkt wird, ist es in find_uncalib_descriptor_model nicht möglich, Ansichten von Template zu finden, die außerhalb dieses Bereichs liegen. Eine Einschränkung des Trainingsbereichs hat auch zur Folge, dass weniger Farne / geringere Farntiefen nötig sind, um Template zu erkennen. Eine Ausweitung bedingt folglich mehr Bäume / Baumtiefen.
Es ist zu beachten, dass das Training der randomized ferns je nach Rechenleistung mehrere Sekunden bis zu wenigen Minuten dauern kann. Aus diesem Grund kann ein generierter Fern mittels write_descriptor_model abgespeichert und mittels read_descriptor_model wieder geladen werden.
Alle Parameter sowie die Koordinaten der letztendlichen Merkmalspunkte können über get_descriptor_model_params und get_descriptor_model_points abgerufen werden.
create_uncalib_descriptor_model legt den Detektor und den Deskriptor fest. Somit werden beide auch bei jedem nachfolgenden Aufruf von find_uncalib_descriptor_model verwendet. Der Referenzpunkt (Ursprung) des Modells ist der Schwerpunkt der ROI des Templates. Er kann über set_descriptor_model_origin geändert werden.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Eingabebild, dessen Definitionsbereich zum Aufbau des Modells verwendet wird.
Art des Detectors.
Defaultwert: 'lepetit'
Werteliste: 'harris', 'harris_binomial', 'lepetit'
Namen der Detektor-Parameter.
Defaultwert: []
Werteliste: 'alpha', 'check_neighbor', 'mask_size_grd', 'mask_size_smooth', 'min_check_neighbor_diff', 'min_score', 'radius', 'sigma_grad', 'sigma_smooth', 'subpix', 'threshold'
Werte der Detektor-Parameter.
Defaultwert: []
Wertevorschläge: 0.08, 1, 1.2, 3, 15, 30, 1000, 'on', 'off', 'none', 'interpolation'
Namen der Deskriptor-Parameter.
Defaultwert: []
Werteliste: 'depth', 'max_rot', 'max_scale', 'min_rot', 'min_scale', 'number_ferns', 'patch_size', 'tilt'
Werte der Deskriptor-Parameter.
Defaultwert: []
Wertevorschläge: 0.5, 1.4, 11, 21, 30, -180, 180, 'on', 'off'
Der Handle des Deskriptormodells
points_lepetit, points_harris, reduce_domain
get_descriptor_model_params, find_uncalib_descriptor_model
get_descriptor_model_params, find_uncalib_descriptor_model
V. Lepetit and P. Fua: „Keypoint Recognition using Randomized Trees.„
IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 28,
Nr. 9, pp. 1465-1479, 2006.
M. Ozuysal, P. Fua, and V. Lepetit: „Fast Keypoint Recognition in Ten Lines
of Code.„
In Proceedings of Conference on Computer Vision and Pattern Recognition,
2007.
Matching
| Operatoren |