I have the following image I1. I did not capture it. I downloaded it from Google
I apply a known homography H to I1 to obtain the following image I2.
I want to assume that a camera has taken this above shot of I2. I do not know the camera matrix of this camera and I want to find it. To find this camera matrix mtx , I am using the OpenCV camera calibration method: ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::1], None, None,flags=cv2.CALIB_FIX_ASPECT_RATIOcv2.CALIB_FIX_K1cv2.CALIB_FIX_K2cv2.CALIB_FIX_K3cv2.CALIB_FIX_K4cv2.CALIB_FIX_K5)
This is done using a square and it's real world and image coordinates. I choose a square in image I1 and get the corresponding corner points of the square in I2 using homography H. Since I know that these corresponding points in I2 form a square, I should be able to get the camera matrix from these points. However, when I take the same square at a different location in the image, I get a different camera matrix. Why is this? What am I doing wrong and how I can I fix it? How do I calculate the correct camera matrix?
An example is shown below. For these two chosen squares, I get different values of mtx from the calibrateCamera function.
NOTE: The red points in the above images are not the corner points of a perfect square in I1. I have just roughly marked them to convey my point that when I take two squares of the same size but at different locations, I get different values for the camera matrix.
