Skip to content
CarVac edited this page Sep 3, 2013 · 3 revisions

Introduction

This was inspired by ground beef. One day, I was cooking curry. Actually, before I tell you that story, let me tell you this story:

In high school I received an old film SLR from my aunt. I mostly only used C-41 film developed at a lab, but something about the photos really sang to me. It was somewhat inconvenient not knowing whether or not the photos turned out well, but the reward when they did turn out was amazing.

Up until that point, only once did I have the chance to use standard black-and-white film and develop it myself. I didn’t think about it much at the time, since I was too preoccupied with following directions. There was a set routine: prepare the solutions, load film into the tanks, add developer, agitate, wait, agitate, wait, pour it out, add stopbath, wait, pour it out, add fixer, wait, and pour it out.

At the end, I had some film developed, but the experience wasn’t anything special to me. At the time, that is.

Now, let’s return to the ground beef story. At one point, I suddenly had a craving for some curry, so my mother told me to find an interesting recipe and cook it for the whole family.

The very first step was to brown a pound of ground beef. I took out the beef, put it in the pan, and kept stirring it. The result? It cooked, but only turned gray.

My mom took the spatula from me, and...did nothing with it. Magically, by simply letting it cook without stirring constantly, the ground beef turned from gray into a delicious-looking golden-brown.

I was thus defeated. I had to understand why that mysterious phenomenon occurred, and what it meant. In hindsight, meat browns when it is above a certain temperature. By mixing constantly, it reached the point where it cooked, turning gray, but never got hot enough to brown. But by waiting, the surface would reach hotter temperatures than the bulk, allowing the reactions to take place.

Eventually, my thoughts were led to that one time I had developed film. Why don’t you agitate continuously? Why agitate at all? How does it influence the picture in the end?

How Film Works

Excluding Kodachrome, which is no longer available, there are three major processes for developing film: black and white, C-41 color negative, and E-6 color positive. While the results often could not be more different, the basic mechanism of operation is the same and many people have fun “cross-processing” films using processes that they are not intended for.

Note: Most of this information is derived from Wikipedia, so any or all of it may not be true.

Film’s Structure

Film is composed of a clear plastic base which is coated on one side with an emulsion consisting primarily of gelatin and silver halides (mostly silver chloride and silver bromide). These halide crystals are sensitive to light. When struck by a sufficiently energetic photon, an excited electron can neutralize a silver ion, sometimes causing a seed of metallic silver to form.

These silver salt crystals are mostly senstive to higher energy light (blue and green), so to increase the sensitivity of black-and-white film, dyes are adsorbed onto the surface which respond more easily to light of all visible wavelengths. In the case of both kinds of color films, the emulsion is in multiple layers, each with dyes chosen to respond to specific colors of light, instead of all dyes being used in one layer for full-spectrum sensitivity.

Exposure

When the film is exposed, the number of seed crystals produced in a given area is related to the intensity of the light. The seed crystals are only a handful of atoms (a minimum of four), so the film itself does not look different until it is developed. These free silver crystals are referred to as the latent image, because it doesn’t show up until development. The latent image is fairly stable. It will remain unchanged for several months if stored properly in a cool, dark (duh) place.

The only difference in color films is that each layer behaves differently in order to capture information about how much of each color light landed on any particular spot.

Development

Development occurs when the film is submerged in an aqueous solution of developer. This is chemically a reducing agent which converts silver halides into metallic silver, which grows on the seed crystals formed during the exposure. The size and numbers of silver crystals after development govern the density, how dark that region of film is. The brighter the exposure, the more seed crystals there are, and thus the darker the image is at that location. Because brighter exposure leads to darker film, the result of this process is a black-and-white negative.

After an appropriate development duration, the chemical action is halted with a stop bath which neutralizes the developer, and then undeveloped silver salts are dissolved with fixer, preventing the film from getting any darker.

Color Negative Film

In the case of color negative film, the development process is very similar, but the end goal is not silver crystals, but dye clouds of the appropriate color. The film, in addition to light-sensitive crystals, contains transparent dye couplers. When a given developer molecule reduces silver halide into metallic silver, it then reacts with these dye couplers to form a cloud of dye.

The dye is formed from a byproduct of the silver reaction, so the dye forms the same negative of the captured image. Before use, the metallic silver gets bleached away, leaving behind only the dye clouds. By choosing dyes that are complimentary colors of the light sensitivity of their respective layers, the image’s colors are inverted (complementary) just like the brightness.

Color Positive (Slide) Film

Color positive film using the E-6 process is like an extension of the color negative process. However, in order to invert the brightness and colors, the development process occurs twice.

The first development happens identically to black-and-white film, in which silver salts are consumed in proportion to the brightness of the scene. No dye is formed at this stage, meaning it does not directly affect the end result. However, the key is that the process leaves behind some undeveloped silver salts. Unlike the silver grains, these are present in inverse proportion to the brightness of the scene. That is, when these get developed, the lighter regions of the scene correspond to clearer regions of the film, yielding a positive image.

To get dye clouds from these, the film is "re-exposed" fully, with either actual light or a reversal solution. This ensures that when a developer similar to that used in negative is applied, dye clouds are produced in proportion to the amount of remaining silver halides. The amount of metallic silver present on the film at this point is uniform, but when the silver is bleached away, the dye clouds remain and form a positive image on the film.

What’s the Big Deal?

The key feature of the film development process is that the rate of crystal surface growth is not constant across the film. There are several factors involved. The first is that the developer is aqueous. This means that if we assume that the silver crystals grow evenly all around, the growth rate of linear dimensions is proportional to the developer concentration. The second factor is that developer in a region of the film gets consumed in proportion to not only the linear growth rate of the crystals, but also to the total surface area of all of the crystals in the vicinity.

In essence, a bright region with tons of crystals will have its crystal growth restricted, since it will deplete the developer near it more quickly than dark regions with few active crystals. What this accomplishes is the reduction of contrast across the whole image. Bright regions will be darker, and dark regions will be brighter.

However, that is not the whole story. Because the developer is an aqueous solution, the developer molecules are free to diffuse around. When a bright region depletes developer near it, it starts pulling developer from its surroundings, thus making only its immediate surroundings darker. Likewise, a dark region will have excess developer, so the surrounding bright areas will become brighter. This leads to film boosting the local contrast.

In essence, film inherently implements an ideal, natural method of tone mapping: it reduces global contrast while boosting local contrast. This lets it get away with compressing wide-dynamic-range scenes into the small-dynamic-range medium of paper prints. However, compared to other tone mapping algorithms, it manages this in a very natural way which is almost completely unnoticeable.

How did this come from ground beef, you ask? This has to do with agitation. Each time the development tank is agitated, the regions of depletion and surplus of developer are erased, resetting the conditions that yield these benefits. You have to agitate some, lest stray bubbles and density gradients cause artifacts in the film, but continuous agitation will eliminate this critical advantage of film.

Filmulator — the Emulsion Emulator

Upon realizing this fact about film, I reasoned that given sufficient dynamic range, a simulation of the film workflow would be able to duplicate this critical benefit of film. This is especially true, now that the latest sensors can actually easily exceed the dynamic range of films.

There are many “film simulation” programs and plugins available for photographers today, but as far as I know all of these are designed to mimic particular film varieties as closely as possible, flaws and all. While I admit that they often make very aesthetically pleasing results, I suspect that the nostalgia for film is due in no small part to the tonemapping inherent to development.

In the hopes of combining the best part of film with the convenience, speed, and technical capabilities of modern digital cameras, I and a friend worked on a program we call Filmulator. This “exposes” “film” based on raw files, and then subjects it to “development” that causes “active crystals” to “grow”. On my quad-core laptop, it takes only 6 seconds per file to convert an 18mp raw file into a 16-bit TIFF image ready for a quick sharpening, tone curve tweak, and output.

The program has dramatically reduced the time I need to spend postprocessing. I used to spend minutes on each photo, carefully tweaking the tone curve and tone mapping parameters, but Filmulator’s default settings work magic on 99% of photos I shoot. Now, after Filmulating a batch of photos, I can come back and spend perhaps 10 seconds on each before outputting it.

The reason I can do this is because the natural film development process, and Filmulator’s simulation of it, is inherently adaptive. If the scene is flat to begin, Filmulator doesn’t touch global contrast, while upping local contrast. If the scene has an extremely wide dynamic range, Filmulator works strongly to darken the bright regions while lifting shadows, all without reducing local contrast. When colors are bright, it actually pumps up the colors even more, in a very natural fashion.

There are a few obstacles to general use, however. Currently, the program is only a command-line tool. This is fine for me, but most film photographers aren’t programming gurus.*

Additionally, in an ideal workflow this would occur right in the middle of the process. A drawback to the algorithm is that it slightly amplifies noise, color fringing, and white balance errors. In a proper workflow, those (as well as vignetting) would be best corrected before Filmulator, and everything else would come afterward.

However, the creation of a suitable graphical user interface would put this into the toolbox of every photographer. With a streamlined workflow, users would enjoy the benefits of digital capture, such as very high continuous shooting speeds, high sensitivity, capacious memory cards, immunity to scratches and water spots, and a clean grainless image, while gaining the best parts of film: its tonality and color rendering.

I hope you have the opportunity to try Filmulator, which gives you all of the benefits of film, and none of the negatives.

*Incidently, this may be the reason why, as far as I know, nobody has thought of this simple process before.

Clone this wiki locally