Why does calibrateCamera not support non-zero skew?

asked 2017-08-16 13:09:42 -0500

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).

edit retag flag offensive close merge delete