---
title: キャリブレーション概要
slug: api-guide/ja/2mqjGhIkuxR8YGZWtupR3
docTags: 
createdAt: 2024-12-17T10:06:16.522Z
---

さまざまな[座標系](docId:3jKwDhQCmVNvBuZboUZMr)にまたがる2Dおよび3Dデータを含むシーンは、位置と向きによってセンサーを整合させるための**キャリブレーション**が必要です。これには3D点をカメラの画像平面に投影することも含まれます。

::::ExpandableHeading
## キャリブレーションのタイプ

すべてのキャリブレーションは、基準座標系に対するセンサーの3D位置と向きを詳細に示します。また、3D点をカメラの画像平面にマッピングします。

- LiDAR/RADARの場合、利用可能なキャリブレーションのタイプは1つのみです。詳細は[LiDARキャリブレーション](docId:6Oyu1CiLW9EBedSGrJd3F)を参照してください。
- カメラの場合、[標準カメラキャリブレーション](docId\:WutszyygKeV3hAPRbh--8)のさまざまなタイプをサポートしており、カメラの内部パラメータを指定するだけで使用できます。

:::hint{type="success"}
### サポートされていないカメラモデル

お使いのカメラモデルがサポートされていない場合は、[カスタムカメラキャリブレーション](docId\:HG1KrvPudpiHYSJ2CL1hO)を使用することもできます。この場合、WebAssemblyモジュールの形式で実装を提供します。
:::
::::

## キャリブレーションの作成方法

LiDARセンサー1台とPinholeタイプのカメラセンサー2台のキャリブレーションを作成する例を以下に示します。**Kannala、Fisheyeなど他のカメラタイプについては**、[kognic-io-examples](https://github.com/annotell/kognic-io-examples-python/tree/master/examples/calibration)を参照してください。

```python
from kognic.io.client import KognicIOClient
from kognic.io.model import SensorCalibration
from kognic.io.model.calibration.camera.common import CameraMatrix, DistortionCoefficients
from kognic.io.model.calibration.camera.pinhole_calibration import PinholeCalibration
from kognic.io.model.calibration.common import Position, RotationQuaternion
from kognic.io.model.calibration.common import Position, RotationQuaternion
from kognic.io.model.calibration.lidar.lidar_calibration import LidarCalibration, LidarFieldOfView

client = KognicIOClient()

# Create a sample calibration for lidar.
lidar_position = Position(x=0.0, y=0.0, z=0.0)
lidar_rotation = RotationQuaternion(w=1.0, x=0.0, y=0.0, z=0.0)
lidar_fov = LidarFieldOfView(start_angle_deg=315, stop_angle_deg=45, depth=200)

lidar_calibration = LidarCalibration(position=lidar_position, rotation_quaternion=lidar_rotation, field_of_view=lidar_fov)

# Create a sample calibration for a Pinhole camera. For other camera types visit:
# https://github.com/annotell/kognic-io-examples-python/tree/master/examples/calibration
camera_position = Position(x=0.0, y=0.0, z=0.0)
camera_rotation = RotationQuaternion(w=0.5, x=-0.5, y=0.5, z=-0.5)
camera_camera_matrix = CameraMatrix(fx=3450, fy=3250, cx=622, cy=400)
camera_distortion_coefficients = DistortionCoefficients(k1=0.0, k2=0.0, p1=0.0, p2=0.0, k3=1.0)

pinhole_calibration = PinholeCalibration(
    position=camera_position,
    rotation_quaternion=camera_rotation,
    camera_matrix=camera_camera_matrix,
    distortion_coefficients=camera_distortion_coefficients,
    image_height=1080,
    image_width=1920,
    field_of_view=190.0,
)

sensor_calibration = SensorCalibration(
  external_id="Create your own id here", # to make it easier for you to find the calibration later
  calibration={
    # The keys: "lidar", "LEFT_FRONT_CAMERA" etc, must match the
    # names of the sensors in the scenes that use this calibration
    "lidar": lidar_calibration,
    "LEFT_FRONT_CAMERA": pinhole_calibration,
    "RIGHT_FRONT_CAMERA": pinhole_calibration
  }
)
created_calibration = client.calibration.create_calibration(sensor_calibration)
print(f"Created calibration with id {created_calibration.id}")
```

:::hint{type="success"}
### キャリブレーションの再利用

キャリブレーションを作成した後は、可能な限り同じキャリブレーションを複数のシーンで再利用でき、また再利用すべきです。詳細は以下を参照してください。
:::

:::ExpandableHeading
## キャリブレーションを取得する

既存のキャリブレーションは、取得したIDまたは指定した外部IDを使用して取得できます。これはPythonクライアントまたは`kognicutil`を介して行うことができます。

````text
# Fetch calibration by external id
client.calibration.get_calibrations(external_id="Collection 2020-06-16")
```
````

````text
# Fetch calibration by external id
kognicutil calibration --external-id "Collection 2020-06-16"
```
````
:::
