> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/classical-computer-vision/sift-comparison.md).

# SIFT 比較

## v2

2つの画像またはそのSIFT記述子を、設定可能なマッチャーアルゴリズム（FLANNまたは総当たり）を使って比較し、画像が与えられた場合はSIFT特徴を自動計算し、Loweの比率テストによるフィルタリングを適用し、必要に応じてキーポイントと一致の可視化を生成して、画像マッチング、類似性検出、重複検出、特徴ベースの画像比較ワークフローに利用できます。

## このブロックの仕組み

このブロックは、対応する特徴を見つけて良好な一致数を数えることで、2つの画像またはそのSIFT記述子が一致するかどうかを比較します。このブロックは:

1. 2つの入力（input\_1 と input\_2）を受け取ります。入力は画像または事前計算済みのSIFT記述子のいずれかです
2. 各入力をその型に応じて処理します:
   * **入力が画像の場合**: OpenCVのSIFT検出器を使ってSIFTキーポイントと記述子を自動計算します
     * 画像をグレースケールに変換します
     * キーポイントを検出し、128次元のSIFT記述子を計算します
     * visualize=True の場合、必要に応じてキーポイントの可視化を作成します
     * キーポイントを出力用の辞書形式に変換します
   * **入力が記述子の場合**: 提供された記述子をそのまま使用します（SIFT計算は省略します）
3. 両方の記述子配列に少なくとも2個の記述子があることを検証します（比率テストのフィルタリングに必要です）
4. matcherパラメータに基づいてマッチャーアルゴリズムを選択します:
   * **FlannBasedMatcher** (デフォルト): 大規模な記述子セットに対して高速なFLANN近似最近傍探索を使用します
   * **BFMatcher**: L2ノルムを用いた総当たりマッチングを使用します。厳密に一致しますが、大規模な記述子セットでは遅くなります
5. k最近傍マッチング（k=2）を実行し、input\_1の各記述子に対して2つの最も近い記述子の一致を見つけます:
   * descriptors\_1の各記述子について、descriptors\_2内で最も類似した2つの記述子を見つけます
   * 類似度の測定には記述子空間でのユークリッド距離（L2ノルム）を使用します
   * 記述子の類似度を示す距離値付きの一致を返します
6. Loweの比率テストを使って良好な一致をフィルタリングします:
   * 各一致について、最良一致の距離（m.distance）と2番目に良い一致の距離（n.distance）を比較します
   * m.distance < ratio\_threshold \* n.distance を満たす一致のみ保持します
   * この比率テストは、複数の記述子が同程度に近い曖昧な一致を除外します
   * ratio\_threshold の値が低いほど（例: 0.6）、より明確な一致が必要になります（より厳しいフィルタリング）
   * ratio\_threshold の値が高いほど（例: 0.8）、より多くの一致を許可します（より緩いフィルタリング）
7. 比率テスト後の良好な一致数を数えます
8. good\_matches\_count と good\_matches\_threshold を比較して、画像が一致するかどうかを判断します:
   * good\_matches\_count >= good\_matches\_threshold の場合、images\_match = True
   * good\_matches\_count < good\_matches\_threshold の場合、images\_match = False
9. visualize=True かつ画像が入力された場合、必要に応じて可視化を生成します:
   * 各画像のキーポイント可視化を作成します（キーポイントが描画された画像）
   * 2つの画像間の対応キーポイントを線で結んだマッチ可視化を作成します
10. マッチ結果、キーポイント、記述子、およびオプションの可視化を返します

このブロックは、画像（SIFTの自動計算付き）または事前計算済みの記述子のどちらも受け取れる柔軟性を提供します。画像が与えられた場合、このブロックがSIFT処理全体を内部で行うため、個別のSIFT特徴検出ステップを必要とせず、より簡単に使えます。任意の可視化機能は、キーポイントと一致を視覚的に表示することで、マッチ結果のデバッグや理解に役立ちます。SIFT記述子はスケールと回転に不変であるため、異なるスケール、回転、視点角度の画像のマッチングに有効です。

## 一般的な使用例

* **画像類似性検出**: 2つの画像が類似しているか、互いに一致するかを判定します（例: コレクション内の類似画像を検出、データベース内で一致画像を検索、重複画像を特定）。これにより画像類似性ワークフローを実現します
* **重複画像検出**: 画像コレクション内の重複またはほぼ重複の画像を特定します（例: 写真ライブラリ内の重複画像を検索、データセット内の繰り返し画像を検出、異なるスケールや向きの同一画像を特定）。これにより重複検出ワークフローを実現します
* **特徴ベースの画像マッチング**: 視覚的特徴とキーポイントに基づいて画像をマッチングします（例: 類似コンテンツの画像をマッチ、異なる視点間で対応する画像を検索、画像シーケンス内で一致画像を特定）。これにより特徴ベースのマッチングワークフローを実現します
* **画像検証**: 画像が期待されるパターンや参照と一致するかを検証します（例: 画像の真正性を検証、参照画像と一致するか確認、テンプレートに対して画像内容を検証）。これにより画像検証ワークフローを実現します
* **画像の比較と分析**: 画像を比較して類似点と相違点を分析します（例: 品質管理のために画像を比較、画像の変動を分析、画像類似度スコアを測定）。これにより画像比較分析ワークフローを実現します
* **コンテンツベース画像検索**: 特徴マッチングをコンテンツベースの画像検索と取得に使用します（例: データベース内の類似画像を検索、視覚的類似度で画像を取得、内容マッチングで画像を検索）。これによりコンテンツベース取得ワークフローを実現します

## 他のブロックへの接続

このブロックは画像またはSIFT記述子を受け取り、必要に応じて可視化付きのマッチ結果を出力します:

* **画像入力ブロックの後** 画像を直接比較するために（例: 入力画像の比較、カメラフィードからの画像マッチング、画像類似性の分析）、直接画像比較ワークフローを実現します
* **SIFT特徴検出ブロックの後** 事前計算済みのSIFT記述子を比較するために（例: 異なる画像の記述子を比較、既存のSIFT特徴を使って画像をマッチ、事前計算済み記述子で画像類似性を分析）、記述子ベースの比較ワークフローを実現します
* **フィルタリングまたはロジックブロックの前** マッチ結果を意思決定に使う（例: 画像一致に基づいてフィルタリング、類似性に基づいて判断、マッチ結果に基づいてロジックを適用）ために、マッチベースの条件分岐ワークフローを実現します
* **データ保存ブロックの前** マッチ結果と可視化を保存するために（例: 画像マッチ結果を保存、類似度スコアを保存、可視化付き比較データを記録）、マッチ結果保存ワークフローを実現します
* **可視化ブロックの前で** 可視化をさらに処理または表示するために（例: マッチ可視化を表示、キーポイント画像を表示、比較結果をレンダリング）、可視化ワークフローの出力を実現します
* **画像比較パイプラインにおいて** 複数の画像を比較する必要がある場合に（例: 連続画像の比較、ワークフロー内での画像類似性分析、パイプラインでの画像比較処理）、画像比較パイプラインワークフローを実現します

## バージョン差分

このバージョン（v2）には、v1に比べていくつかの改善があります:

* **柔軟な入力型**: 画像と事前計算済みSIFT記述子の両方を入力として受け付けます（v1は記述子のみ対応）。これにより、個別のSIFT特徴検出ステップを必要とせず直接画像比較が可能になります
* **SIFTの自動計算**: 画像が与えられた場合、自動的にSIFTキーポイントと記述子を計算します。これにより、単純なワークフローで個別のSIFT特徴検出ブロックが不要になります
* **マッチャーの選択**: 設定可能な matcher パラメータを追加し、FlannBasedMatcher（デフォルト、高速）と BFMatcher（厳密、低速）のどちらかを選べるようにしました。これにより、さまざまな性能要件に柔軟に対応できます
* **可視化サポート**: 画像が与えられたときにキーポイント可視化とマッチ可視化を生成する任意の可視化機能を追加しました。これにより、結果のデバッグや理解に役立ちます
* **拡張出力**: 2つの画像のキーポイントと記述子に加え、オプションの可視化（キーポイント画像とマッチ可視化）を返し、下流処理向けにより包括的な出力データを提供します

### 種別識別子

ステップで次の識別子を使用します `"type"` フィールド: `roboflow_core/sift_comparison@v2` ワークフローにステップとしてブロックを追加するには。

### プロパティ

| **名前**                   | **型**   | **説明**                                                                                                                                                                                                                                                                                                                                                                                              | 参照 |
| ------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                   | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                             | ❌  |
| `good_matches_threshold` | `int`   | 画像が一致していると見なすために必要な良好な一致の最小数です。正の整数でなければなりません。良好な一致数（比率テストによるフィルタリング後）がこのしきい値以上の場合、images\_match は True になります。低い値（例: 20〜30）はより緩やかで、特徴対応が少ない画像でも一致します。高い値（例: 80〜100）はより厳しく、より多くの特徴一致を要求します。デフォルトは 50 で、良いバランスを提供します。画像内容、想定される類似度、偽陽性/偽陰性の許容度に応じて調整してください。特徴が少ない画像には低めのしきい値を、テクスチャが豊富で多くの特徴を持つ画像には高めのしきい値を使用してください。                                                                                  | ✅  |
| `ratio_threshold`        | `float` | 曖昧な一致をフィルタリングするために使用されるLoweの比率テストのしきい値です。比率テストは、最良一致までの距離と2番目に良い一致までの距離を比較します。best\_match\_distance < ratio\_threshold \* second\_best\_match\_distance の場合にのみ一致を保持します。低い値（例: 0.6）は、より明確な一致を要求し、より厳しくなります（より多くの一致を除外し、高信頼度の一致だけを残します）。高い値（例: 0.8）はより緩やかで、いくつかの曖昧な一致も含めてより多くの一致を許可します。デフォルトは 0.7 で、一致品質と数のバランスが良好です。一般的な範囲は 0.6〜0.8 です。高信頼度の一致だけが必要な場合は低い値を、より多くの一致が欲しい場合や特徴が少ない画像を扱う場合は高い値を使ってください。 | ✅  |
| `matcher`                | `str`   | SIFT記述子の比較に使用するマッチャーアルゴリズムです。'FlannBasedMatcher'（デフォルト）は、効率的な近似最近傍探索のためにFLANNを使用します。大規模な記述子セットでは高速で、多くの用途に適しています。'BFMatcher' はL2ノルムを用いた総当たりマッチングを使用します。厳密な一致を返しますが、大規模な記述子セットでは遅くなります。正確な結果が必要な場合や、記述子セットが小さい場合に有用です。デフォルトは最適な性能を得るための 'FlannBasedMatcher' です。BFMatcher は、厳密な一致が必要な場合、または総当たり方式に向いた性能条件がある場合のみ選んでください。                                                                              | ✅  |
| `visualize`              | `bool`  | キーポイントと一致の可視化を生成するかどうかを示します。True で、入力として画像が与えられた場合、ブロックは次を生成します: (1) 各画像にキーポイントを描画した visualization\_1 と visualization\_2、(2) 2つの画像間の対応キーポイントを線で結んだ visualization\_matches。可視化は、画像ではなく記述子が入力された場合には生成されません。デフォルトは False です。マッチ結果のデバッグ、画像が一致または一致しない理由の理解、表示や分析のための視覚出力が必要な場合は True に設定してください。                                                                                                        | ✅  |

この **参照** 列は、で利用可能な動的値を使用してプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細情報

### 入出力バインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `SIFT比較` のバージョン `v2` 持つか確認してください。

<details>

<summary>入出力バインディング</summary>

* 入力
  * `input_1` (*Union\[*[*`画像`*](/workflows/ja/gaido/developer-guide/kinds/image.md)*,* [*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)*]*): 1つ目の比較入力です。画像または事前計算済みSIFT記述子（numpy配列）のいずれかを指定できます。画像が与えられた場合、SIFTキーポイントと記述子が自動計算されます。記述子が与えられた場合はそのまま使用されます。入力やワークフローステップ由来の画像、またはSIFT特徴検出ブロック由来の記述子をサポートします。画像は標準的な画像形式である必要があり、記述子は128次元のSIFT記述子のnumpy配列である必要があります。
  * `input_2` (*Union\[*[*`画像`*](/workflows/ja/gaido/developer-guide/kinds/image.md)*,* [*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)*]*): 2つ目の比較入力です。画像または事前計算済みSIFT記述子（numpy配列）のいずれかを指定できます。画像が与えられた場合、SIFTキーポイントと記述子が自動計算されます。記述子が与えられた場合はそのまま使用されます。入力やワークフローステップ由来の画像、またはSIFT特徴検出ブロック由来の記述子をサポートします。画像は標準的な画像形式である必要があり、記述子は128次元のSIFT記述子のnumpy配列である必要があります。この入力は画像類似性を判断するために input\_1 と照合されます。
  * `good_matches_threshold` ([*`integer`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 画像が一致していると見なすために必要な良好な一致の最小数です。正の整数でなければなりません。良好な一致数（比率テストによるフィルタリング後）がこのしきい値以上の場合、images\_match は True になります。低い値（例: 20〜30）はより緩やかで、特徴対応が少ない画像でも一致します。高い値（例: 80〜100）はより厳しく、より多くの特徴一致を要求します。デフォルトは 50 で、良いバランスを提供します。画像内容、想定される類似度、偽陽性/偽陰性の許容度に応じて調整してください。特徴が少ない画像には低めのしきい値を、テクスチャが豊富で多くの特徴を持つ画像には高めのしきい値を使用してください。
  * `ratio_threshold` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): 曖昧な一致をフィルタリングするために使用されるLoweの比率テストのしきい値です。比率テストは、最良一致までの距離と2番目に良い一致までの距離を比較します。best\_match\_distance < ratio\_threshold \* second\_best\_match\_distance の場合にのみ一致を保持します。低い値（例: 0.6）は、より明確な一致を要求し、より厳しくなります（より多くの一致を除外し、高信頼度の一致だけを残します）。高い値（例: 0.8）はより緩やかで、いくつかの曖昧な一致も含めてより多くの一致を許可します。デフォルトは 0.7 で、一致品質と数のバランスが良好です。一般的な範囲は 0.6〜0.8 です。高信頼度の一致だけが必要な場合は低い値を、より多くの一致が欲しい場合や特徴が少ない画像を扱う場合は高い値を使ってください。
  * `matcher` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)): SIFT記述子の比較に使用するマッチャーアルゴリズムです。'FlannBasedMatcher'（デフォルト）は、効率的な近似最近傍探索のためにFLANNを使用します。大規模な記述子セットでは高速で、多くの用途に適しています。'BFMatcher' はL2ノルムを用いた総当たりマッチングを使用します。厳密な一致を返しますが、大規模な記述子セットでは遅くなります。正確な結果が必要な場合や、記述子セットが小さい場合に有用です。デフォルトは最適な性能を得るための 'FlannBasedMatcher' です。BFMatcher は、厳密な一致が必要な場合、または総当たり方式に向いた性能条件がある場合のみ選んでください。
  * `visualize` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): キーポイントと一致の可視化を生成するかどうかを示します。True で、入力として画像が与えられた場合、ブロックは次を生成します: (1) 各画像にキーポイントを描画した visualization\_1 と visualization\_2、(2) 2つの画像間の対応キーポイントを線で結んだ visualization\_matches。可視化は、画像ではなく記述子が入力された場合には生成されません。デフォルトは False です。マッチ結果のデバッグ、画像が一致または一致しない理由の理解、表示や分析のための視覚出力が必要な場合は True に設定してください。
* 出力
  * `images_match` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): ブールフラグ。
  * `good_matches_count` ([`integer`](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 整数値。
  * `keypoints_1` ([`image_keypoints`](/workflows/ja/gaido/developer-guide/kinds/image-keypoints.md)): 古典的なコンピュータビジョン手法によって検出された画像キーポイント。
  * `descriptors_1` ([`numpy_array`](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)): NumPy配列。
  * `keypoints_2` ([`image_keypoints`](/workflows/ja/gaido/developer-guide/kinds/image-keypoints.md)): 古典的なコンピュータビジョン手法によって検出された画像キーポイント。
  * `descriptors_2` ([`numpy_array`](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)): NumPy配列。
  * `visualization_1` ([`画像`](/workflows/ja/gaido/developer-guide/kinds/image.md)）：ワークフロー内の画像。
  * `visualization_2` ([`画像`](/workflows/ja/gaido/developer-guide/kinds/image.md)）：ワークフロー内の画像。
  * `visualization_matches` ([`画像`](/workflows/ja/gaido/developer-guide/kinds/image.md)）：ワークフロー内の画像。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/sift_comparison@v2",
	    "input_1": "$inputs.image1",
	    "input_2": "$inputs.image2",
	    "good_matches_threshold": 50,
	    "ratio_threshold": 0.7,
	    "matcher": "FlannBasedMatcher",
	    "visualize": true
	}
```

</details>

## v1

FLANNベースのマッチングとLoweの比率テストを使用して2つの画像のSIFT（Scale Invariant Feature Transform）記述子を比較し、特徴一致数を数えることで画像類似性を判定し、画像マッチング、類似性検出、重複検出、特徴ベースの画像比較ワークフロー向けに設定可能なしきい値に基づく真偽値の一致結果を返します。

## このブロックの仕組み

このブロックは、対応する特徴を見つけて良好な一致数を数えることで、2つの画像のSIFT記述子が一致するかどうかを比較します。このブロックは:

1. 2つの画像からのSIFT記述子（descriptor\_1 と descriptor\_2）を受け取ります。これらの記述子は、すでに両方の画像のキーポイントを抽出し記述子を計算したSIFT特徴検出ステップから得られる必要があります
2. 両方の記述子配列に少なくとも2個の記述子があることを検証します（比率テストのフィルタリングに必要です。少なくとも2つの最近傍が必要です）
3. FLANN（Fast Library for Approximate Nearest Neighbors）ベースのマッチャーを作成します:
   * 高次元の記述子空間で効率的な近似最近傍探索を行うためにFLANNアルゴリズムを使用します
   * SIFT記述子向けに最適化されたアルゴリズムパラメータ（algorithm=1, trees=5, checks=50）でFLANNを設定します
   * FLANNは、大規模な記述子セットに対して総当たりマッチングより高速でありながら、良好な精度を維持します
4. k最近傍マッチング（k=2）を実行し、画像1の各記述子に対して2つの最も近い記述子の一致を見つけます:
   * descriptor\_1 の各記述子について、descriptor\_2 内で最も類似した2つの記述子を見つけます
   * 類似度の測定には記述子空間でのユークリッド距離を使用します
   * 記述子の類似度を示す距離値付きの一致を返します
5. Loweの比率テストを使って良好な一致をフィルタリングします:
   * 各一致について、最良一致の距離（m.distance）と2番目に良い一致の距離（n.distance）を比較します
   * m.distance < ratio\_threshold \* n.distance を満たす一致のみ保持します
   * この比率テストは、複数の記述子が同程度に近い曖昧な一致を除外します
   * ratio\_threshold の値が低いほど（例: 0.6）、より明確な一致が必要になります（より厳しいフィルタリング）
   * ratio\_threshold の値が高いほど（例: 0.8）、より多くの一致を許可します（より緩いフィルタリング）
6. 比率テスト後の良好な一致数を数えます
7. good\_matches\_count と good\_matches\_threshold を比較して、画像が一致するかどうかを判断します:
   * good\_matches\_count >= good\_matches\_threshold の場合、images\_match = True
   * good\_matches\_count < good\_matches\_threshold の場合、images\_match = False
8. 良好な一致数と真偽値の一致結果を返します

このブロックは、スケールと回転に不変なSIFT記述子を使用するため、異なるスケール、回転、視点角度の画像のマッチングに有効です。FLANNマッチングは、高速な比較のために大規模な記述子セットに対して効率的な近似最近傍探索を提供します。Loweの比率テストは、最良一致が代替候補より十分に優れていない曖昧な一致を除外することで、マッチ品質を向上させます。しきい値ベースのマッチングにより感度を調整できます。低いしきい値では必要な一致数が少なくなり（より緩やか）、高いしきい値ではより多くの一致が必要になります（より厳しい）。

## 一般的な使用例

* **画像類似性検出**: 2つの画像が類似しているか、互いに一致するかを判定します（例: コレクション内の類似画像を検出、データベース内で一致画像を検索、重複画像を特定）。これにより画像類似性ワークフローを実現します
* **重複画像検出**: 画像コレクション内の重複またはほぼ重複の画像を特定します（例: 写真ライブラリ内の重複画像を検索、データセット内の繰り返し画像を検出、異なるスケールや向きの同一画像を特定）。これにより重複検出ワークフローを実現します
* **特徴ベースの画像マッチング**: 視覚的特徴とキーポイントに基づいて画像をマッチングします（例: 類似コンテンツの画像をマッチ、異なる視点間で対応する画像を検索、画像シーケンス内で一致画像を特定）。これにより特徴ベースのマッチングワークフローを実現します
* **画像検証**: 画像が期待されるパターンや参照と一致するかを検証します（例: 画像の真正性を検証、参照画像と一致するか確認、テンプレートに対して画像内容を検証）。これにより画像検証ワークフローを実現します
* **画像の比較と分析**: 画像を比較して類似点と相違点を分析します（例: 品質管理のために画像を比較、画像の変動を分析、画像類似度スコアを測定）。これにより画像比較分析ワークフローを実現します
* **コンテンツベース画像検索**: 特徴マッチングをコンテンツベースの画像検索と取得に使用します（例: データベース内の類似画像を検索、視覚的類似度で画像を取得、内容マッチングで画像を検索）。これによりコンテンツベース取得ワークフローを実現します

## 他のブロックへの接続

このブロックは、2つの画像のSIFT記述子を受け取り、マッチ結果を出力します:

* **SIFT特徴検出ブロックの後** 異なる画像のSIFT記述子を比較するために（例: 複数画像の記述子比較、SIFT特徴を使った画像マッチ、SIFTによる画像類似性分析）、SIFTベースの画像比較ワークフローを実現します
* **フィルタリングまたはロジックブロックの前** マッチ結果を意思決定に使う（例: 画像一致に基づいてフィルタリング、類似性に基づいて判断、マッチ結果に基づいてロジックを適用）ために、マッチベースの条件分岐ワークフローを実現します
* **データ保存ブロックの前** マッチ結果を保存するために（例: 画像マッチ結果を保存、類似度スコアを保存、比較データを記録）、マッチ結果保存ワークフローを実現します
* **画像比較パイプラインにおいて** 複数の画像を比較する必要がある場合に（例: 連続画像の比較、ワークフロー内での画像類似性分析、パイプラインでの画像比較処理）、画像比較パイプラインワークフローを実現します
* **可視化ブロックの前で** マッチ結果を可視化するために（例: マッチ結果を表示、類似画像を可視化、比較結果を示す）、マッチ可視化ワークフローを実現します
* **重複検出ワークフローにおいて** 画像の重複チェックが必要な場合に（例: 画像コレクション内の重複検出、繰り返し画像の検索、同一画像の特定）、重複検出ワークフローを実現します

### 種別識別子

ステップで次の識別子を使用します `"type"` フィールド: `roboflow_core/sift_comparison@v1` ワークフローにステップとしてブロックを追加するには。

### プロパティ

| **名前**                   | **型**   | **説明**                                                                                                                                                                                                                                                                                                                                                                                              | 参照 |
| ------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                   | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                             | ❌  |
| `good_matches_threshold` | `int`   | 画像が一致していると見なすために必要な良好な一致の最小数です。正の整数でなければなりません。良好な一致数（比率テストによるフィルタリング後）がこのしきい値以上の場合、images\_match は True になります。低い値（例: 20〜30）はより緩やかで、特徴対応が少ない画像でも一致します。高い値（例: 80〜100）はより厳しく、より多くの特徴一致を要求します。デフォルトは 50 で、良いバランスを提供します。画像内容、想定される類似度、偽陽性/偽陰性の許容度に応じて調整してください。特徴が少ない画像には低めのしきい値を、テクスチャが豊富で多くの特徴を持つ画像には高めのしきい値を使用してください。                                                                                  | ✅  |
| `ratio_threshold`        | `float` | 曖昧な一致をフィルタリングするために使用されるLoweの比率テストのしきい値です。比率テストは、最良一致までの距離と2番目に良い一致までの距離を比較します。best\_match\_distance < ratio\_threshold \* second\_best\_match\_distance の場合にのみ一致を保持します。低い値（例: 0.6）は、より明確な一致を要求し、より厳しくなります（より多くの一致を除外し、高信頼度の一致だけを残します）。高い値（例: 0.8）はより緩やかで、いくつかの曖昧な一致も含めてより多くの一致を許可します。デフォルトは 0.7 で、一致品質と数のバランスが良好です。一般的な範囲は 0.6〜0.8 です。高信頼度の一致だけが必要な場合は低い値を、より多くの一致が欲しい場合や特徴が少ない画像を扱う場合は高い値を使ってください。 | ✅  |

この **参照** 列は、で利用可能な動的値を使用してプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細情報

### 入出力バインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `SIFT比較` のバージョン `v1` 持つか確認してください。

<details>

<summary>入出力バインディング</summary>

* 入力
  * `descriptor_1` ([*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)): 第1画像のSIFT記述子です。SIFT特徴検出ブロックから得られるSIFT記述子のnumpy配列である必要があります。各記述子は、キーポイント周辺の視覚的特徴を表す128次元ベクトルです。記述子は、両方の画像で同じSIFTパラメータを使って計算される必要があります。比率テストを機能させるには少なくとも2個の記述子が必要です。第1画像を処理したSIFT特徴検出ステップの記述子を使用してください。
  * `descriptor_2` ([*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)): 第2画像のSIFT記述子です。SIFT特徴検出ブロックから得られるSIFT記述子のnumpy配列である必要があります。各記述子は、キーポイント周辺の視覚的特徴を表す128次元ベクトルです。記述子は、両方の画像で同じSIFTパラメータを使って計算される必要があります。比率テストを機能させるには少なくとも2個の記述子が必要です。第2画像を処理したSIFT特徴検出ステップの記述子を使用してください。これらの記述子は、画像類似性を判定するために descriptor\_1 と照合されます。
  * `good_matches_threshold` ([*`integer`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 画像が一致していると見なすために必要な良好な一致の最小数です。正の整数でなければなりません。良好な一致数（比率テストによるフィルタリング後）がこのしきい値以上の場合、images\_match は True になります。低い値（例: 20〜30）はより緩やかで、特徴対応が少ない画像でも一致します。高い値（例: 80〜100）はより厳しく、より多くの特徴一致を要求します。デフォルトは 50 で、良いバランスを提供します。画像内容、想定される類似度、偽陽性/偽陰性の許容度に応じて調整してください。特徴が少ない画像には低めのしきい値を、テクスチャが豊富で多くの特徴を持つ画像には高めのしきい値を使用してください。
  * `ratio_threshold` ([*`integer`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 曖昧な一致をフィルタリングするために使用されるLoweの比率テストのしきい値です。比率テストは、最良一致までの距離と2番目に良い一致までの距離を比較します。best\_match\_distance < ratio\_threshold \* second\_best\_match\_distance の場合にのみ一致を保持します。低い値（例: 0.6）は、より明確な一致を要求し、より厳しくなります（より多くの一致を除外し、高信頼度の一致だけを残します）。高い値（例: 0.8）はより緩やかで、いくつかの曖昧な一致も含めてより多くの一致を許可します。デフォルトは 0.7 で、一致品質と数のバランスが良好です。一般的な範囲は 0.6〜0.8 です。高信頼度の一致だけが必要な場合は低い値を、より多くの一致が欲しい場合や特徴が少ない画像を扱う場合は高い値を使ってください。
* 出力
  * `good_matches_count` ([`integer`](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 整数値。
  * `images_match` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): ブールフラグ。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/sift_comparison@v1",
	    "descriptor_1": "$steps.sift.descriptors",
	    "descriptor_2": "$steps.sift.descriptors",
	    "good_matches_threshold": 50,
	    "ratio_threshold": 0.7
	}
```

</details>
