Я пытаюсь использовать System Vision System Toolbox для калибровки пары камер ниже, чтобы иметь возможность генерировать трехмерное облако транспортного средства в диапазоне от 1 до 5 м , Размер выходного изображения составлял приблизительно 1 МБ на изображение для калибровочных изображений шахматной доски, а квадратный размер шахматной доски составлял 25 мм. Используемыми камерами были пара камер SJ4000 HD1080P. Камеры были расположены как можно параллельны друг другу, без угла на вертикальной оси. Калибровка контрольной точки проводилась с помощью яркого света и доски. Средняя ошибка на пиксель с использованием кода калибратора стереокамера была 3,31 с 31/32 успешными спариваниями. Примерное расстояние до шахматной доски составляло 30 см, а расстояние между камерами составляло 20 см. Проблема, с которой я сталкиваюсь при исправлении, находится во время 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.
Я думаю, что просто делать больше изображений с контрольной панелью рядом с краями будет недостаточно, если только вы не учтете модель искажения объектива. См. Это в качестве примера для панели инструментов, которая правильно обрабатывает эту модель: https://sites.google.com/site/scarabotix/ocamcalib-toolbox. Я думаю, что панель инструментов Matlab также обрабатывает ее каким-то образом - как это можно получить здесь: http://www.mathworks.com/help/vision/ref/estimatecameraparameters.html – ezfn