So, I have written a script that performs chessboard calibration and the reprojection error I get is always greater than 1.3-1.5 pixels, even though the calibration parameters are correct (except the principal point coordinates, but that's expected). I couldn't find a reason why this is happening and then I thought to try it by photographing the target with lower camera resolution, since many of the forum threads I found were talking about less than 0.5 pixel error with low resolution cameras (640x480 pix) and I was using DSLRs with 6-7 times this resolution. After this attempt the error was indeed lower than 1 pixel but still a little too high. Then, I downsampled the images to 640x480 resolution and the error now had the expected and desired values of less than 0.4-0.5 pixels. Any ideas why this is happening?
P.S. The script is written in Python and I am using subpixel refinement for the detected chessboard corners.