> 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

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

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

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

1. 画像または事前計算済みの SIFT 記述子のどちらでもよい2つの入力（input\_1 と input\_2）を受け取ります
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枚の画像が類似しているか、互いに一致するかを判定します（例：コレクション内の類似画像を検出する、データベース内で一致する画像を見つける、重複画像を特定する）ことで、画像類似性ワークフローを実現します
* **重複画像検出**：画像コレクション内の重複またはほぼ重複した画像を特定します（例：写真ライブラリ内の重複画像を見つける、データセット内の繰り返し画像を検出する、異なるスケールや向きの同一画像を特定する）ことで、重複検出ワークフローを実現します
* **特徴ベースの画像マッチング**：視覚的特徴とキーポイントに基づいて画像を照合します（例：似た内容の画像を照合する、異なる視点間で対応する画像を見つける、画像シーケンス内で一致する画像を特定する）ことで、特徴ベースの照合ワークフローを実現します
* **画像検証**：画像が期待されるパターンや参照画像と一致するかを検証します（例：画像の真正性を検証する、画像が参照画像と一致するか確認する、テンプレートに対して画像内容を検証する）ことで、画像検証ワークフローを実現します
* **画像比較と解析**：画像を比較して類似点と相違点を分析します（例：品質管理のために画像を比較する、画像の変化を分析する、画像類似度スコアを測定する）ことで、画像比較解析ワークフローを実現します
* **コンテンツベース画像検索**：特徴マッチングを使ってコンテンツベースの画像検索と取得を行います（例：データベース内の類似画像を見つける、視覚的類似性で画像を取得する、内容マッチングで画像を検索する）ことで、コンテンツベース取得ワークフローを実現します

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

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

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

## バージョン差分

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

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

### 型識別子

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

### プロパティ

| **名前**                   | **型**   | **説明**                                                                                                                                                                                                                                                                                                                                                                                       | 参照 |
| ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                   | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                      | ❌  |
| `good_matches_threshold` | `整数`    | 画像を一致とみなすために必要な良いマッチの最小数。正の整数でなければなりません。良いマッチ数（比率テストによるフィルタリング後）がこの閾値以上であれば、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\[*[*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)*,* [*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)*]*）：比較のための最初の入力。画像または事前計算済みの SIFT 記述子（numpy 配列）のどちらでも構いません。画像が与えられた場合、SIFT のキーポイントと記述子が自動的に計算されます。記述子が与えられた場合、それらがそのまま使用されます。入力やワークフローステップからの画像、または SIFT 特徴検出ブロックからの記述子をサポートします。画像は標準的な画像形式である必要があり、記述子は128次元の SIFT 記述子の numpy 配列である必要があります。
  * `input_2` (*Union\[*[*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)*,* [*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)*]*）：比較のための2番目の入力。画像または事前計算済みの SIFT 記述子（numpy 配列）のどちらでも構いません。画像が与えられた場合、SIFT のキーポイントと記述子が自動的に計算されます。記述子が与えられた場合、それらがそのまま使用されます。入力やワークフローステップからの画像、または SIFT 特徴検出ブロックからの記述子をサポートします。画像は標準的な画像形式である必要があり、記述子は128次元の SIFT 記述子の numpy 配列である必要があります。この入力は、画像の類似性を判定するために input\_1 と照合されます。
  * `good_matches_threshold` ([*`整数`*](/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` ([`整数`](/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` ([`image`](/workflows/ja/gaido/developer-guide/kinds/image.md)): ワークフロー内の画像。
  * `visualization_2` ([`image`](/workflows/ja/gaido/developer-guide/kinds/image.md)): ワークフロー内の画像。
  * `visualization_matches` ([`image`](/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` | `整数`    | 画像を一致とみなすために必要な良いマッチの最小数。正の整数でなければなりません。良いマッチ数（比率テストによるフィルタリング後）がこの閾値以上であれば、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)）：比較する最初の画像の SIFT 記述子。SIFT 記述子の numpy 配列である必要があります（通常は SIFT 特徴検出ブロックから取得）。各記述子は、キーポイント周辺の視覚的特徴を表す128次元ベクトルです。両方の画像について、同じ SIFT パラメータで記述子を計算する必要があります。比率テストを機能させるには少なくとも2個の記述子が必要です。最初の画像を処理した SIFT 特徴検出ステップからの記述子を使用してください。
  * `descriptor_2` ([*`numpy_array`*](/workflows/ja/gaido/developer-guide/kinds/numpy-array.md)）：比較する2番目の画像の SIFT 記述子。SIFT 記述子の numpy 配列である必要があります（通常は SIFT 特徴検出ブロックから取得）。各記述子は、キーポイント周辺の視覚的特徴を表す128次元ベクトルです。両方の画像について、同じ SIFT パラメータで記述子を計算する必要があります。比率テストを機能させるには少なくとも2個の記述子が必要です。2番目の画像を処理した SIFT 特徴検出ステップからの記述子を使用してください。これらの記述子は、画像の類似性を判定するために descriptor\_1 と照合されます。
  * `good_matches_threshold` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)）：画像を一致とみなすために必要な良いマッチの最小数。正の整数でなければなりません。良いマッチ数（比率テストによるフィルタリング後）がこの閾値以上であれば、images\_match は True になります。低い値（例：20〜30）はより寛容で、特徴対応が少ない画像でも一致します。高い値（例：80〜100）はより厳格で、より多くの特徴マッチを必要とします。デフォルトは 50 で、バランスが良いです。画像内容、期待する類似度、誤検出/見逃しの許容度に応じて調整してください。特徴が少ない画像には低い閾値を、テクスチャが豊富で特徴の多い画像には高い閾値を使用してください。
  * `ratio_threshold` ([*`整数`*](/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` ([`整数`](/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>
