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 + Kneeoffsetwhere,
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 - Offsetwhere,
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 + Kneeoffsetwhere,
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
- Offset and Gain are calculated as in section 5.3, using a
Refwhite = 685 and Refblack = 95.
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 |
685 | 685 | 685 | 685 |
RefBlack |
95 | 95 | 95 | 95 |
DispGamma |
1.70 | 1.70 | 1.70 | 1.70 |
SoftClip |
0 | 20 | 30 | 40 |
| Computed Scaling Factors |
Gain | 257.78 | 257.78 | 257.78 | 257.78 |
Offset | 2.78 | 2.78 | 2.78 | 2.78 |
Breakpoint | 685 | 665 | 655 | 645 |
KneeOffset | 255 | 218 | 202 | 187 |
Kneegain | 0.00 | 14.60 | 11.79 | 8.19 |
| 10 bit Density | 8 bit Density |
| 0 | 0 | 0 | 0 | 0 |
| 40 | 0 | 0 | 0 | 0 |
| 80 | 0 | 0 | 0 | 0 |
| 95 | 0 | 0 | 0 | 0 |
| 120 | 1 | 1 | 1 | 1 |
| 160 | 2 | 2 | 2 | 2 |
| 200 | 3 | 3 | 3 | 3 |
| 240 | 6 | 6 | 6 | 6 |
| 280 | 9 | 9 | 9 | 9 |
| 320 | 13 | 13 | 13 | 13 |
| 360 | 18 | 18 | 18 | 18 |
| 400 | 26 | 26 | 26 | 26 |
| 440 | 37 | 37 | 37 | 37 |
| 480 | 51 | 51 | 51 | 51 |
| 520 | 70 | 70 | 70 | 70 |
| 560 | 96 | 96 | 96 | 96 |
| 600 | 131 | 131 | 131 | 131 |
| 640 | 180 | 180 | 180 | 180 |
| 645 | 187 | 187 | 187 | 187 |
| 650 | 194 | 194 | 194 | 202 |
| 655 | 202 | 202 | 202 | 207 |
| 660 | 210 | 210 | 221 | 211 |
| 665 | 218 | 218 | 226 | 214 |
| 670 | 227 | 238 | 229 | 217 |
| 675 | 236 | 241 | 231 | 219 |
| 680 | 245 | 243 | 233 | 221 |
| 685 | 255 | 245 | 235 | 223 |
| 690 | 255 | 246 | 236 | 224 |
| 695 | 225 | 247 | 238 | 226 |
| 700 | 255 | 248 | 239 | 228 |
| 720 | 255 | 251 | 243 | 233 |
| 740 | 255 | 253 | 247 | 237 |
| 760 | 255 | 255 | 250 | 241 |
| 765 | 255 | 255 | 250 | 242 |
| 780 | 255 | 255 | 252 | 245 |
| 800 | 255 | 255 | 254 | 248 |
| 805 | 255 | 255 | 255 | 249 |
| 840 | 255 | 255 | 255 | 254 |
| 845 | 255 | 255 | 255 | 255 |
| 880 | 255 | 255 | 255 | 255 |
| 920 | 255 | 255 | 255 | 255 |
| 960 | 255 | 255 | 255 | 255 |
| 1000 | 255 | 255 | 255 | 255 |
| 1023 | 255 | 255 | 255 | 255 |
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