基于GPU加速的层次化自适应三维重建方法与流程

文档序号:11135261阅读:1303来源:国知局

本发明涉及一种快速的鲁棒的三维重建方法,尤其涉及一种基于GPU加速的层次化自适应快速三维重建方法,属于计算机视觉领域。



背景技术:

光学影像三维重建技术是计算机视觉领域中的一研究热点和方向,其应用涉及到计算机辅助几何设计、计算机图形学(CG)、遥感及工业测量等多个方面。尤其是随着计算机硬件设备、成像设备的廉价化,以及来自工业、科研、娱乐等方面的大量需求,使得该项技术受到了越来越多国内外研究人员的关注。该项技术是利用二维光学投影恢复物体三维信息(表面形状等)的数学反演过程,包括二维光学影像获取、预处理、视差求解及三维反演等步骤。

随着三维重建领域对仿生视觉技术的研究,利用视差原理由双目仿生视图反演物体表面三维几何信息方法获得了快速的发展。随着双目视觉在多领域的应用,如:航空测量,三维生物识别及视觉融合等领域,基于傅里叶变换平移不变性理论的相位相关技术以其卓越的超窄基线高精度三维反演性能受到越来越多的关注。然而,由于受到固定窗口及庞大计算量的限制,导致相位相关算法不能快速鲁棒地处理一些包含地形落差较大,弱纹理及河流区域的影像。即使一些方法已经试图通过基于GPU加速的方法解决此问题,但是常常表现出鲁棒性不足的问题,尤其不能有效消除弱纹理及河流区域的影响。



技术实现要素:

本发明主要解决的技术问题是提供一种基于GPU加速的层次化自适应快速三维重建方法,采用GPU加速辅助的层次化自适应地视差图计算方法解决传统视差图计算两个问题:1、由于庞大的计算量而无法简化计算复杂度问题;2、由于视差范围过大,无纹理区及动态纹理区域导致误匹配计算问题。

本发明的解决方案是:首先,针对计算瓶颈,根据PC匹配算法各计算存在独立计算的可能,考虑CUDA环境的(Single Instruction Multiple Data,SIMD)SIMD特性,提出GPU加速算法,同时计算所有像素点的视差以达到加速效果;其次,针对视差范围过大,无纹理区及动态纹理区域导致误匹配计算问题,提出基于GPU加速的层次化自适应的并行架构,从粗到细地求解视差图;再次,针对大窗口中值滤波器时耗问题,在每一层视差图,使用下采样,小窗口中值滤波器及双边滤波技术对每一层的视差图进行快速滤波;最后,通过视差图和摄像机标定参数,利用双目视觉三维反演模型快速计算出三维模型。

本发明实现上述方案的步骤如下所示:

1.通过双视几何极线约束和视差计算算法,初步矫正输入图像:第一,对输入图像对利用尺度不变特征变换算法检测图像对的匹配点;第二,利用双视几何极线约束关系求出对极点e和基础矩阵F,并通过将之投影到无穷远点,得到射影变换矩阵H’;第三,将极点旋转到轴线上,并将其投影到无穷远处;最后使用最小二乘法优化算法确定另一H,使得达到最小,然后对两张图像分别使用H和H’进行重采样,得到极线对齐的矫正图像;

2.对图像进行层次化架构处理,确定各层次计算窗口和采样步长以达到自适应性效果。首先,设置自适应分层函数,对输入像对进行层次化划分:。其中,为第i层步长,c为总分层次数,i为层次。然后,根据层次化结构,设置窗口自适应函数,以解决图像中不同部分视差差别过大问题,其具体公式如下:。表示第i层的窗口,为初始窗口值,c为总分层数。i表示层次。

3.使用层次化自适应的GPU加速技术求解视差图:

1)在GPU并行架构下,使用并行算法同时对每个像素点进行PC运算,快速计算出每层的视差信息。PC算法具体公式如下:,其中,、分别为左右图,为像素坐标,(d是待求解视差)。首先对、两幅图像进行傅里叶变换,根据傅里叶变换平移特性,将此问题放在频率下进行相位求解:,其中,F1、F2分别是、在频率域下的表示,C(U)为互功率谱函数(,其中,W*W表示图像大小)。在本方法的GPU并行架构中,整个傅立叶变换过程都是通过GPU加速模块(Compute Unified Device Architecture Fast Fourier Transformation,CUFFT)CUFFT计算完成。

2)δ函数峰值点位置及其峰值计算:根据PC算法流程,对互功率谱函数C(U)进行傅里叶逆变换,得到δ函数。然后,使用一维高斯函数拟合δ函数,从而计算视差d,其具体求解方法如下: ,其中,为亚像素偏移量,为δ函数峰值点位置,亚像素偏移量(,)的具体计算公式为:,。在本方法中,基于密集匹配中每一个PC函数具备独立计算的能力;再根据GPU的单指令多数据流特性,在具备硬件基础的情况下,采用GPU实现对图像对视差图求解的加速过程。同时,在拟合过程中保存每一像素点的δ函数峰值,形成峰值矩阵,为可信度阈值设定提供数值依据。

3)根据峰值矩阵(峰值图),确定可信度阈值,用来消除下一层中求解的不可信视差在视差图细化时对上一层视差的影响。可信度阈值公式定义如下:,其中,m为常数,Thresh为可信度阈值,为逆傅里叶变换,C为互功率谱函数。在计算每个像素点的视差时,如果当前计算窗口的δ函数峰值小于Thresh,则此像素点标记为不可信点,并在后面所有层次的视差图细化过程中不予更新该点视差。在本方法中,由于所有的更新计算在GPU上执行,在获取可信度阈值后,我们并行地判断每个像素点的可信度。

4)在每一层消除噪声点视差图的影响,在之前的PC算法中,中值滤波器以其优良的保边性常常被用于脉冲噪声的平滑,但是该算法对窗口非常敏感,大窗口算法相当耗时,小窗口算法不能完全消除噪声的影响,因此为了减少时间消耗,本方法对视差图进行下采样,然后使用小窗口中值滤波,然后使用双线性插值算法上采样视差图,再使用双边滤波器进行进一步滤波。

5)迭代地更新各个像素点的视差值:为最终我们想要得到的视差,c为迭代次数,为每一层计算出的视差(即步骤2中的当前层(第K层)视差)。该迭代过程除了更新每个像点的视差以外,还利用累积到上一层的视差结果引导PC窗口为下一层的并行计算准备计算数据(主要是根据上一层的视差值引导PC窗口从纹理内存中复制所选择的计算数据到个体内存)。值得注意的是,这里在对每个像素点进行更新时,都需要对每个像点的可信度进行判断,若满足可信条件,继续对当前点进行计算,否则停止计算,并在以后的迭代过程中停止更新。最终快速地得到高可信的细化的视差图。

4.利用最终得到细化视差图,同时根据获得的摄像机参数模型,依据双目视觉三维重建模型,重建出目标三维结构。对于双目视觉三维重建模型:,其中,d为视差,Z为深度,f为焦距,为基线。得到摄像机参数和基线信息后,将计算出来的最终细化视差图代入此公式中,求得深度图,然后通过反投影得到三维模型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1