Сначала необходимо создать матрицу камеры со значениями матрицы камеры из файла XML.
Mat cameraMatrix = new Mat(new Size(3,3), CvType.CV_64FC1);
cameraMatrix.put(0,0,3275.907);
cameraMatrix.put(0,1,0);
cameraMatrix.put(0,2,2069.153);
cameraMatrix.put(1,0,0);
cameraMatrix.put(1,1,3270.752);
cameraMatrix.put(1,2,1139.271);
cameraMatrix.put(2,0,0);
cameraMatrix.put(2,1,0);
cameraMatrix.put(2,2,1);
Во-вторых, создайте матрицу искажений с помощью Distortion_Coefficients из файла XML.
Mat distortionMatrix = new Mat(new Size(4,1), CvType.CV_64FC1);
distortionMatrix.put(0,0,-0.006934);
distortionMatrix.put(0,1,-0.047680);
distortionMatrix.put(0,2,0.002173);
distortionMatrix.put(0,3,0.002580);
Наконец, используйте метод OpenCV.
Mat map1 = new Mat();
Mat map2 = new Mat();
Mat temp = new Mat();
Imgproc.initUndistortRectifyMap(cameraMatrix, distortionMatrix, temp, cameraMatrix, src.size(), CvType.CV_32FC1, map1, map2);
И вы можете получить две матрицы map1, map2, которые используют для искажения.
Если вы получаете эти две матрицы, вам не нужно каждый раз калибровать заново.
Просто используйте переназначение, и искажение будет сделано.
Imgproc.remap(mat, undistortPicture, map1, map2, Imgproc.INTER_LINEAR);
см. эту ссылку.