开始学习立体视觉,记录一下。
立体匹配
立体匹配指:在两个不同的摄像机视图中匹配一个三维点。注意:只能在两个摄像机视图重叠的可视区域中进行计算(这就是为什么将摄像机尽可能前向平行放置)。
OpenCV提供两种立体匹配的算法,块匹配(block matching,BM)和半全局块匹配算法(semi-global block matching,SGBM)
其中SGBM慢一些,但是更可靠和准确。
cv::StereoBM和cv::StereoSGBM(这个两个算法的主要功能相同,但是他们有各自的接口;他们初始化算法的信息有略微的不同,但是没有公共的接口,没有共同的虚拟基类。但是这两个类都有一个共同的父类,StereoMatcher;StereoMatch类又继承于Algorithm)
基础功能:将两个图像,一个左图像,一个右图像,转换为单个深度图像。
目前的处理器速度下,通常可以运行相对较高的分辨率,即使在只有CPU的实现中,视频的实时处理可以接受的帧速率运行BM,相比之下,SGBM需要多于一个数量级的计算时间,因此通常被认为不适合实时视频应用。但是有SGBM的FPGA的实现,可以在甚至非常大的图像中以很高的速度运行。
块匹配:
cv::StereoBM
将三步骤,作用于无畸变、标定立体图相对。
1.预过滤。使图像亮度归一化,并增强纹理;
2.使用SAD窗口,沿着水平极线进行匹配查找;
3.后置滤波。用来消除不良对应匹配。