本项目利用OpenCV和OpenGL技术实现双目立体视觉下的三维空间重建,适用于计算机视觉、机器人导航及虚拟现实等领域。
由双目立体视觉进行三维重建的第一步是寻找两幅图像中的对应点。目前人们已经发明了很多二维图像配准算法,比如SIFT、SURF等等。最新版本的OpenCV 2.2中的features2d库中包含了很多常用的算法,其中特征点定位的算法有FAST, SIFT, SURF ,MSER, HARRIS等,特征点描述算法包括SURF和SIFT等,还有若干种特征点匹配算法。这三个步骤的算法可以任选其一,并自由组合使用。经过实验验证,我发现一种速度、特征点数量和精度都比较好的组合方案:FAST角点检测算法+SURF特征描述子+FLANN(Fast Library for Approximate Nearest Neighbors)匹配算法。
在匹配过程中需要采取一些措施来过滤误匹配。一种常用的方法是比较第一匹配结果与第二匹配结果的得分差距是否足够大,这种方法可以过滤掉由于相似性造成的误匹配。还有一种方法是利用已经找到的匹配点,使用RANSAC(Random Sample Consensus)算法求得两幅视图之间的单应矩阵,然后将左视图中的坐标P用单应矩阵映射到右视图的Q点,并观察与实际匹配结果Q的欧氏距离是否足够小。当然由于图像具有深度信息的影响,在进行这种处理时需要考虑这些因素。