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

set_shape_model_clutter(ClutterRegion : : ModelID, HomMat2D, ClutterContrast, GenParamName, GenParamValue : )

Herror T_set_shape_model_clutter(const Hobject ClutterRegion, const Htuple ModelID, const Htuple HomMat2D, const Htuple ClutterContrast, const Htuple GenParamName, const Htuple GenParamValue)

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)

def set_shape_model_clutter(clutter_region: HObject, model_id: HHandle, hom_mat_2d: Sequence[float], clutter_contrast: int, gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[float, int, str]]) -> None

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.

(1) (2) (3) (4) (5)
(1) Bild des BGA, (2) Formmodell einer einzelnen Kugel (orange), (3) Matchingergebnis (grün) ohne Hilfe von Störparametern, (4) Definieren einer Störregion (gelb) relativ zu der Modelregion (orange). (5) Matchingergebnis nach Setzen von Störparametern (grün).

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ückgegeben. Die Polarität der gefundenen Störkanten wird ignoriert, d.h. helle Objekte auf dunklem Hintergrund erzielen den selben 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.

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.

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

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 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

Siehe auch

set_shape_model_paramset_shape_model_paramSetShapeModelParamSetShapeModelParamSetShapeModelParamset_shape_model_param

Modul

Matching