# 圖像匹配操作

本章節為您介紹如何使用模板匹配的方法進行元素的查找點擊操作，FIRERPA 支援使用模板匹配以及特徵點匹配（SIFT）。在開始前，您需要了解關於圖像匹配的基本資訊，圖像匹配分為模板和特徵點匹配，模板匹配適合解析度相同的裝置，更加高效。特徵點匹配適合不同解析度的螢幕，但是部分閾值可能需要根據不同裝置螢幕的大小進行微調。

```{hint}
所有匹配流程均在 FIRERPA 伺服器端進行，不佔用本機資源，但是由於行動端效能限制效率較低，對效能有要求的用戶可在本機自行截圖匹配。
```

## 匹配介面

圖像匹配介面是一個稍微複雜的介面，但在大部分情況下，您所需要調整的只是 threshold、distance 參數，您也可以在下列參數釋義中找到各個參數的含義。介面的主要形式如下，預設情況下進行全螢幕匹配並使用模板匹配方法進行，此介面主要為節省您主機的計算資源，對效能或辨識結果有要求的用戶也可使用截圖介面自行進行截圖匹配。

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

| 欄位      | 描述 |
| ----------- | ----------- |
| data      | 待匹配圖像的位元組資料（切圖）       |
| threshold   | 捨棄閾值（相似度）        |
| distance   | 最大特徵點距離（僅特徵匹配）        |
| scale   | 縮放匹配（提高效能，不適用於模板匹配）        |
| area   | 匹配區域（限定區域以提高效能）        |
| method   | 匹配方法        |

## 匹配方法

匹配方法支援模板以及特徵點匹配。模板匹配適用於紋理明顯、目標形狀固定的情況，但對於旋轉、尺度變化、光照變化的魯棒性較差。特徵點匹配透過偵測圖像特徵點（如角點、邊緣）並描述其特徵，然後在兩幅圖像中進行匹配。它對於旋轉、尺度變化、光照變化等具有較強的魯棒性，適用於場景複雜的匹配任務。

| 匹配方法      | 描述 |
| ----------- | ----------- |
| FindImageMethod.FIM_TEMPLATE      | 模板匹配      |
| FindImageMethod.FIM_FEATURE   | 特徵點匹配        |


## 匹配區域

匹配區域主要用來平衡行動端的效能。在大部分情況下，需匹配的項目位於螢幕的固定區域，您可以透過指定其所在區域來減小圖像大小，從而減少匹配時的計算量。

| 匹配區域      | 描述 |
| ----------- | ----------- |
| FindImageArea.FIA_WHOLE_SCREEN      | 全螢幕匹配       |
| FindImageArea.FIA_LEFT   | 匹配左半螢幕        |
| FindImageArea.FIA_TOP_LEFT   | 匹配左上角螢幕        |
| FindImageArea.FIA_TOP   | 匹配上半螢幕        |
| FindImageArea.FIA_TOP_RIGHT   | 匹配右上角螢幕        |
| FindImageArea.FIA_RIGHT   | 匹配右半螢幕        |
| FindImageArea.FIA_BOTTOM_RIGHT   | 匹配右下角螢幕        |
| FindImageArea.FIA_BOTTOM   | 匹配下半螢幕        |
| FindImageArea.FIA_BOTTOM_LEFT   | 匹配左下角螢幕        |