# MLImageType

The image type describes image features.

## Creating the Type

The image type can be created with image information, or by inspecting an [`MLFeatureType`](https://docs.natml.ai/unity/api/mlfeaturetype):

### From Image Info

```csharp
/// <summary>
/// Create an image feature type.
/// </summary>
/// <param name="width">Image width.</param>
/// <param name="height">Image height.</param>
/// <param name="channels">Image channels.</param>
MLImageType (int width, int height, int channels = 3);
```

INCOMPLETE.

```csharp
/// <summary>
/// Create an image feature type.
/// </summary>
/// <param name="width">Image width.</param>
/// <param name="height">Image height.</param>
/// <param name="type">Image data type.</param>
MLImageType (int width, int height, Type type);
```

INCOMPLETE.

```csharp
/// <summary>
/// Create an image feature type.
/// This constructor assumes interleaved pixel buffers.
/// </summary>
/// <param name="width">Image width.</param>
/// <param name="height">Image height.</param>
/// <param name="channels">Image channels.</param>
/// <param name="type">Image data type.</param>
MLImageType (int width, int height, int channels, Type type);
```

INCOMPLETE.

```csharp
/// <summary>
/// Create an image feature type.
/// </summary>
/// <param name="shape">Image feature shape.</param>
/// <param name="type">Image data type.</param>
/// <param name="name">Feature name.</param>
MLImageType (int[] shape, Type type, string name = null);
```

### From a Feature Type

```csharp
/// <summary>
/// Get the corresponding image type for a given feature type.
/// </summary>
/// <param name="type">Input type.</param>
/// <returns>Corresponding image type or `null` if input type is not an image type.</returns>
static MLImageType FromType (in MLFeatureType type);
```

INCOMPLETE.

## Inspecting the Type

```csharp
/// <summary>
/// Feature name.
/// </summary>
string name { get; }

/// <summary>
/// Feature data type.
/// This will typically be a numeric type.
/// </summary>
Type dataType { get; }
```

Refer to the [`MLFeatureType`](https://docs.natml.ai/unity/api/mlfeaturetype) class for more information.

## Inspecting the Image

The feature type reports information about the image it refers to:

### Image Width

```csharp
/// <summary>
/// Image width.
/// </summary>
int width { get; }
```

INCOMPLETE.

### Image Height

```csharp
/// <summary>
/// Image height.
/// </summary>
int height { get; }
```

INCOMPLETE.

### Image Channels

```csharp
/// <summary>
/// Image channels.
/// </summary>
int channels { get; }
```

INCOMPLETE.

{% hint style="info" %}
The channel count is usually 1 for greyscale images, 3 for RGB images, or 4 for RGBA images.
{% endhint %}

### Pixel Layout

```csharp
/// <summary>
/// Whether the image is interleaved or planar.
/// </summary>
bool interleaved { get; }
```

The image type reports the pixel layout of the image. The pixel layout is inferred from the [`shape`](https://docs.natml.ai/unity/api/mlarraytype#inspecting-the-shape) of the type. If the `channels` dimension is last, then the image is `interleaved`; otherwise, the image is planar.
