> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encord.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Beta.scene.intrinsics

Public camera intrinsics types and convenience constructors.

## SimpleIntrinsics Objects

```python theme={"dark"}
@dataclass
class SimpleIntrinsics()
```

Simple camera intrinsics (focal length + principal point).

Prefer the dedicated constructors ([intrinsics\_pinhole()](/sdk-documentation/sdk-references/intrinsics_pinhole#intrinsics_pinhole),
[intrinsics\_radial()](/sdk-documentation/sdk-references/intrinsics_radial#intrinsics_radial), [intrinsics\_plumb\_bob()](/sdk-documentation/sdk-references/intrinsics_plumb_bob#intrinsics_plumb_bob),
[intrinsics\_fisheye()](/sdk-documentation/sdk-references/intrinsics_fisheye#intrinsics_fisheye)) or the generic [intrinsics\_simple()](/sdk-documentation/sdk-references/intrinsics_simple#intrinsics_simple)
rather than instantiating this class directly.

The `extra` dict holds distortion coefficients and optional fields.
Distortion coefficients are model-specific. The following optional
fields apply to all models: `dfx`, `dfy`, `dox`, `doy`, `skew`.

## AdvancedIntrinsics Objects

```python theme={"dark"}
@dataclass
class AdvancedIntrinsics()
```

Advanced camera intrinsics (full calibration matrices).

.. warning::
In most cases [SimpleIntrinsics](/sdk-documentation/sdk-references/beta.scene.intrinsics#simpleintrinsics) (via
[intrinsics\_simple()](/sdk-documentation/sdk-references/intrinsics_simple#intrinsics_simple) or one of the dedicated constructors)
is sufficient and much easier to work with. Only use advanced
intrinsics when you have pre-computed full K / R / P calibration
matrices and genuinely need to supply them directly.

Prefer [intrinsics\_advanced()](/sdk-documentation/sdk-references/intrinsics_advanced#intrinsics_advanced) rather than instantiating this
class directly.

**Arguments**:

* `k` - 9-element intrinsic camera matrix (row-major 3x3).
  Validated to have exactly 9 elements at build time.
* `r` - 9-element rectification matrix (row-major 3x3).
  Validated to have exactly 9 elements at build time.
* `p` - 12-element projection matrix (row-major 3x4).
  Validated to have exactly 12 elements at build time.
* `model` - Optional distortion model name.

#### intrinsics\_simple

```python theme={"dark"}
def intrinsics_simple(fx: float,
                      fy: float,
                      ox: float,
                      oy: float,
                      *,
                      model: str | None = None,
                      **kwargs: float) -> SimpleIntrinsics
```

Build simple camera intrinsics (focal length + principal point).

For models without a dedicated constructor, pass the model name and
its coefficients as keyword arguments::

intrinsics\_simple(fx, fy, ox, oy, model="division", k=0.01)
intrinsics\_simple(fx, fy, ox, oy, model="ucm", xi=0.5, k1=0.1, k2=0.0, k3=0.0)

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
* `model` - Optional distortion model name.
* `**kwargs` - Distortion coefficients and optional extra fields.

#### intrinsics\_advanced

```python theme={"dark"}
def intrinsics_advanced(k: Sequence[float] | None = None,
                        r: Sequence[float] | None = None,
                        p: Sequence[float] | None = None,
                        *,
                        model: str | None = None) -> AdvancedIntrinsics
```

Build advanced camera intrinsics using full calibration matrices.

.. warning::
In most cases [intrinsics\_simple()](/sdk-documentation/sdk-references/intrinsics_simple#intrinsics_simple) (or one of the dedicated
constructors) is sufficient. Only reach for advanced intrinsics
when you have pre-computed K / R / P matrices.

**Arguments**:

* `k` - 9-element intrinsic camera matrix (row-major 3x3).
* `r` - 9-element rectification matrix (row-major 3x3).
* `p` - 12-element projection matrix (row-major 3x4).
* `model` - Optional distortion model name.

#### intrinsics\_pinhole

```python theme={"dark"}
def intrinsics_pinhole(fx: float, fy: float, ox: float,
                       oy: float) -> SimpleIntrinsics
```

Build pinhole intrinsics (no distortion coefficients).

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).

#### intrinsics\_radial

```python theme={"dark"}
def intrinsics_radial(fx: float, fy: float, ox: float, oy: float, *, k1: float,
                      k2: float, k3: float) -> SimpleIntrinsics
```

Build intrinsics with a radial distortion model.

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
* `k1` - First radial distortion coefficient.
* `k2` - Second radial distortion coefficient.
* `k3` - Third radial distortion coefficient.

#### intrinsics\_plumb\_bob

```python theme={"dark"}
def intrinsics_plumb_bob(fx: float, fy: float, ox: float, oy: float, *,
                         k1: float, k2: float, k3: float, t1: float,
                         t2: float) -> SimpleIntrinsics
```

Build intrinsics with a plumb-bob (Brown-Conrady) distortion model.

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
* `k1` - First radial distortion coefficient.
* `k2` - Second radial distortion coefficient.
* `k3` - Third radial distortion coefficient.
* `t1` - First tangential distortion coefficient.
* `t2` - Second tangential distortion coefficient.

#### intrinsics\_fisheye

```python theme={"dark"}
def intrinsics_fisheye(fx: float, fy: float, ox: float, oy: float, *,
                       k1: float, k2: float, k3: float,
                       k4: float) -> SimpleIntrinsics
```

Build intrinsics with a fisheye (Kannala-Brandt) distortion model.

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
* `k1` - First distortion coefficient.
* `k2` - Second distortion coefficient.
* `k3` - Third distortion coefficient.
* `k4` - Fourth distortion coefficient.

#### intrinsics\_rational\_polynomial

```python theme={"dark"}
def intrinsics_rational_polynomial(fx: float, fy: float, ox: float, oy: float,
                                   *, k1: float, k2: float, k3: float,
                                   k4: float, k5: float, k6: float, t1: float,
                                   t2: float) -> SimpleIntrinsics
```

Build intrinsics with a rational-polynomial distortion model.

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
* `k1` - First radial distortion coefficient.
* `k2` - Second radial distortion coefficient.
* `k3` - Third radial distortion coefficient.
* `k4` - Fourth radial distortion coefficient.
* `k5` - Fifth radial distortion coefficient.
* `k6` - Sixth radial distortion coefficient.
* `t1` - First tangential distortion coefficient.
* `t2` - Second tangential distortion coefficient.

#### intrinsics\_cylindrical

```python theme={"dark"}
def intrinsics_cylindrical(fx: float, fy: float, ox: float,
                           oy: float) -> SimpleIntrinsics
```

Build intrinsics with a cylindrical distortion model (no coefficients).

**Arguments**:

* `fx` - Focal length along the *x*-axis (pixels).
* `fy` - Focal length along the *y*-axis (pixels).
* `ox` - Principal-point *x* offset (pixels).
* `oy` - Principal-point *y* offset (pixels).
