KlassenKlassenKlassenKlassen | | | | Operatoren

fuzzy_measure_pairsT_fuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs (Operator)

Name

fuzzy_measure_pairsT_fuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs — Extraktion geradliniger Kantenpaare senkrecht zu einem Rechteck oder Kreisringsegment.

Signatur

fuzzy_measure_pairs(Image : : MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, ColumnEdgeCenter, FuzzyScore, IntraDistance, InterDistance)

Herror T_fuzzy_measure_pairs(const Hobject Image, const Htuple MeasureHandle, const Htuple Sigma, const Htuple AmpThresh, const Htuple FuzzyThresh, const Htuple Transition, Htuple* RowEdgeFirst, Htuple* ColumnEdgeFirst, Htuple* AmplitudeFirst, Htuple* RowEdgeSecond, Htuple* ColumnEdgeSecond, Htuple* AmplitudeSecond, Htuple* RowEdgeCenter, Htuple* ColumnEdgeCenter, Htuple* FuzzyScore, Htuple* IntraDistance, Htuple* InterDistance)

Herror fuzzy_measure_pairs(Hobject Image, const HTuple& MeasureHandle, const HTuple& Sigma, const HTuple& AmpThresh, const HTuple& FuzzyThresh, const HTuple& Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance)

HTuple HImage::FuzzyMeasurePairs(const HMeasure& MeasureHandle, const HTuple& Sigma, const HTuple& AmpThresh, const HTuple& FuzzyThresh, const HTuple& Transition, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

HTuple HMeasure::FuzzyMeasurePairs(const HImage& Image, const HTuple& Sigma, const HTuple& AmpThresh, const HTuple& FuzzyThresh, const HTuple& Transition, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

void FuzzyMeasurePairs(const HObject& Image, const HTuple& MeasureHandle, const HTuple& Sigma, const HTuple& AmpThresh, const HTuple& FuzzyThresh, const HTuple& Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance)

void HMeasure::FuzzyMeasurePairs(const HImage& Image, double Sigma, double AmpThresh, double FuzzyThresh, const HString& Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

void HMeasure::FuzzyMeasurePairs(const HImage& Image, double Sigma, double AmpThresh, double FuzzyThresh, const char* Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

void HImage::FuzzyMeasurePairs(const HMeasure& MeasureHandle, double Sigma, double AmpThresh, double FuzzyThresh, const HString& Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

void HImage::FuzzyMeasurePairs(const HMeasure& MeasureHandle, double Sigma, double AmpThresh, double FuzzyThresh, const char* Transition, HTuple* RowEdgeFirst, HTuple* ColumnEdgeFirst, HTuple* AmplitudeFirst, HTuple* RowEdgeSecond, HTuple* ColumnEdgeSecond, HTuple* AmplitudeSecond, HTuple* RowEdgeCenter, HTuple* ColumnEdgeCenter, HTuple* FuzzyScore, HTuple* IntraDistance, HTuple* InterDistance) const

void HOperatorSetX.FuzzyMeasurePairs(
[in] IHUntypedObjectX* Image, [in] VARIANT MeasureHandle, [in] VARIANT Sigma, [in] VARIANT AmpThresh, [in] VARIANT FuzzyThresh, [in] VARIANT Transition, [out] VARIANT* RowEdgeFirst, [out] VARIANT* ColumnEdgeFirst, [out] VARIANT* AmplitudeFirst, [out] VARIANT* RowEdgeSecond, [out] VARIANT* ColumnEdgeSecond, [out] VARIANT* AmplitudeSecond, [out] VARIANT* RowEdgeCenter, [out] VARIANT* ColumnEdgeCenter, [out] VARIANT* FuzzyScore, [out] VARIANT* IntraDistance, [out] VARIANT* InterDistance)

VARIANT HMeasureX.FuzzyMeasurePairs(
[in] IHImageX* Image, [in] double Sigma, [in] double AmpThresh, [in] double FuzzyThresh, [in] BSTR Transition, [out] VARIANT* ColumnEdgeFirst, [out] VARIANT* AmplitudeFirst, [out] VARIANT* RowEdgeSecond, [out] VARIANT* ColumnEdgeSecond, [out] VARIANT* AmplitudeSecond, [out] VARIANT* RowEdgeCenter, [out] VARIANT* ColumnEdgeCenter, [out] VARIANT* FuzzyScore, [out] VARIANT* IntraDistance, [out] VARIANT* InterDistance)

VARIANT HImageX.FuzzyMeasurePairs(
[in] IHMeasureX* MeasureHandle, [in] double Sigma, [in] double AmpThresh, [in] double FuzzyThresh, [in] BSTR Transition, [out] VARIANT* ColumnEdgeFirst, [out] VARIANT* AmplitudeFirst, [out] VARIANT* RowEdgeSecond, [out] VARIANT* ColumnEdgeSecond, [out] VARIANT* AmplitudeSecond, [out] VARIANT* RowEdgeCenter, [out] VARIANT* ColumnEdgeCenter, [out] VARIANT* FuzzyScore, [out] VARIANT* IntraDistance, [out] VARIANT* InterDistance)

static void HOperatorSet.FuzzyMeasurePairs(HObject image, HTuple measureHandle, HTuple sigma, HTuple ampThresh, HTuple fuzzyThresh, HTuple transition, out HTuple rowEdgeFirst, out HTuple columnEdgeFirst, out HTuple amplitudeFirst, out HTuple rowEdgeSecond, out HTuple columnEdgeSecond, out HTuple amplitudeSecond, out HTuple rowEdgeCenter, out HTuple columnEdgeCenter, out HTuple fuzzyScore, out HTuple intraDistance, out HTuple interDistance)

void HMeasure.FuzzyMeasurePairs(HImage image, double sigma, double ampThresh, double fuzzyThresh, string transition, out HTuple rowEdgeFirst, out HTuple columnEdgeFirst, out HTuple amplitudeFirst, out HTuple rowEdgeSecond, out HTuple columnEdgeSecond, out HTuple amplitudeSecond, out HTuple rowEdgeCenter, out HTuple columnEdgeCenter, out HTuple fuzzyScore, out HTuple intraDistance, out HTuple interDistance)

void HImage.FuzzyMeasurePairs(HMeasure measureHandle, double sigma, double ampThresh, double fuzzyThresh, string transition, out HTuple rowEdgeFirst, out HTuple columnEdgeFirst, out HTuple amplitudeFirst, out HTuple rowEdgeSecond, out HTuple columnEdgeSecond, out HTuple amplitudeSecond, out HTuple rowEdgeCenter, out HTuple columnEdgeCenter, out HTuple fuzzyScore, out HTuple intraDistance, out HTuple interDistance)

Beschreibung

fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs dient zur Extraktion von geradlinigen Kantenpaaren, die senkrecht zur Hauptachse eines Rechtecks oder zu einem Kreisringsegment liegen. Im Unterschied zu measure_pairsmeasure_pairsMeasurePairsmeasure_pairsMeasurePairsMeasurePairs können die Kantenpaare zusätzlich mit Hilfe von Fuzzy-Funktionen bewertet und ausgewählt werden.

Das Konzept der 1D-Vermessung ist bei der Einleitung zu Kapitel 1D-Vermessung beschrieben.

Der Algorithmus von fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs arbeitet analog zu fuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePos. Benachbarte Kanten werden jedoch zu Paaren mit unterschiedlichen Kantenübergängen (Vorzeichen) zusammengefasst. Um sich überlappende oder einschließende Kantenpaare zu extrahieren, verwenden Sie bitte fuzzy_measure_pairingfuzzy_measure_pairingFuzzyMeasurePairingfuzzy_measure_pairingFuzzyMeasurePairingFuzzyMeasurePairing.

Falls TransitionTransitionTransitionTransitionTransitiontransition = 'positive'"positive""positive""positive""positive""positive" werden in RowEdgeFirstRowEdgeFirstRowEdgeFirstRowEdgeFirstRowEdgeFirstrowEdgeFirst und ColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstcolumnEdgeFirst Kantenpunkte mit Übergang von Dunkel nach Hell und in RowEdgeSecondRowEdgeSecondRowEdgeSecondRowEdgeSecondRowEdgeSecondrowEdgeSecond und ColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondcolumnEdgeSecond mit Übergang von Hell nach Dunkel übergeben. Im Modus 'negative'"negative""negative""negative""negative""negative" ist dies genau umgekehrt. Im Modus 'all'"all""all""all""all""all" bestimmt die erste gefunde Kante die Art der Paarbildung. D.h., je nach Lage des Messobjekts werden entweder hell-dunkel-hell Übergänge oder dunkel-hell-dunkel Übergänge gefunden. Dieses Vorgehen ist dann nützlich, wenn z.B. Objekte vermessen werden, die unterschiedliche Helligkeiten in Relation zum Hintergrund aufweisen.

Sind die subpixelgenauen Positionen der Kanten ermittelt, werden sie zu Paaren gruppiert. Dabei werden die Kanten derart zu Paaren sortiert, dass Überschneidungen und Einschlüsse der Paaren untereinander verhindert werden. Die Merkmale der Kantenpaare werden mit Hilfe einer zugehörigen Fuzzy-Funktion bewertet, welche mit set_fuzzy_measureset_fuzzy_measureSetFuzzyMeasureset_fuzzy_measureSetFuzzyMeasureSetFuzzyMeasure b.z.w. set_fuzzy_measure_norm_pairset_fuzzy_measure_norm_pairSetFuzzyMeasureNormPairset_fuzzy_measure_norm_pairSetFuzzyMeasureNormPairSetFuzzyMeasureNormPair gesetzt werden kann. Welche Kantenpaare ausgewählt werden wird mit dem Parameter FuzzyThreshFuzzyThreshFuzzyThreshFuzzyThreshFuzzyThreshfuzzyThresh beeinflusst, welcher eine Schwelle über die Bewertung aller Fuzzy-Sets angibt, d.h. über den geometrischen Mittelwert der einzelnen Gewichtungen der Sets.

Die extrahierten Kanten werden als einzelne Punkte, die auf der Hauptachse des Rechtecks oder dem mittleren Bogen des Kreisringsegments liegen, zurückgegeben. Die zugehörigen Kantenamplituden werden in AmplitudeFirstAmplitudeFirstAmplitudeFirstAmplitudeFirstAmplitudeFirstamplitudeFirst und AmplitudeSecondAmplitudeSecondAmplitudeSecondAmplitudeSecondAmplitudeSecondamplitudeSecond, die Fuzzy-Bewertungen in FuzzyScoreFuzzyScoreFuzzyScoreFuzzyScoreFuzzyScorefuzzyScore zurückgeliefert. Zusätzlich wird noch der Abstand innerhalb eines Kantenpaares in IntraDistanceIntraDistanceIntraDistanceIntraDistanceIntraDistanceintraDistance und der Abstand von aufeinanderfolgenden Kantenpaaren in InterDistanceInterDistanceInterDistanceInterDistanceInterDistanceinterDistance zurückgeliefert. Dabei entspricht IntraDistance[i] dem Abstand von EdgeFirst[i] und EdgeSecond[i], während InterDistance[i] dem Abstand von EdgeSecond[i] und EdgeFirst[i+1] entspricht. D.h., das Tupel InterDistanceInterDistanceInterDistanceInterDistanceInterDistanceinterDistance enthält ein Element weniger als die Tupel der Kantenpaare.

Achtung

fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs liefert nur dann brauchbare Ergebnisse, falls die Annahme, dass die Kanten gerade und senkrecht zur Hauptachse des Rechtecks oder zum Kreisringsegment sind, erfüllt ist. fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs sollte daher z.B. nicht dazu verwendet werden, Kanten von gekrümmten Objekten zu extrahieren. Weiterhin sollte der Benutzer darauf achten, dass das Rechteck / das Kreisringsegment möglichst senkrecht zu den Bildkanten liegt. Außerdem darf SigmaSigmaSigmaSigmaSigmasigma nicht größer als ca. 0.5 * Length1 (siehe gen_measure_rectangle2gen_measure_rectangle2GenMeasureRectangle2gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2 für Length1) sein.

Es ist zu beachten, dass fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs den Definitionsbereich von ImageImageImageImageImageimage aus Geschwindigkeitsgründen ignoriert. Falls bestimmte Bildbereiche von der Messung ausgeschlossen werden sollen, sollte ein neues Messobjekt mit entsprechend angepassten Parametern erzeugt werden.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild.

MeasureHandleMeasureHandleMeasureHandleMeasureHandleMeasureHandlemeasureHandle (input_control)  measure_id HMeasure, HTupleHTupleHMeasure, HTupleHMeasureX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des Messobjekts.

SigmaSigmaSigmaSigmaSigmasigma (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Sigma der Gaußglättung.

Defaultwert: 1.0

Wertevorschläge: 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 7.0, 10.0

Typischer Wertebereich: 0.4 ≤ Sigma Sigma Sigma Sigma Sigma sigma ≤ 100 (lin)

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 0.1

Restriktion: Sigma >= 0.4

AmpThreshAmpThreshAmpThreshAmpThreshAmpThreshampThresh (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Minimale Amplitude einer Kante.

Defaultwert: 30.0

Wertevorschläge: 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0

Typischer Wertebereich: 1 ≤ AmpThresh AmpThresh AmpThresh AmpThresh AmpThresh ampThresh ≤ 255 (lin)

Minimale Schrittweite: 0.5

Empfohlene Schrittweite: 2

FuzzyThreshFuzzyThreshFuzzyThreshFuzzyThreshFuzzyThreshfuzzyThresh (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Minimale Fuzzy-Bewertung.

Defaultwert: 0.5

Wertevorschläge: 0.1, 0.3, 0.5, 0.7, 0.9

Typischer Wertebereich: 0.0 ≤ FuzzyThresh FuzzyThresh FuzzyThresh FuzzyThresh FuzzyThresh fuzzyThresh ≤ 1.0 (lin)

Empfohlene Schrittweite: 0.1

TransitionTransitionTransitionTransitionTransitiontransition (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Auswahl des ersten Grauwertüberganges der Kantenpaare.

Defaultwert: 'all' "all" "all" "all" "all" "all"

Werteliste: 'all'"all""all""all""all""all", 'negative'"negative""negative""negative""negative""negative", 'positive'"positive""positive""positive""positive""positive"

RowEdgeFirstRowEdgeFirstRowEdgeFirstRowEdgeFirstRowEdgeFirstrowEdgeFirst (output_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenkoordinate der ersten Kante.

ColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstColumnEdgeFirstcolumnEdgeFirst (output_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenkoordinate der ersten Kante.

AmplitudeFirstAmplitudeFirstAmplitudeFirstAmplitudeFirstAmplitudeFirstamplitudeFirst (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Kantenamplitude der ersten Kante (mit Vorzeichen).

RowEdgeSecondRowEdgeSecondRowEdgeSecondRowEdgeSecondRowEdgeSecondrowEdgeSecond (output_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenkoordinate der zweiten Kante.

ColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondColumnEdgeSecondcolumnEdgeSecond (output_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenkoordinate des Mittelpunktes der Kante.

AmplitudeSecondAmplitudeSecondAmplitudeSecondAmplitudeSecondAmplitudeSecondamplitudeSecond (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Kantenamplitude der zweiten Kante (mit Vorzeichen).

RowEdgeCenterRowEdgeCenterRowEdgeCenterRowEdgeCenterRowEdgeCenterrowEdgeCenter (output_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenkoordinate des Mittelpunktes des Kantenpaares.

ColumnEdgeCenterColumnEdgeCenterColumnEdgeCenterColumnEdgeCenterColumnEdgeCentercolumnEdgeCenter (output_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenkoordinate des Mittelpunktes des Kantenpaares.

FuzzyScoreFuzzyScoreFuzzyScoreFuzzyScoreFuzzyScorefuzzyScore (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Fuzzy-Bewertung des Kantenpaares.

IntraDistanceIntraDistanceIntraDistanceIntraDistanceIntraDistanceintraDistance (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Abstand zwischen Kanten eines Kantenpaars.

InterDistanceInterDistanceInterDistanceInterDistanceInterDistanceinterDistance (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Abstand zwischen aufeinanderfolgenden Kantenpaaren.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairs den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

gen_measure_rectangle2gen_measure_rectangle2GenMeasureRectangle2gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2, gen_measure_arcgen_measure_arcGenMeasureArcgen_measure_arcGenMeasureArcGenMeasureArc, set_fuzzy_measureset_fuzzy_measureSetFuzzyMeasureset_fuzzy_measureSetFuzzyMeasureSetFuzzyMeasure

Nachfolger

close_measureclose_measureCloseMeasureclose_measureCloseMeasureCloseMeasure

Alternativen

edges_sub_pixedges_sub_pixEdgesSubPixedges_sub_pixEdgesSubPixEdgesSubPix, fuzzy_measure_pairingfuzzy_measure_pairingFuzzyMeasurePairingfuzzy_measure_pairingFuzzyMeasurePairingFuzzyMeasurePairing, measure_pairsmeasure_pairsMeasurePairsmeasure_pairsMeasurePairsMeasurePairs

Siehe auch

fuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePos, measure_posmeasure_posMeasurePosmeasure_posMeasurePosMeasurePos

Modul

1D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren