| Operatoren |
find_uncalib_descriptor_model — Suchen die besten Matches eines Deskriptormodells in einem Suchbild.
find_uncalib_descriptor_model(Image : : ModelID, DetectorParamName, DetectorParamValue, DescriptorParamName, DescriptorParamValue, MinScore, NumMatches, ScoreType : HomMat2D, Score)
Der Operator find_uncalib_descriptor_model sucht den besten Match eines Deskriptormodells ModelID in einem Suchbild Image. Ein Deskriptormodell beinhaltet Beschreibungen von Merkmalspunkten und muss zuvor durch create_uncalib_descriptor_model bzw. create_calib_descriptor_model erzeugt oder mit read_descriptor_model eingelesen worden sein.
Ein Match wird akzeptiert, wenn er eine bessere Bewertung als MinScore hat. Dieses Kriterium basiert auf der 'inlier_ratio' Bewertung, die weiter unten erklärt wird. Hauptergebnis des Operators find_uncalib_descriptor_model ist die 3x3 Matrix HomMat2D, die eine projektive 2D Transformation von Modellpunkten zu Suchbildpunkten darstellt. Die Matrix ist durch ihre zeilenweise gegebenen 9 Elementen dargestellt. Tritt das gesuchte Objekt (Template) mehrfach in Image auf und erfüllt es das Kriterium MinScore, werden die resultierenden Homographien aneinandergehängt. Die Anzahl der letztendlich gefundenen Objekte lässt sich durch NumObjects = |HomMat2D| / 9 berechnen.
Der Suchprozess ist in drei Phasen unterteilt. Als erstes werden Merkmalspunkte aus dem Suchbild (aber nur innerhalb des Definitionsbereiches des Suchbildes) extrahiert. Dies erfolgt mit dem Punktoperator, der bei der Modellerstellung ausgewählten wurde. Während der Modellerstellung werden auch die Parameter des Punktoperators gesetzt. Sie können allerdings mittels DetectorParamName und DetectorParamValue auch zusätzlich angepasst werden. Hierdurch können dieser Parameter insbesondere an Beleuchtungsschwankungen zwischen Modellerzeugung und Suchbild angepasst werden. Es wird jedoch empfohlen, die Werte des Modells zu verwenden (Übergabe eines leeren Tupels).
In der zweiten Phase der Suche werden Korrespondenzen zwischen Modellpunkten und extrahierten Punkten des Suchbildes erstellt. Die Parameter des Deskriptors werden in DescriptorParamName und DescriptorParamValue gesetzt:
Die minimale Klassifikatorbewertung eines Punktes, damit er als potentieller Match betrachtet wird. Diese Bewertungsfunktion hat einen Wertebereich von 0.0 bis 1.0. Sinnvolle Werte liegen jedoch zwischen 0.0 und 0.1. Es ist zu beachten, dass 'min_score_descr' u.U. eine negative Auswirkung auf die Robustheit des Erkennungsprozesses hat. Zumindest dann, wenn wenige Merkmalspunkte auf dem Objekt gefunden werden können. Typische Werte sind [0.0 .. 0.1], Defaultwert ist 0.0.
Erhöht die Genauigkeit der Objekterkennung. Das 'guided matching' kann allerdings in manchen Fällen auch die Rechenzeit um bis zu 10% erhöhen. Mögliche Werte sind ['on', 'off'], Defaultwert ist 'on'.
Der letzte Schritt ist die Schätzung der Homographie, die die Punktkorrespondenzen beschreibt. Die resultierende Homographie ist eine 2D Projektion, die eine Transformation von Modellpunkten zu Punkten in Image beschreibt. Hierfür werden Natural 3D Markers (N3Ms) verwendet, um die Punktkorrespondenz zu bestimmen (siehe Literatur).
Zusätzlich zu der geschätzten Homographie HomMat2D liefert der Operator eine oder mehrere Score Bewertungen für jede gefundene Objektinstanz, je nachdem, was der Benutzer in ScoreType eingegeben hat. Derzeit sind die folgenden Werte für ScoreType unterstützt:
Anzahl der Punktkorrespondenzen je Instanz. Wurde eine Homographie mit weniger als 10 Korrespondenzen gefunden, so kann sie nicht als gut angenommen werden, da im Extremfall beliebige 4 Punkte eine mathematisch gültige Homographie beschreiben.
Anteil von Punktkorrespondenzen an der Anzahl der Modellpunkte. Obwohl diese Bewertung einen Wertebereich von 0.0 bis 1.0 hat, ist es eher untypisch, dass sie einen Wert von 1.0 erreicht. Instanzen mit einem Bewertungwert kleiner als 0.1 sollten nicht berücksichtigt werden.
Falls im Suchbild mehrere Objektinstanzen gefunden werden, werden die resultierenden Score Bewertungen für die einzelnen Instanzen aneinandergehängt, sodass |Score| = NumObjects * |ScoreType|.
Die gefundenen Punktkorrespondenzen einzelner Instanzen können mit Hilfe des Operators get_descriptor_model_points abgefragt werden.
Der Definitionsbereich des Suchbildes sollte das gesamte gesuchte Objekt enthalten, da die Merkmalspunkte nur innerhalb des Definitionsbereiches des Suchbildes extrahiert werden. Das bedeutet, dass der resultierende Score entsprechend kleiner wird, wenn der Definitionsbereich nicht das gesamte gesuchte Objekt enthält. Des Weiteren ist zu beachten, dass Matches auch dann zurück gegeben werden, wenn der Referenzpunkt des Modells außerhalb des Definitionsbereiches des Suchbildes liegt. Die beiden hier geschilderten Auswirkungen des Definitionsbereiches des Suchbildes unterscheiden sich grundsätzlich von der Auswirkung des Definitionsbereiches beim formbasierten Matching, wo der Definitionsbereich den Suchraum für den Referenzpunkt des Modells darstellt.
Das Suchbild.
Der Handle des Deskriptormodells.
Namen der Parameter des Detektors.
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'
Namen der Deskriptor-Parameter.
Defaultwert: []
Werteliste: 'guided_matching', 'min_score_descr'
Werte der Deskriptor-Parameter.
Defaultwert: []
Wertevorschläge: 0.0, 0.001, 0.005, 0.01, 'on', 'off'
Minimale Bewertung der zu findenden Instanzen der Modelle.
Defaultwert: 0.2
Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Typischer Wertebereich: 0 ≤ MinScore ≤ 1
Maximale Anzahl von gefundenen Instanzen.
Defaultwert: 1
Wertevorschläge: 1, 2, 3, 4
Restriktion: NumMatches >= 1
Bewertungtyp berechnet in Score.
Defaultwert: 'num_points'
Werteliste: 'inlier_ratio', 'num_points'
Homographie zwischen Modell und gefundenem Objekt.
Bewertung der gefundenen Instanzen gemäß ausgewählten ScoreType.
create_uncalib_descriptor_model (ImageReduced,'harris',[],[], \
[],[],42,ModelID)
get_descriptor_model_params (ModelID,DetectorType, \
DetectorParamName,DetectorParamValue, \
DescriptorParamName,DescriptorParamValue)
write_descriptor_model (ModelID,'simple_example.dsm')
clear_descriptor_model (ModelID)
read_descriptor_model ('simple_example.dsm',ModelID)
find_uncalib_descriptor_model (SearchImage,ModelID,[],[],[],[],0.2,1, \
['num_points','inlier_ratio'],HomMat2D,Score)
clear_descriptor_model (ModelID)
create_uncalib_descriptor_model, create_calib_descriptor_model, read_descriptor_model
create_uncalib_descriptor_model, create_calib_descriptor_model, find_calib_descriptor_model, get_descriptor_model_points
S. Hinterstoisser, S. Benhimane, and N. Navab: „N3M: Natural 3D Markers for Real-Time Object Detection and Pose Estimation.„ IEEE 11th International Conference on Computer Vision, 2007. pp. 1-7, ICCV 2007.
Matching
| Operatoren |