---
title: 캘리브레이션 개요
slug: api-guide/ko/i3SZFYa5Nj_EaYqaoQ-dx
docTags: 
createdAt: 2024-12-17T10:06:16.000Z
---

다양한 [좌표계](docId:2yUiGk3M8sJI14b4ZEkqq)에 걸친 2D 및 3D 데이터를 가진 씬은 위치와 방향에 따라 센서를 정렬하기 위한 **캘리브레이션**이 필요합니다. 여기에는 3D 포인트를 카메라의 이미지 평면에 투영하는 작업이 포함됩니다.

::::ExpandableHeading
## 캘리브레이션 종류

모든 캘리브레이션은 기준 좌표계에 대한 센서의 3D 위치와 방향을 명시합니다. 또한 3D 포인트를 카메라의 이미지 평면에 매핑합니다.

- 라이다/레이더의 경우 사용 가능한 캘리브레이션 종류는 한 가지뿐입니다. [라이다 캘리브레이션](docId:-KmF6Ai8tDDoM6SY78BX5).&#x20;
- 카메라의 경우 카메라의 내부 파라미터만 제공하면 되는 다양한 종류의 [표준 카메라 캘리브레이션](docId\:e7_BksGBFmvhgfptD1pJe)을 지원합니다.

:::hint{type="success"}
### 지원되지 않는 카메라 모델

사용 중인 카메라 모델이 지원되지 않는 경우, WebAssembly 모듈 형태로 구현을 제공하는 [커스텀 카메라 캘리브레이션](docId\:NLbKN4QKT33FCf8D68zNm)을 제공할 수도 있습니다.
:::
::::

## 캘리브레이션 생성 방법

라이다 센서 하나와 Pinhole 타입 카메라 센서 두 개에 대한 캘리브레이션을 생성하는 예제입니다. **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나 제공된 external 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"
```
````
:::
