2017-01-15 3 views
1

Я играю с двумя дешевыми веб-камерами (0.3Mpx), пытаясь сделать установку стереокамеры, которая может измерять расстояния и размеры объектов. Но я изо всех сил стараюсь выяснить, правильно ли выполнена калибровка стереокамера и как перейти к настройке матрицы калибровки камеры?Нужна помощь в определении качества калибровки стереокамера и настройки калибровочной матрицы

То, что я сделал до сих пор, заключается в создании камеры, где камера установлена ​​на 30 см друг от друга, слегка наклонена внутрь, чтобы изображения более или менее перекрывали друг друга. Я поставил калибровочную шахматную доску (размером A4) из Matlab примерно на 50 см от камер. Затем я начал принимать 20 пар изображений под разными углами и позициями через скрипт Matlab, который я создал, и подал их в приложение для калибровки стереокамер. В Matlab. Это результат я получаю:

визуализации Внешнего параметра - это образ, который заставляет меня чувствовать, что-то не так с моей калибровкой, так как он выглядит как камеры не друг от друга:

Img1

Pixel значит репроекцию ошибок - Здесь я удалил некоторые из пар изображений с более высокими ошибками reprojecion:

Img2

Standard Errors of Estimated Stereo Camera Parameters ---------------------- 

Camera 1 Intrinsics ------------------- 
Focal length (pixels): [ 829.8567 +/- 4.6262 831.1900 +/- 4.4714 ] 
Principal point (pixels):[ 437.7113 +/- 1.8180 254.0188 +/- 1.9227 ] 
Skew: [ 1.7063 +/- 0.3069 ] 
Radial distortion: [ 0.0024 +/- 0.0067 -0.1042 +/- 0.0281 ] 
Tangential distortion: [ 0.0036 +/- 0.0006 0.0100 +/- 0.0007 ] 

Camera 1 Extrinsics ------------------- 
Rotation vectors: 
[ -0.0289 +/- 0.0020 0.1813 +/- 0.0025 -0.0132 +/- 0.0005 ] [ -0.2268 +/- 0.0030 -0.3439 +/- 0.0026 -0.1029 +/- 0.0004 ] [ -0.0209 +/- 0.0024 -0.0018 +/- 0.0024 -0.0438 +/- 0.0003 ] [ 0.0962 +/- 0.0032 -0.2916 +/- 0.0034 -1.8484 +/- 0.0004 ] [ -0.0042 +/- 0.0021 0.1804 +/- 0.0027 -0.0219 +/- 0.0006 ] [ -0.2726 +/- 0.0039 0.1822 +/- 0.0041 2.8569 +/- 0.0007 ] [ 0.0499 +/- 0.0020 0.1646 +/- 0.0024 -0.0207 +/- 0.0004 ] [ -0.2745 +/- 0.0024 0.0080 +/- 0.0022 -1.5557 +/- 0.0004 ] [ -0.2607 +/- 0.0024 0.0325 +/- 0.0022 -1.5807 +/- 0.0004 ] [ -0.2684 +/- 0.0028 0.0384 +/- 0.0025 -1.5800 +/- 0.0006 ] 

Translation vectors (mm): 
[ -150.5696 +/- 1.0617 -46.2962 +/- 1.1548 491.0520 +/- 2.7303 ] [ -214.8622 +/- 1.1726 -40.0423 +/- 1.2625 528.0044 +/- 2.9924 ] [ -164.9147 +/- 1.0168 -69.9880 +/- 1.1023 465.4540 +/- 2.6645 ] [ -37.2595 +/- 1.4144 59.4185 +/- 1.4939 643.6316 +/- 3.5056 ] [ -203.2476 +/- 1.0742 -42.6796 +/- 1.1813 493.9661 +/- 2.7924 ] [ 109.4280 +/- 1.4785 -69.4211 +/- 1.5662 678.8234 +/- 3.6783 ] [ -130.7829 +/- 1.0151 -42.2859 +/- 1.1012 468.7133 +/- 2.6260 ] [ -73.5988 +/- 1.0368 64.6519 +/- 1.1120 473.5281 +/- 2.6423 ] [ -43.1916 +/- 1.0432 73.5025 +/- 1.1112 474.7453 +/- 2.6190 ] [ -204.2203 +/- 1.1513 64.6115 +/- 1.2599 524.6072 +/- 3.0409 ] 

Camera 2 Intrinsics ------------------- 
Focal length (pixels): [ 829.8567 +/- 4.6262 831.1901 +/- 4.4714 ] 
Principal point (pixels):[ 437.7113 +/- 1.8180 254.0188 +/- 1.9227 ] 
Skew: [ 1.7063 +/- 0.3069 ] 
Radial distortion: [ 0.0024 +/- 0.0067 -0.1042 +/- 0.0281 ] 
Tangential distortion: [ 0.0036 +/- 0.0006 0.0100 +/- 0.0007 ] 

Position And Orientation of Camera 2 Relative to Camera 1 ----------------------Rotation of camera 2: [ 0.0000 +/- NaN 0.0000 +/- NaN 0.0000 +/- NaN ] Translation of camera 2 (mm): [ -0.0000 +/- 0.0696 -0.0000 +/- 0.0759 0.0000 +/- 0.4605 ] 

Если кто-то может помочь мне получить немного дальше с этим проектом, было бы весьма полезно :-) откинуло голову от стены на некоторое время сейчас

+0

Странно, что плоскости контрольной панели выглядят параллельно. Вы наклоняли его под разными углами при захвате 20 изображений? – hiroki

+0

Я сделал, но пытался удержать его до угла менее 45 градусов, как указано в учебнике Matlab. Но и изображения с наклоном обычно имеют очень высокие ошибки при воспроизведении, и, следуя рекомендациям по Matlab, я удалил их из набора калибровки. Пробовал много раз сейчас, даже с более угловыми картинками без каких-либо успехов. Возможно ли, что дешевая оптика или камера с низким разрешением (VGA - 640x480) делают ее очень трудной для калибровки? – Balder

+0

Считаете ли вы, что результат визуализации Extrinsics действителен? Когда я смотрю на значения векторов вращения, они имеют некоторую дисперсию в компонентах x и y, но при визуализации они имеют только поворот вдоль оси z. Я думаю, что ошибки перепроверки менее 1 пикселя на этом этапе прекрасны. Алгоритм калибровки требует, чтобы плоскости вращались с не менее чем 3 (или более) различными углами. – hiroki

ответ

0

Для проверки точности камер вы можете восстановить известное расстояние между двумя точками объекта, размещенными в разных положениях в поле зрения стереокамер, и посмотреть, правильный ли результат.

Если вы использовали стерео приложения калибратор камеры Matlab и сохранены результаты как мат файл, вы можете использовать следующий скрипт для вычисления евклидова расстояния между двумя точек и сравнить с известной геометрией.

%Pick two points in the Left Image 
cam1 = uigetfile('*', 'Select Left Image'); 
imshow(cam1) 
[x y] = ginput(2);% 2 is the number of points 
x_left_image = vertcat(x',y'); 
close all 

%Pick the same two points in the Right Image 
cam2 = uigetfile('*', 'Select Right Image'); 
imshow(cam2) 
[x y] = ginput(2);% 2 is the number of points 
x_right_image = vertcat(x',y'); 
close all 


load calibrationSession.mat %load the stereo calibration data .mat 
[Xc_1_left, error] = triangulate(x_left_image',x_right_image',calibrationSession.CameraParameters); 

Xc_1_left = Xc_1_left'; 

X = cell(size(Xc_1_left,2),1); 
Y = cell(size(Xc_1_left,2),1); 
Z = cell(size(Xc_1_left,2),1); 

for n = 1:size(Xc_1_left,2); 

    X{n,1} = Xc_1_left(1,n); 
    Y{n,1} = Xc_1_left(2,n); 
    Z{n,1} = Xc_1_left(3,n); 

end 

distance = cell(size(Xc_1_left,2)-1,1); 

for i = 1:size(Xc_1_left,2)-1; 

    distance{i,1} = sqrt((X{i+1} - X{i})^2 + (Y{i+1} - Y{i})^2 + (Z{i+1} -Z{i})^2) 

end 

P.S. Не забудьте поставить как данные калибровки (.mat), так и два изображения в текущей папке.