一种双目感知系统的制作方法

文档序号:23042881发布日期:2020-11-25 14:54阅读:256来源:国知局
一种双目感知系统的制作方法

本实用新型涉及立体视觉和嵌入式系统设计技术领域,特别涉及一种双目感知系统。



背景技术:

立体视觉是计算机视觉领域的一个重要课题,它的目的在于通过双目感知重构场景的三维几何信息。立体视觉广泛应用于机器人技术之中,通常对硬件有特定的选择,比如,当立体视觉应用于移动场景例如无人机及无人驾驶中,由于场景快速移动,卷帘相机拍摄图像会有模糊,选择全局曝光摄像头很有必要。立体匹配是立体视觉中的关键一环,相机硬件同步触发可以很大程度上减少误匹配。在嵌入式系统中,还要特别考虑硬件的重量和功耗,尽量选择小封装的芯片型号。另外,由于立体视觉的相关算法复杂,计算量大,对硬件处理速度也有一定的要求,如何提高硬件的处理速度也一直是立体视觉的研究课题。

目前,在pc端上用cpu作为处理器的立体视觉研究有些并不适用于嵌入式系统,主流的技术方案是选择gpu或者fpga平台来实现。国内外研究机构已经对立体视觉一些常用算法在fpga上的实现展开了广泛的研究,其中不乏使用xilinx公司的zynq系列soc作为主芯片,它可降低传统技术上fpga和移动cpu的信息交互代价,并且更加轻便和小封装,非常适用于现在的嵌入式处理平台。



技术实现要素:

本实用新型的目的在于克服现有技术的缺点与不足,提供一种双目感知系统,该系统可应用于对算力和功耗有要求的嵌入式系统,在进行双目感知时可以有效实现硬件加速,适用于实时性要求高的场景。

本实用新型的目的通过下述技术方案实现:一种双目感知系统,包括:双目摄像头模块和zynqultrascale+mpsoc,其中,

双目摄像头模块包括两个摄像头芯片,摄像头芯片工作在外触发模式;

zynqultrascale+mpsoc具有pl部分和ps部分,pl部分包括mipicsi模块、自定义ip模块和连接自定义ip模块的vdma模块,摄像头芯片通过mipicsi模块连接自定义ip模块,并将其采集到的实时双目图像发送给自定义ip模块,自定义ip模块输出实时视差图;

ps部分包括ddr4模块和linux内核及文件系统生成模块,vdma模块连接ddr4模块,并将实时视差图发送给ddr4模块;linux内核及文件系统生成模块连接ddr4模块,并且生成用于管理ddr4模块中图像缓存的linux内核和文件系统。

优选的,自定义ip模块包括图像校正模块和立体匹配模块,mipicsi模块连接图像校正模块,并将实时双目图像发送给图像校正模块,立体匹配模块连接图像校正模块并且输出实时视差图;

vdma模块包括第一vdma模块和第二vdma模块,图像校正模块的输出端连接第一vdma模块,立体匹配模块的输出端连接第二vdma模块。

更进一步的,双目摄像头模块通过matlab标定工具箱得到摄像头参数,摄像头参数包括相机内参矩阵和畸变系数;

双目摄像头模块通过vivadohls工具生成图像校正模块的图像校正ip和立体匹配模块的立体匹配ip。

更进一步的,vivadohls工具具有hls_video.h和hls_opencv.h文件,其中,hls_video.h文件内具有用于转换视频流格式的axivideo2mat函数和mat2axivideo函数,hls_opencv.h文件内具有用于显示视频流的iplimage2axivideo函数和axivideo2iplimage函数。

优选的,mipicsi模块为xilinx-mipicsi-2rxsubsystem模块,并且xilinx-mipicsi-2rxsubsystem模块具有mipicsi接口;

双目摄像头模块采用mipi作为输出接口,mipi输出接口连接对应的mipicsi接口;每个摄像头芯片具有外触发引脚,并且两个摄像头芯片的外触发引脚连接至pl部分的同一个引脚。

优选的,vdma模块为xilinx-vdmaip模块;linux内核及文件系统生成模块为xilinx-petalinux模块。

优选的,双目摄像头模块的选型要求为:采用全局曝光方式、采用小封装和具有外触发模式。

优选的,摄像头芯片为ar0144cmos芯片。

优选的,zynqultrascale+mpsoc还包括hdmi显示模块,hdmi显示模块连接pl模块的自定义ip模块。

本实用新型相对于现有技术具有如下的优点及效果:

(1)本实用新型双目感知系统,包括双目摄像头模块和zynqultrascale+mpsoc,其中,双目摄像头模块包括两个摄像头芯片,摄像头芯片工作在外触发模式;zynqultrascale+mpsoc具有pl部分和ps部分,pl部分包括mipicsi模块、自定义ip模块和连接自定义ip模块的vdma模块,摄像头芯片通过mipicsi模块连接自定义ip模块,并将其采集到的实时双目图像发送给自定义ip模块,自定义ip模块输出实时视差图;ps部分包括ddr4模块和linux内核及文件系统生成模块,vdma模块连接ddr4模块,并将实时视差图发送给ddr4模块;linux内核及文件系统生成模块连接ddr4模块,并且生成用于管理ddr4模块中图像缓存的linux内核和文件系统。本实用新型系统基于zynqultrascale+mpsoc,硬件平台相对于cpu其并行计算能力更强,相对于gpu其能耗更低,因此非常适用于对算力和功耗有要求的嵌入式系统;利用自定义ip模块调用自定义ip来对双目图像的相机校正和双目立体匹配,使得在进行双目感应时能有效实现硬件加速,因此本实用新型方法适用于实时性要求高的场景。

(2)本实用新型双目感知系统运用vivadohls高层次综合,将复杂算法封装成ip核,利用pl资源进行硬件加速,提高了嵌入式系统的实时性。

(3)本实用新型系统将双目摄像头和pl进行同步触发,该硬件同步方案相对于传统软件同步方案,同步效果更好,更能有效降低误匹配,提高立体匹配精度。

(4)本实用新型系统使用摄像头芯片的mipi接口作为输出接口,相较于传统的dvp接口,其连接引脚更少,传输速率更快。

附图说明

图1是本实用新型双目感知系统的结构框图。

图2是图1系统中自定义ip模块和vdma模块的结构框图。

具体实施方式

下面结合实施例及附图对本实用新型作进一步详细的描述,但本实用新型的实施方式不限于此。

实施例

本实施例公开了一种双目感知系统,如图1所示,包括:双目摄像头模块和zynqultrascale+mpsoc。

其中,双目摄像头模块包括两个摄像头芯片camera0、camera1,摄像头芯片工作在外触发模式,双目摄像头模块采用mipi作为输出接口。

在本实施例中,双目摄像头模块采用全局曝光方式、采用小封装和具有外触发模式。采用全局曝光方式主要是考虑到双目立体视觉应用在移动场景的情况,避免拍摄出来的图像模糊;采用小封装是为了减小硬件的重量和功耗;具有外触发模式是为了便于人为控制双目摄像头的工作状态。

每个摄像头芯片具有外触发引脚trigger,通过引出摄像头芯片的外触发引脚trigger,并对摄像头芯片的寄存器进行配置即可使摄像头芯片工作在外触发模式。摄像头芯片具体可以采用ar0144cmos芯片。

在本实施例中,双目摄像头模块通过matlab标定工具箱进行双目离线标定得到摄像头参数,摄像头参数包括相机内参矩阵和畸变系数。基于该摄像头参数,双目摄像头模块还通过vivadohls工具生成图像校正ip和立体匹配ip。vivadohls工具是xilinx推出的高层次综合工具,一些算法用hdl语言来开发过于复杂,使用vivadohls可以方便地利用c/c++语言来开发相应算法,算法验证过后就可以转化为rtl,然后封装为ip核,便于后续调用。并且,一种功能的实现算法对应只有一个ip核。

在vivadohls工具中,图像校正ip和立体匹配ip的生成过程如下:

(1)新建hls工程。

(2)在source选项中新建一个顶层文件top.cpp,根据摄像头参数,在该顶层文件中利用c/c++语言编程的函数进行功能自定义,自定义的功能包括相机校正和双目立体匹配。

在source选项中新建一个库文件top.h,在该库文件中利用top.cpp的库函数进行图像相关的宏定义和函数声明。

宏定义包括:将axi4-stream总线定义为hls::stream<ap_axiu<24,1,1,1>>,将rgb图像定义为hls::mat<max_height,max_width,hls_8uc3>,将灰度图像定义为hls::mat<max_height,max_width,hls_8uc1>。

函数声明包括图像宽max_width和高max_heigh,文件输入和输出路径。

(3)为验证上述hls算法的正确性,在testbench中新建测试文件test.cpp,调用top.cpp程序函数接口,在该测试文件中将上述hls算法实现效果与opencv库的算法实现效果进行对比。在vivadohls工具中,opencv库作为参考模型,hls算法与opencv库的算法实现结果均是视频流。

vivadohls工具具有hls_video.h和hls_opencv.h文件,其中,hls_video.h文件内具有用于转换视频流格式的axivideo2mat函数和mat2axivideo函数,hls_opencv.h文件内具有用于显示视频流的iplimage2axivideo函数和axivideo2iplimage函数。考虑到需封装的算法函数输入输出都是axi-stream格式,因此先通过axivideo2mat将输入的axi格式转成mat格式,可以方便调用hls内置函数;再通过mat2axivideo将其转成原来的axi-stream格式进行输出。通过iplimage2axivideo将采集的双目图像转成axi视频流,通过axivideo2iplimage将视频流再转回图像。

(4)对hls算法进行代码优化,使其能适应zynq平台,在下述高层次综合的时候能够减少pl的资源消耗。

(5)选择project下拉菜单中的projectsettings,synthesis选择top.cpp中核心算法作为顶层函数。

(6)进行综合和仿真,并将仿真得到的图像与opencv库的算法仿真得到的图像进行对比,也即验证实时差视图。本实施例的仿真结果可采用hdmi进行图像显示。

(7)算法验证通过之后,选择solution下拉菜单中的exportrtl对算法进行命名,从而将算法封装成ip核,该ip核即为自定义ip(图像校正ip和立体匹配ip),可用于后续的vivado综合。如图1所示,zynqultrascale+mpsoc具有pl部分和ps部分。在本实施例中,双目摄像头模块通过连接两个摄像头芯片的外触发引脚至zynqultrascale+mpsoc的pl部分的同一个引脚,实现硬件同步触发,这种触发方式可以在很大程度上减少误匹配,提高立体匹配精度。

pl部分包括mipicsi模块、自定义ip模块和连接自定义ip模块的vdma模块,摄像头芯片通过mipicsi模块连接自定义ip模块,并将其采集到的实时双目图像发送给自定义ip模块,自定义ip模块输出实时视差图。

在本实施例中,mipicsi模块为xilinx-mipicsi-2rxsubsystem模块,并且xilinx-mipicsi-2rxsubsystem模块具有mipicsi接口,该mipicsi接口可以对应连接mipi输出接口。

如图2所示,自定义ip模块包括图像校正模块和立体匹配模块,mipicsi模块连接图像校正模块,并将实时双目图像发送给图像校正模块,图像校正模块可根据图像校正ip对双目图像进行校正。立体匹配模块连接图像校正模块,立体匹配模块可根据立体匹配ip和校正后的双目图像生成实时视差图,实时视差图即为双目感知的结果。

vdma模块包括第一vdma模块和第二vdma模块,图像校正模块的输出端连接第一vdma模块,立体匹配模块的输出端连接第二vdma模块。在本实施例中,vdma模块为xilinx-vdmaip模块。

如图1所示,ps部分包括ddr4模块和linux内核及文件系统生成模块,vdma模块连接ddr4模块,并将实时视差图发送给ddr4模块,ddr4模块可与vdma模块进行数据交互,即vdma模块将图像缓存写入ddr4或读取ddr4中的图像缓存。

linux内核及文件系统生成模块连接ddr4模块,并且生成linux内核和文件系统,可用于管理ddr4模块中的图像缓存。在本实施例中,linux内核及文件系统生成模块为xilinx-petalinux模块。ps中还设有apu,apu可使用linux内核和文件系统做后续的立体视觉处理。

在本实施例中,zynqultrascale+mpsoc还包括hdmi显示模块,hdmi显示模块连接pl模块的自定义ip模块,并将实时差视图进行显示。

本实施例的双目感知系统工作原理具体如下:

s1、针对于双目摄像头的两个摄像头芯片,分别引出摄像头芯片的外触发引脚,并对摄像头芯片的寄存器进行配置,使摄像头芯片工作在外触发模式;

s2、通过双目摄像头捕获双目图像,根据双目图像进行双目摄像头的离线标定,得到摄像头参数;

将双目摄像头接入zynqultrascale+mpsoc的pl部分,然后将双目摄像头和pl进行同步触发,采集实时双目图像;

s3、根据摄像头参数生成自定义ip,也即图像校正ip和立体匹配ip,在pl中,调用自定义ip进行相机校正和对实时双目图像进行双目立体匹配,从而生成实时视差图;

s4、将实时视差图传输给zynqultrascale+mpsoc的ps部分,并与其中的ddr4内存进行数据交互,同时生成linux内核和文件系统管理ddr4中的图像缓存。

上述实施例为本实用新型较佳的实施方式,但本实用新型的实施方式并不受上述实施例的限制,其他的任何未背离本实用新型的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本实用新型的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1