I tried zorin's perspective correction in Paintshop Pro, and the result looked like this:
On the right after some further post-processing. The proportions look broadly similar to Photoshop.

I had often the issue with that correction tool that the resulting image was too tall, though this may have something to do with the kind of image I typically applied this too.

My gut feeling is that the tools treat perspective correction as a 2D problem, levelling first one line, and then adjusting the other line with an affine transformation. I wonder whether viewing it as a 3D problem would yield better results, or whether it really boils down to the same thing...

The Following 6 Users Say Thank You to beutelwolf For This Useful Post:

I wonder whether viewing it as a 3D problem would yield better results, or whether it really boils down to the same thing...

Very clever observation.

You know "ground truth" -- the image that you're seeking is of a flat sheet of paper.

A distortion has been introduced into it by photographing at an odd angle.

You can reverse that process by modelling it in 3D. (Slap the image on a plane in a 3D layer in Photoshop, and turn the image with respect to the camera).

. . . however: the success of such a process depends on having an accurate model for the lens that introduced that distortion. If you look at Adobe's "Camera Raw" import modules, they've got very detailed models for high end SLR lenses.

But that takes me to Adobe Camera Raw-- that's the best place to do perspective transformations, generally ignored by folks working with JPEGs, as the name suggests, its mostly about importing RAW files.

Camera Raw has got the best perspective and alignment tools. If you have Photoshop, you have Camera Raw

You typically invoke Camera Raw on a RAW or similar file, like a Canon CR2 (these are the zillion megabyte files that come off of a DSLR, uncompressed). To get the full suite of Camera Raw tool, you want to open the file in Bridge, but you can also load Camera Raw as a filter inside Photoshop, and apply to a JPEG . . .