> 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/transformations/camera-calibration.md).

# カメラキャリブレーション

カメラキャリブレーションパラメータ（焦点距離、光学中心、歪み係数）を使用して画像からレンズ歪みを除去し、カメラレンズによって生じる放射歪みと接線歪みを補正することで、正確な測定、幾何学的解析、および精密なコンピュータビジョンアプリケーションに適した歪みのない画像を生成します。

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

カメラレンズは、直線を曲線に見せたり、画像の端に近い物体を引き伸ばしたり圧縮したりする歪みを生じさせます。このブロックは、既知のカメラキャリブレーションパラメータを使用してこれらの歪みを補正します。このブロックは次のことを行います。

1. 入力画像とカメラキャリブレーションパラメータ（焦点距離 fx/fy、光学中心 cx/cy、放射歪み係数 k1/k2/k3、接線歪み係数 p1/p2）を受け取ります
2. 内在パラメータ（焦点距離と光学中心）から、標準的な OpenCV 形式のカメラ行列を構築します。3x3 行列で、対角成分に fx, fy、光学中心として cx, cy、右下の要素に 1 を配置します
3. 放射歪みと接線歪みのパラメータを表す 5 要素の配列（k1, k2, p1, p2, k3）に歪み係数をまとめます
4. OpenCV の `getOptimalNewCameraMatrix` を使用して、補正後に使用可能な画像領域を最大化します（歪み補正によって生じる黒い境界を取り除きます）
5. OpenCV の `undistort` 関数を適用して、放射歪み（直線を曲げる樽型歪みおよび糸巻き型歪み）と接線歪み（レンズのずれによる画像の傾き）を補正します
6. 直線を補正し、端部の歪みを除去し、幾何学的な正確さを回復した、補正済みの歪みのない画像を返します

このブロックは内部で OpenCV のカメラキャリブレーション関数を使用しており、標準的なコンピュータビジョンのカメラキャリブレーション手法に従っています（詳細は [OpenCV キャリブレーションチュートリアル](https://docs.opencv.org/4.x/dc/dbb/tutorial_py_calibration.html) を参照してください）。放射歪み係数（k1, k2, k3）は、画像内の点が光学中心から放射状にずれる樽型／糸巻き型歪みを補正します。接線歪み係数（p1, p2）は、レンズのずれによって生じる歪みを補正します。キャリブレーションパラメータは、事前にカメラキャリブレーション処理（通常はチェッカーボードパターンを使用）によって取得するか、カメラメーカーから提供される必要があります。

## 要件

**カメラキャリブレーションパラメータ**：このブロックは、カメラキャリブレーションによって取得された事前計算済みのカメラキャリブレーションパラメータを必要とします。

* **焦点距離（fx, fy）**：x 軸および y 軸方向のピクセル単位の焦点距離（非正方形ピクセルでは異なる場合があります）
* **光学中心（cx, cy）**：主点座標（理想的なカメラでは画像中心）
* **放射歪み係数（k1, k2, k3）**：樽型歪みと糸巻き型歪みを補正します
* **接線歪み係数（p1, p2）**：レンズのずれによる歪みを補正します

これらのパラメータは通常、チェッカーボードパターンまたは同様のキャリブレーションターゲットを用いた OpenCV のカメラキャリブレーション処理で取得されます。詳細は [OpenCV カメラキャリブレーションのドキュメント](https://docs.opencv.org/4.x/dc/dbb/tutorial_py_calibration.html) を参照してください。

## 一般的な使用例

* **測定および計量アプリケーション**：正確な測定ワークフローのためにレンズ歪みを補正します（例：物体サイズを測定する前に歪みを除去する、精密測定のために幾何学的歪みを補正する、寸法解析のために画像を歪みなしにする）。これにより、カメラ画像から正確な測定が可能になります
* **幾何学的解析ワークフロー**：幾何学的なコンピュータビジョンタスクのために画像を準備します（例：ライン検出の前に画像を歪みなしにする、幾何学形状解析のために歪みを補正する、正確な角度測定のために画像を準備する）。これにより、補正済み画像を用いた精密な幾何学解析が可能になります
* **マルチカメラシステム**：異なるレンズ特性を持つ複数のカメラの画像を標準化します（例：異なるカメラ角度からの画像を歪みなしにする、広角レンズの歪みを補正する、ステレオビジョンのために複数カメラの画像を標準化する）。これにより、カメラ設定間で一貫した画像幾何を実現できます
* **高精度モデルの前処理**：高い幾何学的精度を必要とするモデル向けに画像を準備します（例：幾何学モデルを実行する前に画像を歪みなしにする、正確な特徴検出のために歪みを補正する、精密な姿勢推定のために画像を準備する）。これにより、幾何学的コンピュータビジョンタスクの精度が向上します
* **広角・魚眼補正**：広角レンズや魚眼レンズによる強い歪みを補正します（例：広角レンズの樽型歪みを補正する、魚眼歪みの影響を除去する、広角画像の曲がった直線をまっすぐにする）。これにより、広角レンズを標準的なコンピュータビジョンのワークフローで使用できます
* **動画安定化の準備**：動画安定化パイプラインの一部としてレンズ歪みを補正します（例：安定化前に動画フレームを歪みなしにする、動画ストリーム内のカメラ固有の歪みを補正する、モーション解析用にフレームを準備する）。これにより、より正確な動画処理が可能になります

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

このブロックは画像を受け取り、歪みのない画像を生成します。

* **画像読み込みブロックの後** 処理前にレンズ歪みを補正し、幾何学的に正しい画像で正確な解析を可能にするため
* **測定および解析ブロックの前** 幾何学的精度を必要とするもの（例：サイズ測定、角度測定、距離計算、幾何学形状解析）に対して使用し、歪みのない画像から精密な測定を可能にするため
* **幾何学的コンピュータビジョンブロックの前** 直線、形状、または空間関係を解析するもの（例：ライン検出、輪郭解析、幾何学パターンマッチング、姿勢推定）に対して使用し、補正済み画像で正確な幾何学解析を可能にするため
* **マルチカメラワークフローで** 処理前に異なるカメラの画像を標準化します（例：異なるカメラ角度からの画像を歪みなしにする、比較前にカメラ固有の歪みを補正する、ステレオビジョン用に画像を標準化する）。これにより、カメラ設定間で一貫した処理が可能になります
* **検出または分類ブロックの前** 幾何学的精度が重要な高精度アプリケーションで使用します（例：正確な位置特定のために歪みのない画像で物体を検出する、幾何学的に正しい画像で物体を分類する、正確な空間関係を必要とするモデルを実行する）。これにより、検出および分類タスクの精度が向上します
* **動画処理ワークフローでは** 動画フレームの歪みを補正します（例：モーション解析のために動画フレームを歪みなしにする、動画ストリーム内のカメラ歪みを補正する、追跡アルゴリズム用にフレームを準備する）。これにより、補正済みフレームで正確な動画解析が可能になります

### 型識別子

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

### プロパティ

| **名前**              | **型**   | **説明**                                                                                                                                                                              | 参照 |
| ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`              | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                             | ❌  |
| `fx`                | `float` | x 軸方向のピクセル単位の焦点距離。カメラの内在パラメータの一部です。通常、カメラキャリブレーション（例：チェッカーボードパターンを使った OpenCV キャリブレーション）によって取得されます。カメラの水平焦点距離を表します。正方形ピクセルでは、fx と fy は通常等しくなります。カメラキャリブレーションまたはメーカー仕様から取得する必要があります。。 | ✅  |
| `fy`                | `float` | y 軸方向のピクセル単位の焦点距離。カメラの内在パラメータの一部です。通常、カメラキャリブレーション（例：チェッカーボードパターンを使った OpenCV キャリブレーション）によって取得されます。カメラの垂直焦点距離を表します。正方形ピクセルでは、fx と fy は通常等しくなります。カメラキャリブレーションまたはメーカー仕様から取得する必要があります。。 | ✅  |
| `cx`                | `float` | 光学中心（主点）の x 座標（ピクセル単位）。カメラの内在パラメータの一部で、カメラの主点の x 座標（理想的なカメラでは画像中心）を表します。通常、画像幅の半分付近にあります。カメラキャリブレーションによって取得されます。cy と組み合わせてカメラの光学中心を定義します。。                                          | ✅  |
| `cy`                | `float` | 光学中心（主点）の y 座標（ピクセル単位）。カメラの内在パラメータの一部で、カメラの主点の y 座標（理想的なカメラでは画像中心）を表します。通常、画像高さの半分付近にあります。カメラキャリブレーションによって取得されます。cx と組み合わせてカメラの光学中心を定義します。。                                         | ✅  |
| `k1`                | `float` | 第1放射歪み係数。樽型歪みと糸巻き型歪み（直線が曲がって見える歪み）を補正するために使用される、カメラの歪みパラメータの一部です。k1 は通常、主要な放射歪み項です。正の値はしばしば樽型歪みを示し、負の値は糸巻き型歪みを示します。カメラキャリブレーションによって取得されます。。                                         | ✅  |
| `k2`                | `float` | 第2放射歪み係数。より高次の放射歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。k2 は、第1次の k1 項を超える、より複雑な放射歪みパターンの補正に役立ちます。カメラキャリブレーションによって取得されます。通常、k1 よりも値の絶対値が小さくなります。。                                        | ✅  |
| `k3`                | `float` | 第3放射歪み係数。追加の高次放射歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。k3 は通常、最も小さい放射歪み項であり、特に広角レンズに対する非常に高精度な歪み補正に使用されます。カメラキャリブレーションによって取得されます。標準レンズではしばしば 0 に設定されます。。                                | ✅  |
| `p1`                | `float` | 第1接線歪み係数。レンズのずれによって生じる接線歪みを補正するために使用される、カメラの歪みパラメータの一部です。p1 は、レンズがイメージセンサーと完全に整列していない場合に生じる傾き歪みを補正します。カメラキャリブレーションによって取得されます。整列の良いレンズでは、p1 と p2 はしばしば 0 に近い値になります。。                 | ✅  |
| `p2`                | `float` | 第2接線歪み係数。追加の接線歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。p2 は p1 と連携してレンズのずれによる歪みを補正します。カメラキャリブレーションによって取得されます。整列の良いレンズでは、p1 と p2 はしばしば 0 に近い値になります。。                                       | ✅  |
| `use_fisheye_model` | `bool`  | 魚眼歪みモデル（Rational/Divisional）を有効にします。true の場合、魚眼レンズにより適した別の数学モデルを使用します。有効化されると、k1 が主要パラメータとなり、他の係数は通常 0 になります。。                                                                      | ✅  |

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

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

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `カメラキャリブレーション` のバージョン `v1` あるか確認してください。

<details>

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

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)）：レンズ歪みを除去する入力画像です。指定されたカメラキャリブレーションパラメータを使用して、放射歪みと接線歪みが補正されます。既知のキャリブレーションパラメータを持つカメラの画像で使用できます。歪みのない出力画像は、直線がまっすぐになり、端部の歪みが除去された補正済みの幾何を持ちます。。
  * `fx` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：x 軸方向のピクセル単位の焦点距離。カメラの内在パラメータの一部です。通常、カメラキャリブレーション（例：チェッカーボードパターンを使った OpenCV キャリブレーション）によって取得されます。カメラの水平焦点距離を表します。正方形ピクセルでは、fx と fy は通常等しくなります。カメラキャリブレーションまたはメーカー仕様から取得する必要があります。。
  * `fy` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：y 軸方向のピクセル単位の焦点距離。カメラの内在パラメータの一部です。通常、カメラキャリブレーション（例：チェッカーボードパターンを使った OpenCV キャリブレーション）によって取得されます。カメラの垂直焦点距離を表します。正方形ピクセルでは、fx と fy は通常等しくなります。カメラキャリブレーションまたはメーカー仕様から取得する必要があります。。
  * `cx` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：光学中心（主点）の x 座標（ピクセル単位）。カメラの内在パラメータの一部で、カメラの主点の x 座標（理想的なカメラでは画像中心）を表します。通常、画像幅の半分付近にあります。カメラキャリブレーションによって取得されます。cy と組み合わせてカメラの光学中心を定義します。。
  * `cy` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：光学中心（主点）の y 座標（ピクセル単位）。カメラの内在パラメータの一部で、カメラの主点の y 座標（理想的なカメラでは画像中心）を表します。通常、画像高さの半分付近にあります。カメラキャリブレーションによって取得されます。cx と組み合わせてカメラの光学中心を定義します。。
  * `k1` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：第1放射歪み係数。樽型歪みと糸巻き型歪み（直線が曲がって見える歪み）を補正するために使用される、カメラの歪みパラメータの一部です。k1 は通常、主要な放射歪み項です。正の値はしばしば樽型歪みを示し、負の値は糸巻き型歪みを示します。カメラキャリブレーションによって取得されます。。
  * `k2` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：第2放射歪み係数。より高次の放射歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。k2 は、第1次の k1 項を超える、より複雑な放射歪みパターンの補正に役立ちます。カメラキャリブレーションによって取得されます。通常、k1 よりも値の絶対値が小さくなります。。
  * `k3` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：第3放射歪み係数。追加の高次放射歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。k3 は通常、最も小さい放射歪み項であり、特に広角レンズに対する非常に高精度な歪み補正に使用されます。カメラキャリブレーションによって取得されます。標準レンズではしばしば 0 に設定されます。。
  * `p1` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：第1接線歪み係数。レンズのずれによって生じる接線歪みを補正するために使用される、カメラの歪みパラメータの一部です。p1 は、レンズがイメージセンサーと完全に整列していない場合に生じる傾き歪みを補正します。カメラキャリブレーションによって取得されます。整列の良いレンズでは、p1 と p2 はしばしば 0 に近い値になります。。
  * `p2` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：第2接線歪み係数。追加の接線歪み効果を補正するために使用される、カメラの歪みパラメータの一部です。p2 は p1 と連携してレンズのずれによる歪みを補正します。カメラキャリブレーションによって取得されます。整列の良いレンズでは、p1 と p2 はしばしば 0 に近い値になります。。
  * `use_fisheye_model` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)）：魚眼歪みモデル（Rational/Divisional）を有効にします。true の場合、魚眼レンズにより適した別の数学モデルを使用します。有効化されると、k1 が主要パラメータとなり、他の係数は通常 0 になります。。
* 出力
  * `calibrated_image` ([`image`](/workflows/ja/gaido/developer-guide/kinds/image.md)): ワークフロー内の画像。

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/camera-calibration@v1",
	    "image": "$inputs.image",
	    "fx": 0.123,
	    "fy": 0.123,
	    "cx": 0.123,
	    "cy": 0.123,
	    "k1": 0.123,
	    "k2": 0.123,
	    "k3": 0.123,
	    "p1": 0.123,
	    "p2": 0.123,
	    "use_fisheye_model": true
	}
```

</details>
