# Bildabgleich-Operationen

Dieses Kapitel beschreibt, wie Sie Elemente mithilfe von Template-Matching finden und anklicken können. FIRERPA unterstützt sowohl Template-Matching als auch Merkmalspunktabgleich (SIFT). Bevor Sie beginnen, sollten Sie die Grundlagen des Bildabgleichs verstehen. Der Bildabgleich unterteilt sich in Template-Matching und Merkmalspunktabgleich. Template-Matching eignet sich für Geräte mit derselben Auflösung und ist effizienter. Der Merkmalspunktabgleich eignet sich für Bildschirme mit unterschiedlichen Auflösungen, jedoch müssen einige Schwellenwerte möglicherweise je nach Bildschirmgröße des Geräts feinjustiert werden.

```{hint}
Alle Abgleichprozesse werden auf dem FIRERPA-Server ausgeführt und beanspruchen keine lokalen Ressourcen. Aufgrund von Leistungseinschränkungen auf mobilen Geräten ist die Effizienz jedoch geringer. Bei hohen Leistungsanforderungen können Sie Screenshots lokal erstellen und den Abgleich selbst durchführen.
```

## Abgleich-Schnittstelle

Die Schnittstelle für den Bildabgleich ist etwas komplex, aber in den meisten Fällen müssen Sie nur die Parameter `threshold` und `distance` anpassen. Die Bedeutung der einzelnen Parameter finden Sie in den folgenden Erläuterungen. Die Hauptform der Schnittstelle ist wie folgt. Standardmäßig wird ein Vollbildabgleich mit der Template-Matching-Methode durchgeführt. Diese Schnittstelle dient hauptsächlich dazu, die Rechenressourcen Ihres Host-Computers zu schonen. Wenn Sie hohe Anforderungen an die Leistung oder die Erkennungsergebnisse haben, können Sie auch die Screenshot-Schnittstelle verwenden, um den Abgleich selbst durchzuführen.

```python
d.find_similar_image(data, threshold=0.0, distance=250, scale=1.0, area=FindImageArea.FIA_WHOLE_SCREEN, method=FindImageMethod.FIM_TEMPLATE)
```

| Feld      | Beschreibung |
| ----------- | ----------- |
| data      | Bytedaten des abzugleichenden Bildes (Bildausschnitt)       |
| threshold   | Schwellenwert für die Verwerfung (Ähnlichkeit)        |
| distance   | Maximale Distanz zwischen Merkmalspunkten (nur bei Merkmalspunktabgleich)        |
| scale   | Skalierter Abgleich (verbessert die Leistung, nicht für Template-Matching anwendbar)        |
| area   | Abgleichbereich (die Einschränkung des Bereichs verbessert die Leistung)        |
| method   | Abgleichmethode        |

## Abgleichmethoden

Die Abgleichmethoden unterstützen Template-Matching und Merkmalspunktabgleich. Template-Matching eignet sich für Situationen mit deutlichen Texturen und festen Zielformen, ist aber nicht robust gegenüber Rotationen, Skalierungsänderungen und Beleuchtungsänderungen. Der Merkmalspunktabgleich erkennt Bildmerkmale wie Ecken und Kanten, beschreibt diese und gleicht sie dann zwischen zwei Bildern ab. Er ist sehr robust gegenüber Rotationen, Skalierungsänderungen, Beleuchtungsänderungen usw. und eignet sich für komplexe Abgleichaufgaben.

| Abgleichmethode      | Beschreibung |
| ----------- | ----------- |
| FindImageMethod.FIM_TEMPLATE      | Template-Matching      |
| FindImageMethod.FIM_FEATURE   | Merkmalspunktabgleich        |


## Abgleichbereiche

Der Abgleichbereich dient hauptsächlich dazu, die Leistung auf mobilen Geräten auszugleichen. In den meisten Fällen befindet sich das abzugleichende Element in einem festen Bereich des Bildschirms. Durch die Angabe dieses Bereichs können Sie die Bildgröße reduzieren und somit den Rechenaufwand beim Abgleich verringern.

| Abgleichbereich      | Beschreibung |
| ----------- | ----------- |
| FindImageArea.FIA_WHOLE_SCREEN      | Ganzbildabgleich       |
| FindImageArea.FIA_LEFT   | Abgleich der linken Bildschirmhälfte        |
| FindImageArea.FIA_TOP_LEFT   | Abgleich der oberen linken Bildschirmecke        |
| FindImageArea.FIA_TOP   | Abgleich der oberen Bildschirmhälfte        |
| FindImageArea.FIA_TOP_RIGHT   | Abgleich der oberen rechten Bildschirmecke        |
| FindImageArea.FIA_RIGHT   | Abgleich der rechten Bildschirmhälfte        |
| FindImageArea.FIA_BOTTOM_RIGHT   | Abgleich der unteren rechten Bildschirmecke        |
| FindImageArea.FIA_BOTTOM   | Abgleich der unteren Bildschirmhälfte        |
| FindImageArea.FIA_BOTTOM_LEFT   | Abgleich der unteren linken Bildschirmecke        |