4

Я пытаюсь использовать System Vision System Toolbox для калибровки пары камер ниже, чтобы иметь возможность генерировать трехмерное облако транспортного средства в диапазоне от 1 до 5 м , Размер выходного изображения составлял приблизительно 1 МБ на изображение для калибровочных изображений шахматной доски, а квадратный размер шахматной доски составлял 25 мм. Используемыми камерами были пара камер SJ4000 HD1080P. Камеры были расположены как можно параллельны друг другу, без угла на вертикальной оси. Калибровка контрольной точки проводилась с помощью яркого света и доски. Средняя ошибка на пиксель с использованием кода калибратора стереокамера была 3,31 с 31/32 успешными спариваниями. Примерное расстояние до шахматной доски составляло 30 см, а расстояние между камерами составляло 20 см. enter image description here Проблема, с которой я сталкиваюсь при исправлении, находится во время 3D-реконструкции сцены. Ниже представлен результат. Я не уверен, есть ли параметр, отсутствующий в настройке камеры, или если в сценарии есть что-то, что отсутствует/должно быть добавлено. Ниже приведен код, который использовался для стерео анаглифа и реконструкции сцены, который был адаптирован с помощью Matlab Stereo Camera Calibration.Ошибка восстановления сцены калибровки камеры Stereo камеры Matlab

% Read in the stereo pair of images. 
I1 = imread('left.jpg'); 
I2 = imread('right.jpg'); 

% Rectify the images. 
[J1, J2] = rectifyStereoImages(I1, I2, stereoParams); 

% Display the images before rectification. 
figure; 
imshow(stereoAnaglyph(I1, I2), 'InitialMagnification', 50); 
title('Before Rectification'); 

% Display the images after rectification. 
figure; 
imshow(stereoAnaglyph(J1, J2), 'InitialMagnification', 50); 
title('After Rectification'); 
% 
% Compute Disparity for 3-D Reconstruction 
% The distance in pixels between corresponding points in the rectified images is called disparity. 
% The disparity is used for 3-D reconstruction, because it is proportional to the distance between the cameras and the 3-D world point. 
disparityMap = disparity(rgb2gray(J1), rgb2gray(J2)); 
figure; 
imshow(disparityMap, [0, 64], 'InitialMagnification', 50); 
colormap('jet'); 
colorbar; 
title('Disparity Map'); 

%Reconstruct the 3-D Scene 
%Reconstruct the 3-D world coordinates of points corresponding to each pixel  from the disparity map. 

point3D = reconstructScene(disparityMap, stereoParams); 

% Convert from millimeters to meters. 
point3D = point3D/1000; 

% Visualize the 3-D Scene 
% Plot points between 3 and 7 meters away from the camera. 
z = point3D(:, :, 3); 
zdisp = z; 
point3Ddisp = point3D; 
point3Ddisp(:,:,3) = zdisp; 
showPointCloud(point3Ddisp, J1, 'VerticalAxis', 'Y',... 
    'VerticalAxisDir', 'Down'); 
xlabel('X'); 
ylabel('Y'); 
zlabel('Z'); 

Я включил образы реконструкции сцены, диспаритет Карта, средняя ошибка Per Pixel и после выпрямления. Версия Matlab, которую я использую, - это R2014b Student Edition, приобретенная на веб-сайте Matlab.

Scene Reconstruction

Mean Error per Pixel

After Rectification

Disparity Map

ответ

1

У вас здесь две проблемы. Один из них, как отметил @ezfn, заключается в том, что искажение объектива может быть просто слишком сильным. Лучше всего попробовать здесь еще больше калибровочных изображений, чтобы у вас была шахматная доска рядом с краями и углами поля обзора. Кроме того, постарайтесь разместить шахматную доску на разных расстояниях от камеры. Посмотрите, можете ли вы устранить эти ошибки при воспроизведении.

Вторая проблема заключается в том, что вам необходимо изменить параметр 'DisparityRange' функции disparity. Отобразите анаглифическое изображение с помощью imtool и используйте виджет линейки для измерения расстояний между некоторыми парами соответствующих точек. Это должно дать вам представление о том, какой диапазон диспропорций должен быть. Просто глядя на изображение, я вижу, что [0 64] слишком мал.

+0

Я думаю, что просто делать больше изображений с контрольной панелью рядом с краями будет недостаточно, если только вы не учтете модель искажения объектива. См. Это в качестве примера для панели инструментов, которая правильно обрабатывает эту модель: https://sites.google.com/site/scarabotix/ocamcalib-toolbox. Я думаю, что панель инструментов Matlab также обрабатывает ее каким-то образом - как это можно получить здесь: http://www.mathworks.com/help/vision/ref/estimatecameraparameters.html – ezfn

2
  • Я думаю, что наиболее ясно здесь проблема в том, что повторная проекция ошибка (более 3-х пикселей) вы получили в калибровке стерео, пункты по вопросу калибровки. Я бы посоветовал вам перекалибровать, чтобы получить меньшую ошибку повторного проецирования (должно быть значительно ниже 1 пикселя для хороших результатов реконструкции).
  • Другой вопрос относительно вашей калибровки: какие искажения объектива модель вы используете? Я считаю, что у вас есть линзы с рыбным глазом, - я не знаю, как это сделать с помощью набора инструментов Matlab.
+0

Hi ezfn. Спасибо за ваш ответ. Камера - это камера стиля GoPro, и модель искажения объектива не была принята. Как реализовать эту модель искажения объектива? –

+0

Привет. Посмотрите здесь: https://sites.google.com/site/scarabotix/ocamcalib-toolbox. – ezfn

+0

Привет. Посмотрите здесь: https://sites.google.com/site/scarabotix/ocamcalib-toolbox.Это поможет вам с калибровкой каждой камеры отдельно. Если вы все еще хотите использовать панель инструментов Matlab - сообщите об этом http://www.mathworks.com/help/vision/ref/estimatecameraparameters.html - и особенно «Для серьезных искажений, например, в широкоугольных объективах, выберите 3 Coefficents включить k3 ". – ezfn

Смежные вопросы