TRI*_*RAN 5 matlab computer-vision 3d-reconstruction matlab-cvst
这是我第一次进行图像处理.所以我有很多问题:我有两张照片是从不同的位置拍摄的,一张来自左边,另一张来自右边,如下图所示.[![在此处输入图像说明] [1]] [1]
第1步:使用imread函数读取图像
I1 = imread('DSC01063.jpg');
I2 = imread('DSC01064.jpg');
Run Code Online (Sandbox Code Playgroud)
第2步:在matlab中使用相机校准器应用程序来获取相机参数
load cameraParams.mat
Run Code Online (Sandbox Code Playgroud)
第3步:使用undistortImage函数删除镜头失真
[I1, newOrigin1] = undistortImage(I1, cameraParams, 'OutputView', 'same');
[I2, newOrigin2] = undistortImage(I2, cameraParams, 'OutputView', 'same');
Run Code Online (Sandbox Code Playgroud)
步骤4:使用detectSURFFeatures功能检测特征点
imagePoints1 = detectSURFFeatures(rgb2gray(I1), 'MetricThreshold', 600);
imagePoints2 = detectSURFFeatures(rgb2gray(I2), 'MetricThreshold', 600);
Run Code Online (Sandbox Code Playgroud)
步骤5:使用extractFeatures函数提取特征描述符
features1 = extractFeatures(rgb2gray(I1), imagePoints1);
features2 = extractFeatures(rgb2gray(I2), imagePoints2);
Run Code Online (Sandbox Code Playgroud)
步骤6:使用matchFeatures功能匹配功能
indexPairs = matchFeatures(features1, features2, 'MaxRatio', 1);
matchedPoints1 = imagePoints1(indexPairs(:, 1));
matchedPoints2 = imagePoints2(indexPairs(:, 2));
Run Code Online (Sandbox Code Playgroud)
从那里,我怎样才能构建3D点云?在步骤2中,我使用了图片附件中的棋盘来校准相机[![在此处输入图像说明] [2]] [2]
方形尺寸是23毫米,并从cameraParams.mat我知道固有矩阵(或相机校准矩阵K),其形式K = [alphax 0 x0; 0 alphay y0; 0 0 1].
我需要计算基本矩阵F,基本矩阵E以便计算摄像机矩阵P1和P2,对吧???
之后,当我有相机矩阵P1和P2时,我使用线性三角测量方法来估计3D点云.这是正确的方法吗?
如果您对我有任何建议,我感激不尽?
谢谢!
要对点进行三角测量,您需要所谓的“相机矩阵”和每个图像中的二维点(您已经拥有)。
在 Matlab 中,您可以使用 函数triangulate来完成您的工作。
如果您已经校准了相机,您应该已经有了这些信息。不管怎样,这里有一个关于如何创建stereoParams三角测量所需的“”对象的示例。
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |