The photo editor Curve Tool is similar to, but more versatile and more powerful than, the Levels Tool (histogram). The intent on this page is to explain the action of both tools (Levels and Curves), but specifically also to show HOW the two tools do many of the same jobs. Understanding concepts of how they are similar helps to understand both.
Our starting point is to assume you know that the histogram shows the distribution of the actual tonal values in the image. Specifically, it is a bar chart of the relative number of pixels with each tone from black at 0 to white at 255. The taller the histogram graph spikes just means more pixels exist with that tone value. There is no "correct" value. Black scenes will have many dark pixels, and white scenes will have many bright pixels. The histogram is not a light meter, it only shows what did happen (it has no clue what ought to happen). There is really no great detail we can identify, or that we even care about, but it does show the overall extent from dark to light tones (relative to our exposure). We do think in terms of adjusting exposure to align towards the right edge, to be "bright enough" - but primarily the main point of looking is to specifically insure no clipping is there at 255, which would be detail lost due to overexposure. But which of course, any near right alignment necessarily assumes our scene actually does have bright data which ought to be far right (not always true of every image - for example, probably true of the picture of a polar bear on the snow, but not true for the black cat in a coal mine). So it is not about where it ought to be, unless we know where it ought to be. But we do want dark things dark, and bright things bright (contrast). There are two types of common histograms, very different, see this page. The histogram data values are also gamma encoded, see this page
The Curve tool may actually seem to be simpler to understand than Levels, because it is graphic. It is same as any graph, associating points along the horizontal axis with points along the vertical axis. Basically, the curve tool is a graphic "response curve" of the response you want. It just maps tones, a conversion from "input" tone to "output" tone (a before and after concept, of what this tool does). Input is the image data that you read in (before). Output is the image data that you will write out (after)... with modified tonal values, which is the purpose of editing. The graphic curve is the response curve of the tool, the specific map to convert input to output. The histogram is shown faintly in the background, which is the data which will be processed, which could be a guide. Shown next is a standard Curve Tool (from Photoshop):
Input is shown across the bottom, and Output is shown upward on the right. The gray scale gradients show the tone values of the scale, and they have numerical values too (you may or may not notice that these scales in a grayscale image's curve tool probably are reversed to have white at the origin, but everything is still all the same).
The default curve is a straight linear line, from lower left to upper right, so that all tones map to their unmodified original values. The default of the 45 degree line is that 255 input is mapped to 255 output, midpoint is mapped to midpoint, and 0 input is mapped to 0 output, which is no change at all.
However, the shape of the curve is very fluid, and we can simply drag the curve around, to be any shape that we want. Here, in this case (standard S-Curve for contrast), we did three things:
This new curve is the new response curve of the tool, mapping the tool input to its output. The marked Red line arrows above (for example) shows how we read the Curve, and shows that this new curve shape maps Input 192 to be Output 222 (brighter, instead of the default unmodified 192 output). If we also imagined these imaginary red arrows in the bottom half of this Curve, those tones would be made darker (lower output, this case). Then all the other tones follow the curve too, as shown. It is really this simple, just a simple response Curve, showing what it does (whatever you want it to do). Often the exact numbers are not important to us, but we do work with the zones, like brightest brights, darkest darks, middle tones, etc. This example curve shown is called an S-Curve, which creates brighter brights and darker darks, which causes greater image contrast (see more at Contrast at bottom of page here).
Both tools (Levels and Curves) provide the default RGB map, which affects all three RGB channels equally (changes tones). Or we can select and modify the three RGB channels individually (changes tone and colors).
The two more common uses of the curve tool are shown near page bottom, but first, let's detail the way these two tools can do the same jobs.
The Original image. All images on this page are this one same exact image (repeated a few times below), with different degrees of example processing of course. My settings are all overdone, without any logic image-wise here, just to show a recognizable change by the tool. Obviously we use the tools to make a desirable change to the image. The histogram of this image shows a huge spike near the white end, which is the white background, and the white cup. If we had used a black paper background, the histogram would look very different, with a spike near the black end.
The dramatics first, because it shows the idea well about how the Curve Tool works. It simply maps input tone values against the Curve, to compute new output tone values.
For example, to invert the image (color or B&W), just drag the lower left end of curve up to the top, and drag the upper right end down to the bottom. Then the curve slope runs downward at 45 degrees to invert a negative image. Because then, input at zero (black) becomes output at 100% (white), and input at 100% (white) becomes output at zero (black). This is the standard inversion technique. The idea of course is that negatives become positive. Inverts colors to their complement too, orange becomes blue, red becomes green, etc (180 degrees across on the color wheel). The unmodified 45 degree inverted curve maps 255 to 0, and 0 to 255, which numerically, all RGB components become (255-previous), or (255-255=0 and 255-0=255), which is inverted. As marked in red, a bright value at 3/4 scale outputs at 1/4 (darker), and at 1/4 outputs at 3/4 bright. This inversion works fine for B&W negatives, and would work for color negatives, except they have the orange cast which is very significant, and quite difficult. We could then drag this new slope to be other response shapes too (see this page for more of that, concerning color negatives).
Levels cannot do Inversion, or many special intricate curve shapes, but otherwise, the images are in pairs below, to show both of the Levels and Curve tools doing same thing, to show that in many cases, they actually do the same thing, just in slightly different ways. Realizing this similarity helps understanding. The Curve Tool does anything Levels can do, and much more too.
I am not knocking Levels in any way, I use Levels greatly more than Curves, very handy. Because, Levels is more specific purpose. Levels only has five adjustment sliders. Four mainly only specify end points. In organizing it here (related to Curves), these four Levels sliders are the Top Right corner of the Curve, moved in or down, and Bottom Left corner of the curve moved in or up. Moving either corner inward is Levels Input (the more common use), and either corner moved vertically is Levels Output. The fifth Levels slider can move one point to bow the curve up or down, but the curve tool can do that too of course, or move and reshape it in about any other way. But otherwise, the four Levels controls simply limit the Curve in these four ways.
By definition, the White Point is the end point at 255 (right end of histogram). If you move it, the data is shifted so that this new point selected will become the new White Point at 255. Anything brighter will be clipped to become 255.
The Original image.
Levels, White Point 205 (205 becomes 255). Any value above 205 becomes 255 (clipping).
Whites got whiter, including the cup and the background (205 became 255, very white).
Curve, White Point 205 (205 becomes 255). In both tools, any value 205 to 255 becomes 255 on output (clipping), but now the Curve explains graphically why - it seems more clearly why. It is simply the shape of the response curve, how it specifies the tones are to be mapped. You can drag the Curve, or you can slide the White Point/Black Point markers on the bottom scale.
Some big things to know:
Both tools make the new marked White Point become 255, and any values above it are clipped (all those values above it become 255 too - a loss of detail). Changing the composite RGB slider (as shown) changes each of the three RGB channels in the same degree, which mostly increases overall brightness (towards white), instead of changing color balance. But changing the individual RGB channels differently skews and changes color, perhaps an intentional change of course. An original idea of White Balance was for the maximum extent of the data in the three RGB channels to be at the same White Point. Photoshop Auto Levels still has this action as default (Enhance per channel contrast) to align the individual end points of the three RGB channels while clipping very slightly (0.1% - see Options in Levels). Sometimes Auto Levels fixes terrible color (faded colors), sometimes it hurts good color. We can use Undo.
These White Point tools are the SAME action (same thing) as the Exposure slider in Adobe RAW - this is what it does. White Point leaves Black Point where it was, but stretches White to more "exposure". For "less" exposure, use the Output Levels below. The Black Point tools are the SAME action as the Blacks slider in Adobe RAW.
A BIG DEAL we should know: In Adobe, both the Levels and Curve Tools, and also these Exposure and Blacks tools in Adobe RAW (ACR) have the default that if you hold the ALT key (or Mac Options key I think) down while sliding these, the image preview changes to be blank (all white or all black), and then shows only the pixels that have been clipped at present setting (shows those pixels which now have value 255 or 0). The curve tool also has the check box to show this, but it is not default. This is quite powerful to show what you are actually clipping, to let you see what is actually being clipped, and thus is losing detail. Sometimes losses matter, sometimes it doesn't matter, but this is how you can know what is really happening. Same ALT key action works on Black Point too.
The usual way this tool is used is to set the White Point to the point where the image data actually begins,
more as shown in the tiny picture here. This excludes the range of tones not present in the image, and maximizes the contrast of those present. The extent of the data actually present becomes White at 255. Clipping any trailing tail here is often a good thing to do. Black point too, same thing.
The Yellow flower on the cup is the brightest thing in this image, but on images with a white background, often that background is the brightest thing, and makes the largest spike on the histogram. Sometimes placing the white point at that white spike is good to make the background actually be white (something like shown done here, but this one is different, the yellow flower is the brightest here (holding ALT shows that instantly).
These tools (in Photoshop) have the three eyedropper icons in them, colored black, gray, and white.
Accurate white balance really makes a tremendous difference, and this is one tool we should learn. When your flash pictures seem OK, but they are just yukky anyway, it's probably white balance. We often intentionally include some neutral color object in the image, or in a test image, for this purpose - which could be a white balance card, or a gray card, etc. White paper is said to have brighteners which can skew its color, but most cheap copy paper or craft store thicker paper normally works well for me (vastly better than nothing). However I prefer to use this actual White Balance Card. This eyedropper tool makes White Balance life be fairly simple, especially with RAW images.
By definition, the Black Point is the end point at 0 (left end of histogram). If you move it, the data is shifted so that this new point selected will become the new Black Point at 0. Anything darker will be clipped to become 0.
The Original image.
Levels, Black Point 60 (60 becomes 0). Blacks became blacker.
Levels, Black Point 60 (60 becomes 0)
In both tools, any value 0 to 60 becomes 0 on output. This makes the new marked Black Point become 0, to now be as black as possible.
This is same as "Blacks" in Adobe RAW. Can hold ALT key to see clipped values in either one.
The Output White Point marks the tone that will become the brightest tone in the image. If you move it, any data at 255 becomes this lesser tone, and there will be nothing brighter.
The Original image.
Levels, Output 200 (maximum white level, 255 becomes 200, white becomes more gray)
Curve, Output 200 (maximum white level, 255 becomes 200, white becomes more gray)
This might be used to prevent a screened image to retain slight evidence of the screen dots, instead of printing nothing on blank white paper.
Both tools make the original value 255 move down to become the new marked White Output point, as bright as it gets, a maximum in the image, nothing brighter than this value. The curve shows there is no possibility of anything brighter than this point.
The Output Black Point marks the tone that will become the darkest tone in the image. If you move it, any data at 0 becomes this greater tone, towards gray from black, and there will be nothing darker. This is typically used in prepress printing, to prevent excessive build up of black ink in dark areas.
The Original image.
Levels, Output 60 (minimum black level, 0 becomes 60, black becomes more gray)
Curve, Output 60 (minimum black level, 0 becomes 60, black becomes more gray)
This is sometimes done in printing processes (like newspapers), raising black to be a few percent lighter, to prevent the ink from being a dense blob buildup problem. In more extreme degree, it could also be used to create faint "ghost" images.
Both tools make original value 0 move up lighter to become the new marked Black Output point, as dark as it gets, a minimum in the image, nothing darker than this value is possible.
The editor tools named Brightness and Contrast are definitely NOT the best tools in the bag. Levels and Curve do it better, are much more versatile, and offer more control.
The separate tool named Brightness simply adds a constant to all pixel RGB values, to shift the data graph to the right, which is detrimental to contrast (whites are clipped, and blacks become gray). Watch the histogram as you shift it. That is really too dumb to consider. These Curve and Levels tools below do not affect the end points.
The Level and Curve tools are not numerically the same here, but they do the same thing (raising center of curve) to make the image brighter (or, they can lower it to darken the image too).
The Original image.
Levels, Brightness - the center slider raises the middle tone values (brighter). The end points are unchanged and unclipped. The center slider of Levels is called Gamma, said to be 1.0 relative to the image gamma value (2.2), and the center slider adds to the value of gamma, boosting the center and dark values too. Watch the image preview to judge it.
Curve, Brightness - Raising the curve increases middle tone values, end points are unchanged and unclipped. Just pull the curve up a bit. Watch the image preview to judge it.
These two tools are the best way to make images be brighter, because they do not shift the end points, and do not destroy image contrast.
The other separate tool named Contrast simply moves both ends inward (white point and black point), inward equally in that case, intentionally clipping both ends, but with less control and no visibility of image data. It is not as smart as being able to see the data graph, and to have individual control of the two end points. Ordinarily, in general, we normally position those points at about where the data actually starts (unlikely often at equal positions). But everything has exceptions, and sometimes we may choose to clip them a bit, usually unequally.
The Level and Curve tools are not numerically the same now, and the action is different regarding clipping end points, but they do a somewhat similar thing to increase contrast.
The Original image.
Levels, Greater Contrast - Brighter whites, darker blacks, by clipping both end points slightly. This is a very standard procedure for contrast. Watch the image preview to judge it, but again, realize you can hold the ALT key to see what detail you are clipping. Some things don't matter clipped, some things do matter. A little clipping can often be a good thing for contrast, if it does not cost important detail.
Greater contrast is especially important for grayscale images... The best one trick for grayscale images is adequate contrast, by specifically being sure there is something that is really black, and something that is really white. A little clipping does this, but it should not lose important detail.
Curve, Greater Contrast - Specifically, this S-Curve is brighter whites and darker blacks too, but end points are unchanged and not clipped, more suitable for color images. The central linear portion has a more steep slope - more values are either darker or lighter, with less middle range.
The center is clicked first to pin it, so it won't move with the curve. S-curve is a standard contrast procedure, maybe the best. Watch the image preview to judge it.
These two tools are the best way to address contrast, because of the individual control they offer (of the two ends of data, with respect to the data).
Here is another older page about the same Brightness and Contrast tools mentioned here.