资源简介
sfm三维重建.rar
代码片段和文件信息
%% sfm
%读取图像
clc;
clear all;
imageDir = fullfile(‘D:‘‘picture‘‘hezi01‘);
imds = imageDatastore(imageDir);
load(‘calibrationSession‘);
cameraParams = calibrationSession.CameraParameters;
%% 创建图像和追踪
% 创建第一幅图像
images = cell(1 numel(imds.Files));
for i = 1:numel(imds.Files) % 图片的数量
I = readimage(imds i);
images{i} = rgb2gray(I);
end
%% 稠密重建
% 遍历图像,在所有视图中检测一组密集点
I = images{1};
prevPoints = detectMinEigenFeatures(I ‘MinQuality‘ 0.001‘FilterSize‘ 3);
% prevPoints = detectSURFFeatures(I‘MetricThreshold‘5‘NumScaleLevels‘6);
% prevPoints = detectKAZEFeatures(I‘Diffusion‘‘region‘‘Threshold‘...
% 0.00001‘NumOctaves‘4‘NumScaleLevels‘5);
% 创建点跟踪器对象来跟踪视图中的点。
tracker = vision.PointTracker(‘MaxBidirectionalError‘ 1 ‘NumPyramidLevels‘...
6‘BlockSize‘[3131]);
% 初始化点跟踪器。
PrevPoints = prevPoints.Location;
initialize(tracker PrevPoints I);
I1 = readimage(imds 1);% 读取第1张图片
I2 = images{2}; % 用于后面颜色
[currPoints validIdx] = step(tracker I2);
matchedPoints = PrevPoints(validIdx :);
% 将密集点存储在视图集中。
vSet = viewSet;
viewId = 1;
vSet = addView(vSet viewId ‘Points‘ prevPoints ‘Orientation‘ ...
eye(3 ‘like‘ PrevPoints) ‘Location‘ ...
zeros(1 3 ‘like‘ PrevPoints));
% 跟踪所有视图的要点
for i = 2:numel(images)
% Read and undistort the current image.
I = images{i};
[currPoints validIdx] = step(tracker I);
matchedPoints1 = PrevPoints(validIdx :);
matchedPoints2 = currPoints(validIdx :);
[E epipolarInliers] = estimateEssentialMatrix(matchedPoints1...
matchedPoints2cameraParams);
%警告:已达到最大审判次数。考虑增加最大距离或降低期望的信心。
inlierPoints1 = matchedPoints1(epipolarInliers :);
inlierPoints2 = matchedPoints2(epipolarInliers :);
[orient loc] = relativeCameraPose(E cameraParams...
inlierPoints1inlierPoints2);
% 将当前视图匹配添加到视图集
vSet = addView(vSet i ‘Points‘ currPoints);
% 存储上一个视图和当前视图之间的点匹配。
matches = repmat((1:size(PrevPoints 1))‘ [1 2]);
matches = matches(validIdx :);
vSet = addConnection(vSet i-1 i ‘Matches‘matches);
% 因为储存的点为PrevPoints和currPoints,要变成 matchedPoints1,2的对应关系。
% 获取包含前一个相机姿势的表。
prevPose = poses(vSet i-1);
prevOrientation = prevPose.Orientation{1};
prevLocation = prevPose.Location{1};
% 计算当前相机在全局坐标系中相对于第一个视图的姿态。
orientation = orient * prevOrientation;
location = prevLocation + loc * prevOrientation;
vSet = updateView(vSet i ‘Orientation‘ orientation ‘Location‘ location);
% 在所有视图中查找轨迹
tracks = findTracks(vSet);
% 得到所有视角的相机姿态表
camPoses = poses(vSet);
% 确定三维世界点的初始位置。
xyzPoints = triangulateMultiview(tracks camPoses cameraParams);
% 改进三维世界点和相机的姿势.(光束平差法)
[xyzPoints camPoses reprojectionerrors] = bundleAdjustment(xyzPoints ...
tracks camPoses cameraParams ‘FixedViewId‘ 1 ...
‘PointsUndistorted‘ true);
% 保存
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 48276 2018-11-21 10:55 calibrationSession.mat
文件 4304 2018-12-08 13:00 sfm_ex3.m
文件 4717878 2018-11-21 10:51 box\IMG_20181119_130658.jpg
文件 4846307 2018-11-21 10:52 box\IMG_20181119_130659.jpg
文件 4793150 2018-11-21 10:51 box\IMG_20181119_130703.jpg
文件 4631615 2018-11-21 10:51 box\IMG_20181119_130706.jpg
文件 4574597 2018-11-21 10:51 box\IMG_20181119_130708.jpg
文件 4791546 2018-11-21 10:51 box\IMG_20181119_130711.jpg
文件 4426695 2018-11-21 10:51 box\IMG_20181119_130712.jpg
文件 4790101 2018-11-21 10:51 box\IMG_20181119_130714.jpg
文件 4677665 2018-11-21 10:51 box\IMG_20181119_130716.jpg
文件 4849614 2018-11-21 10:51 box\IMG_20181119_130720.jpg
文件 5214150 2018-11-21 10:51 box\IMG_20181119_130722.jpg
文件 5156172 2018-11-21 10:51 box\IMG_20181119_130724.jpg
文件 4804266 2018-11-21 10:51 box\IMG_20181119_130726.jpg
文件 4802396 2018-11-21 10:51 box\IMG_20181119_130728.jpg
文件 4868926 2018-11-21 10:51 box\IMG_20181119_130730.jpg
文件 4953662 2018-11-21 10:51 box\IMG_20181119_130732.jpg
目录 0 2018-11-30 10:36 box
----------- --------- ---------- ----- ----
76951320 19
相关资源
- 通过变化的电磁耦合,大型强子对撞
- Delphi XE10.3 破解文件
- Delphi XE10.2.3破解 破解
- 剖析Linux系统下基于NUMA构建的服务
- zend studio 12 破解 注册码 key 绿色版
- CCLicenseService
- WinRAR 4.0 简体中文破解版
- 单片机仿真软件proteus6.7免安装绿色版
- UltraEdit 26.x版本 激活工具
- 一种基于LM3150 Buck型开关电源设计.p
- 百度文库、豆丁、道客巴巴文件免费
- 改善分数分频锁相环合成器中的整数
- 233网校视频器2018最新绿色版
- OdooHotelManagementSystem 基于Odoo的酒店管
- SecureCRT-6.0.2安装包和SecureCRT-6.0.2注册
- 数据结构与算法课件ppt
- 方正超粗黑简体 FZCCHJW—GB1-0 字体
- FZCCHJW-GB10
- Dr. Cleaner Pro mac破解版
- kindle epub 电子书大全
- 迅雷敏感资源限制解除小工具.zip
- Eclipse编程技术与附CD-ROM光盘
- HEU_KMS_Activator_j
- pzs_44217116_06.aia
- Git汉化资源
- digital字体
- 浪潮英信服务器NP120D用户手册
- 看门狗复位的应用技巧
- Hillstone SA-2003高性能纯硬件安全网关产
- Hillstone ARP防护——StoneOS如何保
评论
共有 条评论