create_aniso_shape_modelT_create_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model (Operator)
Name
create_aniso_shape_modelT_create_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model — Vorbereiten eines anisotrop skalierten Formmodells für das Matching.
Signatur
create_aniso_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast : ModelID)
Herror T_create_aniso_shape_model(const Hobject Template, const Htuple NumLevels, const Htuple AngleStart, const Htuple AngleExtent, const Htuple AngleStep, const Htuple ScaleRMin, const Htuple ScaleRMax, const Htuple ScaleRStep, const Htuple ScaleCMin, const Htuple ScaleCMax, const Htuple ScaleCStep, const Htuple Optimization, const Htuple Metric, const Htuple Contrast, const Htuple MinContrast, Htuple* ModelID)
void CreateAnisoShapeModel(const HObject& Template, const HTuple& NumLevels, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& AngleStep, const HTuple& ScaleRMin, const HTuple& ScaleRMax, const HTuple& ScaleRStep, const HTuple& ScaleCMin, const HTuple& ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HTuple& Metric, const HTuple& Contrast, const HTuple& MinContrast, HTuple* ModelID)
void HShapeModel::HShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast)
void HShapeModel::HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast)
void HShapeModel::HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast)
void HShapeModel::HShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast)
(Nur Windows)
void HShapeModel::CreateAnisoShapeModel(const HImage& Template, const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast)
void HShapeModel::CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast)
void HShapeModel::CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast)
void HShapeModel::CreateAnisoShapeModel(const HImage& Template, Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast)
(Nur Windows)
HShapeModel HImage::CreateAnisoShapeModel(const HTuple& NumLevels, double AngleStart, double AngleExtent, const HTuple& AngleStep, double ScaleRMin, double ScaleRMax, const HTuple& ScaleRStep, double ScaleCMin, double ScaleCMax, const HTuple& ScaleCStep, const HTuple& Optimization, const HString& Metric, const HTuple& Contrast, const HTuple& MinContrast) const
HShapeModel HImage::CreateAnisoShapeModel(Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const HString& Optimization, const HString& Metric, Hlong Contrast, Hlong MinContrast) const
HShapeModel HImage::CreateAnisoShapeModel(Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const char* Optimization, const char* Metric, Hlong Contrast, Hlong MinContrast) const
HShapeModel HImage::CreateAnisoShapeModel(Hlong NumLevels, double AngleStart, double AngleExtent, double AngleStep, double ScaleRMin, double ScaleRMax, double ScaleRStep, double ScaleCMin, double ScaleCMax, double ScaleCStep, const wchar_t* Optimization, const wchar_t* Metric, Hlong Contrast, Hlong MinContrast) const
(Nur Windows)
static void HOperatorSet.CreateAnisoShapeModel(HObject template, HTuple numLevels, HTuple angleStart, HTuple angleExtent, HTuple angleStep, HTuple scaleRMin, HTuple scaleRMax, HTuple scaleRStep, HTuple scaleCMin, HTuple scaleCMax, HTuple scaleCStep, HTuple optimization, HTuple metric, HTuple contrast, HTuple minContrast, out HTuple modelID)
public HShapeModel(HImage template, HTuple numLevels, double angleStart, double angleExtent, HTuple angleStep, double scaleRMin, double scaleRMax, HTuple scaleRStep, double scaleCMin, double scaleCMax, HTuple scaleCStep, HTuple optimization, string metric, HTuple contrast, HTuple minContrast)
public HShapeModel(HImage template, int numLevels, double angleStart, double angleExtent, double angleStep, double scaleRMin, double scaleRMax, double scaleRStep, double scaleCMin, double scaleCMax, double scaleCStep, string optimization, string metric, int contrast, int minContrast)
void HShapeModel.CreateAnisoShapeModel(HImage template, HTuple numLevels, double angleStart, double angleExtent, HTuple angleStep, double scaleRMin, double scaleRMax, HTuple scaleRStep, double scaleCMin, double scaleCMax, HTuple scaleCStep, HTuple optimization, string metric, HTuple contrast, HTuple minContrast)
void HShapeModel.CreateAnisoShapeModel(HImage template, int numLevels, double angleStart, double angleExtent, double angleStep, double scaleRMin, double scaleRMax, double scaleRStep, double scaleCMin, double scaleCMax, double scaleCStep, string optimization, string metric, int contrast, int minContrast)
HShapeModel HImage.CreateAnisoShapeModel(HTuple numLevels, double angleStart, double angleExtent, HTuple angleStep, double scaleRMin, double scaleRMax, HTuple scaleRStep, double scaleCMin, double scaleCMax, HTuple scaleCStep, HTuple optimization, string metric, HTuple contrast, HTuple minContrast)
HShapeModel HImage.CreateAnisoShapeModel(int numLevels, double angleStart, double angleExtent, double angleStep, double scaleRMin, double scaleRMax, double scaleRStep, double scaleCMin, double scaleCMax, double scaleCStep, string optimization, string metric, int contrast, int minContrast)
def create_aniso_shape_model(template: HObject, num_levels: Union[int, str], angle_start: float, angle_extent: float, angle_step: Union[float, str], scale_rmin: float, scale_rmax: float, scale_rstep: Union[float, str], scale_cmin: float, scale_cmax: float, scale_cstep: Union[float, str], optimization: MaybeSequence[str], metric: str, contrast: MaybeSequence[Union[int, str]], min_contrast: Union[int, str]) -> HHandle
Beschreibung
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model bereitet ein Muster, das als Bild
TemplateTemplateTemplateTemplatetemplatetemplate übergeben wird, als anisotrop skaliertes Formmodell
für das Matching vor. Die ROI des Modells wird als
der Definitionsbereich von TemplateTemplateTemplateTemplatetemplatetemplate übergeben.
Der Ausgabeparameter ModelIDModelIDModelIDModelIDmodelIDmodel_id ist ein Handle für dieses Modell,
der in nachfolgenden Aufrufen von find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model
verwendet wird. Als Ursprung (Referenzpunkt) des Modells wird der Schwerpunkt
der Region des Modellbildes TemplateTemplateTemplateTemplatetemplatetemplate verwendet. Falls ein
anderer Ursprung gewünscht wird, kann dieser mit
set_shape_model_originset_shape_model_originSetShapeModelOriginSetShapeModelOriginSetShapeModelOriginset_shape_model_origin gesetzt werden.
Das Modell wird auf mehreren Pyramidenebenen generiert und im
Speicher abgelegt. Falls eine vollständige Vorabgenerierung des
Modells gewählt wird (siehe unten), wird das Modell in mehreren
Rotationen und anisotropen Skalierungen (unabhängigen Skalierungen
in Zeilen- und Spaltenrichtung) auf jeder Ebene generiert. Das Modell kann
mit set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter um Störparameter erweitert werden.
Eingabeparameter im Detail
- NumLevels:
-
Die Anzahl der Pyramidenebenen wird mit NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels
festgelegt. Sie sollte so groß wie möglich gewählt werden, da
hierdurch das Auffinden des Modells erheblich beschleunigt wird.
Bei der Wahl von NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels ist aber darauf zu achten, dass
das Modell auf der obersten Pyramidenstufe noch erkennbar ist und
genügend viele Punkte besitzt (mindestens vier). Dies kann anhand
der Ausgabe von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModelinspect_shape_model überprüft werden. Falls
nicht genügend Modellpunkte erzeugt werden, wird die Anzahl der
Pyramidenstufen intern solange reduziert, bis auf der obersten
Pyramidenstufe genügend Modellpunkte vorhanden sind. Falls durch
diese Anpassung ein Modell mit keiner Pyramidenstufe entstehen
würde, d.h. falls schon auf der untersten Pyramidenstufe zu wenige
Modellpunkte vorhanden sind, liefert
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model eine Fehlermeldung zurück.
Falls für NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels 'auto'"auto""auto""auto""auto""auto" (oder 0 für
Rückwärtskompatibilität) übergeben wird, wählt
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model die Anzahl der Pyramidenstufen
automatisch. Die automatisch gewählte Anzahl von Pyramidenstufen
kann mit get_shape_model_paramsget_shape_model_paramsGetShapeModelParamsGetShapeModelParamsGetShapeModelParamsget_shape_model_params abgefragt werden. In
seltenen Fällen kann es vorkommen, dass
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model die Anzahl der Pyramidenstufen zu
hoch oder zu niedrig bestimmt. Falls die Anzahl der Pyramidenstufen
zu hoch gewählt wird, kann das dazu führen, dass das Modell im Bild
nicht erkannt wird oder dass sehr niedrige Parameter für MinScoreMinScoreMinScoreMinScoreminScoremin_score
oder GreedinessGreedinessGreedinessGreedinessgreedinessgreediness in find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model selektiert werden
müssen, damit das Modell gefunden wird. Falls die Anzahl der
Pyramidenstufen zu niedrig gewählt wird, kann es zu erhöhten
Laufzeiten in find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model kommen. In diesen
Fällen sollte die Anzahl der Pyramidenstufen mit Hilfe der Ausgabe
von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModelinspect_shape_model gewählt werden.
- AngleStart, AngleExtent und AngleStep:
-
Die Parameter AngleStartAngleStartAngleStartAngleStartangleStartangle_start und AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent legen den
Winkelbereich für die möglichen Rotationen des Modells im Bild fest.
Das Modell kann also mit find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model nur in
diesem Winkelbereich gefunden werden. Der Parameter
AngleStepAngleStepAngleStepAngleStepangleStepangle_step gibt die Schrittweite der Winkel in dem gewählten
Winkelbereich an. Falls bei find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model keine
Subpixelgenauigkeit spezifiziert wird, gibt AngleStepAngleStepAngleStepAngleStepangleStepangle_step also
die erreichbare Winkelgenauigkeit an. AngleStepAngleStepAngleStepAngleStepangleStepangle_step sollte
aufgrund der Größe des Objektes gewählt werden. Kleinere Modelle
besitzen nur eine kleine Anzahl von verschiedenen diskreten
Rotationen im Bild. Deshalb sollte AngleStepAngleStepAngleStepAngleStepangleStepangle_step für kleinere
Modelle größer gewählt werden. Falls AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent kein
ganzzahliges Vielfaches von AngleStepAngleStepAngleStepAngleStepangleStepangle_step ist, wird
AngleStepAngleStepAngleStepAngleStepangleStepangle_step entsprechend angepasst.
Um sicherzustellen, dass find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model für
Modellinstanzen ohne Rotation Winkel von exakt 0.0 zurückgibt, wird der
Winkelbereich der möglichen Rotationen folgendermaßen angepasst: Wenn
kein positiver ganzzahliger Wert n existiert, für den
AngleStartAngleStartAngleStartAngleStartangleStartangle_start plus n mal AngleStepAngleStepAngleStepAngleStepangleStepangle_step genau Null ergibt,
wird AngleStartAngleStartAngleStartAngleStartangleStartangle_start um höchstens AngleStepAngleStepAngleStepAngleStepangleStepangle_step verringert,
und AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent wird um AngleStepAngleStepAngleStepAngleStepangleStepangle_step vergrößert.
- ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, ScaleRStep und ScaleCStep:
-
Die Parameter ScaleRMinScaleRMinScaleRMinScaleRMinscaleRMinscale_rmin, ScaleRMaxScaleRMaxScaleRMaxScaleRMaxscaleRMaxscale_rmax,
ScaleCMinScaleCMinScaleCMinScaleCMinscaleCMinscale_cmin und ScaleCMaxScaleCMaxScaleCMaxScaleCMaxscaleCMaxscale_cmax legen den Bereich der
möglichen anisotropen Skalierung des Modells in Zeilen- und
Spaltenrichtung im Bild fest. Eine Skalierung von 1 in beiden
Skalierungsfaktoren entspricht der Originalgröße des Modells. Die
Parameter ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep und ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep geben die
Schrittweite der Skalierungen an. Falls bei
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model keine Subpixelgenauigkeit
spezifiziert wird, geben ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep und ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep
also die erreichbare Genauigkeit der Skalierungen an. Wie
AngleStepAngleStepAngleStepAngleStepangleStepangle_step sollten ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep und
ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep aufgrund der Größe des Objektes gewählt werden.
Falls der jeweilige Skalierungsbereich kein ganzzahliges Vielfaches
von ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep und ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep ist, werden
ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep und ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep entsprechend angepasst.
Um sicherzustellen, dass find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model für
Modellinstanzen ohne Skalierung Skalierungen von exakt 1.0 zurückgibt,
wird der Bereich der möglichen Skalierungen folgendermaßen angepasst: Wenn
keine positiven ganzzahligen Werte n und m existieren, für die
ScaleRMinScaleRMinScaleRMinScaleRMinscaleRMinscale_rmin plus n mal ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep sowie ScaleCMinScaleCMinScaleCMinScaleCMinscaleCMinscale_cmin
plus m mal ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep genau 1.0 ergeben, werden ScaleRMinScaleRMinScaleRMinScaleRMinscaleRMinscale_rmin
und ScaleCMinScaleCMinScaleCMinScaleCMinscaleCMinscale_cmin um höchstens ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep bzw.
ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep verringert, und ScaleRMaxScaleRMaxScaleRMaxScaleRMaxscaleRMaxscale_rmax und
ScaleCMaxScaleCMaxScaleCMaxScaleCMaxscaleCMaxscale_cmax werden so erhöht, dass der jeweilige
Skalierungsbereich um ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep bzw. ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep
vergrößert wird.
Es ist zu beachten, dass die Transformationen intern so behandelt
werden, dass erst die Skalierungen und dann die Rotation angewendet
werden. Daher sollte das Modell im Normalfall so ausgerichtet
werden, dass es im Modellbild horizontal oder vertikal erscheint.
- Optimization:
-
Bei besonders großen Modellen kann es auch sinnvoll sein, die Anzahl
der Modellpunkte durch Setzen des Parameters OptimizationOptimizationOptimizationOptimizationoptimizationoptimization
auf einen Wert ungleich 'none'"none""none""none""none""none" zu setzen. Falls
OptimizationOptimizationOptimizationOptimizationoptimizationoptimization = 'none'"none""none""none""none""none", werden alle Modellpunkte
abgespeichert. Ansonsten wird die Anzahl der Punkte entsprechend
dem Parameter OptimizationOptimizationOptimizationOptimizationoptimizationoptimization reduziert. Falls die Anzahl der
Punkte reduziert wird, kann es bei find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model
notwendig werden, den Parameter Greediness auf einen
kleineren Wert, z.B. 0.7 oder 0.8, zu setzen. Bei kleineren
Modellen bewirkt die Reduktion der Anzahl der Punkte keine
Beschleunigung, da dadurch typischerweise wesentlich mehr
potentielle Instanzen des Modells untersucht werden müssen.
Falls für OptimizationOptimizationOptimizationOptimizationoptimizationoptimization 'auto'"auto""auto""auto""auto""auto" übergeben wird, wählt
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model die Reduktion der Punkte
automatisch.
- Metric:
-
Der Parameter MetricMetricMetricMetricmetricmetric legt fest, unter welchen Bedingungen
das Muster im Bild noch erkannt wird.
Falls MetricMetricMetricMetricmetricmetric = 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity""use_polarity", muss das Objekt im Bild
dieselben Kontrasteigenschaften aufweisen wie das Modell. Wenn z.B. das
Modell ein helles Objekt auf dunklem Hintergrund ist, wird das
Objekt im Bild nur dann gefunden, wenn es auch heller als der
Hintergrund ist.
Falls MetricMetricMetricMetricmetricmetric = 'ignore_global_polarity'"ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity", wird das Objekt
auch dann im Bild gefunden, wenn sich der Kontrast global umkehrt.
Im obigen Beispiel würde das Objekt also auch dann gefunden, wenn es dunkler
als der Hintergrund ist. Die Laufzeit von find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model
erhöht sich in diesem Fall geringfügig.
Falls MetricMetricMetricMetricmetricmetric = 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity", wird das Modell
auch dann gefunden, wenn sich die Kontrastverhältnisse lokal ändern.
Dieser Modus kann z.B. dann sinnvoll sein, wenn das Objekt aus einem Teil
mittleren Grauwerts besteht, auf dem entweder dunkle oder helle
Unterobjekte liegen können. Da sich in diesem Fall die Laufzeit von
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model aber wesentlich erhöht, ist es in
solchen Fällen meist sinnvoller, mehrere Modelle mit
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model zu erzeugen und mit
find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModelsfind_aniso_shape_models zu suchen.
Die obigen drei Metriken können nur auf einkanalige Bilder angewendet
werden. Falls im Modellbild oder in den Suchbildern ein mehrkanaliges Bild
übergeben wird, wird stillschweigend nur der erste Kanal des Bildes
verwendet.
Falls MetricMetricMetricMetricmetricmetric = 'ignore_color_polarity'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity", wird das
Modell auch dann gefunden, falls sich die Farbkontraste lokal ändern
können. Dies ist z.B. der Fall, wenn Teile des Objektes ihre Farbe
ändern können, z.B. von rot auf grün. Dieser Modus ist insbesondere
dann sinnvoll, wenn nicht vorab bekannt ist, in welchen Kanälen das
Objekt zu erkennen ist. Auch hier kann sich die Laufzeit von
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model erheblich erhöhen. Die Metrik
'ignore_color_polarity'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity" kann auf Bilder mit einer
beliebigen Anzahl von Kanälen angewendet werden. Falls sie mit
einkanaligen Bildern verwendet wird, hat sie dieselbe Wirkung wie
'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity". Es ist zu beachten, dass für
MetricMetricMetricMetricmetricmetric = 'ignore_color_polarity'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity" die Anzahl der
Kanäle bei der Modellgenerierung mit
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model und bei der Suche mit
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model verschieden sein können. Dies
erlaubt z.B. die Modellgenerierung aus einem einkanaligen
synthetisch generierten Bild. Es ist auch zu beachten, dass die
Kanäle nicht einer spektralen Unterteilung des Lichtes (wie z.B. bei
einem RGB-Bild) entsprechen müssen. Die Kanäle können z.B. auch
durch Beleuchtung des Objektes aus unterschiedlichen Richtungen
entstanden sein.
- Contrast:
-
Der Parameter ContrastContrastContrastContrastcontrastcontrast legt fest, welchen Grauwertkontrast
die Punkte des Modells besitzen müssen. Der Kontrast ist ein Maß
für die lokalen Grauwertdifferenzen zwischen dem Objekt und dem
Hintergrund und zwischen verschiedenen Teilen des Objektes.
ContrastContrastContrastContrastcontrastcontrast sollte so gewählt werden, dass nur die
signifikanten Merkmale des Musters für das Modell verwendet werden.
ContrastContrastContrastContrastcontrastcontrast kann auch ein Tupel mit zwei Werten enthalten. In
diesem Fall wird bei der Segmentierung des Modells ein Verfahren,
das ähnlich zum Hysterese-Schwellenwert-Verfahren in
edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image ist, eingesetzt. Dabei ist der erste Wert des
Tupels der untere Schwellenwert und der zweite Wert der obere
Schwellenwert. Für weitere Informationen über das
Hysterese-Schwellenwert-Verfahren siehe hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThresholdhysteresis_threshold.
Optional kann in ContrastContrastContrastContrastcontrastcontrast auch ein dritter Wert als letztes
Element des Tupels übergeben werden. Dieser Wert dient zur
Selektion von signifikanten Komponenten des Modells basierend auf
der Größe der Komponenten, d.h. Komponenten, deren Anzahl von
Punkten kleiner ist als diese Mindestgröße, werden unterdrückt.
Da sich die Mindestgröße auf die Größe der Komponenten bezieht kann es
auch vorkommen, dass die daraus abgeleiteten Modellkonturen trotzdem
kleiner als die angegebene Mindestgröße sind.
Dieser Schwellenwert wird pro Pyramidenstufe halbiert. Falls eine
Unterdrückung von kleinen Modellkomponenten gewünscht ist, aber
keine Hysterese-Schwellenwert-Operation, müssen dennoch drei Werte in
ContrastContrastContrastContrastcontrastcontrast übergeben werden, von denen die ersten zwei auf
denselben Wert gesetzt werden. Die Wirkung von ContrastContrastContrastContrastcontrastcontrast
kann auch vorab mit inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModelinspect_shape_model überprüft werden.
Wird ContrastContrastContrastContrastcontrastcontrast auf 'auto'"auto""auto""auto""auto""auto" gesetzt, dann bestimmt
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model die beschriebenen drei Werte
automatisch. Es besteht die Möglichkeit, nur den Kontrast
('auto_contrast'"auto_contrast""auto_contrast""auto_contrast""auto_contrast""auto_contrast"), die Hysterese-Schwellenwerte
('auto_contrast_hyst'"auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst") oder die Mindestgröße
('auto_min_size'"auto_min_size""auto_min_size""auto_min_size""auto_min_size""auto_min_size") automatisch bestimmen zu lassen. Die
übrigen, nicht automatisch zu bestimmenden Größen, können dann
zusätzlich als Tupel übergeben werden. Dabei sind auch Kombinationen
zulässig: Wird z.B. ['auto_contrast','auto_min_size']["auto_contrast","auto_min_size"]["auto_contrast","auto_min_size"]["auto_contrast","auto_min_size"]["auto_contrast","auto_min_size"]["auto_contrast","auto_min_size"]
übergeben, wird sowohl der Kontrast als auch die Mindestgröße
bestimmt. Bei ['auto_min_size',20,30]["auto_min_size",20,30]["auto_min_size",20,30]["auto_min_size",20,30]["auto_min_size",20,30]["auto_min_size",20,30] wird die Mindestgröße
automatisch ermittelt, während die Hysterese-Schwellen auf
20 und 30 gesetzt werden, etc. In bestimmten
Fällen kann es vorkommen, dass die automatische Bestimmung der
Kontrast-Schwellenwerte nicht zum gewünschten Ergebnis führt. So ist
eine manuelle Parameterwahl zu bevorzugen, wenn anwendungsbedingt
bestimmte Modellkomponenten ausgeschlossen oder ins Modell
integriert werden sollen oder wenn das Objekt mehrere
unterschiedliche Kontraststufen umfasst. Daher ist es sinnvoll, die
Kontrastwerte vor der Modellgenerierung mit
determine_shape_model_paramsdetermine_shape_model_paramsDetermineShapeModelParamsDetermineShapeModelParamsDetermineShapeModelParamsdetermine_shape_model_params automatisch zu ermitteln und
das Ergebnis mit inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModelinspect_shape_model zu überprüfen.
Es ist zu beachten, dass MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast die Bestimmung
der Kontrast-Schwellenwerte beeinflusst, und daher auch die Schätzung
der Mindestgröße.
- MinContrast:
-
Mit MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast wird festgelegt, welchen Grauwertkontrast
das Modell später bei der Erkennung mit
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model im Bild mindestens besitzen muss.
Mit anderen Worten stellt dieser Parameter somit eine Abgrenzung des
Musters von Rauschen im Bild dar. Eine gute Wahl ist deshalb der
Bereich von Grauwertänderungen, der durch das Rauschen im Bild
verursacht wird. Falls die Grauwerte z.B. in einem Bereich von 10
Graustufen durch Rauschen schwanken, sollte MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast auf
10 gesetzt werden. Falls mehrkanalige Bilder für das Modell und für
die Suchbilder verwendet werden, und falls der Parameter
MetricMetricMetricMetricmetricmetric auf 'ignore_color_polarity'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity" gesetzt wird
(siehe oben), muss das Rauschen in einem Kanal noch mit der Wurzel
der Anzahl der Kanäle multipliziert werden, um MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast
zu bestimmen. Falls die Grauwerte in einem Kanal z.B. in einem
Bereich von 10 Graustufen schwanken, sollte MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast bei
einem dreikanaligen Bild auf 17 gesetzt werden. Offensichtlich muss
MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast kleiner als ContrastContrastContrastContrastcontrastcontrast sein. Falls das
Modell später in sehr kontrastarmen Bildern erkannt werden soll,
muss MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast entsprechend klein gewählt werden. Falls
das Modell mit erheblichen Verdeckungen erkannt werden soll, sollte
MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast etwas größer als der Grauwertbereich, der durch
das Rauschen verursacht wird, gewählt werden, um eine robuste und
genaue Lageschätzung des verdeckten Modells zu gewährleisten.
Wird MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast auf 'auto'"auto""auto""auto""auto""auto" gesetzt, wählt
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model den Mindestkontrast basierend auf
dem Rauschen im Modellbild automatisch. Eine automatische Bestimmung
ergibt demzufolge nur Sinn, wenn das bei der Erkennung zu erwartende
Bildrauschen dem Rauschen im Modellbild entspricht. Außerdem kann es
in manchen Fällen sinnvoll sein, den automatisch ermittelten Wert zu
erhöhen, um eine höhere Robustheit gegenüber Verdeckungen zu
erzielen (siehe oben). Der automatisch bestimmte Mindestkontrast
kann mit get_shape_model_paramsget_shape_model_paramsGetShapeModelParamsGetShapeModelParamsGetShapeModelParamsget_shape_model_params abgefragt werden.
Vollständige Vorabgenerierung des Modells
Optional kann in OptimizationOptimizationOptimizationOptimizationoptimizationoptimization ein zweiter Wert übergeben
werden. Dieser Wert legt fest, ob das Modell vollständig vorab
generiert wird oder nicht. Der zweite Wert von
OptimizationOptimizationOptimizationOptimizationoptimizationoptimization ist hierzu auf 'pregeneration'"pregeneration""pregeneration""pregeneration""pregeneration""pregeneration" oder
'no_pregeneration'"no_pregeneration""no_pregeneration""no_pregeneration""no_pregeneration""no_pregeneration" zu setzen. Falls der zweite Wert nicht
angegeben wird, wird der mit
set_system('pregenerate_shape_models',...)set_system("pregenerate_shape_models",...)SetSystem("pregenerate_shape_models",...)SetSystem("pregenerate_shape_models",...)SetSystem("pregenerate_shape_models",...)set_system("pregenerate_shape_models",...) eingestellte
Modus verwendet. Mit der Standardeinstellung
('pregenerate_shape_models'"pregenerate_shape_models""pregenerate_shape_models""pregenerate_shape_models""pregenerate_shape_models""pregenerate_shape_models" = 'false'"false""false""false""false""false") wird das
Modell nicht vollständig vorab generiert. Die vollständige
Vorabgenerierung des Modells führt im Normalfall zu leicht
geringeren Laufzeiten in find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model, da das
Modell nicht zur Laufzeit transformiert werden muss. Allerdings
sind in diesem Fall der Speicherbedarf und die Zeit, die zur
Modellerzeugung benötigt wird, wesentlich höher. Zu beachten ist
auch, dass in den zwei Modi nicht dieselben Ergebnisse erwartet
werden können, da intern bei der Transformation zur Laufzeit
notwendigerweise andere Daten für die transformierten Modelle
entstehen, als bei der Vorabgenerierung. Falls das Modell nicht
vorab generiert wird, werden z.B. in find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model
typischerweise leicht niedrigere Bewertungen (Scores)
zurückgeliefert, so dass es unter Umständen notwendig sein kann,
einen niedrigeren Wert für MinScoreMinScoreMinScoreMinScoreminScoremin_score als bei vollständiger
Vorabgenerierung zu verwenden. Außerdem können sich die durch
Interpolation gewonnenen Subpixelpositionen geringfügig
unterscheiden. Falls höchste Genauigkeit gewünscht wird, sollte die
Lage des Modells mittels Ausgleichsrechnung (Least-Squares
Adjustment) bestimmt werden.
Falls eine vollständige Vorabgenerierung des Modells gewählt wird,
wird das Modell in dem gewählten Winkelbereich und
Skalierungsbereich vorab generiert und im Speicher abgelegt. Der
Speicherbedarf zur Speicherung des Modells ist also proportional zur
Anzahl der Winkelschritte, zur Anzahl der Skalierungsschritte und
zur Anzahl der Punkte im Modell. Wenn also AngleStepAngleStepAngleStepAngleStepangleStepangle_step,
ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep oder ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep zu klein bzw.
AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent oder der Skalierungsbereich zu groß gewählt
werden, kann es vorkommen, dass das Modell nicht mehr in den
(virtuellen) Speicher passt. In diesem Fall muss entweder
AngleStepAngleStepAngleStepAngleStepangleStepangle_step, ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep oder ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep
größer oder AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent oder der Skalierungsbereich kleiner
gewählt werden. In jedem Fall ist es aus Laufzeitgründen
vorteilhaft, wenn das Modell komplett in den Hauptspeicher passt und
somit ein Paging durch das Betriebssystem vermieden werden kann. Da
die Möglichkeit zur subpixelgenauen Winkelbestimmung in
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model gegeben ist, kann bei Modellen mit
einem Durchmesser von ca. 200 Pixeln AngleStepAngleStepAngleStepAngleStepangleStepangle_step >= 1° und ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep,
ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep >= 0.02 gewählt werden.
Falls AngleStepAngleStepAngleStepAngleStepangleStepangle_step =
0 oder ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep, ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep =
'auto'"auto""auto""auto""auto""auto" (oder jeweils 0 für
Rückwärtskompatibilität) übergeben wird, wählt
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model automatisch eine Schrittweite für
die Winkel bzw. Skalierungen basierend auf der Größe des Modells
aus. Die automatisch gewählten Schrittweiten können mit
get_shape_model_paramsget_shape_model_paramsGetShapeModelParamsGetShapeModelParamsGetShapeModelParamsget_shape_model_params abgefragt werden.
Falls eine vollständige Vorabgenerierung des Modells nicht gewählt
wird, wird das Modell nur in einer Referenzlage auf jeder Ebene
erzeugt. In diesem Fall muss das Modell zur Laufzeit in
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model auf die verschiedenen Winkel und
Skalierungen transformiert werden. Dadurch kann es vorkommen, dass
das Auffinden des Modells etwas mehr Zeit benötigt.
Es ist zu beachten, dass vorabgenerierte Modelle für eine spezifische
Bildgröße bestimmt sind. Aus Laufzeitgründen ist die Verwendung von Bildern
mit verschiedenen Größen während der Suche mit dem gleichen Modell nicht
parallel möglich. In diesem Fall müssen Kopien des gleichen Modells verwendet
werden. Anderenfalls kann das Programm abstürzen.
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
TemplateTemplateTemplateTemplatetemplatetemplate (input_object) (multichannel-)image → objectHImageHObjectHImageHobject (byte / uint2)
Eingabebild, dessen Definitionsbereich zum
Aufbau des Modells verwendet wird.
NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels (input_control) integer → HTupleUnion[int, str]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
Maximale Anzahl von Pyramidenebenen.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Werteliste: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'"auto""auto""auto""auto""auto"
AngleStartAngleStartAngleStartAngleStartangleStartangle_start (input_control) angle.rad → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Kleinste auftretende Rotation des Musters.
Defaultwert: -0.39
Wertevorschläge: -3.14, -1.57, -0.79, -0.39, -0.20, 0.0
AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent (input_control) angle.rad → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Ausdehnung des Winkelbereichs.
Defaultwert: 0.79
Wertevorschläge: 6.29, 3.14, 1.57, 0.79, 0.39
Restriktion: AngleExtent >= 0
AngleStepAngleStepAngleStepAngleStepangleStepangle_step (input_control) angle.rad → HTupleUnion[float, str]HTupleHtuple (real / string) (double / string) (double / HString) (double / char*)
Schrittweite der Winkel (Auflösung).
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 0.0175, 0.0349, 0.0524, 0.0698, 0.0873
Restriktion: AngleStep >= 0 && AngleStep <= pi / 16
ScaleRMinScaleRMinScaleRMinScaleRMinscaleRMinscale_rmin (input_control) number → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Kleinste auftretende Skalierung des Musters in
Zeilenrichtung.
Defaultwert: 0.9
Wertevorschläge: 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Restriktion: ScaleRMin > 0
ScaleRMaxScaleRMaxScaleRMaxScaleRMaxscaleRMaxscale_rmax (input_control) number → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Größte auftretende Skalierung des Musters in
Zeilenrichtung.
Defaultwert: 1.1
Wertevorschläge: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
Restriktion: ScaleRMax >= ScaleRMin
ScaleRStepScaleRStepScaleRStepScaleRStepscaleRStepscale_rstep (input_control) number → HTupleUnion[float, str]HTupleHtuple (real / string) (double / string) (double / HString) (double / char*)
Schrittweite der Skalierung (Auflösung) in
Zeilenrichtung.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 0.01, 0.02, 0.05, 0.1, 0.15, 0.2
Restriktion: ScaleRStep >= 0
ScaleCMinScaleCMinScaleCMinScaleCMinscaleCMinscale_cmin (input_control) number → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Kleinste auftretende Skalierung des Musters in
Spaltenrichtung.
Defaultwert: 0.9
Wertevorschläge: 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Restriktion: ScaleCMin > 0
ScaleCMaxScaleCMaxScaleCMaxScaleCMaxscaleCMaxscale_cmax (input_control) number → HTuplefloatHTupleHtuple (real) (double) (double) (double)
Größte auftretende Skalierung des Musters in
Spaltenrichtung.
Defaultwert: 1.1
Wertevorschläge: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
Restriktion: ScaleCMax >= ScaleCMin
ScaleCStepScaleCStepScaleCStepScaleCStepscaleCStepscale_cstep (input_control) number → HTupleUnion[float, str]HTupleHtuple (real / string) (double / string) (double / HString) (double / char*)
Schrittweite der Skalierung (Auflösung) in
Spaltenrichtung.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 0.01, 0.02, 0.05, 0.1, 0.15, 0.2
Restriktion: ScaleCStep >= 0
OptimizationOptimizationOptimizationOptimizationoptimizationoptimization (input_control) string(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Art der Optimierung und optional Methode der
Modellgenerierung.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Werteliste: 'auto'"auto""auto""auto""auto""auto", 'no_pregeneration'"no_pregeneration""no_pregeneration""no_pregeneration""no_pregeneration""no_pregeneration", 'none'"none""none""none""none""none", 'point_reduction_high'"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_low", 'point_reduction_medium'"point_reduction_medium""point_reduction_medium""point_reduction_medium""point_reduction_medium""point_reduction_medium", 'pregeneration'"pregeneration""pregeneration""pregeneration""pregeneration""pregeneration"
MetricMetricMetricMetricmetricmetric (input_control) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Art der zum Matchen verwendeten Metrik.
Defaultwert:
'use_polarity'
"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_color_polarity", 'ignore_global_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""ignore_local_polarity", 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity""use_polarity"
ContrastContrastContrastContrastcontrastcontrast (input_control) number(-array) → HTupleMaybeSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
Schwellenwert bzw. Hystereseschwellenwerte für den
Kontrast des Objektes im Musterbild und optional
Mindestgröße der Objektteile.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 'auto_contrast'"auto_contrast""auto_contrast""auto_contrast""auto_contrast""auto_contrast", 'auto_contrast_hyst'"auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst""auto_contrast_hyst", 'auto_min_size'"auto_min_size""auto_min_size""auto_min_size""auto_min_size""auto_min_size", 10, 20, 30, 40, 60, 80, 100, 120, 140, 160
MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast (input_control) number → HTupleUnion[int, str]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)
Minimaler Kontrast des Objektes in den Suchbildern.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 1, 2, 3, 5, 7, 10, 20, 30, 40
Restriktion: MinContrast < Contrast
ModelIDModelIDModelIDModelIDmodelIDmodel_id (output_control) shape_model → HShapeModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Modells.
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model den Wert TRUE. Gegebenenfalls wird
eine Fehlerbehandlung durchgeführt. Wenn die Parameter
NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels und ContrastContrastContrastContrastcontrastcontrast so gewählt worden sind,
dass das Modell zu wenige Punkte besitzt, wird die Fehlermeldung
8510 zurückgeliefert.
Vorgänger
draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region,
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain,
thresholdthresholdThresholdThresholdThresholdthreshold
Nachfolger
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model,
find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModelsfind_aniso_shape_models,
get_shape_model_paramsget_shape_model_paramsGetShapeModelParamsGetShapeModelParamsGetShapeModelParamsget_shape_model_params,
clear_shape_modelclear_shape_modelClearShapeModelClearShapeModelClearShapeModelclear_shape_model,
write_shape_modelwrite_shape_modelWriteShapeModelWriteShapeModelWriteShapeModelwrite_shape_model,
set_shape_model_originset_shape_model_originSetShapeModelOriginSetShapeModelOriginSetShapeModelOriginset_shape_model_origin,
set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter
Alternativen
create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModelcreate_shape_model,
create_scaled_shape_modelcreate_scaled_shape_modelCreateScaledShapeModelCreateScaledShapeModelCreateScaledShapeModelcreate_scaled_shape_model
Siehe auch
set_systemset_systemSetSystemSetSystemSetSystemset_system,
get_systemget_systemGetSystemGetSystemGetSystemget_system
Modul
Matching