单目视觉vSLAM

Matlab 官方提供了完整的单目视觉 vSLAM 的 pipeline,https://www.mathworks.com/help/vision/ug/monocular-visual-simultaneous-localization-and-mapping.html。这里对 Matlab 的这边文章的关键点做一个笔记和讨论,具体的实现可以参考原文文档。 初始化数据集 Matlab 提供了imageDatastore类用于初始化图像存储集合,其接受一个图像的文件夹路径的参数。 imageFolder = [dataFolder,'rgbd_dataset_freiburg3_long_office_household/rgb/']; imds = imageDatastore(imageFolder); 初始化地图 在 SLAM 管线中,首先我们应该对相机进行标定,相机标定可以用Computer Vision 工具箱中的相机标定工具。如果预先知道了相机的内参,可以通过cameraIntrinsics类直接进行初始化。 % Create a cameraIntrinsics object to store the camera intrinsic parameters. % The intrinsics for the dataset can be found at the following page: % https://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats % Note that the images in the dataset are already undistorted, hence there % is no need to specify the distortion coefficients. focalLength = [535.4, 539.2]; % in units of pixels principalPoint = [320.1, 247.6]; % in units of pixels imageSize = size(currI,[1 2]); % in units of pixels intrinsics = cameraIntrinsics(focalLength, principalPoint, imageSize); 在例子中使用的数据集已经提供了相机的标定参数,我们可以直接使用。注意,对于一般相机获取到的照片来说,我们应该进行照片的去畸变,Matlab 提供了去畸变函数undistortImage,具体用法如下 ...

December 22, 2023 · Yiwei Gong