基于双路图像采集的三维模型构建问题研究
2017-09-09费建军
费建军
摘要:本文主要研究的是对同一物体的不同方向的两张图片进行分析,并完成曲面重建。从同一的两个不同角度获取两张图像,并对其进行特征匹配处理和密集匹配,最终可以得到一个形成3D点模型,经过适当处理可得模型。关键研究工作内容如下:1)关于SIFT特征匹配的研究应用SIFT特征匹配算法具有更好的优势,因为它能获取更稳定的特征点,并能在图像发生运动时依旧能正确匹配,具有较强的鲁棒性,在目前匹配性能中表现最为突出,在基于特征的匹配中研究最普及的匹配算法。2)M估计抽样一致性算法(MSAC算法)的研究应用利用MSAC算法去除误匹配点。
关键词:三维重建;MSAC;SIFT匹配
中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2017)07-0137-05
随着VR/AR技术的兴起与推广,人们将其作为人类与计算机虚拟环境交互的一种手段。把虚拟现实技术看做推动科技进步的新工具。认为其可以改变人类科学研究、工业设计和生产实践的方式。虽然虚拟现实技术还存在着诸多技术难题,但已经引起了人们的广泛关注[1]。
VR技术中涉及到大量模型的使用,并且对模型的复杂度和真实还原度有着更高的要求。传统的三维建模技术成熟,但是建模所需要的人力和时间消耗过大,人们急于寻求一种快捷的建模方式。考虑到人们能以现实中的物体作为模型的基础,现在学者提出利用计算机对获取图像进行处理,提取出图像中的模型,这样生成的模型不仅快捷方便,而且更具真实感[2]。
利用图片建模具有时间短,逼真度较高的优点[3]。伴随着计算机视觉技术的研究和发展,它也呈现出丰富的发展趋势,越来越多的方法被开发出来,它们都涉及了计算机视觉个个方面的知识[4]。
该文对常见的五种常规建模方式进行了说明(基于单幅图像重建几何模型、采用立体视觉方法重建几何模型、同时恢复场景的几何和相机的运动、基于侧影轮廓线重建几何模型、基于深度图像重建几何模型)对比其优缺点。在经过对比并且结合本文论点:快捷简单地生成模型,所以采用了立体视觉方法重建几何模型为重点阐述对象。
1 常规模型优缺点讲解
1.1 基于单幅图像重建几何模型
现在已有技术使用输入的灭点信息和几何不变量实现分片平面的几何重建。利用用户输入的约束系统能从图像中恢复基本的集合模型。通过一些基本几何模型实现建筑环境的交互建模。这些方法都存在这一些缺陷,即需要大量的人机交互,并且需要很强的逻辑能力实现,没有达到简单快捷的建模目的。
1.2 采用立体视觉方法重建几何模型
该方法利用两幅及以上的图像进行模型重建,通过寻找两幅图像中的对应点建立起点云模型,再進一步处理成模型。其中,寻找对应点是立体视觉中最困难的部分,实际物体表面复杂,还存在外界环境影响,这些都需要解决。
1.3 同时恢复场景的几何和相机的运动
在传统的图像建模中,都需要对拍摄的相机进行标定,但近年来,开始有学者研究如何免除这一步。他们希望通过多幅未标定图像同时恢复场景的几何和相机的运动,使用未标定的图像有许多好处,例如不会受到相机自身参数的影响,并且可以改变相机的焦距等。这方面的创始人是 Tomasi 团队,他们利用放射分解的方法从一系列的图像中实现了这些成果。该方法相对较好,但是对设备要求很高,对图像噪声极为敏感。
1.4 基于侧影轮廓线重建几何模型
该方法是通过物体的侧影轮廓线去了解物体的几何形状,当以透视投影去多视角地分析空间物体时,我们能得到每个物体的侧影轮廓线。分析轮廓线和对应的透视投影中心,就能得到三维空间中一个一般形状的锥体,所有这些椎体复合相交构成了物体的空间包络,它被称为物体的可见外壳。该方法缺点在于十分耗时,没有体现其建模快捷性。
1.5 基于深度图像重建几何模型
上述方法均为基于亮度图像的几何模型重建,而那些方法的模型重建出来的模型往往存在不同的缺陷,模型精度和复杂度难以得到保证,此时基于深度图像重建几何模型重建得到了广泛应用。基于深度图像模型重建方法为主动方法,其他类似的方法还有基于阴影重建模型和栅格投影方法。主动方法需要控制光照或利用特殊方式获取三维物体信息,而亮度图像只能被动地接受物体的亮度信息,因此它们被称为被动法。相对于被动法,主动法能得到更加精确的模型,但是对设备的要求很高,同时实现过程复杂,无法达到该文简单建模的要求[5]。
2 双路图像采集中的三维模型构建分析
本文主要主要目的是如何快捷便利的生成模型,故而重建几何模型时采用的是立体视觉法。该方法是图像建模方法的一个分支,是基于图像几何建模问题,主要研究如何从图像中能够抽取三维信息,并使之构成万为模型。基于图像的几何建模是将图像中存在大量信息(光线、强度、物体轮廓等等)与相机参数相关联,利用成像原理进行逆运算恢复物体三维信息。
2.1 关键技术分析
2.1.1 相机标定
物体成像时,其表面的三维空间位置和图像间存在的对应关系是由相机成像参数规定。所以相机参数是三维成像的关键,为了换算出相机参数,就必须对相机进行标定。
其中有三个重要的坐标:
(1)世界坐标(xw,yw,zw):为了准确描述物体和相机的物理位置而建立的三维坐标。如图1所示。
(2)摄像机坐标系(xc,yc,zc):用来描述相机相关信息的坐标系。
(3)图像坐标系为了表示图像中的点而建立,可分为:图像物理坐标系(uov),以毫米为单位;图像像素坐标系(xoy),以像素为单位;如图2所示。
世界坐标与相机坐标的关系:
设三维空间中存在一点P,它的坐标为:世界坐标系:(Xw,Yw,Zw)、相机坐标系:(Xc,Yc,Zc),他们之间的关系为:endprint
其中,参数R为3x3的正交旋转矩阵,参数t为三维平移向量。通过研究针孔模型,透镜成像焦距f,物距u和相距v的关系可由下列式子表示:
我们可对上面的式子进行转化,以更好表示它们之间的关系:
相机标定原理:上述部分所建立的坐标系,是为了将图像中的点与空间中的点产生对应关系,以便能将从图像中获取的点正确放入所建三维模型中,可以通过坐标对应关系了解畸变原因以便修正。如图3所示。
将上述公式导入针孔模型公式中得到可得
其中K代表相机的内部参数,参数R为3x3的正交旋转矩阵,参数t为三维平移向量。
2.1.2 尺度不变特征变换(SIFT)
SIFT是通过检测图像局部特征而获得特征点的算法,该算法通过求一幅图像中的特征点以及有关尺度和方位,进行图像特征匹配,具有良好的效果。
通过求图像中的特征点等参数,进行图像匹配。一般需要做以下四步工作:
(1)尺度空间极值检测:需要检测图像的的物理位置和尺度空间,为了更精细的探查尺度空间的不确定位置和没有发现的特征点,采用了高斯差分函数进行验证。
(2)关键点定位:可以将关键点定位在图像的所有候选点,这时还需要测试这些点的稳定性,来确保获得优良数据。
方向分配:所有关键点都有自己的方向,对于已分配的方向,所有后续操作都是针对其来执行的。
(3)方向分配:每个关键点位置需要有自己的方向,数量可为一个或多个,对于已经分配方位,比例和位置的特征,以后所有的操作都是针对它们执行的。
(4)关键点描述符:在每个关键点附近的区域中需要测量局部图像梯度,这时可以使用所选择的尺度测量,这样的转化允许了一定量的图像显著形状失真和光照的改变。该方法的使用提升了匹配能力,能够从图像中获取涉及各个尺度和位置区域的特征。在Lowe的实验中得知尺度500x500像素的典型图像可以产生大约2000个稳定特征(这个数值会受到图像内容和各种参数选择的影响)[7]。特征的数量对于对象识别特别重要,例如在检测杂乱背景中的小物体,至少要正确匹配3个特征才能进行可靠的识别。
2.1.3图像预处理(MSAC处理)-离群点移除
这里介绍了一种鲁棒估计器MSAC,可用于广泛的各种估计任务。特别地,MSAC非常适合估算复杂表面的物体。在这里应用于对由刚性运动相关的图像之间存在的多个视图关系的几个估计。这些是两个或多个视图中的相应图像点之间的关系,并且包括例如对极几何和投影,这些图像关系用于几个目的:(a)匹配;(b)结构恢复;(c)运动切割;(d)运动模型选择。
MSAC可以消除因匹配集相似度產生的误匹配,即对初次匹配的特征点进行进一步的删选。首先对初次匹配得到的匹配点进行随机采样,然后通过反复迭代的方法,使得匹配点对的汉明距离和的代价比我们设定的阈值小,从而消除错误匹配。
3 三维模型构建的简单展示
3.1 标定过程
3.1.1 输入图像(图4)
3.1.2 输入标定板中方块长宽(图5)
通过计算得到的相机内参数矩阵如图6。
参数保存在文本文件中,之后进行读取。同时分析对外参数,可得如图7所示。
3.2 SIFT特征点提取及匹配
(1)关键点检测:分为建立尺度空间(高斯差分金字塔:高斯模糊与图像降采样),检测DoG尺度空间极值点,特征点优化(精确定位与消除边缘响应);
(2)关键点描述:特征点方向分配,局部图像描述符;
(3)关键点匹配。
部分关键代码详解:
fprintf(SIFT:用构造尺度空间DoG...\n);tic;
scalespace=gaussian(I,sigmaN,O,S,omin,-1,S+1,sigma0);
fprintf(高斯尺度空间计时:(%.3fs)\n,toc);tic;
difofg=diffofg(scalespace);
fprintf(构建相减尺度空间:(%.3fs)\n,toc);
for o=1:scalespace.O
fprintf(SIFT:计算“组” %d\n,o-1+omin);
tic;
%scale space structure构建尺度空间
L.O=O;L.S=S;L.sigma0=sigma0;L.omin=omin;L.smin=smin;
L.smax=smax;
%%First Octave第一组
%初始化第一组%
L.octave{1}=zeros(M,N,smax-smin+1);
%初始化第一层%
sig=sqrt((sigma0*k^smin)^2-(sigmaN/2^omin)^2);
L.octave{1}(:,:,1)=smooth(I,sig);
%other sub-levels其它层%
for s=smin+1:smax
dsigma=k^s * dsigma0;
L.octave{1}(:,:,s+so)=smooth(...squeeze(L.octave{1}(:,:,s-1+so)),dsigma);
End
%只是记录下了和用到的层数,并不为每层确定具体的尺度值,sigma0
%具体尺度值可推导出来%
%转化所有组%endprint
foro=2:O%接下来从第二组开始%
sbest=min(smin+S,smax);
TMP=halvesize(squeeze(L.octave{o-1}(:,:,sbest+so)));
%以第四层降采样%
sigma_next=sigma0*k^smin;
sigma_prev=sigma0*k^(sbest-S);
if(sigma_next>sigma_prev)
sig=sqrt(sigma_next^2-sigma_prev^2);
TMP=smooth(TMP,sig);
End
[M,N]=size(TMP);
L.octave{o}=zeros(M,N,smax-smin+1);%初始化下一组
L.octave{o}(:,:,1)=TMP;%降采样得到图像作为该组第一层
%other sub-levels其它层%
fors=smin+1:smax
dsigma=k^s*dsigma0;
L.octave{o}(:,:,s+so)=smooth(...
squeeze(L.octave{o}(:,:,s-1+so)),dsigma);
end
end
再经过关键点检测-检测DoG尺度空间极值点、关键点检测-特征点优化、关键点描述-特征点方向分配、关键点描述-局部图像描述符
关键点匹配:这里用的是欧氏距离的邻近搜索方法,建立树结构,缩小搜索范围。其中邻域取值是关键,越大越准确,然而计算量也越大。
3.3 MSAC 消除误匹配
for trails=1:maxtrails
sampleIndicies=randperm(nPoints,8);
f=eightPoint(points1homo(:,sampleIndicies),points2homo(:,...sampleIndicies));
pfp=(points2homo*f);
pfp=pfp.*points1homo;
d=sum(pfp,1).^2;
inliers=coder.nullcopy(false(1,nPoints));
inliers(d≤threshold)=true;
nInliers=sum(inliers);
% MSAC檢测
Dist=cast(sum(d(inliers)),double)+threshold*(nPoints-...nInliers);
if bestDist>Dist
bestDist=Dist;
bestInliers=inliers;
end
end
3.4 模型分析与进一步处理
在光线不足的情况下由于生成的匹配点过少,导致模型存在错漏,为了更好地完成模型,在户外选取的物体,并对其四面进行了拍摄,通过上述处理建模后,对结果进行了拼接,如图8所示。
拼合所得模型可生成如下点云模型,如图9所示。
最后,通过对模型进行进一步的处理,恢复其表面,如图10所示。
通过图10可以看出,物体表面越平整,恢复得越好。而杂乱无章的花草及拼合处依然有缺陷,需要对模型进行进一步人工细化和平整。
4 总结与展望
由于虚拟现实中的仿真模拟具有突出的特点,所以VR技术不单位科学研究提供了新的认知工具,并且已经在而且会更将继续的引起制造工业的巨大变革。在科学研究中,研究人员可以形象的讨论高抽象的研究对象,并能精确的对其施加影响。利用图片进行三维模型的复原,以后也必将成为虚拟现实技术中的重要手段之一。
由于图像和相机所限,复杂模型的表面不够细致,整体粗糙,同时暗光部分重建有待提高。同时由于时间,经验和知识水平有限,整体过程存在诸多不足,例如特征点匹配可换做SURF方法。之后的模型处理也没有完成,根据查阅的资料,可使用meshlab对后续点云模型进行处理。
本文只起到了抛砖引玉的作用,希望各位同行提起兴趣,为促进虚拟现实技术的发展添砖加瓦。
参考文献
[1]DA.simon M.Hebert T. Techniques for Fast and Accurate Intra Surgical Registration. Journal of Image Guided Surgery,1995:17-29.
[2]PJ.Besl N. A Method for Registration of 3D Shapes. IEEE Transactions on Pattern Analysis and Machine Intelligence,1992:239-256.
[3]张志佳,王博实,李雅红,齐芳,张威.基于双视角的可见外壳三维重建研究[J].计算机技术与发展,2015(03):50-53.
[4]高岑,李清光,李德华.一种基于多视角三维表面重建的方法[J].武汉理工大学学报, 2007(08):128-130.
[5]Edelsbrunner H M. Three Dimensional Alpha Shapes. ACM Transactions onGraphics, 1988.
[6]刘凌云,钱新恩.基于3D标靶的摄像机标定方法的改进[J].湖北汽车工业学院学报,2008(01): 33-36.
[7]G.Lowe D. Distinctive Image Features from Scale-Invariant Keypoints. University of British Columbia Vancouver,B.C.,Canada: Computer Science Department, 2004.endprint