Conversion of 10 bit Log Film to 8 bit Linear or Video Data

This article does not contain the images the original document contains. Please contact us if you are in need of these images. Any errors are not the responsibility of the Eastman Kodak Company or this site.

This site is not affiliated with the Eastman Kodak Company.
This page is not endorsed by the Eastman Kodak Company

1.0 Film, Computer, and Video Images

1.1 Film Images

Film has traditionally been represented by a characteristic curve which plots density vs. log exposure. This is a log/log representation. In defining the calibration for the Cineon digital film system, Eastman Kodak Co. talked to many experts in the film industry to determine the best data metric to use for digitizing film. The consensus was to use the familiar density metric and to store the film as logarithmic data.

The characteristic curves for a typical motion picture color negative film are shown as Figure 1. The three curves represent the red, green, and blue color records, which are reproduced by cyan, magenta and yellow dyes, respectively. The three curves are offset vertically because the base density of the negative film is orange in color (it contains more yellow and magenta dye than cyan dye).

Figure 1

The next issue was calibration range. In order to provide as much creative freedom in the digital world as is possible in optical printing, it is necessary to digitize the full range of the original negative film. This allows the digital data to be "printed" up or down without compromise in post production. It also allows color grading decisions to be made in context with elements of the final composite. The full dynamic range of a motion picture negative film can be captured in a 2.0 density range.

It is important to note that the original film captures more than what is displayed when it is printed and projected. This extra range or extended headroom can be used to capture specular highlights. Over-exposure can also be used creatively by a cinematographer to alter the look of the image, increasing the contrast, cleaning out the shadow and boosting the color saturation.

1.2 Computer Generated Images

Computer generated images (CGI) are traditionally created and stored as linear data. This means that the digital model is proportional to illumination levels in the physical world. The most common data storage format is 8 bits, although 16 bits is gaining more use as computational power increases. CGI images typically span the range from a nominal black at 0 code value to a nominal white at 255 code values. In general, there is no corollary to the extended range of film.

CGI images are typically displayed on CRT graphics display monitors with the gamma set to 1.7 (default). This compensates for the native gamma of the monitor (2.5), producing a displayed image with a gamma of 1.5. For comparison, note that the midscale gamma of a projected film print is also about 1.5.

Video Images

Digital video images are defined by CCIR 709. Video images are gamma corrected for display on a CRT monitor with this conversion specified by the following transformation. The video level (V') is scaled to put reference white at 235 and reference black at 16 code values, per CCIR 601.
	V' = 1.099 * V^0.45 - 0.099 	for 1 >= V >= 0.018
	V' = 4.5 * V			for 0.018 >= V >= 0
Figure 16

2.0 The 10 bit Digital Negative

The Digital Negative produced by the Cineon digital film scanner is a digital representation of a typical motion picture negative film. Since its introduction in 1992, the Cineon Lightning digital film scanner has set the standard for digital film conversion, with digital film scanning services provided by Cinesite in Los Angeles and London.

2.1 Full Latitude

The Cineon scanner is calibrated for a 2.048 density range: this allows it to capture the fill latitude (density range) of the negative film with some margin at top and bottom. The scanner light source is balanced on film dmin so that the resulting digital image will have a neutral color balance if the film were exposed at the correct color temperature. The Digital Negative includes significant headroom above the nominal white point to handle over-exposed negative films and scenes with wide contrast range.

2.2 10 bits

With 10 bits per color over a 2.048 density range, the resulting quantization step size is 0.002 D per code value. This is below the threshold for contour visibility, which insures that no contour artifacts (also known as mach banding) will be visible in images. Furthermore, having 10 bits rather than 8 bits allows the Cineon scanner to capture the extended headroom of the negative film.

2.3 Printing Density

The Cineon Digital Negative is represented in printing density, which is to say, the density that is "seen" by the print film when the negative is printed with a standard illuminant. The illumination and color filters in the Cineon scanner were designed so that the effective spectral response of the scanner matches that of print film.

2.4 Normal Digital Negative

The characteristic curve for the Cineon Digital Negative is shown in the following figure. For a normally exposed negative film, the 90% white card has a code value of 685, the 18% gray card has a code value of 470, and the 2% black card has a code value of 180. Dmin (~1% black) has a code value of 95. With the scanner balanced on film dmin, the three color records of the film can be represented by a singe printing density curve.

Figure 9. Cineon Digital Negative (Normal Exposure)

8 bit Linear Representations

Many software packages store images in an 8 bit linear representation. When importing Cineon 10 bit images, it is necessary to convert the images to the appropriate 8 bit data representation.

3.1 8 bit Linear

If the software application is used with the display gamma of the graphics display monitor set to the default value of 1.7, then the data representation is 8 bit linear. The graphics display monitor corrects for the gamma of the CRT display with a hardware look-up table (LUT) set to gamma 1.7.

3.2 8 bit Video

If the software application uses a display gamma of 1.0, then the data representation is 8 bit video. In other words, the data has already been gamma-corrected for display on a video (CRT) monitor.

3.3 Keeping the most important 8 bits

In converting from the full-range 10 bit digital negative to an 8 bit 'linear or 8 bit video representation, the preferred method is to limit the density range that is translated to that of a normal exposure with scene contrast range of 100:1, or 6 2/3 stops. The resulting scene will have reasonable contrast when displayed on a standard graphics display monitor.

For a normally exposed Cineon Digital Negative, a 90% white card will be recorded at a code value of 685. The Dmin of the film is set to 95, representing the blackest black that can be recorded (approximately a 1% black card). In converting from 10 bits to 8 bits, the range of code values from 95 to 685 are mapped to an output range of 0 to 255. In between these end points, it is necessary to implement the gamma correction that is described herein.

3.4 Densities Above Reference White

The densities above reference white (nominally a code value of 685) will be clipped in this process. Specular reflections in the scene that would be recorded above this point will be clipped. In addition, if the negative were over-exposed, the reference white card itself could be recorded at a higher code value than 685. It is therefore necessary to specify the reference white code value in the scene before computing the conversion table.

3.5 Implementation of a Soft-Clip

Instead of a hard clip above reference white, it is possible to implement a soft clip that will compress highlight information and record it within the 8 bit range. This will be described herein.

4.0 User Specified Variables

4.1 Reference White

In order to compensate for overall negative exposure, the user must specify the code value of the reference white in the screen. The default value for a normal exposure is 685. If the negative is over-exposed, the true reference white in the scene may fall at a code value higher than 685. If so, this higher code value should be used.

4.2 Reference Black

The default value for reference black is 95, which is the code value for Dmin in the calibration of the Cineon scanner. If the negative is over-exposed, the true reference black in the scene may fall at a code value higher than 95. If so, this higher code value should be used.

4.3 Display gamma

The gamma of the graphics display monitor must be specified in order to define the gamma correction applied to the data between reference white and black. The default value is 1.7, assuming 8 bit linear data. If the data is to be converted to video space, then the display gamma should be set to 1.0 because the video space representation assumes that the gamma correction has already been applied to the data.

4.4 Softclip

The softclip defines a compression (knee) function that covers a range from (n) code values below reference white to (4n) code values above reference white. The default value is 0, which corresponds to a hard clip at reference white. The maximum value is a softclip of 50 code values. The softclip should be used carefully, and only if you believe that there is important highlight information above reference white, as it nonlinearly compresses highlight information.

5.0 Computing a Look-up Table for conversion to 8 bit Linear data

The following rules define the steps to compute the look-up table to convert 10 bit density data to 8 bit linear data. This look-up table is used for all three records. Color balance is achieved by subtracting an offset in density space before feeding the date into the look-up table. This look-up table is illustrated in Appendix A.

5.1 Determine the breakpoint for softclip

The breakpoint for the softclip function is determined by subtracting the softclip value from the reference white value:

Breakpoint = Refwhite - Softclip

The default value for Refwhite is 685, and the default value for softclip is 0 (softclip turned off).

5.2 Clamp black to 0

Output code values below RefBlack are clamped to a code value of 0 (no negative code values are permitted).

The default value for RefBlack is 95.

5.3 Compute a LUT between RefBlack and Breakpoint

OUT = 10 ^ ((IN-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7) * Gain - Offset

where,

Dispgamma = 1.7 for linear data, and

Gain = 225 / (1-10 ^ (Refblack-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7))

Offset = Gain - 225

5.4 Compute a Softclip above Breakpoint

OUT = (IN - Breakpoint) ^ (Softclip/100) * Kneegain + Kneeoffset

where,

Kneesoft = 10 ^ ((Breakpoint-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7) * Gain - offset

Kneegain = (255 - Kneeoffset)/( (5*Softclip)^(Softclip/100)).

5.5 Clip white to 225

Output code values above 255 are clipped to 255.

6.0 Computing a Look-up Table for Conversion to 8 bit Video Data

The following rules define the steps to compute the LUT to convert 10 bit density data to 8 bit video data. The approach is the same as the conversion to 8 bit linear data that is described in the previous section. The only difference is that the video data includes a gamma correction for display. This look-up table is used for all three records. Color balance is achieved by subtracting an offset in density space before feeding the data into the look-up table. This look-up table is illustrated in Appendix B.

6.1 Determine the breakpoint for softclip

The breakpoint for the softclip function is determined by subtracting the softclip value from the reference white value:

Breakpoint = Refwhite - Softclip

The default value for Refwhite is 685, and the default value for softclip is 0 (softclip turned off).

6.2 Clamp back to 0

Output code values below RefBlack are clamped to a code value of 0 (no negative code values are permitted).

The default value for RefBlack is 95.

6.3 Compute a LUT between Refblack and Breakpoint

OUT = 10 ^ ((IN-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7) * Gain - Offset

where,

Dispgamma = 1.0 for video data, and

Gain = 255 / (1 - 10 ^((Refblack-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7))

Offset = Gain - 255.

6.4 Compute softclip above Breakpoint

OUT = (IN - Breakpoint) ^ (Softclip/100) * Kneegain + Kneeoffset

where,

Kneeoffset = 10 ^ ((Breakpoint-Refwhite) * 0.002/0.6) ^ (Dispgam/1.7) * Gain - offset

Kneegain = (255 - kneeoffset)/( (5*Softclip)^(Softclip/100))

6.5 Clip to 255

Output code values above 255 are clipped to 255.

7.0 Computing a look-up table for converting 8 bit data to 10 bit film data

In order to import 8 bit data into the Cineon 10 bit database for manipulation for film recording, it is necessary to create a "normal" digital negative. In this case the only user-defined variable is the display gamma. The look-up table is illustrated in Appendix C.

OUT = 685 + log10 {(( IN + Offset)/Gain) ^ (1.7/Dispgamma)} / (0.002/0.6)

where

This look-up table will create a normal negative density range that is a reasonable match for the displayed image when printed at standard printer lights.

It is not necessary to use the inverse LUT that was used to convert from 10 bits to 8 bits. Rather, it is better to use a standard LUT that reproduces tha displayed contrast range and highlight compression. In other words, "what you see on the monitor is what you get on film", within the limits of an uncalibrated display.

8.0 Limitations of working with 8 bit data

In converting from 10 bit film data to 8 bit linear or film data, the extended range information above reference white is lost.

8.1 Limiting the Dynamic Range

In order to work within 8 bits it is necessary to limit the dynamic range of the scene, clipping (or rolling off) information above the normal white point. This is not usually a problem in scenes with a contrast ratio of 100:1 or less, but it can be a problem with a high-contrast daylight exterior. It can also be a problem if the scene contains spectacular highlights, like reflections off water, glass, or chrome. These highlights will be clipped and may appear artificial.

8.2 Limiting the Artistic Flexibility

With the Cineon 10 bit density representation, the full density range of the film is digitized by the Cineon scanner. The Cineon workstation carries and processes the full 10 bits so the artist has as much freedom to "print up" or "print down" the negative as he would in the traditional film printing world. No compromises or creative judgements need to be made at the time of scanning.

With an 8 bit representation, it is necessary to make some color correction decisions at the time of scanning. The scanner operator will decide which part of the scene to translate to 8 bits, cutting off the extended highlights or shadows which he decides are unimportant.

8.3 Introducing Contouring Artifacts

Reducing the density range when going from 10 bits to 8 bits is not enough to eliminate contouring artifacts. Even with scaling back the density range, the loss of two bits translates into approximately two times less precision. Fortunately, the natural film grain helps to conceal contouring.

For 8 bit video images (that have already had a 1.7 gamma correction applied), contouring is unlikely. However, for 8 bit linear images, contouring may be visible in the blacks when displayed through the gamma 1.7 look-up table.

Contouring is the most visible in gradually shaded uniform areas, like the natural darkening of the sky on the horizon.

Appendix A. Lookup Table for Converting 10 bit Density to 8 bit Linear (for Display on a Graphics Display Monitor with Gamma = 1.7)

User specified Variables:
RefWhite 685685685685
RefBlack 95959595
DispGamma 1.701.701.701.70
SoftClip 0203040
Computed Scaling Factors
Gain 257.78257.78257.78257.78
Offset 2.782.782.782.78
Breakpoint 685665655645
KneeOffset 255218202187
Kneegain 0.0014.6011.798.19
10 bit Density8 bit Density
00000
400000
800000
950000
1201111
1602222
2003333
2406666
2809999
32013131313
36018181818
40026262626
44037373737
48051515151
52070707070
56096969696
600131131131131
640180180180180
645187187187187
650194194194202
655202202202207
660210210221211
665218218226214
670227238229217
675236241231219
680245243233221
685255245235223
690255246236224
695225247238226
700255248239228
720255251243233
740255253247237
760255255250241
765255255250242
780255255252245
800255255254248
805255255255249
840255255255254
845255255255255
880255255255255
920255255255255
960255255255255
1000255255255255
1023255255255255

This site is not affiliated with the Eastman Kodak Company.
Cineon and the Cineon logo are registered trademarks of Eastman Kodak Company.
Questions, Comments, Suggestions and Corrections