The PCD format was developed in the early 1990’s, when many of the color standards that we take for granted today didn’t exist. In addition, the format was designed in such a way that it could display on the TV’s of the day with very cheap and simple hardware. The most notable “gotcha’s” are:

  • Kodak has publicly released only small parts of the the PCD specification. Understanding it at all is a challenge - Hadmut Danisch reverse engineered the format in the early 1990’s and wrote hpcdtoppm based on his work. Subsequent to that, various additional pieces of information have leaked into the public domain, but despite Kodak abandoning the format, Kodak have declined to make the detail of the format public.
  • The PCD color space is a TV color space (SMTPE), but Kodak allowed for levels of well over 100% of nominal. This is ok for driving an analog TV, but a problem when converting to modern digital systems. Virtually all color management systems on PCs today (be they Apple, Windows or Linux) are based on the ICC model, which simply has no concept of greater than 100% levels. As a result, a simple conversion into a modern color space will either result in incorrect colors, or blown highlights. Often both.
  • The PCD format uses a form of gamma encoding that at first sight, looks very much like sRGB. However, it’s actually subtly different. Many converters assume that they can apply a pre-packaged sRGB gamma curve. Unfortunately, this results in an image with the mid-tones displaced.
  • The PCD file format, because it was designed to allow display of base images by very simple, low-cost hardware, encodes images as a low resolution base image, together with a series of incremental resolution enhancement images, and then uses Huffman compression on the incremental images. In addition, the chroma is subsampled. These types of encoding algorithms were abandoned in the 1990’s as inefficient compared to e.g., JPEG encoding which compresses two-dimensional blocks of pixels. As a result, decoding images at full resolution is much more complex than is the case for most modern image formats which use a relatively small number of encoding techniques for which well established bodies of source code exist. For example, almost all modern raw image formats are simple variations of the EXIF format.