Color Correcting Color Negatives
This page has been one of the most popular pages on our site for all the many years since it was first put on the web. That is because the method described uses only the tools available in Photoshop (and many other photo editors) and if you are patient, it does better under that limitation than most other methods described on the web. We have left the original page available below because we know that people still want it. But you need to be aware that not long after first publishing this page we became less satisfied with the results and being well grounded in mathematics and physics we dug into the matter to find out why. To our surprise we found that it actually is impossible to correctly invert color negatives with Photoshop tools or even using profiling, as some scanner software tries to do.
To do the job properly we actually found it necessary to write a plug-in for Photoshop. The ColorPerfect plug-in has gained a good following of enthusiastic users and there are now PC and Mac versions to correctly invert color negatives in Photoshop, Elements, and the less costly but very powerful Photoline photo editor that is gaining in popularity. See our Plug-Ins Page for full details and a demo download of the plug-in. See our Color Negative FAQ for more information about digitizing color negative images. CFS-244 - Negative to Positive will download the full mathematical report of what we found (Use Back Button to Return to this page).
Originally it had been our intent to revise this page in accord with what we determined in the mathematical analysis, but it turns out to be impossible to do what is required with precision within the confines of Photoshop. We have reviewed the material below and still believe that it is useful, helpful, and accurate for the most part, although the approach and explanations would be somewhat different if we were to rewrite them now. We used the described approach with what we then regarded as success for some time.
Actually, the method itself is not very complicated, but to use it successfully, it really is necessary to understand how it came about and why it produces more accurate color, and that is complicated. Confusion and misinformation are particularly rampant in this area and we believe that you will benefit from a better understanding of the situation even if you do not finally adopt our methods. It has taken us a long time to sift through the misinformation to the point where we could write this and we fully expect that there will be revisions in the future as we continue to untangle the confusion. Once you become aware of it, the product of this confusion is often visibly evident you may even see it in your own past work, as we do. See Color Integrity in Digital Imaging for a full explanation of what is happening and how it is the result of a vision psychology trap.
Often we hear or read that the problems in dealing with color negatives are due mostly to the color mask, the pronounced orange, blue, or other color cast seen on most types of color negative. This is completely untrue. The mask is equivalent to a uniform colored filter sandwiched with a negative color image that is more accurate than could be obtained otherwise and more accurate than any positive color film. All that is necessary to completely correct for the mask is to add a filter of complimentary color to the mask. See Technical Explanation of the Mask as a Simple Colored Filter to learn more about the mask.
There are several real reasons that often make color negatives more difficult to deal with than are color positives. The first and most important is that it is easy to tell when working with a good color positive slide or print. If the slide or print is not good, expectations are realistically lowered and the image may not even be bothered with in the first place. If a poor image is used, any improvement digital processing achieves is a pleasant surprise even if the final result is still lacking.
Even experienced workers may have difficulty judging the quality of a color negative by looking at it. It is also widely appreciated that even excellent color negatives can come back with "machine prints" that are poor quality. So, unlike working with positives, there is no visual pre-screening of poor quality images and no way to be conscious of a poor quality starting image. Every image is expected to come out perfectly and there is disappointment when it does not. The fact that poor quality color negatives are not easily identified leads to another, more insidious problem. It is difficult to know when film is being poorly processed and so, which processing services to avoid. Poor processing, storage, exposure, and the like are the principle reasons for serious problems in correcting color negatives.
Another principal source of problems with color negatives is that color negative materials are "paired." That is, the manufacturer produces color negative film and color print paper that are designed to work together as a pair. The principal pairing is through photographic gamma, or contrast. Typically, in order to get better exposure latitude for the film, the film is made to be low contrast (and so able to accurately record a wider range of light exposure levels) and the paired paper is made high contrast. The low contrast negatives produce normal contrast prints when printed with the correct high contrast paper. There is no magic amount by which the film's contrast should be lowered, so, like the mask color, that also varies widely among film types. The red, blue, and green sensitive layers of the film can even be set to have different contrasts, intended to be corrected by differing contrasts in the paired print paper. This problem is difficult to correct automatically and the approach to making this correction is a principal difference between different scanner software packages.
Setting a Pattern of Work
Getting the best quality from a color negative often involves quite a bit of work, using the tools available in Photoshop. When making up general proofs or small prints where we are not so sensitive to top print quality, we let the scanner software do its trick, producing lower resolution positive image files which can be tweaked to get what might be called reasonable color. When we use the method described below, the difference between what we get and what previously had been accepted as reasonable color is sometimes subtle and other times quite startling. For a large print it is often well worth the effort. Nonetheless, some images just will not respond to the method described below, even for an experienced worker. When this happens it suggests a negative which has actual problems due to improper processing, improper scanning, or the like. If we really need to do the best we can for such a problem image, we revert to the method described in Color Balancing Difficult Cases. That method is entirely different and often produces acceptable color although not usually accurate color when other methods have failed.
Scanning the Negative
For making large prints, we have the scanner deliver a "linear 16 Bits/Channel" image file, sometimes called a raw image. Although often called "raw," the negative image delivered typically will not have the same color cast as the negative being scanned (typically orange, red-orange or blue), so it obviously has been altered from a true raw scan. (See Testing Your Scanner.) So, depending on the scanner and the software, unknown adjustments are already present. If the image is described as "linear," it is supposed to mean that the pixel values are proportional to the amounts of colored light passing through the corresponding points on the negative, although the constant of proportionality may be different for the three channels, Red, Green, and Blue. This direct proportionality between light intensity and pixel values is crucial to the initial parts of following method. It comes as a surprise to many people that when working in Photoshop, the pixel values typically are "gamma-encoded" so that they are far from being proportional to the light intensities they represent. Even less well-known is the fact that this lack of proportionality can introduce major distortions to seemingly straightforward color corrections in Photoshop. However, we are working with negative images and it is so disastrous to "gamma-encode" a scanned negative image that if your scanner says it delivers a linear negative image, it probably does, any unannounced adjustments involving just proportional scaling and not gamma adjustments.
Understanding the Parts of the Levels Tool
Most of the adjustments we make will involve the Image→Adjustments→Levels tool.
It is useful to first review and explore this tool. The Channel pulldown allows selection of Red, Green, Blue, or RGB, and the information displayed below in the dialog box will be different for each channel. Pixels for the image are each represented by three numbers, one each for Red, Green and Blue, each number ranging between 0 and 255. This comes from 8 Bits/Channel, because 8 binary bits can represent integers in the range 0→255. In Photoshop the same range is also used for 16 Bits/Channel; this can best be understood by thinking of the pixel values as not limited to integers (234), but also able to take on fractional values (234.567) as well. The black graph in the middle is the histogram, which shows the proportion of pixels in the entire image that take on each particular integer value, from 0 at the left side to 255 at the right. In the example pictured above, few if any pixels take on values near 0 or near 255, while many pixels take on values near and just below the midrange, 128.
There are three triangles under the histogram which are adjustment sliders. These sliders correspond to the three numbers in boxes above the histogram. The numbers will change as the corresponding slider moves or the slider will move if its number is changed. The leftmost is the Shadow or "black point" slider, and can take on numbers 0→255, usually near the lower end of that range. The rightmost is the Highlight or "white point" slider, also take on numbers 0→255, usually near the top end of that range. The center is the gamma or "mid-gray" slider and takes on values 0.1 to 9.99 and so obviously operates completely differently. Below the sliders is a band also with sliders at either end. The left slider works in conjunction with the Shadow slider directly above it, so we will call it the Lower Shadow slider. Moving the lower slider has exactly the opposite effect to moving the corresponding upper slider. In the case of the Green channel as shown above, moving the Shadow slider will make the image more magenta, while moving the Lower Shadow slider will make it more green. Similarly, the right slider below the band works in conjunction with the Highlight slider directly above it, so we will call it the Lower Highlight slider. Again, moving the lower slider has exactly the opposite effect to moving the upper slider. In the case of the Green channel as shown above, moving the Highlight slider will make the image more green, while moving the Lower Highlight slider will make it more magenta. Because this is true, the Lower Highlight slider can be thought of as a continuation of the Highlight slider. For example, if we are working with the Red channel and we want the image to be more cyan, we can move the Highlight slider to the right. When the Highlight slider has been moved all the way to 255 and we still want more cyan, we move to the Lower Highlight slider to the left from its normal setting of 255.
Finally, to the lower right of the Levels tool dialog are three picker-dropper buttons. These also correspond to the three sliders under the histogram. From left to right the pickers are intended to set the black point, gray point, and white point, respectively and in use each picker will affect only the corresponding slider. For instance, the white point picker will affect only the Highlight slider or the Lower Highlight slider. When the Highlight picker button is pressed, clicking the picker-dropper on a point within the image will force that point to be white by adjusting the Red, Green, and Blue Highlight sliders. Of much greater importance is that the Highlight picker-dropper can force the clicked point to match any selected color instead of forcing it to white. This is done by first double-clicking the Highlight picker button. This brings up a dialog:
As we cover more fully in Routine Color Balancing? we use this color picker dialog in conjunction with a specially prepared target image with reference colors that are specifically important to our work. As a starting point toward developing your own reference image, we offer:
Which has a grayscale gradient, a sky tone gradient, and three flesh tone gradients. While this image will be used in the exercises here, do not rely on this simple example for general usage.
The Special Importance of "Highlight" Adjustments
In the Highlight adjustment the Highlight picker-dropper is used to match a specific patch in the image to a specific reference color. This will typically be a gray, flesh, sky, or similar common tone. The adjustment is achieved entirely using the Red, Green, and Blue Highlight sliders or Lower Highlight sliders of the Levels tool. The effect of moving the Red Highlight slider to the left is to increase the light value of red in each pixel by an amount proportional to the red already present. This affects the entire image and is exactly the effect that adding a red color compensation filter (with a corresponding enlarger "f-stop" adjustment) would have. So the entire action of the Highlight picker-dropper adjustment is precisely that of making corrections using the appropriate color compensation filters. Making any major color adjustments by this method is really the only way to preserve the color integrity of the image assuming color integrity is there to start with. Some care must be exercised when using the Lower Highlight slider. When this slider takes on values below around 235 to 240, Photoshop makes the proportional effect progressively larger than it should be yet another Photoshop peculiarity. The effect is still that of a colored filter, but the increased effect can be annoying when trying to add a calculated amount of, say, Red, to keep in balance with similar changes in the other channels.
The Gray slider is a gamma adjustment and when applied individually to the color channels (as is commonly done) leads to a color "balance" that varies according to how light or dark an image area is. We recommend saving color adjustments via the Gray slider as a last resort and not using the Gray slider on the color channels at all if possible. Any gamma adjustment of a color channel will compromise the color integrity of the image. (But see Color Balancing Difficult Cases, where we actually use color gamma adjustments to rescue problem images.)
That leaves us with the Highlight slider and Highlight color picker as the primary color balance tool. By its nature, color negative material often even usually will require a significant black point adjustment, and as we have explained, we prefer not to use the Shadow slider adjustments if possible. Fortunately, we start with a negative image. Thus, to achieve the "black point" correction, we can do a "white point" adjustment on the negative image, invert the image to positive, and perform another white point adjustment on the positive to complete the color correction entirely with the Highlight tools.
To better follow this process, download trillium.zip, a zipped collection (2.3 MB) of a 16 bit linear scan of a trillium and a few other Photoshop files. The trillium image is as-scanned, except for reducing the pixel size to something manageable for a web page download. This image was chosen because it does illustrate typical but not trivial behavior reasonably well and it has no obvious color reference points in it that would simplify the job. For this example, the differences between the results of the method described here and the Photoshop Autocolor results for the example image are subtle but real. If you have difficulty seeing the differences, you may want to experiment with an example that shows pronounced differences: Fall Test.
Below are the Red, Green, and Blue channels of the linear 16 bit scanned color negative image, trillium. Note that the Red channel has a fairly long region where the histogram is zero or nearly zero on the left side, and both the Red and the Green channels have fairly long regions where the histogram is nearly zero on the right side. Since this is a negative, this means that the deep shadows have only blue and the bright highlights are cyan, missing red. While this condition is not impossible in an actual image, normally the shadows are more nearly black than dark blue and the highlights are more nearly white than cyan.
In all likelihood both the Red and the Green histograms should be about as wide as the blue. In fact, as we will see below, many times this sort of adjustment is all that is required, but first we will take a more general approach.
Since we have a negative image, to achieve the "black point" correction, we can do a "white point" adjustment on the negative.
First we read the negative image trillium.psd into Photoshop and also the reference image gradient.jpg. Adjust the positions of the images until at least the gray gradient will show to one side of the trillium negative when working on it. Before we start operating on the trillium image, we need to be sure the picker-dropper tool is set properly. Click the dropper button on the main menu and set the sample size to 5 x 5 average. Depending on the version of Photoshop, this may be available as a pulldown near the top of the Photoshop display or as a choice on a menu obtained by "right" clicking when the dropper over an active image. This averaging of the picked color is less important for this low resolution example file, but very important when working with high resolution images.
Now use the Levels tool directly on the negative image: Image→Adjust→Levels. Click the Highlight picker-dropper, which will be used to set the shadow. Using the dropper directly would drive the shadow to pure black. Normally shadows are not pure black, so we will set them to a very dark gray by matching to a very light gray. The shadows can be made slightly blacker later, if desired. Now double-click the same Highlight picker button, so that the "Color Picker" dialog box appears. Select a very light gray from the gray gradient. We used Red=240, Green=240, Blue=240. Of course it is possible to set these values by typing them into the dialog box, but it is more instructive to select the gray from the gray gradient. Click OK to exit the Color Picker. Now click the dropper in the very light area (shadows) on the left of trillium, just below the center. Watch the histogram as you click. On the whitest (deepest shadow) areas, the histogram will gravitate most to the left.
Use the pulldown to check the histograms for Red, Green, and Blue. Our results (which can be loaded from the NegLevels240.alv file) were the following:
Note that all three Highlight sliders have been moved to the left. None of the sliders have been moved left into regions with significant data, and it can be seen that the sliders have allowed about the same amount of "headroom" above the bulk of the histogram data although clearly there are some pixels represented in the Blue headroom and a few pixels in the Red headroom. This will be found true of the majority of but certainly not all normal, photographic images and good color balance can often be obtained by manually setting the Highlight sliders so that they all have approximately the same headroom.
It is worth experimenting with using the Highlight dropper to set the shadows using different shades of light gray. When the reference gray is too light, the sliders will be moved too far to the left and into the histogram data, trimming back real pixels (and shadow detail). Normally this should be corrected, perhaps by selecting a darker gray as a reference. When the reference gray is too dark, the sliders will be moved too far to the right, eventually enough so that the Lower Highlight sliders will be moved to the left. In some cases that may be necessary in order to get a proper correction, but it should be avoided if possible (perhaps by selecting a lighter gray as reference.)
Once the shadow settings are satisfactory, click OK to exit the Levels dialog. There may be a message box, "Save the new target colors as defaults?" Answer "No" to this message both here and whenever it appears and save a lot of confusion. Now form a positive image using Image→Adjustments→Invert. The resulting positive image will appear faded. This is normal. It is best to continue to the next step, the "white point" color correction, with the image as is. Properly correcting for the faded appearance of the image is very difficult at this stage.
With the trillium image still active, start the Levels dialog again. Again we will use the Highlight picker-dropper, and double-click it to set its reference color. In this case, the reference may be a light gray or any reasonably well-known image tone, such as a flesh tone or sky tone. Trillium has no really good reference. The inverted "V" pattern at the top of the image is the eaves of a house, the lighter areas being painted white. But the eaves are in shadow and the trillium is in sunlight. Nonetheless, let us try to match the eaves to the appropriate light gray, just as we did with the shadow on the negative previously. As before, it is instructive to try and estimate the proper reference gray tone, and as before, if the Highlight sliders are too far to the right, the reference gray is too light; too far to the left, or spilled over into the Lower Highlight sliders, too dark. We finally used Red=160, Green=160, Blue=160, and our result can be loaded from the PosLevelsEaves160.alv.
The trillium is too red, and just look at the sky! Note that the Highlight slider on the Red histogram is over into the data area, and for the Blue, we are over the end, into the Lower Highlight slider. But the shadow areas, mostly the house, have pretty good color.
For the Red histogram, move the Highlight slider to the right, gradually taking it out of the data area. Note how the trillium and sky color improve dramatically. There is an important principle at work here; the "white" of the eaves is nearly as good a reference color as a gray card would have been, but even a good reference "gray card" will be a little off color if it is not lighted correctly in the scene. Found objects are often not correctly lighted and typically are not quite matches for the reference color, whether it is gray, flesh, sky, or whatever. Ordinarily it will be necessary to adjust the Highlight sliders to compensate for this. But a well-chosen reference will make the touch-up adjustment minor and fairly obvious.
Try using other reference areas. There is a large, out of focus inverted "V" at the lower left. Try to match it as a gray. We found that a gray of 230 worked reasonably well, giving us the result in PosLevelsWhite230.alv. Clearly there are also some bits of blue in the sky area, so try matching those. We found a sky of Red=247, Green=251, Blue=252 gave us the results in PosLevelsBlueSky247251252.alv. We think all of these are a bit off in the opposite direction to the eaves. But just as when the eaves-based correction was too red, a minor adjustment of the Highlight sliders is all the touch-up that is required.
When the image is satisfactorily color corrected, what amount to image contrast and brightness can be adjusted. There are actually two reasons that these need adjustment. First, color negative material is normally made as low contrast, intended to be compensated by printing on a high contrast paper that is part of a matched pair. Second, the image must be video gamma-adjusted to follow the current image-storage conventions used by most PCs, Macs, and Photoshop. While the necessary PC video gamma adjustment is known, the original low contrast characteristics of the film generally are not. Complicating this, the adjustments we have made and those which may have been made for us by the scanner software already have affected the contrast and brightness. We do need to point out that this uncertainty about brightness and contrast is always true and not unique to this method; we must make a contrast/brightness adjustment by what amounts to a guess at some stage in the treatment of color negatives. By delaying the adjustment until after the color corrections have been made there will be less damage to the color accuracy when we make this guess.
The adjustment sometimes can be made using the gray gamma adjustment available in the Levels tool. Simply activate the Levels tool and adjust the center (gamma) slider of the grayscale histogram (RGB) until the image looks best. This certainly would be the proper approach if the only adjustment were for the PC video gamma, but we must also correct for the lower film contrast. This is an adjustment in photographic gamma which is not normalized (constrained) like video gamma and the Photoshop gray gamma adjustment often will not adequately correct for it or the other adjustments that have been made. Our experience is that the Curves tool is more appropriate for this adjustment.
Use the Image→Adjustments→Curves tool. We will work only with the RGB total curve. In general it is a good idea to stay away from the separate curves for R, G, and B unless you are sure of what you are doing or have a lot of time to experiment.
At the start, the curve will be as on the left, a diagonal straight line which means no change in the image. Black areas of the image are represented at lower left and white areas of the image are represented at upper right. Click anywhere on the line and drag, a single square will appear, center diagram, and the curve can be pulled away from the diagonal. As the curve departs from that diagonal line, the image will be changed accordingly. The small square can be slid anywhere along the curve, but note that as the curve is pulled away from the diagonal, the shape of the curve is the same no matter where along it the square is placed. It will always be bowed out more at the bottom than at the top. This single point adjustment is essentially the same as the gray gamma adjustment in the Levels tool. In the center graph, near the black end the curve slopes more gradually than the diagonal, so the darkest shades are compressed to a lower contrast, but the curve slopes more steeply toward the white end, so the lightest shades are expanded to a higher contrast. Overall, this makes the image darker.
Release the mouse button and click again on the curve, some distance from the small square you have left. A second square will appear which can be dragged while the first square remains stationary. Placing several such squares along the curve controls its general shape, but the behavior is not intuitive and requires practice or at least trial and error to work with it. Control points, as the squares are called, can be removed by pulling them past the edge of the graph border. The graph on the right is the one we chose for trillium and can be loaded from Curves.acv. Experiment with moving the several control points to get a feel for the tool. Our result was:
There is every possibility you may prefer a different end result, but we think that with the sky cropped, some fairly minor local adjustments and at full resolution this could make a fine large print. This image is more difficult than most in setting the gray tonal balance (brightness/contrast).
Sometimes it helps to separate out parts of an image that appear to have different lighting and color balance them separately. While that is not strikingly true of this example image, it is useful to know how to easily approach such selection while working in 16-Bits/Channel mode. Our approach typically is to temporarily switch to 8 bit mode: Image→Mode, check 8-Bits/Channel, and make the selection using all the facilities of the 8 bit mode. Tools such as the magic wand select, color range select and other smart selects thus become available and even can be used on individual channels if desired. After the selection is tweaked in, typically with the lasso tool, save the selection in a different image file. Select→Save Selection, then in the Document pulldown, select "New." Name the selection and save it with OK. A new image file will appear containing just the selection and no actual image. Save that file with a descriptive name to save the selection for future use. Now close the actual image file without saving it and re-open in order to be in 16-Bits/Channel mode again. Select→Load will allow loading the selection from the selection file just produced, as long as that file is also open in Photoshop. We have included in the zip file a Photoshop file with a house-in-shadow selection for those who might like to play further with the image.
If you have gotten this far, you may want to experiment with a more difficult example that responds less well to standard approaches: download Fall Test (2.3MB). Finding a reference, gray or otherwise, is difficult in this picture. There are some branches visible and there is a fairly gray object nearly on the diagonal about 3/4ths of the way to the upper right corner. Very likely any reference you find will require adjustment of the Highlight sliders to achieve good color balance.
Technical Explanation of the Mask as a Simple Colored Filter
The colored dye molecules used to form images in color film are chemically combined with "coupler" molecules so that the combined molecule is colorless transparent. When the film is developed, light exposed grains of silver halide are converted to silver metal to form the image. Coupled dye molecules adjacent to the sites where silver grains are formed break apart, releasing the dye molecule in its colored form, and the dye molecules form the colored image. In color film the dyes are normally: magenta, which passes red and blue light freely but blocks green light; cyan, which passes green light and blue light freely but blocks red; and yellow, which passes red light and green light freely but blocks blue. The problem is that very few types of dyes can be made to work chemically as required to form the coupled compounds that properly break apart during film development. Consequently, the actual dyes that are used are not at all perfect. For instance, the magenta dye typically blocks some of the blue light it is supposed to pass freely, and the cyan typically blocks some of the blue and green light that it is supposed to pass freely.
A clever way of improving the dye action was introduced very early in color negative history. Instead of combining the dye molecules with coupler molecules that made them colorless, the dye was combined with a coupler chosen so that the compound had exactly the same light absorption as the unwanted absorption of the dye molecule. So, the magenta dye would be combined with a coupler producing a yellow compound so it would absorb some blue light just like the magenta dye, and the cyan dye would be combined with a coupler producing a pinkish compound that would absorb some blue and green light, just like the cyan dye. The pinkish and yellow colors together formed the orangish mask. If during film development some silver halide was reduced to silver, causing a nearby magenta dye molecule to break loose of its coupler, that meant the yellow coupled dye molecule had been broken and the yellow was gone. So, throughout the image, either a magenta dye molecule would be present or the yellow coupled dye molecule remained. Either way, the same amount of blue light would be absorbed, so the effect is like placing a yellow filter over a clear but more perfect negative. The same action with the cyan dye places a pinkish filter over the whole image. So, the entire mask effect is a filter that can be cancelled by adding a filter complimentary to the mask color.
Testing Your Scanner
A simple test can give some idea of just how raw or linear a scan your scanner software delivers in linear or raw mode. Take two negatives and put them in your film scanner with the edges very slightly overlapped in the center of a frame, being sure there is no open gap between the negatives. Scan and save that frame as normally for linear or raw mode. Now move one of the negatives very slightly so that a tiny gap opens between the negatives, so that a narrow sliver of light will pass through between the negatives. This small "light leak" should not effect a raw scan, but will noticeably disturb any compensating adjustments (i. e. un-raw actions) the scanner may be making. We place this light leak in the center because some scanner software will ignore it if it is at an edge, invalidating the test. Scan and save the light leak frame as normally for linear or raw mode. In Photoshop, examine and compare the Levels histograms from both frames, comparing the Red channel versus the Red channel, etc. For a true raw scan, the histograms of the two frames should be very similar when comparing similar channels except where the light leak shows very near the highlights end of each histogram. Even if the scans do not match well (as is likely), the scan may still be linear. For all three of the R, G, and B channels for both pictures, move the Shadow slider and Highlight slider to trim off the zero tails of each histogram, moving the slider up to just where the data starts to rise. Try to be as consistent as possible in doing this. For both frames, OK, to save the result. Now bring up the Levels tool again, showing the adjusted histograms, and again compare the Red channel versus the Red channel, etc. If they are very similar except at the very end of the highlights of each histogram, the scanner is delivering a linear scan. If one set of histograms seems to be skewed relative to the other, the scan is not linear.
As these methods are original with us, you are welcome to use them in an article, a course, or a book but please credit C F Systems and www.c-f-systems.com
Go to C F Systems Home Page