Cross-Processing Images in the Gimp

Color film photography looks to be fading fast; recently the last rolls of Kodachrome film were developed by the last place in the world that can process it.

While black-and-white film development is commonly done in home laboratories, color film development requires specialized chemicals that were usually only available on an industrial scale. It appears that before too long, these will be unavailable.

Some interesting effects have been achieved by people experimenting (intentionally or accidentally) with developing one type of color film with chemicals for other types. Photographers call this “cross processing,” or sometimes “Xpro”. I found an article online on how to manually achieve this effect in the Gimp image editor. The article is well worth reading, especially the description of how the color curves are modified. The basic idea is to use functions to map input color values to output color values for the three color components (red, green and blue). The Gimp allows one to specify a few points on the curve and to generate a spline through them.

The cross-processing procedure described is rather involved, so I thought I’d automate this process in Gimp’s scripting language, script-fu. The result can be downloaded from the gimp registry.

The result of cross-processing looks like old color film, which is a nice effect for some subjects. Here is a Lincoln Continental as shot straight out of the camera:

original car picture

And here is the result after running the cross-processing script on it:

car after filter picture

UPDATE (Jan. 24, 4:30 PM): Someone has ported my original cross-processing code to python, and added some additional options to give more artistic control:

Someone else remarked on my flickr stream that they thought the processing was good, but they found it easier to just use the retro setting on their cellphone. Well, the point of my code is that someone has to write those processing tricks for their cellphones!

Ben Mesander has more than 18 years of experience leading software development teams and implementing software. His strengths include Linux, C, C++, numerical methods, control systems and digital signal processing. His experience includes embedded software, scientific software and enterprise software development environments.