> 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/advanced-blocks/dynamic-zone.md).

# 動的ゾーン

マスクを輪郭に変換し、凸包を計算し、Douglas-Peucker 近似を使用して多角形の頂点数を指定数まで削減し、必要に応じて最小二乗のエッジフィッティングを適用し、さらに多角形をスケーリングすることで、インスタンスセグメンテーション検出から簡略化された多角形ゾーンを生成し、検出されたオブジェクト形状に基づく幾何学的ゾーンを作成します。これは、ゾーンベース分析、空間フィルタリング、関心領域定義のワークフロー向けです。

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

このブロックは、複雑なマスク形状を指定数の頂点を持つ幾何学的に凸な多角形へ変換することで、インスタンスセグメンテーション検出から簡略化された多角形ゾーンを作成します。このブロックは次の処理を行います。

1. 検出されたオブジェクトのマスク（多角形表現）を含むインスタンスセグメンテーション予測を受け取ります
2. マスクを輪郭に変換します:
   * マスクから多角形への変換を使用して、各検出マスクから輪郭を抽出します
   * 各検出から最大の輪郭を選択します（1つのマスクに複数の輪郭がある場合に対応）
3. 凸包を計算します:
   * OpenCV の凸包アルゴリズムを使用して、最大輪郭の凸包を計算します
   * 結果の多角形が幾何学的に凸になるようにします（内向きの角がありません）
   * 輪郭内のすべての点を包含する、単純化された外周境界を作成します
4. 多角形を必要な頂点数に簡略化します:
   * Douglas-Peucker の多角形近似アルゴリズムを使用して頂点数を削減します
   * 目標の頂点数を達成するために、epsilon パラメータを反復的に調整します
   * 二分探索を使用して、要求された頂点数を生成する最適な epsilon 値を見つけます
   * 収束を処理します: 正確な頂点数を達成できない場合は、頂点を追加または切り詰めます
5. 必要に応じて最小二乗のエッジフィッティングを適用します:
   * If `apply_least_squares` が有効な場合、元の輪郭点に線を当てはめることで多角形のエッジを細かく調整します
   * 多角形の頂点間にある輪郭点を選択します
   * 必要に応じて中点の割合にフィルタリングします（例: 各辺の中央部分のみを使用して端の影響を避けます）
   * 各辺について、選択した輪郭点に対して最小二乗法で直線を当てはめます
   * 当てはめた直線の交点を計算して、洗練された頂点位置を作成します
   * 元の輪郭形状によりよく一致する多角形を生成します
6. 多角形をスケーリングします（ `scale_ratio` != 1):
   * 多角形の重心（質量中心）を計算します
   * 指定されたスケール比で、重心を基準に多角形をスケーリングします
   * 中心から外側へ多角形を拡大または縮小します（scale > 1 で拡大、scale < 1 で縮小）
   * バッファゾーンの作成やゾーン境界の調整に便利です
7. 簡略化された多角形で検出結果を更新します:
   * 多角形キーの下にある検出メタデータに、簡略化された多角形を保存します
   * 更新された検出表現のために、簡略化された多角形からマスクを再生成します
8. 簡略化されたゾーンと更新された検出を返します:
   * `zones`: 座標リストとしての簡略化された多角形のリスト（検出ごとに 1 つ）
   * `predictions`: 簡略化された多角形とマスクを含む更新済みの検出
   * `simplification_converged`: すべての多角形が正確な頂点数に収束したかどうかを示すブール値

このブロックは、セグメンテーションモデルで検出された複雑なオブジェクト形状から幾何学的ゾーンを作成できます。特に、検出されたオブジェクト形状に基づいてゾーンを作成する必要がある場合（例: バスケットボールコート、道路区間、駐車場、フィールド）で、ゾーンをオブジェクトの輪郭に合わせつつ、性能と使いやすさのために簡略化したいときに有用です。

## 一般的な使用例

* **検出結果からのゾーン作成**: 検出されたオブジェクト形状に基づいて多角形ゾーンを作成します（例: コート検出からバスケットボールコートのゾーンを作成、道路検出から道路区間ゾーンを生成、スポーツフィールド検出からフィールドゾーンを作成）。これにより、検出ベースのゾーンワークフローが可能になります
* **幾何学的ゾーンの簡略化**: 複雑なオブジェクト形状を、制御された頂点数を持つ幾何学的に凸な多角形へ簡略化します（例: 不規則な形状を長方形/四角形に簡略化、複雑な多角形を扱いやすい頂点数に削減、マスクから幾何学的ゾーンを作成）。これにより、ゾーン簡略化ワークフローが可能になります
* **動的ゾーン定義**: 画像内で検出されたオブジェクトに基づいてゾーンを動的に定義します（例: 検出領域からゾーンを定義、オブジェクト形状からゾーンを作成、セグメンテーション結果からゾーンを生成）。これにより、動的ゾーンワークフローが可能になります
* **ゾーンベース分析のセットアップ**: ゾーンベース分析とフィルタリングのためのゾーンを準備します（例: ゾーン滞在時間分析用のゾーンを準備、ゾーンベースフィルタリング用のゾーンを作成、空間分析用のゾーンを設定）。これにより、ゾーンベース分析ワークフローが可能になります
* **関心領域の定義**: 検出されたオブジェクト境界に基づいて関心領域を定義します（例: オブジェクト検出から ROI を定義、セグメンテーションから ROI ゾーンを作成、マスクから関心領域を生成）。これにより、ROI 定義ワークフローが可能になります
* **空間フィルタリングと分析**: 空間フィルタリングおよび分析操作のためのゾーンを作成します（例: 空間フィルタリング用のゾーンを作成、面積計算用のゾーンを準備、空間クエリ用のゾーンを生成）。これにより、空間分析ワークフローが可能になります

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

このブロックはインスタンスセグメンテーション予測を受け取り、簡略化された多角形ゾーンを生成します:

* **インスタンスセグメンテーションモデルの後に** 検出されたオブジェクト形状からゾーンを作成します（例: セグメンテーションモデルからゾーンへ、マスクから簡略化された多角形へ、検出結果から幾何学的ゾーンへ）。これにより、セグメンテーションからゾーンへのワークフローが可能になります
* **検出フィルタリングブロックの後に** フィルタ済みの検出からゾーンを作成します（例: 検出をフィルタしてからゾーンを作成、特定クラスからゾーンを作成、フィルタ済み結果からゾーンを生成）。これにより、フィルタからゾーンへのワークフローが可能になります
* **ゾーンベース分析ブロックの前に** 分析用の簡略化されたゾーンを提供します（例: ゾーン滞在時間用のゾーン、ゾーン分析用のゾーン、ゾーンフィルタリング用の多角形）。これにより、ゾーンから分析へのワークフローが可能になります
* **可視化ブロックの前** 簡略化されたゾーンを表示します（例: ゾーン多角形を可視化、幾何学的ゾーンを表示、簡略化された領域を表示）。これにより、ゾーン可視化ワークフローが可能になります
* **空間フィルタリングブロックの前に** 空間操作のためのゾーンを提供します（例: 重なりフィルタリング用のゾーン、多角形の空間クエリ、面積計算用の領域）。これにより、ゾーンからフィルタへのワークフローが可能になります
* **ワークフロー出力において** 簡略化されたゾーンを最終出力として提供します（例: ゾーン生成ワークフロー、多角形抽出ワークフロー、幾何学的ゾーン出力）。これにより、ゾーン出力ワークフローが可能になります

## 要件

このブロックは、マスク（多角形データ）を含むインスタンスセグメンテーション予測を必要とします。入力検出は、処理前に対象とする希望クラスのみを含むようにフィルタリングする必要があります。The `required_number_of_vertices` パラメータは、簡略化された多角形の目標頂点数を指定します（例: 長方形/四角形では 4、三角形では 3）。このブロックは、二分探索を伴う反復的な Douglas-Peucker 近似を使用して、多角形の頂点数をこの数まで削減します。一般的な値: 長方形/四角形では 4、三角形では 3、より複雑な形状では 6 以上です。アルゴリズムはこの正確な数に収束することを試みます。収束に失敗した場合（反復回数の上限内）、頂点は追加または切り詰められて、その数に一致させられます。. `scale_ratio` パラメータ（デフォルト 1）は、重心を基準に多角形をスケーリングします。 `apply_least_squares` パラメータ（デフォルト False）は、エッジを元の輪郭によりよく一致させるために、エッジフィッティングを有効にします。 `midpoint_fraction` パラメータ（0〜1、デフォルト 1）は、各辺の最小二乗フィッティングに使用する輪郭点の範囲を制御します（1 = すべての点、より低い値では各辺の中央部分のみを使用）。このブロックは、簡略化された多角形を座標ペアのリスト、簡略化された多角形を含む更新済みの検出、および収束フラグとして出力します。

### 型識別子

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

### プロパティ

| **名前**                        | **型**   | **説明**                                                                                                                                                                                                             | 参照 |
| ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -- |
| `name`                        | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                            | ❌  |
| `required_number_of_vertices` | `整数`    | 簡略化された多角形の目標頂点数。このブロックは、Douglas-Peucker の多角形近似と反復的な二分探索を使用して、多角形の頂点数をこの数まで削減します。一般的な値: 長方形/四角形では 4、三角形では 3、より複雑な形状では 6 以上。このアルゴリズムはこの正確な数への収束を試みます。収束に失敗した場合（反復回数の上限内）、頂点は追加または切り詰められて、その数に一致させられます。.              | ✅  |
| `scale_ratio`                 | `float` | 結果の多角形を重心を基準に拡大または縮小するスケール係数。1 より大きい値は多角形を中心から外側へ拡大し（バッファゾーンを作成）、1 未満の値は内側へ縮小します。値が 1（デフォルト）の場合はスケーリングなしを意味します。スケーリングは多角形の簡略化後に適用されます。バッファゾーンの作成やゾーン境界の調整に便利です。.                                                   | ✅  |
| `apply_least_squares`         | `bool`  | True の場合、元の輪郭点に合わせて多角形のエッジを整え、最小二乗法による直線フィッティングを適用します。簡略化された多角形の各辺について、頂点間の輪郭点に直線を当てはめ、その後、当てはめた直線の交点を計算して洗練された頂点位置を作成します。特に、簡略化された多角形の頂点が輪郭エッジと十分に一致しない場合に有用で、元の輪郭形状によりよく一致する多角形を生成します。.                          | ✅  |
| `midpoint_fraction`           | `float` | 各辺の最小二乗フィッティングに使用する輪郭点の割合（0〜1）。値 1（デフォルト）は頂点間のすべての輪郭点を使用します。より低い値では各辺の中央部分のみを使用します（例: 0.9 は点の 90% を中央に寄せて使用）。凸多角形の頂点が辺と十分に整列していない場合に有用で、頂点近くの端の影響よりも辺の中央部分に当てはめを集中させます。apply\_least\_squares が True の場合にのみ適用されます。. | ✅  |

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

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

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

<details>

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

* 入力
  * `predictions` ([*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)): 検出されたオブジェクトのマスク（多角形データ）を含むインスタンスセグメンテーション予測。検出結果は、対象とする希望クラスのみを含むようにフィルタリングする必要があります。各検出のマスクは輪郭に変換され、最も大きい輪郭が簡略化された多角形ゾーンの生成に使用されます。マスクデータを含むインスタンスセグメンテーション形式をサポートします。
  * `required_number_of_vertices` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 簡略化された多角形の目標頂点数。このブロックは、Douglas-Peucker の多角形近似と反復的な二分探索を使用して、多角形の頂点数をこの数まで削減します。一般的な値: 長方形/四角形では 4、三角形では 3、より複雑な形状では 6 以上。このアルゴリズムはこの正確な数への収束を試みます。収束に失敗した場合（反復回数の上限内）、頂点は追加または切り詰められて、その数に一致させられます。.
  * `scale_ratio` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)): 結果の多角形を重心を基準に拡大または縮小するスケール係数。1 より大きい値は多角形を中心から外側へ拡大し（バッファゾーンを作成）、1 未満の値は内側へ縮小します。値が 1（デフォルト）の場合はスケーリングなしを意味します。スケーリングは多角形の簡略化後に適用されます。バッファゾーンの作成やゾーン境界の調整に便利です。.
  * `apply_least_squares` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)): True の場合、元の輪郭点に合わせて多角形のエッジを整え、最小二乗法による直線フィッティングを適用します。簡略化された多角形の各辺について、頂点間の輪郭点に直線を当てはめ、その後、当てはめた直線の交点を計算して洗練された頂点位置を作成します。特に、簡略化された多角形の頂点が輪郭エッジと十分に一致しない場合に有用で、元の輪郭形状によりよく一致する多角形を生成します。.
  * `midpoint_fraction` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): 各辺の最小二乗フィッティングに使用する輪郭点の割合（0〜1）。値 1（デフォルト）は頂点間のすべての輪郭点を使用します。より低い値では各辺の中央部分のみを使用します（例: 0.9 は点の 90% を中央に寄せて使用）。凸多角形の頂点が辺と十分に整列していない場合に有用で、頂点近くの端の影響よりも辺の中央部分に当てはめを集中させます。apply\_least\_squares が True の場合にのみ適用されます。.
* 出力
  * `zones` ([`list_of_values`](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md))：任意の型の値のリスト。
  * `predictions` ([`instance_segmentation_prediction`](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)): 検出されたバウンディングボックスとセグメンテーションマスクを sv.Detections(...) オブジェクトの形式で持つ予測。
  * `simplification_converged` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/dynamic_zone@v1",
	    "predictions": "$steps.instance_segmentation_model.predictions",
	    "required_number_of_vertices": 4,
	    "scale_ratio": 1.0,
	    "apply_least_squares": false,
	    "midpoint_fraction": 1.0
	}
```

</details>
