Калибровка камеры в Java OpenCv
Я изо всех сил пытался откалибровать свою камеру на Java, параметры, которые я получаю от вызова
Calib3d.calibrateCamera(object_points, corners, gray.size(), cameraMatrix, distCoeffs, rvecs, tvecs);
далеко
Если я использую то же изображение в Python (учебник), результаты верны. Я действительно не знаю, как решить эту проблему. Я действительно не вижу никакой разницы.(Возможно, способ, которым я инициализирую object_points?)
Вот код Java
found_chess = Calib3d.findChessboardCorners(gray, patternSize, actual_corners, Calib3d.CALIB_CB_ADAPTIVE_THRESH + Calib3d.CALIB_CB_NORMALIZE_IMAGE);
if(found_chess)
{
corners.add(actual_corners);
//cornersubPix() irrelevant since all the corners are found in findChessBoard
//Imgproc.cornerSubPix(gray, actual_corners, new Size(SIZE_Y*2+1,SIZE_X*2+1), new Size(-1,-1), new TermCriteria(TermCriteria.EPS+TermCriteria.MAX_ITER,30,0.1));
MatOfPoint3f points;
Mat a = new MatOfPoint3f();
for(int y=0; y<SIZE_Y; ++y)
{
for(int x=0; x<SIZE_X; ++x)
{
points = new MatOfPoint3f(new Point3(x, y, 0));
a.push_back(points);
}
}
object_points.add(a);
Calib3d.calibrateCamera(object_points, corners, gray.size(), cameraMatrix, distCoeffs, rvecs, tvecs);
}
Код Python, который я использую, можно найти здесь
Я использую только одно изображение, но параметры не должны совпадать. Найденные шахматные углы точно такие же.
Вот параметры, которые я получаю в Java(которые не имеют смысла)
K1: 519.399710654873
K2: -42465.04562762376
P1: -11.363668181023353
P2: -1.5606689962722413
K3: -661829.1347551622
Fx: 8848.871073244098
Cx: 850.1589437229045
Fy: 9242.065368089003
Cy: 471.258611493399
Я был бы очень признателен, если бы кто-нибудь мог мне помочь. заранее спасибо
1 ответ
Кажется, я неправильно инициализировал объектные точки. Изменены X и Y, и все работает нормально (см. Код и результаты)
for(int x=0; x<SIZE_X; ++x)
{
for(int y=0; y<SIZE_Y; ++y)
{
points = new MatOfPoint3f(new Point3(y, x, 0));
a.push_back(points);
}
}
K1: -0.018826429817406057
K2: 0.004765861493124195
P1: -0.013705374382823956
P2: 0.004067969604879225
K3: -0.05266506928016909
Fx: 594.0637743671965
Cx: 657.3929211728023
Fy: 604.1989278105854
Cy: 572.8441406065865