November 9, 2011

film-curves: a little software for testing films

I wrote a little software tool to speed up the testing of b&w films.
The tool builds, from experimental data, an approximation of the characteristic curve using a spline function.

The tool also calculates the effective film speed and the average gradient, according to the procedure described in Way Beyond Monochrome [1]:
  • the effective film speed is the film speed you should expose the film so that an area placed in Zone I.5 (i.e. in the middle between zones I and II) produces a relative negative density of 0.17
  • the average gradient is the slope of the straight line joining the two points of the characteristic curve identified by zones I.5 e VIII.5 (but once they have been shifted on the horizontal axis in order to take into account the effective film speed).
The tool produces a png file containing the approximated graph of the characteristic curve, along with the points corresponding to the measured data. I show two examples below:



The two vertical green lines identify the exposures of zones I.5 e VIII.5, when the film is exposed at the effective film speed determined by the test.

* * *

How to download film-curves
The tool is written in Python and the source code can be freely downloaded from Google Code.
It works on Ubuntu with Python 2.6. I got some problems on Windows XP (import pylab crashes the Python interpreter).

How to use film-curves
First, you need to find experimentally a set of points of the characteristic curve. You need a camera loaded with the film you intend to test, a light-meter and a densitometer.

Once you have determined a significant set of points (at least 4 or 5, distributed along zones I to X) you have to create a configuration file with any text editor. The configuration file contains:
  • some information on the film and the developer (it will be written on the graph);
  • the film speed used in the test;
  • the degree of the interpolation polynomial (it must be lower than the number of points determined experimentally)
  • a parameter determining the smoothness of the interpolation curve;
  • one of the following presets for calculating film speed and average gradient:
    • AA: according to Ansel Adams (The negative)
    • LW: according to Lambrecht & Woodhouse (Way Beyond Monochrome)
    • ISO: according to the ISO standard
  • N pairs of experimental values (zone, density) ordered by zones (in ascending order)
  • comments, preceded by #
Here is an example of the configuration file:
[Film]
type = Ilford FP4+ (120)
iso = 100
development = 9'30" in XTOL 1+1

[Spline]
order = 3
smoothness = 1.0

[Standard]
# use the following presets:
# AA : speed point in zone I, density=0.1, range = 7 zones
# LW : speed point in zone I.5, density=0.17, range = 7 zones
# ISO: speed point in zone I, density=0.1, range = 1.3/0.3
preset = LW

[Data]
points:
((0, 0),
(0.5, 0.01),
(1, 0.04),
(1.5, 0.14),
(2, 0.2),
(2.5, 0.32),
(5, 0.75),
(7, 1.26),
(7.5, 1.37),
(8, 1.4),
(8.5, 1.55),
(9, 1.55))
    In order to run the program, open a terminal window and type:

    # python fcurve config_file

    where config_file is the path of the configuration file.
    When the execution ends a new file is created with the same name of the configuration file and the extension png, containing the graph of the characteristic curve.

    References
    1. Ralph Lambrecht and Chris Woodhouse, "Way Beyond Monochrome", Focal Press
    2. Ansel Adams, The Negative
    3. This page from SciPy.org has been very useful for writing this program.

    No comments:

    Post a Comment