立体匹配之Census Transform

一、立体匹配算法主要可分为大类:基于局部约束和基于全局约束的立体匹配算法.算法

(一)基于全局约束的立体匹配算法:在本质上属于优化算法,它是将立体匹配问题转化为寻找全局能量函数的最优化问题,其表明算法主要有图割算法、置信度传播算法和协同优化算法等.全局算法可以得到较低的总误匹配率,但算法复杂度较高,很难知足实时的需求,不利于在实际工程中使用.函数

(二)基于局部约束的立体匹配算法:主要是利用匹配点周围的局部信息进行计算,因为其涉及到的信息量较少,匹配时间较短,所以受到了普遍关注,其表明算法主要有 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 实现矩阵,而后捕捉相关点进行比较、异或等操做

//后面再继续记录学习部分

相关文章
相关标签/搜索