compare_objcompare_objCompareObjCompareObjcompare_obj (Operator)
Name
compare_objcompare_objCompareObjCompareObjcompare_obj — Vergleich von ikonischen Objekten hinsichtlich ihrer Gleichheit.
Signatur
void CompareObj(const HObject& Objects1, const HObject& Objects2, const HTuple& Epsilon, HTuple* IsEqual)
Hlong HObject::CompareObj(const HObject& Objects2, const HTuple& Epsilon) const
Hlong HObject::CompareObj(const HObject& Objects2, double Epsilon) const
Hlong HImage::CompareObj(const HImage& Objects2, const HTuple& Epsilon) const
Hlong HImage::CompareObj(const HImage& Objects2, double Epsilon) const
Hlong HRegion::CompareObj(const HRegion& Objects2, const HTuple& Epsilon) const
Hlong HRegion::CompareObj(const HRegion& Objects2, double Epsilon) const
Hlong HXLD::CompareObj(const HXLD& Objects2, const HTuple& Epsilon) const
Hlong HXLD::CompareObj(const HXLD& Objects2, double Epsilon) const
Hlong HXLDCont::CompareObj(const HXLDCont& Objects2, const HTuple& Epsilon) const
Hlong HXLDCont::CompareObj(const HXLDCont& Objects2, double Epsilon) const
Hlong HXLDPoly::CompareObj(const HXLDPoly& Objects2, const HTuple& Epsilon) const
Hlong HXLDPoly::CompareObj(const HXLDPoly& Objects2, double Epsilon) const
Hlong HXLDPara::CompareObj(const HXLDPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDPara::CompareObj(const HXLDPara& Objects2, double Epsilon) const
Hlong HXLDModPara::CompareObj(const HXLDModPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDModPara::CompareObj(const HXLDModPara& Objects2, double Epsilon) const
Hlong HXLDExtPara::CompareObj(const HXLDExtPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDExtPara::CompareObj(const HXLDExtPara& Objects2, double Epsilon) const
static void HOperatorSet.CompareObj(HObject objects1, HObject objects2, HTuple epsilon, out HTuple isEqual)
int HObject.CompareObj(HObject objects2, HTuple epsilon)
int HObject.CompareObj(HObject objects2, double epsilon)
int HImage.CompareObj(HImage objects2, HTuple epsilon)
int HImage.CompareObj(HImage objects2, double epsilon)
int HRegion.CompareObj(HRegion objects2, HTuple epsilon)
int HRegion.CompareObj(HRegion objects2, double epsilon)
int HXLD.CompareObj(HXLD objects2, HTuple epsilon)
int HXLD.CompareObj(HXLD objects2, double epsilon)
int HXLDCont.CompareObj(HXLDCont objects2, HTuple epsilon)
int HXLDCont.CompareObj(HXLDCont objects2, double epsilon)
int HXLDPoly.CompareObj(HXLDPoly objects2, HTuple epsilon)
int HXLDPoly.CompareObj(HXLDPoly objects2, double epsilon)
int HXLDPara.CompareObj(HXLDPara objects2, HTuple epsilon)
int HXLDPara.CompareObj(HXLDPara objects2, double epsilon)
int HXLDModPara.CompareObj(HXLDModPara objects2, HTuple epsilon)
int HXLDModPara.CompareObj(HXLDModPara objects2, double epsilon)
int HXLDExtPara.CompareObj(HXLDExtPara objects2, HTuple epsilon)
int HXLDExtPara.CompareObj(HXLDExtPara objects2, double epsilon)
Beschreibung
Der Operator compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj vergleicht ikonische Objekte. Die
ikonischen Objekte werden in den beiden Eingabeparametern
Objects1Objects1Objects1Objects1objects1objects_1 und Objects2Objects2Objects2Objects2objects2objects_2 in Form von (möglicherweise
gemischten) Tupeln von Bildern, Regionen oder XLDs übergeben. Dabei
wird (für alle n) das n-te Objekt in Objects1Objects1Objects1Objects1objects1objects_1 mit dem n-ten
Objekt in Objects2Objects2Objects2Objects2objects2objects_2 verglichen. Wenn die beiden übergebenen
Objekttupel gleich lang und alle Objekte identisch sind, wird der
Parameter IsEqualIsEqualIsEqualIsEqualisEqualis_equal auf 1 gesetzt, andernfalls auf 0.
Die in HALCON verfügbaren ikonischen Objekte werden bei der Einleitung
zu Kapitel Objekt vorgestellt.
Abhängig vom Typ der Eingabeobjekte müssen verschiedene Bedingungen
erfüllt werden, damit zwei Objekte als gleich gelten. Im Folgenden
sind die Bedingungen für die möglichen Objekte aufgelistet:
- Bilder:
-
Für alle Kanäle dürfen sich die Grauwerte der entsprechenden
Pixel um nicht mehr als EpsilonEpsilonEpsilonEpsilonepsilonepsilon unterscheiden. Dabei
ist zu beachten, dass Bilder nur innerhalb ihres
Definitionsbereich (ROI) miteinander verglichen werden und sie
nur dann identisch sind, wenn sie auch den gleichen
Definitionsbereich(ROI) aufweisen.
- Regionen:
-
Die Regionen müssen identisch sein. Der Parameter
EpsilonEpsilonEpsilonEpsilonepsilonepsilon hat keine Auswirkung auf den Vergleich von
Regionen.
- XLD Konturen:
-
XLD Konturen müssen die gleiche Anzahl an Punkten sowie die
gleichen Attribute haben. Die Koordinaten der Punkte und die
Attributwerte dürfen sich um nicht mehr als EpsilonEpsilonEpsilonEpsilonepsilonepsilon
unterscheiden.
- XLD Polygone:
-
XLD Polygone müssen die gleiche Anzahl an Liniensegmenten
aufweisen. Die Länge und die Orientierung dieser Segmente sowie
die Koordinaten der Kontrollpunkte dürfen sich um nicht mehr als
EpsilonEpsilonEpsilonEpsilonepsilonepsilon unterscheiden.
- XLD Parallelen und erweiterte XLD Parallelen:
-
XLD Parallelen müssen einen identischen Index für das Start- und
Endliniensegment der Parallelen des ersten Polygons (P1) und des
zweiten Polygons (P2) sowie identische Zeiger zu der
zugrundeliegenden Kontur aufweisen.
- Modifizierte XLD Parallelen:
-
Für modifizierte XLD Parallelen gelten dieselben Bedingungen wie
für XLD Parallelen und erweiterte XLD Parallelen. Zusätzlich
muss auch der Abstand zwischen den Liniensegmenten der parallelen
Polygone identisch sein.
Im Gegensatz zu test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObjtest_equal_obj, vergleicht compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj
den tatsächlichen Inhalt der Objekte. Bei test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObjtest_equal_obj wird
hingegen nur bei Regionen der tatsächlichen Inhalt verglichen, während
bei allen anderen Objekten nur geprüft wird, ob sie denselben
Speicherort besitzen.
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.
Parameter
Objects1Objects1Objects1Objects1objects1objects_1 (input_object) object(-array) → objectHObjectHObjectHObjectHobject
Referenzobjekte.
Objects2Objects2Objects2Objects2objects2objects_2 (input_object) object(-array) → objectHObjectHObjectHObjectHobject
Vergleichsobjekte.
EpsilonEpsilonEpsilonEpsilonepsilonepsilon (input_control) number → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Maximal erlaubte Differenz zwischen zwei Grauwerten oder
Koordinaten etc.
Defaultwert: 0.0
Wertevorschläge: 0.0, 1.e-5
IsEqualIsEqualIsEqualIsEqualisEqualis_equal (output_control) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Boolescher Ergebniswert.
Ergebnis
compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj liefert den Wert TRUE, falls die Parameter korrekt
sind. Das Verhalten bei leerer Eingabe (keine Eingaberegionen
vorhanden) lässt sich mittels
set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen.
Unterscheidet sich die Anzahl der Objekte, wird eine Fehlerbehandlung
durchgeführt. Ansonsten liefert compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj den Wert TRUE
Siehe auch
test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObjtest_equal_obj,
test_equal_regiontest_equal_regionTestEqualRegionTestEqualRegionTestEqualRegiontest_equal_region
Modul
Foundation