基于基于SAD算法的立体匹配的实现算法的立体匹配的实现
利用FPGA并行性计算和合理的流水线设计完成了立体视觉中最核心的部分——立体匹配以及硬件结构,选取
SAD区域立体匹配算法,利用补码来实现SAD算法,在算法流程中采用窗口并行和像素串行来完成。在获得视
差图时,采用128×128图像对,窗口大小为3×3,视差为24,在系统时钟为50 MHz情况下,实现了每秒425帧的
处理速度,最后给出了视差图。实验证明,选用FPGA来实现立体匹配系统的设计是可行的,具有一定的鲁棒
性。
摘摘 要要: 利用
关键词关键词: 立体匹配;
立体视觉理论的提出和美国MIT的Robert完成的三维景物分析工作把过去的二维图像分析推广到了三维景物[1]。利用立体视
觉来恢复物体的三维立体信息可以应用在工业自动化生产线等检测领域,如产品检测、工业探伤、PCB印制板检查以及各种
危险场合工作的机器人等。而一个完整的立体视觉系统的核心工作就是立体匹配。立体匹配算法需要处理大量复杂数据,采用
PC来实现数据的快速处理不仅会占用CPU的大量时间,而且在功耗方面也难以承受。而利用现场可编程门阵列FPGA(Field
Programmable Gate Array)等硬件的方法来进行立体视觉的研究,有益于实现系统的实时性并降低功耗。本文采用FPGA,利
用补码实现SAD匹配算法,基于窗口并行和像素串行完成匹配算法的流程,这种算法流程不仅效果好、速度快,而且具有较
强的鲁棒性,很适合采用硬件方式来实现。
1 立体匹配算法立体匹配算法
立体匹配算法中基于区域匹配的算法其性能在很大程度上要依赖于相似性测度因子的选取,而最常用的测度因子有像素灰
度差的绝对值和SAD(Sum of Absolute Differences)、像素灰度差的平方和SSD(Sum of Squared Differences)、归一化相关方
法NCC(Normalized Cross Correlation)[2]。SSD算法有平方运算,NCC有除法和开方的运算,而SAD只有加法运算,从算法
的复杂度和硬件实现的难易度来看,SSD和NCC将会占用FPGA大量的逻辑单元并且耗时量大。SAD算法表达式为[3]:
其中,disp为左摄像机拍摄的图像上窗口在外极线上移动的距离, 即视差;PL(i,j)表示基准图中的待匹配像素的灰度值,
PR(i,j)表示配准图中的匹配点的灰度值。计算不同视差情况下的SAD值,选取SAD的最小值,此时,PR为PL点在配准图中
的最佳匹配点。