You are here: The SDK Base Classes > The Image Classes

## The Image Classes

As described in the previous chapter, a hierarchy of several classes is used to represent images, image stages, and the image pipeline. See Figure 1.

Figure 1: Inheritance

The `LTIImage` class represents the properties of an image, including:

- width and height
- pixel type (number of bands, colorspace, datatype)
- background and nodata pixel values
- dynamic range of the samples
- simple geographic coordinates
- supported magnification range
- metadata

The `LTIImageStage` class extends `LTIImage` by adding:

- strip-based read functions
- progress and interrupt delegates

The LTIImageReader and LTIImageFilter classes extend LTIImageStage in order to more closely reflect their positions and operations in the image pipeline. These two classes are discussed in subsequent chapters.

While the LTIImageWriter class does not inherit from any of the other LTIImage classes; it replicates some of the same functionality (such as strip-based operations and delegate control) so that it can be used as a client of an image pipeline. The LTIGeoFileImageWriter class is derived from LTIImageWriter to aid in implemented image writers. LTIGeoFileImageWriter extends LTIImageWriter to provide the ability to output to a specific form (stream or file) and optionally generate world files.

The LTIImageStageManager is a base class for managing a set of LTIImageStage objects – it can be thought of as an array of such objects. It used for passing a set of image stages to an LTIImageMosaicFilter and enabling the mosaic filter to reduce its resource usage. The LTIImageStageManager is also used for “wrapping” file formats that can hold multiple images.