compare_objcompare_objCompareObjCompareObj (Operator)
Name
compare_objcompare_objCompareObjCompareObj
— 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_objCompareObjCompareObjCompareObj
vergleicht ikonische Objekte. Die
ikonischen Objekte werden in den beiden Eingabeparametern
Objects1Objects1Objects1Objects1objects1
und Objects2Objects2Objects2Objects2objects2
in Form von (möglicherweise
gemischten) Tupeln von Bildern, Regionen oder XLDs übergeben. Dabei
wird (für alle n) das n-te Objekt in Objects1Objects1Objects1Objects1objects1
mit dem n-ten
Objekt in Objects2Objects2Objects2Objects2objects2
verglichen. Wenn die beiden übergebenen
Objekttupel gleich lang und alle Objekte identisch sind, wird der
Parameter IsEqualIsEqualIsEqualIsEqualisEqual
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 EpsilonEpsilonEpsilonEpsilonepsilon
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
EpsilonEpsilonEpsilonEpsilonepsilon
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 EpsilonEpsilonEpsilonEpsilonepsilon
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
EpsilonEpsilonEpsilonEpsilonepsilon
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_objTestEqualObjTestEqualObjTestEqualObj
, vergleicht compare_objcompare_objCompareObjCompareObjCompareObj
den tatsächlichen Inhalt der Objekte. Bei test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObj
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
Objects1Objects1Objects1Objects1objects1
(input_object) object(-array) →
objectHObjectHObjectHobject
Referenzobjekte.
Objects2Objects2Objects2Objects2objects2
(input_object) object(-array) →
objectHObjectHObjectHobject
Vergleichsobjekte.
EpsilonEpsilonEpsilonEpsilonepsilon
(input_control) number →
HTupleHTupleHtuple (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
IsEqualIsEqualIsEqualIsEqualisEqual
(output_control) integer →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Boolscher Ergebniswert.
Ergebnis
compare_objcompare_objCompareObjCompareObjCompareObj
liefert den Wert 2 (H_MSG_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>)
festlegen.
Unterscheidet sich die Anzahl der Objekte, wird eine Fehlerbehandlung
durchgeführt. Ansonsten liefert compare_objcompare_objCompareObjCompareObjCompareObj
den Wert 2 (H_MSG_TRUE)
Siehe auch
test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObj
,
test_equal_regiontest_equal_regionTestEqualRegionTestEqualRegionTestEqualRegion
Modul
Foundation