基于Canny算子和Harris角点提取的三维重建方法★
2011-06-20高一宁韩燮
高一宁,韩燮
(中北大学 电子与计算机科学技术学院 山西 太原 030051)
0 引言
基于双目立体视觉的三维重建是根据人在大脑中将左右眼图像融合成立体图像的原理,使用标定后的双摄像头进行同步拍摄获得同一物体在相同条件下不同位置的两幅图像,然后根据所获取的二维图像的视差和像素点信息进行计算,获取像素点的第三维深度信息。从而利用像素点的三维坐标信息对所拍摄物体进行建模。
相比其他类的体视方法,如透镜板三维成像、投影式三维显示、全息照相术等,双目本是直接模拟人类双眼处理景物的方式,可靠简便,在许多领域均极具应用价值,如微操作系统的位姿检测与控制、机器人导航与航测、三维测量学及虚拟现实等。
本文采用的三维重建方法即是利用双目相机成像并计算获得图像的三维点云信息,并将所拍摄物体进行三维重建。
1 双目立体视觉原理
双目立体视觉的三维测量是基于视差原理(如图1所示),它是由两个完全相同的摄像机构成,两个图像平面位于同一个平面上,两个摄像头的坐标轴互相平行且x轴重合,模仿人眼获取物体位置信息的原理,通过两个摄像机同时获取物体的左右视图,类似与人的左右眼获取物体图像一样,经过计算获取物体的深度信息,由此得到物体的三维坐标确定物体的精确位置。
其中,基线距离是两个相机的投影中心之间的距离;相机的焦距为f。
设两相机在同一时刻拍摄到物体的同一特征点P(xc,yc,zc),并分别获取了点P的图像,设图像坐标分别为 Pleft=(Xleft,Yleft),Pright=(Xright, Yright)。
现两摄像机的图像在同一个平面上,则特征点P的图像坐标Y坐标相同,即则由三角几何关系得到:
则视差为:disparity= Xleft-Xright。由此可计算出特征点P在相机坐标系下的三维坐标为:
图1 视差原理图
因此,左相机像面上的任意一点只要能在右相机像面上找到对应的匹配点,就可以确定出该点的三维坐标。这种方法是完全的点对点运算,像面上所有点只要存在相应的匹配点,就可以参与上述运算,从而获取其对应的三维坐标。
2 实验过程
2.1 设备介绍
本次试验使用的设备为双目相机,相机左右摄像头在同一平面上,且相机参数相同位置固定,经拍摄获得同一物体的左右视图,经计算获取三维坐标信息。
2.2 研究方法
首先利用相机获得原始的ppm格式的图像,应用低通滤波、图像校正和边缘检测的预处理模块,得到平滑低噪的图像;然后将处理过的图像进行立体匹配、计算三维坐标信息。最后的处理结果即是一幅深度图像。
2.3 原始图像获取
基于双目相机的双目立体视觉系统必须安装在一个稳定的平台上,由于使用的是双目相机,因此相机内参完全一致且相机间距不会发生变化。同时应该使被测物体尽可能的靠近相机。如果基线长度和物体距相机距离之间的比值过大,图像对之间的交迭区域将非常小,这样将不能够获取足够的物体表面信息。图2所示为所采用设备的平面图。表1所表示的为设备的内部参数。
本文采用张友正标定法得到标定信息。
图2 双目相机
表1 相机内部参数
HFOV指相机的镜头在水平方向上能够达到的可拍摄的最大角度。
图3 左相机获取的图像
图4 右相机获取的图像
2.4 边缘提取
边缘是图像的最基本的特征之一,包含了丰富的信息。二维图像的特征抽取是三维计算机视觉的第一步,抽取二维图像上的边缘、角点、纹理等基本特征是整个系统框架中的第一步。
图像边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。由于Canny算子提取的边缘最为完整,而且边缘的连续性很好,定位比较精确,因此本文采用的是Canny算子进行边缘检测。
Canny边缘检测方法如下:
第一步:图像使用带有指定标准偏差σ的高斯滤波器来平滑,从而可以减少噪声;
第三步:第二步中确定的边缘点会导致梯度幅度图像中出现脊。算法追踪所有脊的顶部,并将所有不在脊的顶部的像素设为零,以便在输出中给出一条细线,这就是非最大值抑制处理。脊像素使用两个阈值T1和T2做阈值处理,其中T1<T2。值大于T2的脊像素称为强边缘像素,T1和 T2之间的脊像素称为弱边缘像素;
第四步:连接边缘。
Canny 边缘检测的语法为:[g,t]=edge(f,’canny’,T,sigma)
2.5 立体匹配
立体匹配由3个基本的步骤组成:
第一步:从图像对中的一幅图像如左图上选择与实际物理结构相应的图像特征;
第二步:在另一幅图像如右图中确定出同一物理结构的对应图像特征;
第三步:确定这两个特征之间的相对位置,得到视差。通过立体匹配得到视差图像之后,最终获得深度图像,并恢复场景的三维信息。
特征点的选取本文采用Harris算子提取物体的角点信息并结合边缘检测获取的边缘点作为特征点。
Harris检测的算法思想是:在图像中设计一个局部检测窗口,当该窗口沿各个方向作微小移动时,考察窗口的平均能量变化,当该能量变化值超过设定的阈值时,就将窗口的中心像素点提取为角点。其数学表达式为:
将图像窗口平移[u,v]产生灰度变化E(u,v)。其中w(x,y)为窗口函数,I(x,y)为图像灰度,I(x+u,y+v)为平移后的图像灰度。
Harris算法步骤为:
第一步:计算图像的方向导数即图像像素在水平和垂直方向上的梯度,以及两者的乘积,得到M中4个元素的值:第二步:对图像进行高斯滤波,得到新的M。离散二维零均值高斯函数为
第三步:计算原图像上对应的每个像素点的兴趣值,即R值。
第四步:选取局部极值点。Harris方法认为,特征点是局部范围内的极大兴趣值对应的像素点。
第五步:设定阈值,选取一定量的角点。
匹配结果如图5所示。
图5 边缘提取和角点匹配结果
2.6 三维坐标计算
本文采用的设备为平行光轴模型,摄像机的焦距f和两个相机光心间的距离B已知。以左相机的坐标系为世界坐标系,空间点P的世界坐标为(X,Y,Z),在左右相机坐标系下坐标分别为(xl,yl,zl)和(xr,yr,zr),在左右图上像平面坐标为(a1,b1),(a2,b2),视差D=a1-a2。
世界坐标系与摄像机坐标系的关系:
由此,根据双目视觉原理可知,计算三维空间点的坐标方法为:
2.7 三维网格重建
将所有的匹配点的三维坐标计算出来后,为得到真实感的三维模型,即对空间点进行三角剖分重建出物体模型。本文采用的为Delaunay三角剖分算法的Bowyer-Watson算法实现重建。
该算法的基本步骤是:
第一步:构造一个超级三角形,包含所有散点,放入三角形链表。
第二步:将点集中的散点依次插入,在三角形链表中找出其外接圆包含插入点的三角形(称为该店的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的插入。
第三步:根据优化准则对局部新形成的三角形进行优化,将形成的三角形放入Delaunay三角形链表。
第四步:循环执行上述第二步,知道所有的散点插入完毕。
3 实验结果
立体匹配的对应点对如表2所示。其中,B=12cm,f=6mm。根据式(4)进行计算,获取坐标信息进行重建。
表2 左右图像中匹配的特征点的坐标
使用Delaunay三角剖分算法进行三维重建。建模结果如图6所示。
4 结论
本文介绍了一种基于双目立体视觉的三维重建的方法,通过双目相机获取视差图像,进行图像处理和特征点的选取,完成特征点的立体匹配,计算得到模型特征点的三维坐标,并在MATLAB中进行了仿真实现,得到物体的三维模型。但是,由于立体匹配上存在误差,所以重建结果受到特征点提取和匹配的准确度的影响,物体的重建效果不够精细,还需不断进行算法改进,得到具有真实感的三维物体模型。
[1]隋 ,金伟其.双目立体视觉技术的实现及其进展[J].计算机应用,2004(10):4-6,12.
[2]刘金颂,原思聪,张庆阳,等.双目立体视觉中的摄像机标定技术研究[J].计算机工程与应用,2008,44(6):237-239.
[3]李牧, 继红,李戈,等.自适应Cannya算子边缘检测技术[J].哈尔滨工程大学学报,2007,28(9):1002-1007.
[4]伍军.散乱点云表面重建技术的研究与开发[D].上海:上海交通大学,2008.
[5]韩云生,刘国栋,刘光宇.基于Canny算子边缘特征匹配的双目深度测量[J].计算机系统应用,2009(11):52-55.
[6]李刚,李竹林,赵宗涛.基于边缘特征点的分级立体匹配算法研究[J].陕西师范大学学报,2009,37(5):20-23.
[7]杨恒,王庆.一种高效的图像局部特征匹配算法[J].西北工业大学学报,2010,28(2):291-297.
[8]Hai Du,Mu-guo Li.The study for particle image velocimetry system based on binocular vision[J].Measurement,2009(42):619-627.
[9]Rui Li,Stan Sclaroff.Multi-scale 3D scene flow from binocular stereo sequences[J].Computer Vision and Image Understanding,2008(110):75-90.