当前位置 : 主页 > 编程语言 > python >

【图像重建】双目视觉三维重建含Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-18
1 简介 三维重建是图像处理,计算机视觉,计算机图形学的一个重要研究领域.基于双目立体视觉的三维重建通过相机标定搭建一个对准的标准立体实验平台采集图像,进而对图像进行特征点

1 简介

三维重建是图像处理,计算机视觉,计算机图形学的一个重要研究领域.基于双目立体视觉的三维重建通过相机标定搭建一个对准的标准立体实验平台采集图像,进而对图像进行特征点检测与匹配找到待重建点,然后通过双目视觉原理计算三维坐标,最后进行纹理映射.根据真实图像的实验结果表明,具有较好的重建效果.

2 部分代码

function [RI, TI, ZI] = image2angularintesity(vi, I, params)
%This function transforms the image such that each set of pixels that radiate
% out at a given angle from the centroid become a vertical line in a new image.
if nargin < 2
params.number_angular_divisions = 2^6;
params.number_radial_divisions = 40;
end
if nargin < 3
verbose = 0;
end
[num_rows, num_cols] = size(I);
[col_distance, row_distance] = meshgrid(linspace(-(num_cols) / 2 , (num_cols) / 2, num_cols),...
linspace(-(num_rows) / 2 , (num_rows) / 2, num_rows));
[T, R] = cart2pol(col_distance, row_distance);
params.radius_min = sqrt(0.5);
params.radius_max = max(R(R < min(R(~vi))));
params.theta_min = -pi + ((2 * pi) / params.number_angular_divisions) / 2;
params.theta_max = pi - ((2 * pi) / params.number_angular_divisions) / 2;
radii = linspace(params.radius_min, params.radius_max, params.number_radial_divisions);
thetas = linspace(params.theta_min , params.theta_max , params.number_angular_divisions);
[RI, TI, ZI] = griddata(R(vi), T(vi), double(I(vi)), radii, thetas');
ZI(isnan(ZI)) = mean(ZI(~isnan(ZI)));
if params.VERBOSE
figure
h = surf(RI, TI, ZI);
view (-90,90)
colormap(params.map)
title('Image as a function of radius and angle')
xlabel('Radius(pixels)')
ylabel('Theta (radians)')
set (h, 'linestyle', 'none')
end

3 仿真结果

【图像重建】双目视觉三维重建含Matlab源码_图像处理

【图像重建】双目视觉三维重建含Matlab源码_图像处理_02

【图像重建】双目视觉三维重建含Matlab源码_立体视觉_03

【图像重建】双目视觉三维重建含Matlab源码_立体视觉_04

【图像重建】双目视觉三维重建含Matlab源码_图像处理_05

4 参考文献

[1]陈强. 基于双目立体视觉的三维重建[J]. 现代计算机:中旬刊, 2015.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【图像重建】双目视觉三维重建含Matlab源码_立体视觉_06




网友评论