一、立体匹配算法主要可分为两大类:基于局部约束和基于全局约束的立体匹配算法.算法
(一)基于全局约束的立体匹配算法:在本质上属于优化算法,它是将立体匹配问题转化为寻找全局能量函数的最优化问题,其表明算法主要有图割算法、置信度传播算法和协同优化算法等.全局算法可以得到较低的总误匹配率,但算法复杂度较高,很难知足实时的需求,不利于在实际工程中使用.函数
(二)基于局部约束的立体匹配算法:主要是利用匹配点周围的局部信息进行计算,因为其涉及到的信息量较少,匹配时间较短,所以受到了普遍关注,其表明算法主要有 SAD、SSD、NCC等。学习
二、本文采用局部约束的立体匹配算法优化
(1)Census 变换spa
Census 变换在实际场景中,形成亮度差别的缘由有不少,如因为左右摄像机不一样的视角接受到的光强不一致,摄像机增益、电平可能存在差别,以及图像采集不一样通道的噪声不一样等,cencus方法保留了窗口中像素的位置特征,而且对亮度误差较为鲁棒,简单讲就是可以减小光照差别引发的误匹配。原理
实现原理:在视图中选取任一点,以该点为中心划出一个例如3 × 3 的矩形,矩形中除中心点以外的每一点都与中心点进行比较,灰度值小于中心点即记为1,灰度大于中心点的则记为0,以所得长度为 8 的只有 0 和 1 的序列做为该中心点的 census 序列,即中心像素的灰度值被census 序列替换。通过census变换后的图像使用汉明距离计算类似度,所谓图像匹配就是在视差图中找出与参考像素点类似度最高的点,而汉明距正是视差图像素与参考像素类似度的度量。具体而言,对于欲求取视差的左右视图,要比较两个视图中两点的类似度,可将此两点的census值逐位进行异或运算,而后计算结果为1 的个数,记为此两点之间的汉明值,汉明值是两点间类似度的一种体现,汉明值愈小,两点类似度愈大实现算法时先异或再统计1的个数便可,汉明距越小即类似度越高。(尽管census变换提升了匹配鲁棒性,但其包含的图像信息有限,原始灰度信息己经彻底被抛弃了,所以不能将变换结果用于单像素或较小窗口的匹配,仍须要使用与其余区域匹配方法中相似的匹配窗口)变换过程如图 1 所示。方法
127 126 130 1 1 0统计
126 128 129 ---> 1 * 0 ---> cencus序列 {11010101}算法复杂度
127 131 111 1 0 1 di
---> 异或 {01110010} --->汉明距为4
110 126 101 1 0 1
146 120 127 ---> 0 * 0 ---> cencus序列 {10100111}
112 101 111 1 1 1
图 1
用FPGA实现时,思路就是先用RAM或者shift register 实现矩阵,而后捕捉相关点进行比较、异或等操做
//后面再继续记录学习部分