> 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/mask-area-measurement.md).

# マスク面積測定

検出されたオブジェクトの面積を測定します。インスタンスセグメンテーションのマスクでは、面積はゼロでないマスクピクセルを数えることで算出されます（穴も正しく処理します）。バウンディングボックスのみの検出では、面積は幅×高さです。必要に応じて、ピクセル面積を実世界の単位に変換します。これは次を使用して `pixels_per_unit` キャリブレーション値。

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

このブロックは各検出オブジェクトの面積を計算し、検出ごとに2つの値を保存します:

* **`area_px`** - 正方ピクセル単位の面積（常に計算されます）
* **`area_converted`** - 実世界単位での面積: `area_px / (pixels_per_unit ** 2)` （これは `area_px` のときに `pixels_per_unit` 1.0に等しい）

両方の値は各検出に付加され、シリアル化されたJSON出力に含まれます。このブロックは、これらのフィールドを追加した入力の検出結果を返すため、下流のブロック（例：ラベル可視化）で面積値を表示できます。

### 面積の計算

このブロックは、受け取る予測の種類に応じて2つのモードで動作します:

1. **マスクのピクセル面積（インスタンスセグメンテーション）**：入力の検出結果にセグメンテーションマスクが含まれる場合、このブロックは各マスク内のゼロでないピクセルを次を使用して数えます `cv2.countNonZero`。これにより、穴のあるマスクも正しく処理されます。穴のピクセルは0であり、カウントから除外されます。
2. **バウンディングボックスの面積（オブジェクト検出）**：セグメンテーションマスクがない場合、このブロックはバウンディングボックスの幅×高さで面積を計算する方法にフォールバックします（`w * h`).

### 単位変換

次を設定して `pixels_per_unit` ピクセル面積を実世界の単位（例：cm²、in²、mm²）に変換します。面積は2次元なので、変換では比率を二乗します:

```
area_converted = area_px / (pixels_per_unit ** 2)
```

たとえば、キャリブレーションが130ピクセル/cmの場合、次の検出では `area_px = 16900` となります `area_converted = 16900 / 16900 = 1.0 cm²`.

**pixels\_per\_unitの求め方:** 既知のサイズの物体をカメラの視野内に置きます（例：定規やキャリブレーションターゲット）。画像内でその長さをピクセル単位で測定し、実世界での長さで割ります。たとえば、10 cmの基準物体が1300ピクセルに相当する場合、 `pixels_per_cm = 1300 / 10 = 130`。パース補正を使用している場合、キャリブレーション用オブジェクトは、パース補正を算出したのと同じ平面上に配置する必要があります。

## 一般的な使用例

* **サイズベースのフィルタリング**：フィルタリングブロックと連携させて、小さなノイズ検出を除外し、最小面積しきい値を超える検出のみを保持します。
* **品質管理**：測定した面積を期待範囲と比較して、製造部品がサイズ仕様を満たしていることを確認します。
* **農業解析**：航空画像や接写画像から、葉面積、作物被覆率、樹冠の広がりを測定します。
* **医用画像**：傷、病変、または解剖学的構造の面積を定量化します。次を使用します `pixels_per_unit` を使うと、臨床記録用に実世界での計測値を取得できます。

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

* **上流 -- 検出およびセグメンテーションモデル**：物体検出モデルまたはインスタンスセグメンテーションモデルの出力を次に接続します `predictions` 入力。マスクを生成するインスタンスセグメンテーションモデルは、バウンディングボックスのみの検出よりも正確な面積測定を得られます。
* **上流 -- カメラキャリブレーションブロック**:  `roboflow_core/camera_calibration@v1` 検出前にレンズ歪みを補正するための上流ブロック。
* **上流 -- パース補正ブロック**:  `roboflow_core/perspective_correction@v1` 斜めの画像を真上からの視点に変換し、面積測定が実際の物体の占有面積を反映するようにする上流ブロック。
* **下流 -- 可視化**：出力を渡します `predictions` をラベルまたはポリゴンの可視化ブロックに。 `area_px` と `area_converted` これらのフィールドはラベルとして表示できます。
* **下流 -- フィルタリングブロック**：拡張された検出結果をフィルタリングブロックで使用し、面積がしきい値を満たす検出のみを保持します。

## 要件

このブロックには、物体検出モデルまたはインスタンスセグメンテーションモデルからの検出予測が必要です。OpenCVとNumPy（inferenceに含まれています）以外の追加の環境変数、APIキー、外部依存関係は不要です。最も正確な面積測定を行うには、オブジェクトごとのマスクを生成するインスタンスセグメンテーションモデルを使用してください。

### 型識別子

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

### プロパティ

| **名前**            | **型**   | **説明**                                                                                                                                            | 参照 |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`            | `str`   | このステップの一意の識別子を入力してください。                                                                                                                           | ❌  |
| `pixels_per_unit` | `float` | 実世界の長さの単位あたりのピクセル数（例：cmあたりのピクセル数）。変換後の面積は area\_px / (pixels\_per\_unit \*\* 2) として計算されます。デフォルトの1.0は変換なしを意味します（area\_converted は area\_px に等しい）。。 | ✅  |

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

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

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

<details>

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

* 入力
  * `predictions` (*Union\[*[*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*]*）：面積を測定する検出予測。
  * `pixels_per_unit` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：実世界の長さの単位あたりのピクセル数（例：cmあたりのピクセル数）。変換後の面積は area\_px / (pixels\_per\_unit \*\* 2) として計算されます。デフォルトの1.0は変換なしを意味します（area\_converted は area\_px に等しい）。。
* 出力
  * `predictions` (*Union\[*[*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*]*）：sv.Detections(...) 形式の検出バウンディングボックスを含む予測。 `object_detection_prediction` または、sv.Detections(...) 形式の検出バウンディングボックスとセグメンテーションマスクを含む予測。 `instance_segmentation_prediction`.

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/mask_area_measurement@v1",
	    "predictions": "$steps.model.predictions",
	    "pixels_per_unit": 1.0
	}
```

</details>
