[ImageMagick] [sponsor]

Introduction to Motion Picture Formats

DPX - This format is used in Motion Picture and Effects industry that makes particular use of the extensive header information and the format's flexibility in being able to handle high dynamic range and logarithmic color values at a variety of bit depths using RGB or YCbCr pixel descriptions. It is based on, but largely supercedes, Kodak's Cineon format that has more a more film specific header.

One example of it's use would be when scanning film for use in post production. Each frame would be stored as an individual DPX file ranging from 2k (2048 pixels wide) to 8k (8192 pixels wide - for IMAX frames) at anything between 8 to 64 bits per color component. A sequence of these might then be processed using compositing software, altering the color or adding visual effects. Once complete they might then be recorded digitally to tape or projected back on to film.

The color values for each pixel are often stored logarithmically (particularly if the sequence is destined to be transferred back on to film) which more naturally reflects the density of how color information is stored in the emulsion on the original film. When viewed without alteration, logarithmic files appear to have very low contrast and requires a 'look up table' to translate the logarithmic image to something that resembles what you might see if the image was transferred back to film and projected in a cinema. Apart from making the image linear (like most typical computer images) and adjusting the gamma level this table sets where the black and white point lies.

For a 10 bit logarithmic image where each color component value ranges from 0 to 1023 the black and white points are normally set at 95 for black and 685 for white. What this means is that the logarithmic file stores color values that are lighter than what the linear version will display as pure white and darker than what it will display as pure black. This extra information therefore remains available for an effects artists who might wish to alter the brightness of the image after it has been stored as a DPX file.

As an example, had this information been lost, reducing the brightness of an image uniformly would result in highlights becoming darker, whereas with this extra information the highlights instead reduce in size and start showing details that were previously too bright to be seen. The latter is far closer to what happens in the real world.

The header can contain Film and/or Television specific data related to a production. For example the television header can contain a SMPTE time code so that shots exported as a DPX sequence from a production's edit can be easily replaced once any effects have been added. The film header holds information about the reel of film the frames originated from and various camera settings that were used while filming. All these details usually stay with the images as they are passed between post-production companies.

Log Format

The color values for each pixel are often stored logarithmically (particularly if the sequence is destined to be transferred back on to film) which more naturally reflects the density of how color information is stored in the emulsion on the original film. When viewed without alteration logarithmic files appear to have very low contrast (leftmost image), and so require a 'look up table' to translate the logarithmic image to something that resembles what you might see if the image was transferred back to film and projected in a cinema (rightmost image). Apart from making the image linear (like most typical computer images) and adjusting the gamma level this table sets where the black and white point lies.

bluebells-log bluebells-linear

For a 10 bit logarithmic image where each color component value ranges from 0 to 1023 the black and white points are normally set at 95 for black and 685 for white. What this means is that the logarithmic file stores color values that are lighter than what the linear version will display as pure white and darker than what it will display as pure black. This extra information therefore remains available for an effects artists who might wish to alter the brightness of the image after it has been stored as a DPX file.

As an example, had this information been lost, reducing the brightness of a linear image uniformly would result in highlights becoming darker (leftmost image), whereas with this extra information the highlights instead reduce in size and start showing details that were previously too bright to be seen (rightmost image). The latter is far closer to what happens in the real world.

bluebells-clipped bluebells-darker

DPX Properties

ImageMagick supports these DPX properties:

  dpx:file.copyright
  dpx:file.creator
  dpx:file.filename
  dpx:file.project
  dpx:file.version
  dpx:film.count
  dpx:film.format
  dpx:film.frame_id
  dpx:film.frame_position
  dpx:film.frame_rate
  dpx:film.held_count
  dpx:film.id
  dpx:film.offset
  dpx:film.prefix
  dpx:film.sequence_length
  dpx:film.shutter_angle
  dpx:film.slate
  dpx:film.type
  dpx:orientation.aspect_ratio
  dpx:orientation.border
  dpx:orientation.device
  dpx:orientation.filename
  dpx:orientation.x_center
  dpx:orientation.x_offset
  dpx:orientation.x_size
  dpx:orientation.y_center
  dpx:orientation.y_offset
  dpx:orientation.y_size
  dpx:television.black_gain
  dpx:television.black_level
  dpx:television.break_point
  dpx:television.field_number
  dpx:television.frame_rate
  dpx:television.gamma
  dpx:television.integration_times
  dpx:television.interlace
  dpx:television.padding
  dpx:television.time.code
  dpx:television.time_offset
  dpx:television.user.bits
  dpx:television.vertical_sample_rate
  dpx:television.video_signal
  dpx:television.white_level
  dpx:user.id

To determine which properties are associated with your DPX image, use this command for example:

  identify -verbose bluebells.dpx

To identify a particular property, try this:

  identify -format "%[dpx:television.time.code]" bluebells.dpx

Finally, to set a property:

  convert bluebells.dpx -define dpx:television.time.code=10:00:02:15 bluebells-001.dpx

DPX Settings

Use -set to specify the image gamma or black and white points (e.g. -set gamma 1.7, -set reference-black 95, -set reference-white 685).