I think there is a bug in Photoshop CS2…
Photographing architecture is difficult unless you have a shift/tilt lens because a photographer usually has to point the camera upward at an angle to capture the entire building. Unfortunately, this causes the normally parallel vertical lines to tilt inward toward the center of the photo.
Photoshop offers a “distort” filter called “Lens Correction…” from which you can supposedly fix this. Unfortunately, it doesn’t work correctly and here’s why:
The two photos above are of the same coaster and CD. The one on the left is taken from directly above while the one on the right is taken at a 45° angle. It’s easy to see how the angle causes compression of the vertical and makes the lines that make up the sides of the coaster converge. After applying a correction to the latter you would expect it to look more like the original, but it does not — as the following photo illustrates.
Photoshop is doing a correct forward transform (as though tilting a piece of paper away from you) but since it’s supposed to be a corrective action, it should be doing a reverse transform (taking a tilted piece of paper and making it straight). Working around this problem is not trivial but the only practical difference is the vertical scale. In short, Photoshop reduces the vertical size by a factor x when it should increase it by that factor. Thus, if you know what x is then you can increase the vertical size by x-squared so that after the incorrect correction it will be larger by x rather than smaller by x.
To do a correct correction, first do the correction as you would normally, recording the values used because you’ll need them again later. Once the change has been applied, use the following equation to calculate ynew (the last form is easiest).
ynew is the new canvas height, yold is the old/original canvas height, and ycorrected is the height of the image after the correction was applied (you’ll have to measure this by hand). Undo the correction, go in to Image::ImageSize, uncheck “constrain proportions”, and set the height to be ynew, scaling the image using the best algorithm (“bicubic”). Once that is done, run the lens correction again with the same parameters you recorded above and you’ll end up with a properly corrected image, as shown here:
The unfortunate part of this technique is that it does two imprecise scaling operations instead of just one, but in general this is not a problem. The better way is to not use the lens correction filter at all but rather just perform a “free” transform that gives the same result, but even that may involve multiple operations if you have to alter rotation or barrel/pincushion correction.
I’m curious to know if this same problem also exists in CS3.