0

Калибровка:Калибровка камеры, чтобы получить перипендикулярную плоскость

Я откалибровал камеру с помощью этого инструментария видения в Matlab. Для этого я использовал изображения шахматной доски. После калибровки я получаю следующее:

>> cameraParams 

cameraParams = 

    cameraParameters with properties: 

    Camera Intrinsics 
    IntrinsicMatrix: [3x3 double] 
     FocalLength: [1.0446e+03 1.0428e+03] 
    PrincipalPoint: [604.1474 359.7477] 
       Skew: 3.5436 

    Lens Distortion 
     RadialDistortion: [0.0397 0.0798 -0.2034] 
    TangentialDistortion: [-0.0063 -0.0165] 

    Camera Extrinsics 
     RotationMatrices: [3x3x18 double] 
    TranslationVectors: [18x3 double] 

    Accuracy of Estimation 
    MeanReprojectionError: 0.1269 
     ReprojectionErrors: [48x2x18 double] 
     ReprojectedPoints: [48x2x18 double] 

    Calibration Settings 
         NumPatterns: 18 
         WorldPoints: [48x2 double] 
         WorldUnits: 'mm' 
         EstimateSkew: 1 
    NumRadialDistortionCoefficients: 3 
     EstimateTangentialDistortion: 1 

Я знаю, что преобразование из координат камеры в шахматном порядке координаты: R1, t1. Как я могу определить трансформацию между шахматной доской и перпендикулярной плоскостью: R2, t2. Учитывая, что эта плоскость параллельна земле и на высоте 193,040 см от нее.

Примечание: Этот вопрос является подкатегорией Calibration of images to obtain a top-view for points that lie on a same plane. Я отправил его, чтобы задать обобщенный вопрос. enter image description here

ответ

2

Так, IIRC вида системы координат на панели инструментов определяется с началом в верхнем левом углу шахматной доски, ось х к оси правой и у вниз (и, конечно, ось г векторное произведение x и y). Это легко проверить, просто обратные проектные точки [0; 0; 0], [10; 0; 0] и [0; 10; 0] поверх одного из калибровочных изображений и посмотреть, где они упадут.

Назовем это рамкой «калибровочного обзора». Давайте также назовем «пол» второго интересующего вас самолета.

Теперь давайте предположим (большое предположение), что вы тщательно разместили шахматную доску в этом виде, чтобы она была ортогональна к полу, а ее горизонтальный край, параллельный пол. Это означает, что ось x калибровочной рамы зрения параллельна полу, а ось y ортогональна полу.

Поэтому пол параллелен плоскости (x, z) калибровочной рамы. Поэтому, если

Rc = [x y z] 

является вращение вида калибровки WRT камеры, то пол имеет Rotation

Rf = [x z y] 

(предполагая, что вектор нормали к полу переходит в него. Если вы предпочитаете что это поднимается от него, тогда это будет Rf = [zx -y]).

Далее, давайте назовем H расстоянием (высотой) начала калибровочной рамы зрения от пола. Вспоминая, что ось y этого кадра указывает на пол, мы видим, что точка F = [0; ЧАС; 0] (в координатах рамок) - на этаж, и мы можем использовать его в качестве источника рамы пола.

В координатах камеры, вектор Р представляет:

Fc = Rc * F = Rc * [0; H; 0] 

и если Тс является (калибруется) перевод w.r.t. камера от вида калибровки кадра, то это та же точка на полу, в камере координаты:

F = Tc + Fc 

Так 3x4 координат матрицы преобразования от пола до камеры

Q = [Rf, F] 

Это должно дать вам приличную оценку, при условии, что ваши предположения сохраняются.

Конечно, гораздо лучше действовать будет принимать изображение шахматной доски на пола ...

+0

'H' в реальных единицах правильно? Если взять «cm» или «mm». Как это влияет на результат? –

+0

Я понятия не имею, почему вы хотите рассматривать вращения вокруг осей. Rc в моем ответе - одна из матриц вращения, создаваемых калибровкой. Его столбцы являются единичными векторами этого кадра. –

+0

Я дал вам выражение выше. Что еще тебе нужно? Просто поменяйте столбцы. –