Aspects of Contrast and White Balance
There are three kinds of contrast: hue, saturation and brightness. Very few applications have more than a single slider for contrast, that addresses all three kinds of contrast at once. It is not ideal with a single slider for all three, since the result usually suffers from over saturation and colorfulness. At best the software will have a control for luminance contrast and for color contrast.
The usual way to manipulate contrast is simply by altering the difference between the individual red, green and blue values and the average value (128); like this: R= (R-128) * contrast + 128; and likewise for green and blue. This method is only suitable for images that cover the entire brightness range. What if the image is very pale or very dark? In that case you need to change the algorithm to use the average values of the image’s R, G and B channels, like this: R=(R-RAverage)*contrast + RAverage. And so on for G and B. The algorithms are essentially the same since a full brightness range image will have 128 as an average value.
If the darkest and brightest areas are not black and white a different situation arises. If that is the case, one should also be able to expand the brightness range to reach black and white. This is essentially what levels adjustment does. If one’s software does not offer the option to expand brightness range, one can do it with Photoshop’s levels adjustment like this: First convert the image to Lab mode, select the L channel only and run auto levels on that. Then convert back to RGB mode.