基于FPGA的双目测距工程

先写点,后面准备把自己做了半年的东西拿出来写写,今天先写个预告,后面详细写出来,包括算法,rtl,仿真,后面再zedboard上进行了测试,不过由于资源的问题还暂时放不下,后面还没找到时间进一步优化
后面有时间把这些过程全写出来
趁着有时间开始写一写,自己一直从事传统fpga图像处理方面,主要是编解码,图像分割,缩放之类,不过编解码有海思,分割画中画也比较easy,缩放又有专门的ip,所以对这些大部分也都是在调试接口,调试控制信号,双目测距也是源于一次偶然机会,决定应该提升下自己从算法到rtl实现的能力,恰巧那段时间双目很火,看了些论文,直接开始搞起。
流程图呈上
基于FPGA的双目测距工程
文章图片


主要分为以上的这些步骤,sad可以认为是像素点间的运算,会保留图像的细节信息,而cencus对光线不敏感,会保留图像的整体信息,结合2者之间的优点,对merge图像的cost信息后,进行sgm运算,最后选出合适的视差距离,进行种植滤波,会处理掉一些噪声点。
由于最终的rtl代码资源量超过了zynq7020,还没有办法放进去,后面还要在进行优化,我只把结果进行仿真,输入的图像数据用matlab进行了显示。显示结果如下:
基于FPGA的双目测距工程
文章图片
基于FPGA的双目测距工程
文章图片

目前disparity设置最大值为64,后面为matlab显示的景深图像,可以看到左面图像部分的值显示的不正确,自己初步感觉应该是以下两点原因:
(1)因为在做sgm运算时,我只用于从左至右一个方向,因此最开始的值误差会偏大
(2)sgm运算的起始值存在问题
后面我会将流程图全部解析,分章节像大家介绍,并描述相应模块的rtl代码

【基于FPGA的双目测距工程】


    推荐阅读