create_trained_component_modelT_create_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModel (Operator)
Name
create_trained_component_modelT_create_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModel
— Vorbereiten eines Komponentenmodells für das Matching auf der Basis
trainierter Komponenten.
Signatur
create_trained_component_model( : : ComponentTrainingID, AngleStart, AngleExtent, MinContrastComp, MinScoreComp, NumLevelsComp, AngleStepComp, OptimizationComp, MetricComp, PregenerationComp : ComponentModelID, RootRanking)
Herror T_create_trained_component_model(const Htuple ComponentTrainingID, const Htuple AngleStart, const Htuple AngleExtent, const Htuple MinContrastComp, const Htuple MinScoreComp, const Htuple NumLevelsComp, const Htuple AngleStepComp, const Htuple OptimizationComp, const Htuple MetricComp, const Htuple PregenerationComp, Htuple* ComponentModelID, Htuple* RootRanking)
void CreateTrainedComponentModel(const HTuple& ComponentTrainingID, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& MinContrastComp, const HTuple& MinScoreComp, const HTuple& NumLevelsComp, const HTuple& AngleStepComp, const HTuple& OptimizationComp, const HTuple& MetricComp, const HTuple& PregenerationComp, HTuple* ComponentModelID, HTuple* RootRanking)
HComponentModel HComponentTraining::CreateTrainedComponentModel(double AngleStart, double AngleExtent, const HTuple& MinContrastComp, const HTuple& MinScoreComp, const HTuple& NumLevelsComp, const HTuple& AngleStepComp, const HString& OptimizationComp, const HTuple& MetricComp, const HTuple& PregenerationComp, HTuple* RootRanking) const
HComponentModel HComponentTraining::CreateTrainedComponentModel(double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const HString& OptimizationComp, const HString& MetricComp, const HString& PregenerationComp, Hlong* RootRanking) const
HComponentModel HComponentTraining::CreateTrainedComponentModel(double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const char* OptimizationComp, const char* MetricComp, const char* PregenerationComp, Hlong* RootRanking) const
HComponentModel HComponentTraining::CreateTrainedComponentModel(double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const wchar_t* OptimizationComp, const wchar_t* MetricComp, const wchar_t* PregenerationComp, Hlong* RootRanking) const
(Nur Windows)
void HComponentModel::HComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, const HTuple& MinContrastComp, const HTuple& MinScoreComp, const HTuple& NumLevelsComp, const HTuple& AngleStepComp, const HString& OptimizationComp, const HTuple& MetricComp, const HTuple& PregenerationComp, HTuple* RootRanking)
void HComponentModel::HComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const HString& OptimizationComp, const HString& MetricComp, const HString& PregenerationComp, Hlong* RootRanking)
void HComponentModel::HComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const char* OptimizationComp, const char* MetricComp, const char* PregenerationComp, Hlong* RootRanking)
void HComponentModel::HComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const wchar_t* OptimizationComp, const wchar_t* MetricComp, const wchar_t* PregenerationComp, Hlong* RootRanking)
(Nur Windows)
HTuple HComponentModel::CreateTrainedComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, const HTuple& MinContrastComp, const HTuple& MinScoreComp, const HTuple& NumLevelsComp, const HTuple& AngleStepComp, const HString& OptimizationComp, const HTuple& MetricComp, const HTuple& PregenerationComp)
Hlong HComponentModel::CreateTrainedComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const HString& OptimizationComp, const HString& MetricComp, const HString& PregenerationComp)
Hlong HComponentModel::CreateTrainedComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const char* OptimizationComp, const char* MetricComp, const char* PregenerationComp)
Hlong HComponentModel::CreateTrainedComponentModel(const HComponentTraining& ComponentTrainingID, double AngleStart, double AngleExtent, Hlong MinContrastComp, double MinScoreComp, Hlong NumLevelsComp, double AngleStepComp, const wchar_t* OptimizationComp, const wchar_t* MetricComp, const wchar_t* PregenerationComp)
(Nur Windows)
static void HOperatorSet.CreateTrainedComponentModel(HTuple componentTrainingID, HTuple angleStart, HTuple angleExtent, HTuple minContrastComp, HTuple minScoreComp, HTuple numLevelsComp, HTuple angleStepComp, HTuple optimizationComp, HTuple metricComp, HTuple pregenerationComp, out HTuple componentModelID, out HTuple rootRanking)
HComponentModel HComponentTraining.CreateTrainedComponentModel(double angleStart, double angleExtent, HTuple minContrastComp, HTuple minScoreComp, HTuple numLevelsComp, HTuple angleStepComp, string optimizationComp, HTuple metricComp, HTuple pregenerationComp, out HTuple rootRanking)
HComponentModel HComponentTraining.CreateTrainedComponentModel(double angleStart, double angleExtent, int minContrastComp, double minScoreComp, int numLevelsComp, double angleStepComp, string optimizationComp, string metricComp, string pregenerationComp, out int rootRanking)
public HComponentModel(HComponentTraining componentTrainingID, double angleStart, double angleExtent, HTuple minContrastComp, HTuple minScoreComp, HTuple numLevelsComp, HTuple angleStepComp, string optimizationComp, HTuple metricComp, HTuple pregenerationComp, out HTuple rootRanking)
public HComponentModel(HComponentTraining componentTrainingID, double angleStart, double angleExtent, int minContrastComp, double minScoreComp, int numLevelsComp, double angleStepComp, string optimizationComp, string metricComp, string pregenerationComp, out int rootRanking)
HTuple HComponentModel.CreateTrainedComponentModel(HComponentTraining componentTrainingID, double angleStart, double angleExtent, HTuple minContrastComp, HTuple minScoreComp, HTuple numLevelsComp, HTuple angleStepComp, string optimizationComp, HTuple metricComp, HTuple pregenerationComp)
int HComponentModel.CreateTrainedComponentModel(HComponentTraining componentTrainingID, double angleStart, double angleExtent, int minContrastComp, double minScoreComp, int numLevelsComp, double angleStepComp, string optimizationComp, string metricComp, string pregenerationComp)
Beschreibung
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel
bereitet das
Trainingsergebnis, das in ComponentTrainingIDComponentTrainingIDComponentTrainingIDComponentTrainingIDcomponentTrainingID
übergeben
wird, als Komponentenmodell für das Matching vor. Der
Ausgabeparameter ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelID
ist ein Handle für dieses
Modell, der in nachfolgenden Aufrufen von
find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
verwendet wird. Im Gegensatz zu
create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel
müssen die Modellkomponenten mit
train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents
trainiert worden sein bevor
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel
aufgerufen werden kann.
Die Parameter AngleStartAngleStartAngleStartAngleStartangleStart
und AngleExtentAngleExtentAngleExtentAngleExtentangleExtent
legen den
Winkelbereich für die möglichen Rotationen des Komponentenmodells im
Bild fest.
Im Wesentlichen wird intern für jede Modellkomponente ein separates
Formmodell erzeugt (siehe create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel
). Daher
entsprechen die Parameter MinContrastCompMinContrastCompMinContrastCompMinContrastCompminContrastComp
,
MinScoreCompMinScoreCompMinScoreCompMinScoreCompminScoreComp
, NumLevelsCompNumLevelsCompNumLevelsCompNumLevelsCompnumLevelsComp
,
AngleStepCompAngleStepCompAngleStepCompAngleStepCompangleStepComp
, OptimizationCompOptimizationCompOptimizationCompOptimizationCompoptimizationComp
,
MetricCompMetricCompMetricCompMetricCompmetricComp
und PregenerationCompPregenerationCompPregenerationCompPregenerationComppregenerationComp
den
Parametern in create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel
mit den folgenden
Unterschieden: Im Parameter OptimizationOptimizationOptimizationOptimizationoptimization
von
create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel
kann neben einer möglichen Reduktion der
Modellpunkte auch entschieden werden, ob das Formmodell vollständig
vorab generiert wird oder nicht. Der Operator
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel
bietet dagegen für die
Vorabgenerierung der Formmodelle einen separaten Parameter
PregenerationCompPregenerationCompPregenerationCompPregenerationComppregenerationComp
. Ein zweiter Unterschied bezieht sich auf
den Parameter MinScoreCompMinScoreCompMinScoreCompMinScoreCompminScoreComp
, der beim formbasierten Matching
nicht bereits beim Vorbereiten des Modells mit
create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel
sondern erst bei der Suche mit
find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModel
übergeben wird. Beim Vorbereiten des
Komponentenmodells ist es jedoch vorteilhaft, auftretende
Rotationssymmetrien der Modellkomponenten und Ähnlichkeiten zwischen
den Modellkomponenten zu analysieren und beim Aufbau des
Komponentenmodells zu berücksichtigen. Diese Analyse kann jedoch nur
dann zu sinnvollen Ergebnissen führen, wenn der zur Suche verwendete
Wert für MinScoreCompMinScoreCompMinScoreCompMinScoreCompminScoreComp
(siehe find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
)
bereits annähernd bekannt ist. Die von find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
ermittelten Lagekoordinaten der Modellkomponenten in einem Suchbild
beziehen sich auf deren Referenzpunkt. Der Referenzpunkt einer
Modellkomponente ist festgelegt durch den Schwerpunkt der
entsprechenden von train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents
in
ModelComponentsModelComponentsModelComponentsModelComponentsmodelComponents
zurückgelieferten Region.
Die Parameter MinContrastCompMinContrastCompMinContrastCompMinContrastCompminContrastComp
, NumLevelsCompNumLevelsCompNumLevelsCompNumLevelsCompnumLevelsComp
,
AngleStepCompAngleStepCompAngleStepCompAngleStepCompangleStepComp
und OptimizationCompOptimizationCompOptimizationCompOptimizationCompoptimizationComp
können jeweils
durch die Angabe von 'auto'"auto""auto""auto""auto" automatisch ermittelt werden.
Alle komponentenspezifischen Eingabeparameter (Parameternamen enden
jeweils auf Comp
) müssen entweder genau ein Element
enthalten oder dieselbe Anzahl von Elementen wie in
ComponentTrainingIDComponentTrainingIDComponentTrainingIDComponentTrainingIDcomponentTrainingID
enthaltene Modellkomponenten. Im
ersten Fall wird der Wert des Eingabeparameters für alle
Modellkomponenten gleich verwendet. Im zweiten Fall wird das
jeweilige Element des Eingabeparameters für die entsprechende
Modellkomponente in ComponentTrainingIDComponentTrainingIDComponentTrainingIDComponentTrainingIDcomponentTrainingID
verwendet.
Das Komponentenmodell enthält neben den einzelnen Formmodellen auch
die Information über die Art und Weise, wie die einzelnen
Modellkomponenten mit find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
relativ
zueinander gesucht werden müssen, damit die Rechenzeit während der
Suche minimal ist. Dabei werden die Komponenten durch eine
Baumstruktur repräsentiert. Zunächst wird die Komponente, die an der
Wurzel des Baumes (Wurzelkomponente) steht, gesucht. Anschließend
werden die übrigen Komponenten jeweils relativ zur Lage ihres
Vorgängers im Baum gesucht.
Die Wurzelkomponente kann bei der Suche mit find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
als
Parameter übergeben werden. Inwiefern sich eine Modellkomponente als
Wurzelkomponente eignet, hängt von verschiedenen Faktoren ab. Prinzipiell
sollte eine Modellkomponente gewählt werden, die mit hoher Wahrscheinlichkeit
im Bild wiedergefunden werden kann. Eine im Bild stark verdeckte oder
fehlende Komponente eignet sind daher nur bedingt als Wurzelkomponente. Auch
die mit der Wurzelkomponente verbundene Rechenzeit während der Suche kann als
Auswahlkriterium herangezogen werden. Eine nach diesem Kriterium sortierte
Rangfolge der Modellkomponenten wird im Parameter RootRankingRootRankingRootRankingRootRankingrootRanking
zurückgeliefert. In diesem Parameter sind die Indizes der Modellkomponenten
nach der mit ihnen verbundenen Rechenzeit aufsteigend sortiert, d.h.
RootRankingRootRankingRootRankingRootRankingrootRanking
[0] enthält den Index der Modellkomponente, die - als
Wurzelkomponente gewählt - die schnellste Suche ermöglicht. Die in
RootRankingRootRankingRootRankingRootRankingrootRanking
ermittelte Reihenfolge stellt jedoch nur eine grobe
Abschätzung dar. Die Abschätzung setzt außerdem voraus, dass sowohl die
Bildgröße als auch der Wert des Systemparameters
'border_shape_models'"border_shape_models""border_shape_models""border_shape_models""border_shape_models" beim Aufruf von
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel
und find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
identisch sind.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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.
Parameter
ComponentTrainingIDComponentTrainingIDComponentTrainingIDComponentTrainingIDcomponentTrainingID
(input_control) component_training →
HComponentTraining, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Trainingsergebnisses.
AngleStartAngleStartAngleStartAngleStartangleStart
(input_control) angle.rad →
HTupleHTupleHtuple (real) (double) (double) (double)
Kleinste auftretende Rotation des Komponentenmodells.
Defaultwert: -0.39
Wertevorschläge: -3.14, -1.57, -0.79, -0.39, -0.20, 0.0
AngleExtentAngleExtentAngleExtentAngleExtentangleExtent
(input_control) angle.rad →
HTupleHTupleHtuple (real) (double) (double) (double)
Ausdehnung des Winkelbereichs.
Defaultwert: 0.79
Wertevorschläge: 6.28, 3.14, 1.57, 0.79, 0.39
Restriktion: AngleExtent >= 0
MinContrastCompMinContrastCompMinContrastCompMinContrastCompminContrastComp
(input_control) integer(-array) →
HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
Minimaler Kontrast der Komponenten in den Suchbildern.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto", 10, 20, 20, 40
Restriktion: MinContrastComp >= 0
MinScoreCompMinScoreCompMinScoreCompMinScoreCompminScoreComp
(input_control) real(-array) →
HTupleHTupleHtuple (real) (double) (double) (double)
Minimale Bewertung der zu findenden Instanzen der
Komponenten.
Defaultwert: 0.5
Wertevorschläge: 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.05
Restriktion: 0 <= MinScoreComp && MinScoreComp <= 1
NumLevelsCompNumLevelsCompNumLevelsCompNumLevelsCompnumLevelsComp
(input_control) integer(-array) →
HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
Maximale Anzahl von Pyramidenebenen für die
Komponenten.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
Werteliste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'"auto""auto""auto""auto"
AngleStepCompAngleStepCompAngleStepCompAngleStepCompangleStepComp
(input_control) angle.rad(-array) →
HTupleHTupleHtuple (real / string) (double / string) (double / HString) (double / char*)
Schrittweite der Winkel (Auflösung) für die
Komponenten.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto", 0.0175, 0.0349, 0.0524, 0.0698, 0.0873
Restriktion: AngleStepComp >= 0
OptimizationCompOptimizationCompOptimizationCompOptimizationCompoptimizationComp
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Art der Optimierung für die Komponenten.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
Werteliste: 'auto'"auto""auto""auto""auto", 'none'"none""none""none""none", 'point_reduction_high'"point_reduction_high""point_reduction_high""point_reduction_high""point_reduction_high", 'point_reduction_low'"point_reduction_low""point_reduction_low""point_reduction_low""point_reduction_low", 'point_reduction_medium'"point_reduction_medium""point_reduction_medium""point_reduction_medium""point_reduction_medium"
MetricCompMetricCompMetricCompMetricCompmetricComp
(input_control) string(-array) →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Art der zum Matchen der Komponenten verwendeten Metrik.
Defaultwert:
'use_polarity'
"use_polarity"
"use_polarity"
"use_polarity"
"use_polarity"
Werteliste: 'ignore_color_polarity'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity", 'ignore_global_polarity'"ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity", 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity", 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity"
PregenerationCompPregenerationCompPregenerationCompPregenerationComppregenerationComp
(input_control) string(-array) →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Komplette Vorabgenerierung der Formmodelle für die
Komponenten falls 'true'"true""true""true""true".
Defaultwert:
'false'
"false"
"false"
"false"
"false"
Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"
ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelID
(output_control) component_model →
HComponentModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Komponentenmodells.
RootRankingRootRankingRootRankingRootRankingrootRanking
(output_control) integer(-array) →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Reihenfolge der Modellkomponenten, die deren
Eignung als Wurzelkomponente zu fungieren ausdrückt.
Beispiel (HDevelop)
* Get the model image.
read_image (ModelImage, 'model_image.tif')
* Define the regions for the initial components.
gen_rectangle2 (InitialComponentRegions, 212, 233, 0.62, 167, 29)
gen_rectangle2 (Rectangle2, 298, 363, 1.17, 162, 34)
gen_rectangle2 (Rectangle3, 63, 444, -0.26, 50, 27)
gen_rectangle2 (Rectangle4, 120, 473, 0, 33, 20)
concat_obj (InitialComponentRegions, Rectangle2, InitialComponentRegions)
concat_obj (InitialComponentRegions, Rectangle3, InitialComponentRegions)
concat_obj (InitialComponentRegions, Rectangle4, InitialComponentRegions)
* Get the training images.
gen_empty_obj (TrainingImages)
for i := 1 to 4 by 1
read_image (TrainingImage, 'training_image-'+i+'.tif')
concat_obj (TrainingImages, TrainingImage, TrainingImages)
endfor
* Extract the model components and train the relations.
train_model_components (ModelImage, InitialComponentRegions, \
TrainingImages, ModelComponents, 22, 60, 30, 0.65, \
0, 0, rad(60), 'speed', 'rigidity', 0.2, 0.4, \
ComponentTrainingID)
* Create the component model based on the training result.
create_trained_component_model (ComponentTrainingID, -rad(30), rad(60), 10, \
0.5, 'auto', 'auto', 'none', \
'use_polarity', 'false', ComponentModelID, \
RootRanking)
* Find the component model in a run-time image.
read_image (SearchImage, 'search_image.tif')
find_component_model (SearchImage, ComponentModelID, RootRanking, -rad(30), \
rad(60), 0.5, 0, 0.5, 'stop_search', 'prune_branch', \
'none', 0.55, 'least_squares', 0, 0.9, ModelStart, \
ModelEnd, Score, RowComp, ColumnComp, AngleComp, \
ScoreComp, ModelComp)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel
den Wert 2 (H_MSG_TRUE). Gegebenenfalls
wird eine Fehlerbehandlung durchgeführt.
Vorgänger
train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents
,
read_training_componentsread_training_componentsReadTrainingComponentsReadTrainingComponentsReadTrainingComponents
Nachfolger
find_component_modelfind_component_modelFindComponentModelFindComponentModelFindComponentModel
Alternativen
create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel
Siehe auch
create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel
,
find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModel
Modul
Matching