set_shape_model_clutterT_set_shape_model_clutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter (Operator)
Name
set_shape_model_clutterT_set_shape_model_clutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter — Setzen der Störparameter eines Formmodells.
Signatur
void SetShapeModelClutter(const HObject& ClutterRegion, const HTuple& ModelID, const HTuple& HomMat2D, const HTuple& ClutterContrast, const HTuple& GenParamName, const HTuple& GenParamValue)
void HShapeModel::SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HTuple& GenParamName, const HTuple& GenParamValue) const
void HShapeModel::SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HString& GenParamName, double GenParamValue) const
void HShapeModel::SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const char* GenParamName, double GenParamValue) const
void HShapeModel::SetShapeModelClutter(const HRegion& ClutterRegion, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const wchar_t* GenParamName, double GenParamValue) const
(Nur Windows)
static void HImage::SetShapeModelClutter(const HRegion& ClutterRegion, const HShapeModel& ModelID, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HTuple& GenParamName, const HTuple& GenParamValue)
static void HImage::SetShapeModelClutter(const HRegion& ClutterRegion, const HShapeModel& ModelID, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const HString& GenParamName, double GenParamValue)
static void HImage::SetShapeModelClutter(const HRegion& ClutterRegion, const HShapeModel& ModelID, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const char* GenParamName, double GenParamValue)
static void HImage::SetShapeModelClutter(const HRegion& ClutterRegion, const HShapeModel& ModelID, const HHomMat2D& HomMat2D, Hlong ClutterContrast, const wchar_t* GenParamName, double GenParamValue)
(Nur Windows)
static void HOperatorSet.SetShapeModelClutter(HObject clutterRegion, HTuple modelID, HTuple homMat2D, HTuple clutterContrast, HTuple genParamName, HTuple genParamValue)
void HShapeModel.SetShapeModelClutter(HRegion clutterRegion, HHomMat2D homMat2D, int clutterContrast, HTuple genParamName, HTuple genParamValue)
void HShapeModel.SetShapeModelClutter(HRegion clutterRegion, HHomMat2D homMat2D, int clutterContrast, string genParamName, double genParamValue)
static void HImage.SetShapeModelClutter(HRegion clutterRegion, HShapeModel modelID, HHomMat2D homMat2D, int clutterContrast, HTuple genParamName, HTuple genParamValue)
static void HImage.SetShapeModelClutter(HRegion clutterRegion, HShapeModel modelID, HHomMat2D homMat2D, int clutterContrast, string genParamName, double genParamValue)
Beschreibung
set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter setzt die Störparameter eines Formmodells
ModelIDModelIDModelIDModelIDmodelIDmodel_id, d.h. es wird eine Region relativ zum Formmodell definiert,
in der im Suchbild keine (oder zu schwache) Störungen auftreten sollen.
Hilfreich ist dies beispielsweise, wenn in einem Suchbereich mit sich
wiederholendem Muster nach einer Instanz des Modells gesucht wird, in deren
Umgebung ein Teil des Musters nicht auftritt.
Das HDevelop Beispielprogramm find_shape_model_clutter.hdev zeigt
z.B. wie mit Hilfe von Störparametern spezifische Matches in Bildern von
Kugelgitteranordnungen (BGA) gefunden werden können.
Für Matches im Suchbild erhöhen Kanten, die in der Störregion
gefunden werden, den Störwert. Dieser wird von den Operatoren
find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModelfind_shape_model, find_scaled_shape_modelfind_scaled_shape_modelFindScaledShapeModelFindScaledShapeModelFindScaledShapeModelfind_scaled_shape_model,
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model, find_shape_modelsfind_shape_modelsFindShapeModelsFindShapeModelsFindShapeModelsfind_shape_models,
find_scaled_shape_modelsfind_scaled_shape_modelsFindScaledShapeModelsFindScaledShapeModelsFindScaledShapeModelsfind_scaled_shape_models und find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModelsfind_aniso_shape_models
zusätzlich im Parameter ScoreScoreScoreScorescorescore ausgegeben, nach den üblichen
Werten aus der Berechnung der Sichtbarkeit des Modells.
Es ist zu beachten, dass im Eingabeparameter MinScoreMinScoreMinScoreMinScoreminScoremin_score dieser
Operatoren zusätzlich Angaben zum maximalen Störwert (für welchen
Matches zurückgegeben werden sollen) gemacht werden. Für weitere
Informationen zum Setzen von MinScoreMinScoreMinScoreMinScoreminScoremin_score, siehe die entsprechende
Operatorreferenz.
Um die Störregion relativ zu den Modellkonturen zu definieren, braucht man
zum einen die Region ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegionclutter_region und zum anderen die
Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d, welche die Position der
Modellkonturen im Suchbild abbildet.
Ein typisches Vorgehen um eine geeignete Transformationsmatrix zu erhalten
wäre, eine Instanz im Bild zu finden (beispielsweise
mit find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModelfind_shape_model) und aus den Ausgabeparametern mit Hilfe der
Prozedur get_hom_mat2d_from_matching_result die
Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d zu berechnen.
Im Anschluss kann ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegionclutter_region für die gefundene
Instanz im gleichen Bild spezifiziert werden.
Mit ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegionclutter_region sollten dabei sämtliche Störungen, welche
typischerweise im Umfeld der gefundenen Instanzen auftreten,
abgedeckt sein. Es wird empfohlen
die Störregion größer als notwendig zu spezifizieren wenn die
Skalierungen des Formmodells stark variieren. Die Robustheit der Suche kann
verbessert werden indem die Störregion nicht zu nah an den erwarteten
Modellkonturen gewählt wird.
Der Parameter ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrastclutter_contrast bestimmt den Kontrast, den eine
Kante in der Störregion aufweisen muss, um als Störung gewertet
zu werden. In vielen Anwendungsfällen ist der Parameter ContrastContrastContrastContrastcontrastcontrast,
welcher zur Erstellung des Formmodells genutzt wurde, auch hierfür ein
sinnvoller Wert. ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrastclutter_contrast darf dabei nicht kleiner sein
als der Parameter MinContrastMinContrastMinContrastMinContrastminContrastmin_contrast des Formmodells, ansonsten wird
eine Fehlermeldung zur Laufzeit zurückgegeben.
Die Polarität der gefundenen Störkanten wird ignoriert, d.h. helle
Objekte auf dunklem Hintergrund erzielen denselben Störwert wie
dunkle Objekte auf hellem Hintergrund, unabhängig vom Parameter
MetricMetricMetricMetricmetricmetric des Formmodells.
Es ist zu beachten, dass von sämtlichen Ergebnissen des formbasierten
Matchings die Störwerte am stärksten von Beleuchtungsänderungen
beeinflusst werden.
Wird GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name auf 'clutter_border_mode'"clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode" gesetzt, kann
das Verhalten des Störwertes für den Fall, dass die Störregion nicht komplett
im Bildbereich enthalten ist, beeinflusst werden. Als entsprechende Werte für
'clutter_border_mode'"clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode" (GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value) kommen
'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average" oder 'clutter_border_empty'"clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty" in
Frage.
-
'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average":
Wenn GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value auf 'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average"
(Standardwert) gesetzt wird, wird angenommen, dass der verdeckte Teil
durchschnittlich denselben Störanteil aufweist wie der sichtbare Teil. Ist
die Störregion gar nicht zu sehen, wird der Störwert des gefundenen Matches
auf 0.0 gesetzt.
-
'clutter_border_empty'"clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty":
Wird GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value auf 'clutter_border_empty'"clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty" gesetzt,
wird angenommen, dass der verdeckte Teil der Störregionen keine Störungen
enthält.
Es ist zu beachten, dass mit 'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average" für
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value höhere Störwerte erreicht werden können, selbst
wenn der Match nicht am Rand des Bildbereichs liegt.
Die Nutzung von Störparametern im Formmodell kann mit
set_shape_model_paramset_shape_model_paramSetShapeModelParamSetShapeModelParamSetShapeModelParamset_shape_model_param aktiviert oder deaktiviert werden.
Für neu generierte Formmodelle ist die Nutzung von Störparametern
deaktiviert. Nach dem Aufruf von set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter ist die
Nutzung von Störparametern aktiviert. Je nach Aktivierungsstatus
erwarten die jeweiligen find-Operatoren eine
unterschiedliche Anzahl an Eingabeparametern für MinScoreMinScoreMinScoreMinScoreminScoremin_score
(siehe auch die entsprechenden Operatorreferenzen).
Die gesetzten Störparameter sowie der Wert von 'use_clutter'"use_clutter""use_clutter""use_clutter""use_clutter""use_clutter"
können mit dem Operator get_shape_model_clutterget_shape_model_clutterGetShapeModelClutterGetShapeModelClutterGetShapeModelClutterget_shape_model_clutter abgefragt werden.
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 modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
Parameter
ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegionclutter_region (input_object) region → objectHRegionHObjectHRegionHobject
Region, in der keine Störungen auftreten sollen.
ModelIDModelIDModelIDModelIDmodelIDmodel_id (input_control, Zustand wird modifiziert) shape_model → HShapeModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Modells.
HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (input_control) hom_mat2d → HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Transformationsmatrix.
ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrastclutter_contrast (input_control) number → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Minimaler Kontrast für Störungen im Suchbild.
Defaultwert: 128
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control) attribute.name(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Parameternamen.
Werteliste: 'clutter_border_mode'"clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control) attribute.value(-array) → HTupleMaybeSequence[Union[float, int, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Parameterwerte.
Werteliste: 'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average", 'clutter_border_empty'"clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty""clutter_border_empty"
Beispiel (HDevelop)
*
* Create a shape model.
read_image (ImageModel, '/bga_gap/bga_gap_01.png')
gen_circle (ROI, 753.869, 551.624, 28.4027)
reduce_domain (ImageModel, ROI, ImageReduced)
create_aniso_shape_model (ImageReduced, 'auto', rad(0), rad(0), 'auto', \
0.95, 1.05, 'auto', 0.95, 1.05, 'auto', 'auto', \
'use_polarity', 'auto', 'auto', ModelID)
*
* Specify the clutter parameters.
find_aniso_shape_model (ImageModel, ModelID, rad(0), rad(0), 0.95, 1.05, \
0.95, 1.05, 0.83, 0, 0.0, 'least_squares', 0, 0.0, \
Row, Column, Angle, ScaleR, ScaleC, Score)
get_hom_mat2d_from_matching_result (Row[0], Column[0], Angle[0], ScaleR[0], \
ScaleC[0], HomMat2D)
*
gen_circle (ROI_0, 700.655, 548.666, 21.6273)
gen_circle (ROI_1_0, 810.655, 550.611, 21.6273)
union2 (ROI_0, ROI_1_0, ClutterRegion)
*
ClutterContrast := 12
*
* Set the clutter parameters into shape model.
set_shape_model_clutter (ClutterRegion, ModelID, HomMat2D, ClutterContrast, \
[], [])
*
* Use the shape model to detect objects with a small amount of clutter
read_image (Image,'/bga_gap/bga_gap_02.png')
MaxClutter := 0.09
find_aniso_shape_model (Image, ModelID, rad(0), rad(0), 0.95, 1.05, 0.95, \
1.05, [0.83, MaxClutter], 0, 0.0, 'least_squares', \
[4, 3], 0.0, Row, Column, Angle, ScaleR, ScaleC, \
Score)
*
* Visualize the matches
dev_display_shape_matching_results (ModelID, ['green', 'red'], Row, Column, \
Angle, ScaleR, ScaleC, 0)
Clutter := Score[|Score|/2:|Score|-1]
Score := Score[0:|Score|/2-1]
dev_inspect_ctrl ([Score, Clutter])
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutterset_shape_model_clutter den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
Vorgänger
create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModelcreate_shape_model,
create_scaled_shape_modelcreate_scaled_shape_modelCreateScaledShapeModelCreateScaledShapeModelCreateScaledShapeModelcreate_scaled_shape_model,
create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModelcreate_aniso_shape_model,
create_shape_model_xldcreate_shape_model_xldCreateShapeModelXldCreateShapeModelXldCreateShapeModelXldcreate_shape_model_xld,
create_scaled_shape_model_xldcreate_scaled_shape_model_xldCreateScaledShapeModelXldCreateScaledShapeModelXldCreateScaledShapeModelXldcreate_scaled_shape_model_xld,
create_aniso_shape_model_xldcreate_aniso_shape_model_xldCreateAnisoShapeModelXldCreateAnisoShapeModelXldCreateAnisoShapeModelXldcreate_aniso_shape_model_xld
Nachfolger
find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModelfind_shape_model,
find_scaled_shape_modelfind_scaled_shape_modelFindScaledShapeModelFindScaledShapeModelFindScaledShapeModelfind_scaled_shape_model,
find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModelfind_aniso_shape_model,
find_shape_modelsfind_shape_modelsFindShapeModelsFindShapeModelsFindShapeModelsfind_shape_models,
find_scaled_shape_modelsfind_scaled_shape_modelsFindScaledShapeModelsFindScaledShapeModelsFindScaledShapeModelsfind_scaled_shape_models,
find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModelsfind_aniso_shape_models,
get_shape_model_clutterget_shape_model_clutterGetShapeModelClutterGetShapeModelClutterGetShapeModelClutterget_shape_model_clutter
Alternativen
set_generic_shape_model_paramset_generic_shape_model_paramSetGenericShapeModelParamSetGenericShapeModelParamSetGenericShapeModelParamset_generic_shape_model_param,
set_generic_shape_model_objectset_generic_shape_model_objectSetGenericShapeModelObjectSetGenericShapeModelObjectSetGenericShapeModelObjectset_generic_shape_model_object
Siehe auch
set_shape_model_paramset_shape_model_paramSetShapeModelParamSetShapeModelParamSetShapeModelParamset_shape_model_param
Modul
Matching