Profiles are a major component of any colour management system. They are what actually make it possible to produce prints that match what you see on your monitor or produce scans that accurately reflect what is contained in the piece of film or print you are scanning.
A profile is a data file that describes the colour behaviour of a specific device. The colour values stored in an image can be thought of as instructions for the device that will display or reproduce those colours. In order to maintain accurate colours, those values must be related to a device-independent colour model. The profile contains a table that lists the specific device-dependent colour values and their equivalent values using the device-independent LAB colour model.
Most image files that photographers work with are in either the RGB or CMYK colour model, where values are assigned to the additive or subtractive primary colours, defining the colour of each pixel. The colour values provide instructions for how much of each primary colour should be used to produce the intended colour. The results are dependent upon the specific primary colours used. For example, each printer uses specific inks and so "cyan" for one printer is different from "cyan" on a different printer, because the cyan ink for each has a slightly different colour value. Even the paper used to print can result in different values, because of the way the inks are absorbed by the paper. Therefore, the colour values used in the RGB or CMYK colour models don't have any meaning by themselves. They only have a specific colour meaning when a device is used to produce output based on the colour numbers.
A profile translates these values stored in a digital image to a device-independent colour model - usually LAB - so that they have a specific colour meaning. In this way, profiles allow consistent colours to be produced by a wide range of devices, because each device can have a specific profile that allows it to translate the colours in your image file.
This translation is key to producing accurate results, and so it is important that the ability to interpret those colour values is maintained for each image file. They can, therefore, be "tagged" with a profile, which means that a profile is attached to the file so an application used to read the image file can know exactly what colour is represented by each of the colour values stored within the image file. In effect, the translation of the colour values is contained within the image file itself, so that the meaning of each colour can be accurately determined.
The profiles used by most applications and operating systems now comply with standards developed by the International Colour Consortium (ICC) and are commonly referred to as "ICC Profiles." The ICC was founded by Adobe, Agfa, Apple, Kodak, and Sun Microsystems to create industry wide standards for colour management. The profile specifications that the ICC created have become the standard used by most operating systems and photo editing software.
Figure: Each device will have an individual colour gamut that defines the range of colours it is able to produce. The figure (left) shows the AdobeRGB colour space (wire frame) mapped to the ICC Profile for my Epson R1800 printer using Epson Premium Glossy Photo Paper (solid). Notice how the printer has a much smaller gamut than AdobeRGB.
Profiles can be created for input devices such as a digital camera or scanner, or output devices such as monitors, digital projectors, or printers. Ideally, a profile will be specific to a particular device-not just any scanner of a specific model, but the exact scanner sitting on your desk. This would be a custom profile, and it represents the ideal. However, because manufacturing tolerances are generally very fine, profiles can be made for a specific model of a device with good results. These profiles are referred to as generic or "canned" profiles. For example, each model of inkjet printer includes canned profiles for different types of papers that can be used with that printer.
Profiles can also be used for a more arbitrary purpose when used as a working space. Such a profile does not relate to a specific device, but rather provides a range of colours - a gamut - that are available for your images. The available colour values are mapped to specific values, typically using the LAB colour model, so that each value represents a device-independent colour value.
Regardless of their specific implementation, whether to describe the colour behaviour of a specific device or to define a working space for photo editing, profiles provide a way to relate the colour values stored in an image file or interpreted by an input or output device to actual colours based on the way the human visual system perceives colour. Profiles, therefore, perform what is arguably the most important task within a colour management system.
For colour displayed on a monitor, profiles allow a conversion of colour values from those stored in your image file to the LAB colour model before they are then converted to appropriate RGB values that will cause the monitor to display the same colour accurately. For prints, the colour values in an image file are similarly translated to LAB before being converted to values that the printer understands to produce the specific colours in the image. Similarly, when a digital camera or film scanner reads colour values. a profile can help map the values that are "seen" into correct values in the LAB colour model, so that they can then be interpreted for accurate display on any output device.
Any of these translations of colour values from one profile to another require conversions that are calculated by a colour management engine in the software performing the operations. Because each device has a specific colour gamut, which is the range of colours it is able to capture or produce, not all of the colours in the source profile will be available in the destination profile. A method of conversion of image data from one profile to another must include a strategy for dealing with both colours that are within the destination profile's colour gamut, and those that are not. That method is implemented by one of four rendering intents.