ImageMagick Motion Picture Formats
Introduction to Motion Picture Formats
DPX (SMPTE 268M-2003) - 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 includes scanning film for use in post production. Each frame is 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.
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.
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.serial 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 dpx:user.data
To determine which properties are associated with your DPX image, use this command for example:
$magick> identify -verbose bluebells.dpx
To identify a particular property, try this:
$magick> identify -format "%[dpx:television.time.code]" bluebells.dpx
Finally, to set a property:
$magick> convert bluebells.dpx -define dpx:television.time.code=10:00:02:15 bluebells-001.dpx
DPX Settings
Use -set to specify the image or film gamma or black and white points. For example use:
-set gamma 1.7
-set film-gamma 0.6
-set reference-black 95
-set reference-white 685
-set profile dpx:user.data