find_scaled_shape_model
— Suche der besten Matches eines isotrop skalierten Formmodells in
einem Bild.
find_scaled_shape_model(Image : : ModelID, AngleStart, AngleExtent, ScaleMin, ScaleMax, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Scale, Score)
find_scaled_shape_model
findet die besten
NumMatches
Instanzen des isotrop skalierten Formmodells
ModelID
im Eingabebild Image
. Das Modell muss
zuvor mit create_scaled_shape_model
erzeugt oder mit
read_shape_model
eingelesen worden sein.
Die Position, Rotation und Skalierung der gefundenen Instanzen des
Modells werden in Row
, Column
, Angle
und
Scale
zurückgeliefert. In Score
wird die Bewertung der
gefundenen Instanzen zurückgegeben. Nähere Informationen finden Sie in den
parameterspezifischen Abschnitten.
Der Definitionsbereich des Bildes Image
gibt den
Suchbereich für den Referenzpunkt des Modells an, d.h. für den
Schwerpunkt der Region des Bildes, das zur Erzeugung des Formmodells
mit create_scaled_shape_model
verwendet wurde. Ein
eventuell mit set_shape_model_origin
anders gesetzter
Ursprung wird nicht berücksichtigt. Das Modell wird innerhalb des
Definitionsbereiches des Eingabebildes nur an den Stellen gesucht,
an denen das Modell vollständig in das Bild passt. Das bedeutet,
dass das Modell nicht gefunden werden kann, wenn es aus dem Bild
herausragt, selbst wenn es eine Bewertung größer als
MinScore
erreichen würde (siehe unten).
Außerdem kann es sein, dass das Modell, wenn es in einer der Pyramidenebenen
den Bildrand berührt, ebenfalls nicht gefunden wird, auch wenn es im
ursprünglichen Bild vollständig enthalten ist. Als Daumenregel gilt hier,
dass das Modell dann nicht gefunden werden könnte, wenn seine Distanz zum
Bildrand unter fällt.
Dieses Verhalten kann mit set_system('border_shape_models','true')
für alle Modelle oder mit
set_shape_model_param(ModelID, 'border_shape_models','true')
speziell für ein Modell umgestellt werden,
so dass auch Modelle gefunden werden, die aus dem Bild
herausragen, falls sie eine Bewertung größer als MinScore
erreichen. Dabei werden Punkte außerhalb des Bildes als verdeckt
angesehen, d.h. sie verringern die Bewertung. Es ist zu beachten,
dass dieser Modus die Laufzeit der Suche erhöht.
Es ist weiter zu beachten, dass in seltenen Fällen, die typischerweise nur
in künstlichen Bildern auftreten, auch dann kein Modell gefunden wird, wenn
das Modell in einer Pyramidenebene die reduzierte Bilddomäne berührt. In
diesem Fall kann es helfen, die Region der Domäne um
, z.B., mit dilation_circle
zu vergrößern.
Die Parameter AngleStart
und AngleExtent
legen den
Winkelbereich fest, in dem nach dem Modell gesucht wird. Die
Parameter ScaleMin
und ScaleMax
legen den Bereich
der Skalierungen fest, in dem nach dem Modell gesucht wird. Der
Winkel- und Skalierungsbereich wird gegebenenfalls auf den Bereich
beschnitten, der bei der Erzeugung des Modells mit
create_scaled_shape_model
angegeben worden ist. Dies
bedeutet insbesondere, dass die Winkelbereiche des Modells und der
Suche sich überlappen müssen.
Beachten Sie, dass in einigen Fällen Instanzen mit einer Rotation oder
Skalierung gefunden werden, die geringfügig außerhalb des angegebenen
Winkel- und Skalierungsbereichs liegen. Dies kann vorkommen, wenn der
angegebene Bereich kleiner ist als der bei der Erstellung des Modells
angegebene Bereich. AngleStart
und AngleExtent
sowie
ScaleMin
und ScaleMax
werden nur auf der höchsten
Pyramidenstufe überprüft. Matches, die auf der höchsten Pyramidenstufe
gefunden werden, werden bis zur untersten Pyramidenstufe verfeinert.
Aus Leistungsgründen wird bei der Verfeinerung jedoch nicht mehr überprüft,
ob die Matches immer noch innerhalb der angegebenen Bereiche liegen.
Der Parameter MinScore
legt fest, welche Bewertung ein
potentieller Match mindestens besitzen muss, damit er als eine
Instanz des Modells im Bild angesehen wird. Je größer der Wert von
MinScore
gewählt werden kann, desto schneller verläuft die
Suche. Falls erwartet werden kann, dass das Modell niemals verdeckt
wird, kann MinScore
auf so hohe Werte wie 0.8 oder sogar
0.9 gesetzt werden. Werden die Matches nicht bis zur untersten
Pyramidenebene verfolgt (siehe unten) kann es in manchen Fällen
vorkommen, dass Instanzen gefunden werden, deren Score geringfügig
unter dem Wert von MinScore
liegen.
Falls das Formmodell mit set_shape_model_clutter
um
Störparameter erweitert wurde und dadurch
'use_clutter' aktiviert wurde, erwartet MinScore
einen
zweiten Wert, welcher den maximalen Störwert eines potentiellen Matches
angibt, um als Instanz des Modells im Bild betrachtet werden zu können.
Die Laufzeit mit Nutzung von Störparametern ist mindestens so hoch wie
die Laufzeit ohne Störparameter mit auf 0 gesetztem Parameter
NumMatches
.
Mit NumMatches
kann angegeben werden, wieviele Instanzen
des Modells im Bild höchstens gefunden werden sollen. Falls mehr
als NumMatches
Instanzen eine Bewertung größer als
MinScore
erreichen, werden nur die besten
NumMatches
Instanzen zurückgeliefert. Falls weniger als
NumMatches
Instanzen gefunden werden, werden nur diese
Instanzen zurückgeliefert, d.h. der Parameter MinScore
hat
Vorrang vor NumMatches
. Sollen alle Modellinstanzen, deren
Bewertung MinScore
übersteigt, im Bild gefunden werden,
muss NumMatches
auf 0 gesetzt werden.
Beim Tracken der Matches durch die Bildpyramide werden auf jeder
Ebene Matches verworfen, die wenig vielversprechend sind. Dadurch ist
es möglich, dass Matches verworfen werden, die auf der niedrigsten
Pyramidenebene einen höheren Score gehabt hätten. Beispielsweise kann das
dazu führen, dass der gefundene Match für NumMatches
gleich
1 nicht mit dem Match mit dem höchsten Score übereinstimmt, der von
NumMatches
gleich 0 oder > 1 zurückgegeben wird.
Falls erwartet wird, dass mehrere Objekte mit einem ähnlichen Score gefunden
werden können, aber nur das Modell mit dem höchsten Score
zurückgegeben werden soll, kann es vorteilhaft sein, NumMatches
zu
erhöhen, und dann den Match mit dem höchsten Score auszuwählen.
Für den Fall, dass das Formmodell mit set_shape_model_clutter
um Störparameter erweitert wurde, berücksichtigt NumMatches
auch den zweiten Wert, der in MinScore
übergeben wird.
Gefundene Instanzen weisen in diesem Fall einen Score auf, der größer als
der erste Eintrag ist, sowie einen Störwert der niedriger als der
zweite Eintrag ist. Ist die Anzahl gefundener Instanzen größer als
NumMatches
, werden die besten NumMatches
Instanzen in
Bezug auf ihren Störwert zurückgegeben. MinScore
hat weiterhin
Vorrang vor NumMatches
und NumMatches
muss weiterhin
auf 0 gesetzt werden um alle Modellinstanzen zu erhalten, die die
Bedingungen von MinScore
erfüllen.
Es ist zu beachten, dass beim Tracken der Matches durch die Bildpyramide
keine Matches verworfen werden, wenn Störparameter verwendet werden.
Die Laufzeit mit Nutzung von Störparametern ist daher mindestens so hoch
wie die Laufzeit ohne Störparameter mit auf 0 gesetztem
Parameter NumMatches
.
Falls das Modell Symmetrien aufweist, kann es vorkommen, dass
mehrere Instanzen an ähnlichen Positionen im Bild, aber mit
verschiedenen Rotationen gefunden werden. Mit dem Parameter
MaxOverlap
kann bestimmt werden, um welchen Anteil,
ausgedrückt als Zahl zwischen 0 und 1, sich zwei Instanzen höchstens
überlappen dürfen, damit sie als verschieden angesehen werden, und
somit zurückgeliefert werden. Falls sich zwei Instanzen um mehr als
MaxOverlap
überlappen, wird nur die beste gefundene Instanz
zurückgeliefert. Die Berechnung der Überlappung erfolgt anhand der
kleinsten umschließenden Rechtecke beliebiger Orientierung der
Konturen (siehe smallest_rectangle2
). Bei
MaxOverlap
=0 dürfen sich die gefundenen Instanzen nicht
überlappen, bei MaxOverlap
=1 werden alle gefundenen
Instanzen zurückgeliefert.
Der Parameter SubPixel
gibt an, ob die Extraktion
subpixelgenau erfolgen soll. Falls SubPixel
auf
'none' (oder 'false' für Rückwärtskompatibilität)
gesetzt wird, wird die Lage des Modells nur pixelgenau bzw. mit der
bei create_scaled_shape_model
angegebenen Winkel- und
Skalierungsauflösung bestimmt. Falls SubPixel
auf
'interpolation' (oder 'true' ) gesetzt wird, werden
sowohl die Position als auch die Rotation und Skalierung
subpixelgenau bestimmt. Dabei wird die Lage des Modells anhand der
Score-Funktion interpoliert. Dieser Modus kostet fast keine
Rechenzeit und liefert in den meisten Anwendungen eine ausreichende
Genauigkeit. In manchen Anwendungen ist eine möglichst hohe
Genauigkeit wichtig. In diesen Fällen kann die Lage des Modells
durch Ausgleichsrechnung, d.h., durch Minimierung der Abstände der
Modellpunkte und der zugehörigen Bildpunkte (Least-Squares
Adjustment), bestimmt werden. Im Gegensatz zu
'interpolation' kostet dieser Modus zusätzliche Rechenzeit.
Mit den verschiedenen Modi ('least_squares' ,
'least_squares_high' und
'least_squares_very_high' ) kann dabei die Genauigkeit
festgelegt werden, mit der der minimale Abstand gesucht wird. Je
höher die Genauigkeit gewählt wird, desto länger dauert allerdings
auch die Subpixel-Extraktion. Im Normalfall sollte für
SubPixel
'interpolation' gewählt werden. Falls
die Ausgleichsrechnung gewünscht wird, sollte
'least_squares' gewählt werden, da sich so der optimale
Kompromiss zwischen Laufzeit und Genauigkeit ergibt.
Objekte, die im Vergleich zum Modell leicht deformiert im Bild
erscheinen, können in manchen Fällen entweder nicht oder nur mit
einer geringen Genauigkeit gefunden werden. Für solche Objekte
besteht die Möglichkeit, im Parameter SubPixel
zusätzlich
die maximal zulässige Objektdeformation in Pixeln anzugeben. Dies
kann mit Hilfe des optionalen Parameterwertes
'max_deformation ' und einer nachfolgenden Ganzzahl
zwischen 0 und 32 (im selben String), die die
maximale Deformation beschreibt, erfolgen. Kann die Form des
Objektes z.B. bis zu 2 Pixel von der im Modell gespeicherten Form
abweichen, muss im Parameter SubPixel
der Wert
'max_deformation 2' zusätzlich zum oben beschriebenen Modus
für die subpixelgenaue Extraktion übergeben werden, also z.B.
['least_squares', 'max_deformation 2'] . Mit
'max_deformation 0' wird das Objekt ohne Deformationen
gesucht, also so als ob man kein 'max_deformation '
übergeben hätte. Zu beachten ist, dass größere Werte für die
maximale Deformation oft zu erhöhten Laufzeiten führen. Außerdem
besteht bei einem zu großen Wert die Gefahr, dass falsche Kandidaten
gefunden werden. Beide Probleme können hauptsächlich bei kleinen
Objekten oder Objekten mit feinen Strukturen auftreten. Der Grund
hierfür ist, dass solche Objekte durch große erlaubte Deformationen
ihre für die Suche wichtige charakteristische Form verlieren. Zu
beachten ist auch, dass die Genauigkeit von teilweise verdeckten
Objekten für höhere Deformationen abnehmen kann wenn Störobjekte in
der Nähe des Objektes vorhanden sind. Die maximale Deformation
sollte demnach immer nur so groß wie nötig und so gering wie möglich
gewählt werden. Näherungsweise rotationssymmetrische Objekt könnten
nicht gefunden werden, falls 'max_deformation' und
AngleExtent
beide auf einen Wert größer 0 gesetzt sind. In dem Fall
kann es zu Mehrdeutigkeiten kommen, die nicht aufgelöst werden können,
sodass der Match als falsch verworfen wird. Wenn das passiert, versuchen
Sie, entweder 'max_deformation' oder AngleExtent
auf 0 zu
setzen oder das Modell so zu verändern, dass weniger Symmetrien auftreten.
Die Score-Berechnung bei Deformationswerten größer
0 hängt von der Art der Subpixel-Extraktion ab. In den
meisten Fällen wird sich der Score eines Matches verändern, wenn man
'least_squares' , 'least_squares_high' oder
'least_squares_very_high' (siehe oben) wählt (im Vergleich
zu 'none' oder 'interpolation' ). Außerdem wird
sich der Score in der Regel erhöhen wenn man bei einer der
Least-Squares-Adjustment-Methoden die maximale Deformation erhöht,
da dann zu den Modellpunkten mehr zugehörige Bildpunkte gefunden
werden können. Für einen aussagekräftigen Score und zum Vermeiden
falscher Matches wird empfohlen, das Erlauben einer Deformation
mit einer Subpixel-Extraktion mit einer der
Least-Squares-Adjustment-Methoden zu kombinieren.
Mit NumLevels
wird die Anzahl der Pyramidenebenen
festgelegt, die bei der Suche verwendet werden soll. Die Anzahl der
Ebenen wird gegebenenfalls auf den bei der Erzeugung mit
create_scaled_shape_model
angegebenen Bereich beschnitten.
Falls NumLevels
als 0 angegeben wird, wird die mit
create_scaled_shape_model
angegebene Anzahl verwendet.
In manchen Fällen kann es sein, dass die Anzahl der Pyramidenebenen,
die beispielsweise automatisch mit create_scaled_shape_model
ermittelt wurde, zu hoch ist. Dann werden eventuell Instanzen, die eine sehr
hohe finale Bewertung gehabt hätten, bereits auf der höchsten Pyramidenebene
ausgeschlossen und damit nicht gefunden. Anstatt nun MinScore
auf einen sehr geringen Wert zu setzen, um alle Matches zu finden, kann der
Wert von NumLevels
mit get_shape_model_params
ermittelt
werden und dann ein etwas geringerer Wert in find_scaled_shape_model
genutzt werden. Diese Herangehensweise führt oft zu besseren Ergebnissen
hinsichtlich Geschwindigkeit und Robustheit.
Optional kann NumLevels
einen zweiten Wert enthalten, der
die unterste Pyramidenebene spezifiziert, bis auf welche die Matches
verfolgt werden sollen. Ein Wert von [4,2] bedeutet also,
dass das Matching auf der vierten Pyramidenebene begonnen wird und
auf der zweituntersten Pyramidenebene beendet wird (die unterste
Pyramidenebene hat den Wert 1). Dieser Mechanismus kann dazu
verwendet werden, Laufzeit einzusparen. Allerdings ist in diesem
Modus im allgemeinen die Genauigkeit der gefundenen Lageparameter
geringer als im Normalfall, in dem die Matches bis auf die unterste
Pyramidenebene verfolgt werden. Falls eine hohe Genauigkeit erzielt
werden soll, empfiehlt es sich also, mindestens
'least_squares' für SubPixel
zu verwenden. Falls
die unterste zu verwendende Pyramidenebene zu groß gewählt wird,
kann es vorkommen, dass die gewünschte Genauigkeit nicht mehr
erreicht werden kann, oder dass falsche Instanzen des Modells
gefunden werden, weil das Modell auf den oberen Pyramidenstufen
nicht eindeutig genug ist, um eine sichere Selektion der korrekten
Instanz des Modells zu ermöglichen. In diesem Fall muss ein
kleinerer Wert für die unterste zu verwendende Pyramidenebene
gewählt werden.
In mangelhaften Eingabebildern, d.h., in Bildern die z.B. unscharf,
deformiert oder verrauscht sind, kann auf der untersten
Pyramidenebene oft keine Instanz des Formmodells gefunden werden, da
aufgrund der mangelhaften Bildqualität nicht genügend
Kanteninformation vorhanden ist, oder die Kanten zu stark deformiert
sind. Auf höheren Pyramidenebenen dagegen kann die
Kanteninformation noch ausreichend sein um Instanzen des Modells zu
finden, wobei auch hierbei die oben beschriebenen Einschränkungen
bezüglich Genauigkeit und Robustheit gelten. Die Wahl der passenden
Pyramidenebene, d.h., der untersten Pyramidenebene auf der noch eine
Instanz des Modells gefunden wird, hängt sowohl vom Modell als auch
vom Eingabebild ab. Diese Pyramidenebene kann also von Bild zu Bild
variieren. Um das Matching auf mangelhaften Bildern zu erleichtern,
kann die unterste Pyramidenebene, auf der noch eine Instanz des
Modells gefunden wird, während des Matchings automatisch bestimmt
werden. Um diesen als 'increased tolerance mode' bezeichneten
Mechanismus zu aktivieren, muss die unterste
Pyramidenebene in NumLevels
negativ angegeben werden. Wird
z.B. NumLevels
= [4,-2] gesetzt, so wird das
Matching auf der vierten Pyramidenebene begonnen und auf der
zweituntersten Pyramidenebene beendet. Es wird also versucht, eine
Instanz des Formmodells auf der Pyramidenebene 2 zu finden. Kann
auf dieser Pyramidenebene keine Instanz gefunden werden, so wird die
unterste Pyramidenebene ermittelt, auf der noch Instanzen des
Modells gefunden wurden. Die Instanzen dieser Pyramidenebene werden
dann als Ergebnis zurückgegeben.
Der Parameter Greediness
bestimmt, wie „gierig“ die Suche
durchgeführt werden soll. Für Greediness
=0 wird eine
sichere Suchheuristik verwendet, die das Modell, falls im Bild
vorhanden, immer findet, wenn die anderen Parameter passend gesetzt sind.
Allerdings ist die Suche hiermit relativ
zeitaufwendig. Für Greediness
=1 wird eine unsicherere
Suchheuristik verwendet, bei der es in seltenen Fällen vorkommen
kann, dass das Modell nicht gefunden wird, obwohl es im Bild
sichtbar ist. Für Greediness
=1 wird die maximale
Suchgeschwindigkeit erreicht. In den allermeisten Fällen wird das
Formmodell für Greediness
=0.9 immer sicher gefunden.
Die Position, Rotation und Skalierung der gefundenen Instanzen des
Modells werden in Row
, Column
, Angle
und
Scale
zurückgeliefert.
Die Koordinaten Row
und Column
beschreiben die
Position des Ursprungs des Modells im Suchbild. Die Werte sind
allerdings bereits geringfügig angepasst, so dass sie direkt zur
Erstellung einer Transformationsmatrix verwendet werden können, die
für ein Alignment oder die Visualisierung der Modellkanten benötigt
wird. Diese Anpassung der Koordinaten hat mit der Art und Weise zu
tun, in der HALCON ikonische Objekte transformiert, siehe hierzu
affine_trans_pixel
. Das Beispiel weiter unten zeigt, wie die
Transformationsmatrix erzeugt wird und wie man damit das Modell an der
gefundenen Position im Suchbild visualisiert und die exakten
Koordinaten berechnet.
Normalerweise ist der Ursprung des Modells der Schwerpunkt der Region
des Bildes, das zur Erzeugung des Formmodells mit
create_scaled_shape_model
verwendet wurde. Ein anderer
Ursprung kann mit set_shape_model_origin
festgelegt werden.
In Score
wird die Bewertung der gefundenen
Instanzen zurückgegeben. Die Bewertung ist eine Zahl zwischen 0 und
1 und ist ein ungefähres Maß dafür, welcher Anteil des Modells im
Bild zu sehen ist. Falls z.B. die Hälfte des Modells im Bild
verdeckt ist, kann die Bewertung nicht größer als 0.5 sein.
Falls das Formmodell mit set_shape_model_clutter
um
Störparameter erweitert wurde, gibt Score
, nach den oben
genannten Werten, auch den Störwert jeder gefundenen Instanz zurück.
Falls beispielsweise die Hälfte der Störregion Störkanten
aufweist entspricht der Störwert 0.5.
Werden z.B. zwei Instanzen gefunden,
wobei für Erstere eine Bewertung von 0.9 und für die zweite 0.8
erreicht wird und der Störwert der ersten Instanz 0.2, der
zweiten Instanz 0.1 ist, wird Score
=
[0.9,0.8,0.2,0.1] zurückgegeben.
Es ist zu beachten, dass von sämtlichen Ergebnissen des formbasierten
Matchings die Störwerte am stärksten von Beleuchtungsänderungen
beeinflusst werden.
Mittels des Operators set_shape_model_param
können Sie einen
'timeout' für find_scaled_shape_model
angeben. Wenn
find_scaled_shape_model
diesen 'timeout' erreicht endet
er ohne Ergebnis und gibt den Fehlercode 9400 (H_ERR_TIMEOUT) zurück.
Abhängig von der Größe des Skalierungsintervalls, das durch ScaleMin
und ScaleMax
festgelegt wird, benötigt
find_scaled_shape_model
eine signifikante Zeitspanne um den
Speicher für gecachte Transformationen freizugeben, falls das Modell nicht
vorberechnet wurde. Da diese Transformationen auch freigegeben werden müssen
nachdem ein Timeout auftritt, überschreitet find_scaled_shape_model
den in 'timeout' angegebenen Wert um diese Zeitspanne.
Die Verwendung der Prozedur dev_display_shape_matching_results
wird zur Darstellung der Resultate formbasierten Matchings
stark empfohlen.
Ein Überblick zu den verschiedenen in HALCON verwendeten 2D Koordinatensystemen ist in der Einleitung zum Kapitel Transformationen / 2D-Transformationen gegeben.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Image
(input_object) (multichannel-)image →
object (byte / uint2)
Eingabebild, in dem das Modell gefunden werden soll.
ModelID
(input_control) shape_model →
(handle)
Handle des Modells.
AngleStart
(input_control) angle.rad →
(real)
Kleinste auftretende Rotation des Modells.
Defaultwert: -0.39
Wertevorschläge: -3.14, -1.57, -0.79, -0.39, -0.20, 0.0
AngleExtent
(input_control) angle.rad →
(real)
Ausdehnung des Winkelbereichs.
Defaultwert: 0.78
Wertevorschläge: 6.29, 3.14, 1.57, 0.79, 0.39, 0.0
Restriktion: AngleExtent >= 0
ScaleMin
(input_control) number →
(real)
Kleinste auftretende Skalierung des Modells.
Defaultwert: 0.9
Wertevorschläge: 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Restriktion: ScaleMin > 0
ScaleMax
(input_control) number →
(real)
Größte auftretende Skalierung des Modells.
Defaultwert: 1.1
Wertevorschläge: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
Restriktion: ScaleMax >= ScaleMin
MinScore
(input_control) real(-array) →
(real)
Minimale Bewertung der zu findenden Instanzen des Modells.
Defaultwert: 0.5
Wertevorschläge: 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Typischer Wertebereich: 0
≤
MinScore
≤
1
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.05
NumMatches
(input_control) integer →
(integer)
Anzahl der zu findenden Instanzen des Modells (oder 0 für alle Treffer).
Defaultwert: 1
Wertevorschläge: 0, 1, 2, 3, 4, 5, 10, 20
MaxOverlap
(input_control) real →
(real)
Maximale Überlappung der zu findenden Instanzen des Modells.
Defaultwert: 0.5
Wertevorschläge: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Typischer Wertebereich: 0
≤
MaxOverlap
≤
1
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.05
SubPixel
(input_control) string(-array) →
(string)
Subpixelgenauigkeit falls ungleich 'none' .
Defaultwert: 'least_squares'
Wertevorschläge: 'none' , 'interpolation' , 'least_squares' , 'least_squares_high' , 'least_squares_very_high' , 'max_deformation 1' , 'max_deformation 2' , 'max_deformation 3' , 'max_deformation 4' , 'max_deformation 5' , 'max_deformation 6'
NumLevels
(input_control) integer(-array) →
(integer)
Anzahl der verwendeten Pyramidenebenen (und
unterste zu verwendende Pyramidenebene falls
|NumLevels
| = 2).
Defaultwert: 0
Werteliste: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Greediness
(input_control) real →
(real)
„Gierigkeit“ der Suchheuristik (0: sicher aber langsam; 1: schnell aber Matches können „übersehen“ werden).
Defaultwert: 0.9
Wertevorschläge: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Typischer Wertebereich: 0
≤
Greediness
≤
1
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.05
Row
(output_control) point.y-array →
(real)
Zeilenkoordinate der gefundenen Instanzen des Modells.
Column
(output_control) point.x-array →
(real)
Spaltenkoordinate der gefundenen Instanzen des Modells.
Angle
(output_control) angle.rad-array →
(real)
Rotationswinkel der gefundenen Instanzen des Modells.
Scale
(output_control) number-array →
(real)
Skalierung der gefundenen Instanzen des Modells.
Score
(output_control) real-array →
(real)
Bewertung der gefundenen Instanzen des Modells.
create_scaled_shape_model (ImageReduced, 0, rad(-45), rad(180), 0, \ 0.9, 1.1, 0, 'none', 'use_polarity', \ 30, 10, ModelID) get_shape_model_contours (ModelXLD, ModelID, 1) find_scaled_shape_model (SearchImage, ModelID, rad(-45), rad(180), \ 0.9, 1.1, 0.5, 1, 0.5, 'interpolation', \ 0, 0, Row, Column, Angle, Scale, Score) * Create transformation matrix vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2DTmp) hom_mat2d_scale (HomMat2DTmp, Scale, Scale, Row, Column, HomMat2DObject) * Calculate true position of the model origin in the search image affine_trans_pixel (HomMat2DObject, 0, 0, RowObject, ColObject) * Display results dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, \ Scale, 1, 0)
Sind die Parameterwerte korrekt, dann liefert
find_scaled_shape_model
den Wert 2 (H_MSG_TRUE). Das Verhalten bei
leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
create_scaled_shape_model
,
read_shape_model
,
set_shape_model_origin
,
set_shape_model_clutter
find_shape_model
,
find_aniso_shape_model
,
find_shape_models
,
find_scaled_shape_models
,
find_aniso_shape_models
,
find_ncc_model
,
find_ncc_models
set_system
,
get_system
,
set_shape_model_param
Matching