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 仿真结果
4 参考文献
[1]陈强. 基于双目立体视觉的三维重建[J]. 现代计算机:中旬刊, 2015.