Der klassische 'Check Abbild' Knoten ist nur minimal tolerant gegenüber Abweichungen.
Mit diesem Algorithmus, der einen Vergleich Pixel für Pixel durchführt,
ist es nicht möglich, Bilder zu vergleichen, die nicht-deterministisch generiert werden
oder nicht die exakt gleiche Größe aufweisen.
Mittels dem Attribut 'Algorithmus zum Bildvergleich' ist es möglich,
einen speziellen Algorithmus zu definieren, der tolerant gegenüber gewissen
Änderungen Abbild-Vergleiche durchführt. Das Attribut muss mit der Algorithmus-Definition
in Form von algorithm=<algorithm> starten.
Anschließend folgen alle notwendigen Parametern, die jeweils mit Semikolons voneinander
getrennt sind.
Die Parameter können in beliebiger Reihenfolge angegeben werden, auch die
Verwendung von Variablen ist erlaubt.
algorithm=<algo>;parameter1=value1;parameter2=value2;expected=$(expected)
3.5.1+
Seit QF-Test 3.5.1 muss die Definition nicht mehr mit algorithm=<algorithm> starten,
sondern kann einfach mit <algorithm> beginnen.
Es ist auch nicht mehr notwendig, den Parameter 'expected' zu definieren. QF-Test benutzt
einen Default-Wert, wenn keiner angegeben ist. Mehr Informationen dazu finden Sie unten.
Eine detaillierte Beschreibung der verfügbaren Algorithmen und ihrer Parameter folgt im
folgenden Abschnitt. Zum besseren Verständnis werden die Algorithmen beispielhaft auf
dieses Bild angewendet:
Im Protokoll
(vgl. Abschnitt 7.1)
eines fehlgeschlagenen Checks haben Sie die Möglichkeit die Ergebnisbilder des benutzten
Algorithmus sowie die Übereinstimmungswahrscheinlichkeit zu analysieren.
Wenn die Option Erfolgreiche tolerante Abbildvergleiche in das Protokoll schreiben aktiviert ist,
werden alle toleranten Abbildvergleiche in das Protokoll geschrieben und stehen
für weitere Analysen zur Verfügung.
- Beschreibung
-
Der klassische Bildvergleich prüft für jedes einzelne Pixel, ob der erwartete Farbwert
dem erhaltenen Farbwert entspricht. Sollte mindestens ein erhaltenes Pixel nicht dem
erwarteten Pixel entsprechen, so schlägt der Check fehl. Die Option
Erlaubte Abweichung beim Check von Abbildern erlaubt dabei das Setzen einer Toleranzschwelle für den
Pixelvergleich.
- Einsatzzweck
-
Dieser pixelbasierte Vergleich ist immer dann geeignet, wenn ein nahezu exaktes Abbild
erwartet wird und nur geringe oder keine Toleranzen oder Abweichungen zugelassen sind.
Sobald Ihre Anwendung jedoch das Aussehen der zu prüfenden Komponente nicht mit jedem
Testlauf identisch generiert, ist dieser Algorithmus nicht geeignet.
- Beispiel
-
Der klassische Bildvergleich führt keine Manipulationen durch, daher sieht das Ergebnis aus
wie das Ausgangsbild.
Der klassische Bildvergleich wird verwendet, wenn das 'Algorithmus zum Bildvergleich' Attribute leer ist.
- Beschreibung
-
Dieser Algorithmus ist ähnlich zum klassischen Bildvergleich mit dem Unterschied, dass
er eine gewisse prozentuale Anzahl von abweichenden Pixeln akzeptiert.
Zuerst teilt er jedes Pixel in seine drei Farbbestandteile rot, grün und blau.
Anschließend wird jeder dieser drei Werte mit den jeweils erwarteten Farbwerten verglichen.
Das Ergebnis ist die Anzahl der identischen Pixel geteilt durch die Gesamtanzahl der Pixel.
- Einsatzzweck
-
Falls Ihre zu prüfenden Bilder nicht mit jedem Lauf identisch generiert werden,
Sie aber eine prozentuale Anzahl von abweichenden Pixeln akzeptieren, könnte
dieser Algorithmus sinnvoll sein.
Er ist jedoch nicht brauchbar, wenn das erhaltene Abbild gegenüber dem erwarteten
Abbild Verschiebungen oder Zerrungen aufweist.
- Beispiel
-
Da der pixelbasierte Vergleich keine Manipulationen durchführt,
sieht das Ergebnis bei Verwendung des beispielhaften Algorithmus
algorithm=identity;expected=0.95
aus wie das Ausgangsbild.
- Parameter
- algorithm=identity
-
Gibt an, dass der 'Pixelbasierte Vergleich' verwendet werden soll.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Dieser Algorithmus zerlegt jedes Pixel in seine drei Farbbestandteile rot, grün und blau.
Anschließend wird jeder dieser drei Werte mit den jeweils erwarteten Farbwerten verglichen
und eine prozentuale Ähnlichkeit ermittelt. Die prozentualen Abweichungen werden aufsummiert
und bilden nach Berechnung des Durchschnitts über die frei Farbwerte sowie über alle Pixel
des Abbildes die gesamte Ähnlichkeit. Dieser erhaltene Wert wird mit einem erwarteten Wert
verglichen und bestimmt somit den Erfolg des Vergleichs.
- Einsatzzweck
-
Falls Ihre zu prüfenden Abbilder nicht mit jedem Lauf identisch sind,
Sie aber eine gewisse Abweichung akzeptieren, ist dieser Algorithmus
ein möglicher Kandidat für den Einsatz.
Falls für einzelne Pixel eine große Farbabweichung akzeptiert wird, solange die mittlere
Abweichung in einem definierten Rahmen bleibt, ist dieser Algorithmus ebenfalls geeignet.
Ungeeignet ist er jedoch, wenn das erhaltene Abbild gegenüber dem erwarteten
Abbild Verschiebungen oder Zerrungen aufweist.
- Beispiel
-
Da die pixelbasierte Ähnlichkeitsanalyse keine Manipulationen durchführt,
sieht das Ergebnis bei Verwendung des beispielhaften Algorithmus
algorithm=similarity;expected=0.95
aus wie das Ausgangsbild.
- Parameter
- algorithm=similarity
-
Gibt an, dass die 'Pixelbasierte Ähnlichkeitsanalyse' verwendet werden soll.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Bei Verwendung dieses Algorithmus werden quadratische Blöcke mit frei wählbarer Größe gebildet.
Der Farbwert der einzelnen Blöcke berechnet sich dabei aus dem Durchschnitt der Farbwerte,
die der jeweilige Block überdeckt. Falls die Breite beziehungsweise Höhe des untersuchten
Abbilds nicht ein Vielfaches der Blockgröße ist, werden die Blöcke am rechten
beziehungsweise unteren Rand dementsprechend abgeschnitten und mit niedrigerem Gewicht gewertet.
Die erhaltenen Blöcke werden gegen die erwarteten Blöcke geprüft. Als Ergebnis wird der Anteil der
identischen Blöcke im Vergleich zur Gesamtanzahl unter Berücksichtigung eventuell
gewichteter Randblöcke ermittelt.
- Einsatzzweck
-
Dieser Algorithmus ist dafür vorgesehen, wenn ein Teil Ihres zu prüfenden Abbildes sich von
Lauf zu Lauf ändert, aber der Rest des Bildes jedes mal identisch ist.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=block;size=10;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=block
-
Gibt an, dass 'Blockbildung mit Vergleich' verwendet werden soll.
- size
-
Definiert die zu verwendende Größe der einzelnen Blöcke.
Gültig ist ein Wert zwischen 1 und der der Bildgröße.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Auch bei diesem Algorithmus werden zunächst quadratische Blöcke mit frei wählbarer Größe gebildet.
Der Farbwert der einzelnen Blöcke berechnet sich dabei aus dem Durchschnitt der Farbwerte,
die der jeweilige Block überdeckt. Falls die Breite beziehungsweise Höhe des untersuchten
Abbilds nicht ein Vielfaches der Blockgröße ist, werden die Blöcke am rechten
beziehungsweise unteren Rand dementsprechend abgeschnitten und mit niedrigerem Gewicht gewertet.
Die erhaltenen Blöcke werden gegen die erwarteten Blöcke geprüft. Anschließend werden die
Farbwerte der Blöcke miteinander verglichen und die Ähnlichkeit analysiert. Die Mittelwerte
der Ähnlichkeiten kombiniert mit der Gewichtung der jeweiligen Blöcke bilden das Ergebnis.
- Einsatzzweck
-
Mittels der Mittelwertsbildung einzelner Quadrate sowie eine Ähnlichkeitsuntersuchung ebendieser
eignet sich der Algorithmus allgemein zum Vergleich von variierenden Bildern, die jedoch eine
übereinstimmende Verteilung ähnlicher Farben aufweisen.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=blocksimilarity;size=5;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=blocksimilarity
-
Gibt an, dass 'Blockbildung mit Ähnlichkeitsanalyse' verwendet werden soll.
- size
-
Definiert die zu verwendende Größe der einzelnen Blöcke.
Gültig ist ein Wert zwischen 1 und der der Bildgröße.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Eine Farbhäufigkeitsanalyse zerlegt das Abbild zuerst in seine drei Grundfarbtöne
rot, grün und blau. Anschließend werden für jedes Pixel die Farbwerte dieser drei
Farbtöne ermittelt. Diese Farbwerte werden in eine relativ frei wählbaren Anzahl von
Kategorien aufgeteilt. Anschließend wird der Füllgrad dieser Kategorien ermittelt.
Das Ergebnis dieses Algorithmus ist der Vergleich der Füllgrade jeder Kategorie
und somit implizit ein Vergleich der Häufigkeiten von Farbkategorien.
- Einsatzzweck
-
Histogramme dienen sehr unterschiedlichen Zwecken. Es ist mit ihnen zum Beispiel möglich,
Farbtendenzen zu ermitteln oder Helligkeitsuntersuchungen durchzuführen.
Nicht geeignet sind sie jedoch zum Vergleich von sehr einfarbigen Bildern.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=histogram;buckets=64;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=histogram
-
Gibt an, dass eine 'Häufigkeitsanalyse mittels Histogramm'
durchgeführt werden soll.
- buckets
-
Gibt an, wieviele Farbabstufungen verwendet werden sollen.
Gültig ist eine Potenz zur Basis 2 von 2 bis 256.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Die Diskrete Kosinustransformation (DCT) ist eine reellwertige, diskrete, lineare,
orthogonale Transformation, die das diskrete Signal vom Ortsbereich in den
Frequenzbereich transformiert.
Nachdem ein Bild transformiert wurde, lassen sich niederwertige (schnell schwingende)
Frequenzen eliminieren und nur die höherwertigen (langsam schwingende) Frequenzen
sowie der Gleichanteil (0. Frequenz = 0*cos(x) + y) betrachten. Sie können frei
bestimmen, wieviele Frequenzen jeweils pro Farbkanal zum Bildvergleich herangezogen
werden und mit welcher Toleranz zwei Kosinus-Schwingungen als identisch angesehen werden.
Bei der Berechnung der Übereinstimmungswahrscheinlickeit werden niederwertige Frequenzen
mit deutlich geringerem Anteil gewichtet als höherwertige Frequenzen.
- Einsatzzweck
-
Die Diskrete Kosinustransformation eignet sich im Prinzip für alle Arten von
Bildvergleichen, die eine gewisse Toleranz erfordern, da sowohl Farbverteilungen,
Farbhäufungen als auch Farbwiederholungen berücksichtigt werden. Je mehr Frequenzen
zur Untersuchung herangezogen werden, desto schärfer wird der Bildvergleich durchgeführt.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=dct;frequencies=20;tolerance=0.1;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=dct
-
Gibt an, dass eine 'Bildanalyse mittels Diskreter Kosinustransformation'
durchgeführt werden soll.
- frequencies
-
Gibt an, wie viele Frequenzen betrachtet werden sollen.
Gültig ist ein Wert zwischen 0 (nur Gleichanteil) und der Fläche des Bildes.
Je weniger Frequenzen betrachtet werden, desto unschärfer wird der Vergleich.
Außerdem gilt zu beachten, dass die Schärfe einer bestimmten Anzahl von Frequenzen
von der Bildgröße abhängt.
- tolerance
-
Gibt an, bis zu welcher (nicht linearen) Abweichung jede einzelne Frequenz als gleich
angesehen wird.
Gültig ist ein Wert zwischen 0.0 und 1.0.
Der Wert 1.0 bedeutet, dass jedes Bild akzeptiert wird, da je Frequenz die maximale Abweichung
als gültig erlaubt ist. Ein Wert von 0.0 bedeutet, dass keine Abweichung pro Frequenz akzeptiert
wird und der Vergleich somit nur identische Schwingungen als identisch akzeptiert. Der Wert 0.1
gilt als Standard, da dieser nur extrem ähnliche Frequenzen als identisch akzeptiert.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Bei Verwendung dieses Algorithmus wird das Bild in einzelne frei definierbare quadratische
Bereiche eingeteilt (vgl. Abschnitt 58.2.4).
Anschließend wird für jeden dieser Bereiche eine Diskrete
Kosinustransformation (vgl. Abschnitt 58.2.7)
durchgeführt. Der Mittelwert der Ergebnisse der einzelnen Diskreten
Kosinustransformationen aller Bereiche sowie gewichteten Randbereiche bildet
das Gesamtergebnis.
- Einsatzzweck
-
Die Diskrete Kosinustransformation über das gesamte Bild reagiert stark auf
Helligkeitsabweichungen, die im zentralen Bereich des Bildes auftreten, da
damit der Gleichanteil (0. Frequenz), die den am höchsten gewichteten Anteil
darstellt, stark variiert. Die Einteilung in einzelne Bereiche umgeht dieses
Phänomen, da nur noch der betroffene Bereich eine starke Abweichung aufweist,
die anderen Bereiche jedoch davon nicht betroffen sind.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=dctblock;size=32;frequencies=4;tolerance=0.1;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=dctblock
-
Gibt an, dass eine 'Blockbildung zur Bildanalyse mittels Diskreter Kosinus Transformation'
durchgeführt werden soll.
- frequencies
-
Gibt an, wie viele Frequenzen betrachtet werden sollen.
Gültig ist ein Wert zwischen 0 (nur Gleichanteil) und der Fläche eines Blockes.
Je weniger Frequenzen betrachtet werden, desto unschärfer wird der Vergleich.
Außerdem gilt zu beachten, dass die Schärfe einer bestimmten Anzahl von Frequenzen
von der Bildgröße abhängt.
- tolerance
-
Gibt an, bis zu welcher (nicht linearen) Abweichung jede einzelne Frequenz als gleich
angesehen wird.
Gültig ist ein Wert zwischen 0.0 und 1.0.
Der Wert 1.0 bedeutet, dass jedes Bild akzeptiert wird, da je Frequenz die maximale Abweichung
als gültig erlaubt ist. Ein Wert von 0.0 bedeutet, dass keine Abweichung pro Frequenz akzeptiert
wird und der Vergleich somit nur identische Schwingungen als identisch akzeptiert. Der Wert 0.1
gilt als Standard, da dieser nur extrem ähnliche Frequenzen als identisch akzeptiert.
- size
-
Definiert die zu verwendende Größe der einzelnen Blöcke.
Gültig ist eine Potenz zur Basis 2 zwischen 2 und der Bildgröße.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Dieser Algorithmus verkleinert das zu prüfende Bild auf eine wählbare
prozentuale Größe. Anschließend wird das Bild wieder auf die ursprüngliche
Größe vergößert unter Verwendung eines bilinearen Filters. Dieser Filter bewirkt
eine Unschärfe, da beim Strecken des Bildes Nachbarpixel berücksichtigt werden und
somit ein Farbverlauf entsteht.
Die transformierten Bilder werden anschließend einem pixelbasierten
Ähnlichkeitsvergleich unterzogen.
- Einsatzzweck
-
Abhängig von der gewählten Schärfe gehen beliebig viele Bildinformationen verloren.
Somit ist dieser Algorithmus, je nach Schärfe, für nahezu beliebige Einsatzzwecke
geeignet.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=bilinear;sharpness=0.2;expected=0.95
führt zu folgendem Ergebnisbild:
- Parameter
- algorithm=bilinear
-
Gibt an, dass der 'Bilinearer Filter' auf die Bilder angewendet werden soll.
- sharpness
-
Gibt an, wie scharf das Ergebnis des bilinearen Filters sein soll.
Gültig ist ein Wert zwischen 0.0 (kompletter Informationsverlust)
und 1.0 (kein Informationsverlust).
Die Schärfe ist eine lineare Angabe, so geht bei einem Wert von 0.5 genau
die Hälfte (plusminus Rundung auf ganze Pixel) der Bildinformation verloren.
- expected (optional, aber empfohlen)
-
Gibt an, welche Mindestübereinstimmung erwartet wird.
Gültig ist ein Wert zwischen 0.0 und 1.0. Falls nicht definiert, wird 0.98 verwendet.
- resize (optional)
-
Gibt an, dass das erhaltene Bild auf die gleiche Größe gebracht wird
wie das erwartete Bild.
Gültige Werte sind "true" und "false".
- find (optional)
-
Gibt an, dass eine Bild-in-Bild Suche durchgeführt werden soll.
Eine genaue Beschreibung dieses Parameters ist in Abschnitt 58.3.1 erläutert.
- Beschreibung
-
Die Bild-in-Bild Suche ermöglicht es, ein erwartetes Abbild innerhalb eines (größeren) Gesamtbildes zu suchen.
Der Vergleich ist erfolgreich, wenn das erwartete Abbild irgendwo innerhalb des erhaltenen Abbildes mit Hilfe
des definierten Algorithmus gefunden wurde.
Außerdem kann man die Position des Treffers ermitteln.
Folgende Parameterkombinationen sind gültig:
find=best
oder find=anywhere
find=best(resultX, resultY)
oder find=anywhere(resultX, resultY)
- Einsatzzweck
-
Die Bild-in-Bild Suche ermöglicht es, Abbilder zu vergleichen, wenn man die genaue Position nicht kennt.
Da die Suche mit jedem Algorithmus kombiniert werden kann, ist sie in beliebigen Situationen anwendbar.
- Beispiel
-
Der beispielhafte Algorithmus
algorithm=similarity;expected=0.95;find=best(resultX,resultY)
verwendet die pixelbasierte Ähnlichkeitsanalyse (vgl. Abschnitt 58.2.3)
um ein Abbild des Q auf dem Gesamtbild zu suchen. Das erhaltene Abbild inklusive Bereichsmarkierung kann im Protokoll
eingesehen werden und sieht wie folgt aus. Außerdem werden die Variablen resultX und resultY auf die Positionsinformationen gesetzt.
- Parameter
- find=best
-
Gibt an, dass der beste Treffer als Ergebnis gewertet wird.
- find=anywhere
-
Gibt an, dass der erste Treffer, der besser als die erwartete Wahrscheinlichkeit ist, als Ergebnis gewertet wird.
Da die Bild-in-Bild Suche mit mehreren Threads durchgeführt wird, kann das Ergebnis hier nicht deterministisch sein.
- resultX
resultX
ist ein beliebiger Variablenname. Nach dem Vergleich beschreibt er die x-Position des gefundenen Bildes.
Wenn eine Variable für die x-Position definiert ist, dann muss auch eine Variable für die y-Position angegeben sein (siehe Syntax oben).
- resultY
resultY
ist ein beliebiger Variablenname. Nach dem Vergleich beschreibt er die y-Position des gefundenen Bildes.
Wenn eine Variable für die y-Position definiert ist, dann muss auch eine Variable für die x-Position angegeben sein (siehe Syntax oben).