Ask Your Question

Revision history [back]

Why does calibrateCamera not support non-zero skew?

In the source code for calibrateCamera (in calibration.cpp), there is an error check for the camera matrix that verifies that the skew is zero. Otherwise, it throws an error:

if (fabs(A(0, 1)) > 1e-5)
            CV_Error(CV_StsOutOfRange, "Non-zero skew is not supported by the function");

Is there a reason that the skew must be non-zero? If this error check was removed, and calibrateCamera was allowed to run, would skew be appropriately modeled by the camera calibration? The reason I am asking is that I am interested in modeling skew in my camera calibration, and would like to understand the limitations of the method (since skew is described in Zhang's paper).