Points in Focus Photography

Building a Hyperbolic Resolution Wedge in Illustrator


In another article I described and made available my camera acclimation target. In the process of building that I ended up having to sit down and build from scratch what I’ve frequently seen described as a hyperbolic resolution test wedge. If you’ve ever used an ISO 12233 resolution chart, or looked at the resolution charts posted on The Digital Picture’s website, the hyperbolic resolution wedge is what you’re mostly looking at.

So let me first prefix this whole thing by saying, if you’re looking for a way to measure lens resolutions, the Slant Edge SRF method is much better for a number of reasons that aren’t relevant to get into here.


That said, in the case of the camera acclimation target there is a lot of play allowed given the nature of what I’m testing and how I do my testing.

I don’t need values to be repeatable across different lenses or even test setups. The point of my test is to look at the changes in resolving power as a function of noise from a single test setup. The camera doesn’t move, the lens doesn’t change position, the aperture isn’t altered. Moreover, I don’t need to be able to precisely quantify an exact resolution measurement. What I want to know is how much resolving power I lose from one ISO to another. Everything I’m looking at is going to be a percentage of the base ISO’s measurement.

That said, this is very much an instance where building something that looks good but isn’t accurate, isn’t any easier than building something that is correct.

I would also add, that the reason I ended up building my own wedges was simply a product of not begin able to get a high enough resolution wedge from somewhere on line. Stephen Westin’s [chart][iso12233-dowload] is only the older 2000 lines per picture height version, not the newer “enhanced” version that goes up to 4000 lines per picture height. Moreover, while I tried scaling one of the existing wedges in that chart it was radically off in terms of measurements when I checked it.

As an aside on the scale, lines per picture height is also a reasonably easy metric to translate to from theory into practice. It doesn’t require any significant computation to get a line width. The picture height is the same as the height of the target. Therefore the line width at any given resolution is just the height of the target divided by the number of lines for that resolution.

What lines per picture height doesn’t do well is make easy camera to camera comparisons when the format changes. For that you’ll need to convert these values to lines/mm or something similar.

Printing Resolution and Accuracy

The standard ISO 12233 chart only goes up to 2000 lines per picture height. For a target like my camera acclimation target, that’s about 268 mm tall, one line at the 2000 ln/ph scale is 0.134 mm high. That works out to 0.0053 inches; at 600 PPI, that’s just over 3 pixels high.

This brings up the first big problem with making one of these charts — printing it.

My chart is ~268 mm high, it’s printed about as large as I can reasonably make it on a 13 x 19 inch (A3+) page, which is the limit of my printer. My printer can print at a resolution of 4800 x 2400 DPI, but a printer dot does not equal an image pixel. There’s no hope of every approaching 2400 PPI, let alone 4800 PPI. That in turn places a hard limit on just how high of resolution I can go with my printer and my target size.

In a very realistic way, building a target like this also becomes a tool to test and measure the resolution capabilities of your printer as much as it is a means to measure the resolution of a camera or lens. At least so long as you’re doing it yourself.

The one advantage that this kind of target does have, is that the demands placed on the printer can be reduced by increasing the size of the target.

Target Height Lines Line Width
mm inches dots @ 2400 dpi
250 mm 4000 0.0625 0.0025 5.91
300 mm 4000 0.075 0.003 7.09
350 mm 4000 0.0875 0.0034 8.27

By making the target larger, the errors imparted by the printer become smaller and therefore the measurements become more accurate.

The counter point to this is that this kind of target also needs to be well aligned with the camera to work correctly. So simply rotating the page 90° to get a larger effective picture height, poses challenges with alignment.

Since I see some issues with line definition at resolutions above 2000–2500 lines/picture height with prints made on my Pixma Pro 9000 mark II, I considered rotating the target 90°. That would enable me to use the 19 in edge instead of the 13 in edge as the picture height. However, if I did so, I would have a much harder time aligning the image since I would only be using 2 edges, instead of all 4 corners.

I ran into a second interesting issue with printing and that’s the source file resolution. In one of my iterations of printing a target I attempted to use a 1200 PPI source file, which of course was gigantic and took forever to deal with. Interestingly enough, somewhere in the print processing chain seems to have down sampled this and in the process created odd artifacts on the high resolution lines. A successive print, made from a 600 PPI source file, however, didn’t have these lines.

I suspect that there’s a hard upper limit to the resolution that at least Canon’s printers can be fed before something either in the driver itself, or in Canon’s Print Studio Pro, starts down sampling the resulting file. Not that this would ever be an issue in general use since most photographic material tops out at way lower resolutions than that.

One other factor to consider, is that many high-end photo inkjets have different resolutions in different directions. My Pixma Pro 9000 mark II, as well as Canon’s current generation of Pixma Pros, have a higher resolution (4800 DPI in my case) along the print head’s direction of travel (short axis of the page) than it does in the page advance direction (2400 DPI). Epson printers behave the same way with different resolution limits.

Consider the resolution limits of your printer for determining the maximum resolution of the target you can generate and print. Additionally its worth considering the orientation of the target versus the printer’s resolution when placing targets.

Limitations of the Hyperbolic Resolution Wedge Script

There are two big limitation to this hyperbolic resolution wedge generation script.

First, it’s not designed to be user friendly; it’s merely designed to get the job done. I’ll say this here, but it won’t be the only time, this comes with no support beyond what I’ve written here or in the comments.

Second, the generated wedge is not profiled such that it’s accurate at every point. It’s accurate where the scale marks are, and probably close enough between them. However, the profile is made from straight segments not curves. This was a case of expediency winning out over accuracy, though I would argue given the rest of the tolerances involved the differences don’t really matter much except for at very low resolutions.

Using the Sweep Generation Script

As I said, this was written to be expedient not user friendly. There are 6 variables at the top of the script that control the creation of the step wedge. All measurements in this script are made in mm.

docHeight – The sets the height of the test area in mm.
wedgeHeight – Set the length of the wedge (height because the wedge is drawn vertically and has to be manually rotated to horizontal if that’s desired).
wegdeSteps – Sets the number of intermediate points in the wedge. For example, setting this to 2 will create a trapezoid.
wedgeMinRes – Sets the lowest resolution in lines per picture height of the step wedge.
wedgeMaxRes – Sets the highest resolution in lines per picture height of the step wedge.
lines – Sets the number of black lines in the wedge — useful to increase for high resolution wedges.

I suggest running this from Adobe’s ExtendScript Toolkit instead of trying to import it into Illustrator and running it from there.

Also, I developed and tested this on Illustrator CS6. I have not tested it on a newer version of Illustrator, nor have I looked to see if the API for drawing changed.

Download the Script

Download: HyperWedge.zip


There are no comments on this article yet. Why don't you start the discussion?

Our cookie and privacy policy. Dismiss