set_shape_model_clutterT_set_shape_model_clutterSetShapeModelClutterSetShapeModelClutter (Operator)

Name

set_shape_model_clutterT_set_shape_model_clutterSetShapeModelClutterSetShapeModelClutter — 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)

Beschreibung

set_shape_model_clutterset_shape_model_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutter setzt die Störparameter eines Formmodells ModelIDModelIDModelIDModelIDmodelID, 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_modelFindShapeModelFindShapeModelFindShapeModel, find_scaled_shape_modelfind_scaled_shape_modelFindScaledShapeModelFindScaledShapeModelFindScaledShapeModel, find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModel, find_shape_modelsfind_shape_modelsFindShapeModelsFindShapeModelsFindShapeModels, find_scaled_shape_modelsfind_scaled_shape_modelsFindScaledShapeModelsFindScaledShapeModelsFindScaledShapeModels und find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModels zusätzlich im Parameter ScoreScoreScoreScorescore ausgegeben, nach den üblichen Werten aus der Berechnung der Sichtbarkeit des Modells. Es ist zu beachten, dass im Eingabeparameter MinScoreMinScoreMinScoreMinScoreminScore 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 MinScoreMinScoreMinScoreMinScoreminScore, siehe die entsprechende Operatorreferenz.

Um die Störregion relativ zu den Modellkonturen zu definieren, braucht man zum einen die Region ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegion und zum anderen die Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D, 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_modelFindShapeModelFindShapeModelFindShapeModel) und aus den Ausgabeparametern mit Hilfe der Prozedur get_hom_mat2d_from_matching_result die Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D zu berechnen. Im Anschluss kann ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegion für die gefundene Instanz im gleichen Bild spezifiziert werden. Mit ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegion 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 ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrast 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 ContrastContrastContrastContrastcontrast, welcher zur Erstellung des Formmodells genutzt wurde, auch hierfür ein sinnvoller Wert. ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrast darf dabei nicht kleiner sein als der Parameter MinContrastMinContrastMinContrastMinContrastminContrast 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 MetricMetricMetricMetricmetric 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 GenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf '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" (GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue) kommen '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" in Frage.

Es ist zu beachten, dass mit 'clutter_border_average'"clutter_border_average""clutter_border_average""clutter_border_average""clutter_border_average" für GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue höhere Störwerte erreicht werden.

Die Nutzung von Störparametern im Formmodell kann mit set_shape_model_paramset_shape_model_paramSetShapeModelParamSetShapeModelParamSetShapeModelParam 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_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutter ist die Nutzung von Störparametern aktiviert. Je nach Aktivierungsstatus erwarten die jeweiligen find-Operatoren eine unterschiedliche Anzahl an Eingabeparametern für MinScoreMinScoreMinScoreMinScoreminScore (siehe auch die entsprechenden Operatorreferenzen). Die gesetzten Störparameter sowie der Wert von 'use_clutter'"use_clutter""use_clutter""use_clutter""use_clutter" können mit dem Operator get_shape_model_clutterget_shape_model_clutterGetShapeModelClutterGetShapeModelClutterGetShapeModelClutter 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

ClutterRegionClutterRegionClutterRegionClutterRegionclutterRegion (input_object)  region objectHRegionHRegionHobject

Region, in der keine Störungen auftreten sollen.

ModelIDModelIDModelIDModelIDmodelID (input_control, Zustand wird modifiziert)  shape_model HShapeModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Modells.

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (input_control)  hom_mat2d HHomMat2D, HTupleHTupleHtuple (real) (double) (double) (double)

Transformationsmatrix.

ClutterContrastClutterContrastClutterContrastClutterContrastclutterContrast (input_control)  number HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Minimaler Kontrast für Störungen im Suchbild.

Defaultwert: 128

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Parameternamen.

Werteliste: 'clutter_border_mode'"clutter_border_mode""clutter_border_mode""clutter_border_mode""clutter_border_mode"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (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_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_clutterSetShapeModelClutterSetShapeModelClutterSetShapeModelClutter den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_shape_modelcreate_shape_modelCreateShapeModelCreateShapeModelCreateShapeModel, create_scaled_shape_modelcreate_scaled_shape_modelCreateScaledShapeModelCreateScaledShapeModelCreateScaledShapeModel, create_aniso_shape_modelcreate_aniso_shape_modelCreateAnisoShapeModelCreateAnisoShapeModelCreateAnisoShapeModel, create_shape_model_xldcreate_shape_model_xldCreateShapeModelXldCreateShapeModelXldCreateShapeModelXld, create_scaled_shape_model_xldcreate_scaled_shape_model_xldCreateScaledShapeModelXldCreateScaledShapeModelXldCreateScaledShapeModelXld, create_aniso_shape_model_xldcreate_aniso_shape_model_xldCreateAnisoShapeModelXldCreateAnisoShapeModelXldCreateAnisoShapeModelXld

Nachfolger

find_shape_modelfind_shape_modelFindShapeModelFindShapeModelFindShapeModel, find_scaled_shape_modelfind_scaled_shape_modelFindScaledShapeModelFindScaledShapeModelFindScaledShapeModel, find_aniso_shape_modelfind_aniso_shape_modelFindAnisoShapeModelFindAnisoShapeModelFindAnisoShapeModel, find_shape_modelsfind_shape_modelsFindShapeModelsFindShapeModelsFindShapeModels, find_scaled_shape_modelsfind_scaled_shape_modelsFindScaledShapeModelsFindScaledShapeModelsFindScaledShapeModels, find_aniso_shape_modelsfind_aniso_shape_modelsFindAnisoShapeModelsFindAnisoShapeModelsFindAnisoShapeModels, get_shape_model_clutterget_shape_model_clutterGetShapeModelClutterGetShapeModelClutterGetShapeModelClutter

Siehe auch

set_shape_model_paramset_shape_model_paramSetShapeModelParamSetShapeModelParamSetShapeModelParam

Modul

Matching