Correctly apply LCP "distortion" correction for Fisheye lenses

Note: as discussed e.g. at http://lensfun.sourceforge.net/manual/corrections.html, this is really a combination of distortion correction and change of projection (from fisheye to rectilinear), but "distortion correction" is how the Adobe camera model calls it, and this is how it appears in the RT gui
This commit is contained in:
Alberto Griggio
2017-04-08 10:13:53 +02:00
parent 73e14702dd
commit 871c75e494
3 changed files with 65 additions and 26 deletions

View File

@@ -142,6 +142,7 @@ class LCPMapper
bool swapXY;
LCPModelCommon mc;
LCPModelCommon chrom[3]; // in order RedGreen/Green/BlueGreen
bool isFisheye;
public:
bool enableCA; // is the mapper capable if CA correction?
@@ -150,7 +151,7 @@ public:
LCPMapper(LCPProfile* pProf, float focalLength, float focalLength35mm, float focusDist, float aperture, bool vignette, bool useCADistP, int fullWidth, int fullHeight,
const CoarseTransformParams& coarse, int rawRotationDeg);
void correctDistortion(double& x, double& y) const; // MUST be the first stage
void correctDistortion(double& x, double& y, double scale) const; // MUST be the first stage
void correctCA(double& x, double& y, int channel) const;
void processVignetteLine(int width, int y, float *line) const;
void processVignetteLine3Channels(int width, int y, float *line) const;