一种基于大规模集成电路高层次综合的动态无极消旋系统及方法转让专利

申请号 : CN202111223132.7

文献号 : CN113962842B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张弘宋剑波杨一帆邢万里袁丁李旭亮

申请人 : 北京航空航天大学

摘要 :

本发明涉及一种基于大规模集成电路高层次综合的动态无极消旋系统及方法,包含视频采集模块、视频解码模块、视频存储模块、数据通信模块、视频编码模块、动态无极消旋模块以及本发明中用于降低算法延迟、提高总线带宽利用率而创新设计的像素合并模块即四合一模块。本发明采用高层次综合技术实现动态无极消旋功能,针对采集到的视频图像可以在光电平台中进行实时消旋处理,相比于现有消旋技术,本发明充分利用FPGA并行加速及流水线优化的特点,具有视频分辨率高、消旋范围大、消旋精度高、处理后图像清晰无锯齿、输出延迟低、系统稳定性强、加工容易、功耗低、体积小等优良特性。

权利要求 :

1.一种基于大规模集成电路高层次综合的动态无极消旋系统,其特征在于:所述系统包括视频采集模块、视频解码模块、核心处理模块和视频编码模块;所述核心处理模块采用FPGA+ARM架构的异构片上系统;所述FPGA包括动态无极消旋模块、视频转AXI总线视频流模块、AXI视频流DDR读写模块以及用于降低算法延迟、提高总线带宽利用率而创新设计的像素合并模块即四合一模块;ARM包括视频存储模块DDR和RS422串口通信模块,FPGA与ARM之间的数据通信采用AXI控制总线进行;

视频采集模块,使用相机进行原始视频图像的采集,该视频图像即为待消旋处理的数据;完成采集后原始视频图像进入视频解码模块中;

视频解码模块,将相机采集的串行视频转换成并行视频数据,并得到一系列显性的视频同步信号,解码得到的并行视频数据和同步信号送入至FPGA;

FPGA中,首先经过视频转AXI总线视频流模块将视频数据转化为延迟更低更利于实现数据同步与流水线加速优化的AXI总线视频流数据,接着AXI总线视频流格式的数据流入四合一模块中,四合一模块实现数据流每流入两行就将其缓存在片内高速缓存中,并将每个像素周围的四个8位像素点合并成一个32位数据,后续需要读取某一像素紧邻的四个像素时,仅需读取一次合并后的32位像素,并将其分割成四个独立的8位数据,即实现一次读取四个像素点的功能,这一处理利用AXI总线带宽将延时降至原来的四分之一;再将所述合并后的32位视频流数据通过AXI视频流DDR读写模块缓存进ARM的DDR中;

动态无极消旋模块,根据上位机通过RS422串口通信模块发送的消旋指令及消旋角度对缓存在DDR中的视频数据流中的视频数据作动态无极消旋,消旋处理时配合四合一模块,将从DDR中读取的32位数据分割为四个8位数据进行双线性插值,处理后的视频图像仍保存在DDR中;再次利用AXI视频流DDR读写模块从DDR中将缓存的消旋后的视频图像读出到AXI视频流中,并利用AXI总线视频流转视频模块将AXI视频流转化为带有显性同步信号的并行视频数据,并将并行视频数据送入视频编码模块进行编码输出至显示器或采集卡进行实时显示。

2.根据权利要求1所述的基于大规模集成电路高层次综合的动态无极消旋系统,其特征在于:所述四合一模块以及动态无极消旋模块均使用高层次综合工具Vivado HLS进行开发,并使用预编译指令pipeline即流水线优化指令对四合一模块以及动态无极消旋模块进行流水线优化,在保证满足数据一次输入、一次使用和一次输出,即一个数据只能输入一次,且只能使用一次,最终必须输出且只能输出一次的条件下,将需要8个时钟周期处理的数据仅用4个时钟周期就完成处理。

3.根据权利要求1所述的基于大规模集成电路高层次综合的动态无极消旋系统,其特征在于:所述系统还从数据类型优化即自定义位宽数据类型和数据吞吐量优化两个方面提高消旋算法性能;多条AXI高带宽总线进行实时并行优化,以并行计算的方式同时读写并处理多个像素点。

4.根据权利要求1所述的基于大规模集成电路高层次综合的动态无极消旋系统,其特征在于:所述动态无极消旋模块中,采用基于双线性插值的图像电子消旋算法实时消旋处理,具体如下:(1)根据上位机发来的消旋角度求消旋处理后视频图像的每个像素点(x′,y′)对应消旋处理前视频图像像素点的坐标(x,y)其中θ表示消旋角度,x0,y0分别表示图像中心的横、纵坐标;

(2)采用双线性插值法进行像素映射

f(x,y)=[f(1,0)‑f(0,0)]x+[f(0,1)‑f(0,0)]y+[f(1,1)‑f(1,0)‑f(0,1)‑f(0,0)]xy+f(0,0)其中,x,y分别为(1)中求得的消旋后像素坐标点四舍五入后的整数坐标,f(0,0),f(1,

0),f(0,1),f(1,1)为(x,y)周围4点的像素灰度值,f(x,y)为(x,y)坐标处经双线性插值后的像素灰度值;

(3)确定消旋后图像边界,旋转后的图像大小相比于旋转前一般都会有所改变,因此需要重新确定视频图像边界,视频图像上、下、左和右四个边界位置的确定按照如下公式进行计算:left=max(x1,x2,x3,x4)

right=min(x1,x2,x3,x4)

top=max(y1,y2,y3,y4)

bottom=min(y1,y2,y3,y4)

(4)固定图像分辨率,针对消旋后的视频图像以视频图像中心为中心进行剪裁,固定输出图像分辨率,即保持相同大小的输出图像。

5.根据权利要求1所述的基于大规模集成电路高层次综合的动态无极消旋系统,其特征在于:所述核心处理模块采用的FPGA+ARM架构的异构片上系统为Zynq UltraScale+MPSoC 15EG芯片。

6.一种基于大规模集成电路高层次综合的动态无极消旋方法,其特征在于,实现步骤如下:

(1)将相机采集的串行视频转换成并行视频数据,并得到一系列显性的视频同步信号,解码得到的并行视频数据和同步信号送入至FPGA;

(2)FPGA中,经过视频转AXI总线视频流模块将视频数据转化为延迟更低更利于实现数据同步与流水线加速优化的AXI总线视频流数据;

(3)接着AXI总线视频流格式的数据流入四合一模块中,由于随后要进行双线性插值的消旋处理,每处理一个像素要从DDR中读取其紧邻的四个像素,四合一模块实现数据流每流入两行就将其缓存在片内高速缓存中,并将每个像素周围的四个8位像素点合并成一个32位数据,后续需要读取某一像素紧邻的四个像素时,仅需读取一次合并后的32位像素,并将其分割成四个独立的8位数据,即实现一次读取四个像素点的功能,这一处理充分利用AXI总线带宽将延时降至原来的四分之一;

(4)将所述合并后的32位视频流数据通过AXI视频流DDR读写模块缓存进ARM的DDR中;

(5)接着动态无极消旋模块将根据上位机通过RS422串口通信模块发送的消旋指令及消旋角度对缓存在DDR中的视频数据流中的视频数据作动态无极消旋,消旋处理时配合所述四合一模块,将从DDR中读取的32位数据分割为四个8位数据进行双线性插值,处理后的视频图像仍保存在DDR中;

(6)再次利用AXI视频流DDR读写模块从DDR中将缓存的消旋后的视频图像读出到AXI视频流中,并利用AXI总线视频流转视频模块将AXI视频流转化为带有显性同步信号的并行视频数据,并将并行视频数据送入视频编码模块进行编码输出至显示器或采集卡进行实时显示;

在上述步骤(3)、(5)中所述四合一模块以及动态无极消旋模块均使用高层次综合工具Vivado HLS进行开发,并使用预编译指令pipeline对算法进行流水线优化,在保证本发明所编写程序满足数据一次输入、一次使用和一次输出,即一个数据只能输入一次,且只能使用一次,最终必须输出且只能输出一次的条件下进行流水线化处理,由此将原先需要8个时钟周期处理的数据仅用4个时钟周期就完成处理;此外还从数据类型优化和数据吞吐量优化两个方面来提高消旋算法性能;同时,调动多条AXI高带宽总线进行实时并行优化,以并行计算的方式同时读写并处理多个像素点。

说明书 :

一种基于大规模集成电路高层次综合的动态无极消旋系统及

方法

技术领域

[0001] 本发明涉及智能化嵌入式视频处理领域,具体涉及的是一种基于大规模集成电路高层次综合的动态无极消旋系统及方法。

背景技术

[0002] 在机载吊舱电视摄录与瞄准过程当中,电视的外框架结构无法避免的会发生横滚运动,这会造成光学系统相对于载机发生相对运动,从而造成图像旋转;或者是在战斗机飞行过程中,机身时常进行大角度翻滚(甚至可达360°),从而造成电视画面发生大角度旋转,严重影响操作人员观感。因此在众多光学瞄准器件或光电吊舱系统当中,为了消除飞行器姿态变化而引发的图像旋转问题,需要对电视系统获取到的原始视频图像进行反旋转处理,即消旋变换,以此保证图像的正常平稳,便于操作人员观察及后期的目标检测识别与跟踪工作。目前在实际工程应用中有三种常见的消旋方式,即电子消旋、光学消旋和物理消旋,光学消旋是目前使用最多的手段,其通过旋转成像光路中的消旋棱镜来校正图像,虽然这种方式延迟低、响应速度快,但是其加工工艺复杂、消旋角精度低且系统体积和功耗很大。目前随着大规模集成电路和数字信号处理技术的飞速发展,通过实时的视频图像处理算法实现的电子消旋技术成为了目前的主流研究方向,这种方式克服了光学消旋系统的上述不足,得到了越来越广泛的应用。
[0003] 随着计算机视觉领域的不断发展和各类处理芯片性能的不断提升,基于视频图像处理的电子消旋技术成为了当前各类消旋技术的主流研究方向,通过电子消旋消除因飞行器姿态变化而引发的图像旋转问题成为目前工程应用的首选。

发明内容

[0004] 本发明技术解决问题:克服现有技术的不足,提供一种基于大规模集成电路高层次综合的动态无极消旋系统及方法,基于高层次综合技术,利用FPGA并行加速及流水线优化的特点可以实现高精度、大范围、高实时性、高输出图像质量的无极消旋处理。精度可达0.001°,即可以对极小的角度敏感的进行消旋处理;消旋范围为0‑360°,即可以对任意角度做消旋处理;一帧图像处理时间小于12ms,既可以实现实时消旋处理;采用双线性插值法进行消旋处理,因此图像光滑无锯齿,图像输出质量较高。限于目前技术存在实时性与精度、范围、图像质量之间的矛盾,因而现有技术仅可以单独实现以上指标中的一个或几个,未能同时实现上述全部技术指标,因此本发明具有很高的工程应用价值。
[0005] 本发明的技术解决方案:一种基于大规模集成电路高层次综合的动态无极消旋系统,基于大规模集成电路高层次综合方法设计的,作为本发明的核心其总体上具有如下创新点:1)利用高层次综合技术,即使用C++等高级语言进行FPGA算法设计优化和资源调度;2)算法流水线加速优化,提高了数据吞吐量,大幅降低延时,提高图像消旋的实时性;3)多AXI总线高带宽实时并行优化,提高数据读写效率,提高算法实时性;4)设计用于四像素合并的四合一模块,即将用于双线性插值的四个8位像素点合并成一个32位数据,可在后期实现一次读取四个像素点的功能,大幅减少因数据多次读取而带来的高延时。
[0006] 本发明所述系统包括视频采集模块、视频解码模块、核心处理模块和视频编码模块;所述核心处理模块采用FPGA+ARM架构的异构片上系统,为Zynq UltraScale+MPSoC15EG芯片;所述FPGA包括动态无极消旋模块、视频转AXI总线视频流模块、AXI视频流DDR读写模块以及本发明中用于降低算法延迟、提高总线带宽利用率而创新设计的像素合并模块即四合一模块;ARM包括视频存储模块DDR和RS422串口通信模块,FPGA与ARM之间的数据通信采用AXI控制总线进行;
[0007] 视频采集模块,使用相机进行原始视频图像的采集,该视频图像即为待消旋处理的数据;完成采集后原始视频图像进入视频解码模块中;
[0008] 视频解码模块,将相机采集的串行视频转换成并行视频数据,并得到一系列显性的视频同步信号,解码得到的并行视频数据和同步信号送入至FPGA;
[0009] FPGA中,首先经过视频转AXI总线视频流模块将视频数据转化为延迟更低更利于实现数据同步与流水线加速优化的AXI总线视频流数据。接着AXI总线视频流格式的数据流入本发明创新设计的四合一模块中,由于随后要进行双线性插值的消旋处理,每处理一个像素要从DDR中读取其紧邻的四个像素,像素读取所带来的延时是十分可观的,而多次的像素读取势必造成更高的延时,因此本发明设计四合一模块,即数据流每流入两行就将其缓存在片内高速缓存中,并将每个像素周围的四个8位像素点合并成一个32位数据,后续需要读取某一像素紧邻的四个像素时,仅需读取一次合并后的32位像素,并将其分割成四个独立的8位数据,即可实现一次读取四个像素点的功能,这一处理可充分利用AXI总线带宽将延时降至原来的四分之一。接着将所述合并后的32位视频流数据通过AXI视频流DDR读写模块缓存进ARM的DDR中;
[0010] 动态无极消旋模块,根据上位机通过RS422串口通信模块发送的消旋指令及消旋角度对缓存在DDR中的视频数据流中的视频数据作动态无极消旋,消旋处理时配合前述四合一模块,将从DDR中读取的32位数据分割为四个8位数据进行双线性插值,处理后的视频图像仍保存在DDR中;再次利用AXI视频流DDR读写模块从DDR中将缓存的消旋后的视频图像读出到AXI视频流中,并利用AXI总线视频流转视频模块将AXI视频流转化为带有显性同步信号的并行视频数据,并将并行视频数据送入视频编码模块进行编码输出至显示器或采集卡进行实时显示。
[0011] 所用基于双线性插值的图像电子消旋算法具体如下:
[0012] (1)根据上位机发来的消旋角度求消旋处理后图像的每个像素点(x′,y′)对应消旋处理前图像像素点的坐标(x,y)。公式如下:
[0013]
[0014] 其中,θ为旋转角度, 为旋转矩阵。
[0015] 一般设定以图像中心(x0,y0)为旋转中心进行旋转,上述公式应改写为:
[0016]
[0017] 将上述公式写为标量形式为:
[0018]
[0019] (2)采用双线性插值法进行像素映射。由于步骤(1)中计算得到的映射到原图像的像素点坐标(x,y)往往不是整数,因此无法直接按照一对一的关系进行像素映射。一般采用重采样的方式来解决映射过程中出现的非整数像素坐标问题。
[0020] 根据图像重建理论,一般采用三种常见的插值方式进行图像映射:最近邻插值法、双线性插值法和三次内插法。最近邻插值法的插值效果较差,消旋后的图像有明显的锯齿效应和毛刺现象;双线性插值法和三次内插法效果较好,灰度连续无锯齿。由于三次内插法算法复杂,计算时间过长,导致其在实际工程应用中很难达到实时性要求。因此出于对消旋精度和系统实时性的折衷考虑,本发明最终选择使用基于双线性插值法的图像消旋算法。
[0021] 基于双线性插值法的电子消旋算法原理示意图如图2所示。该方法根据非整数采样点整数坐标点周围4个点的灰度值在x和y两个方向上进行线性插值。在附图2中,(x,y)为双线性插值得到的像素坐标,f(x,y)为坐标(x,y)处的像素灰度值,f(0,0),f(1,0),f(0,1),f(1,1)为(x,y)周围4点的像素灰度值,由此可求得双线性插值法的计算公式如下:
[0022] f(x,y)=[f(1,0)‑f(0,0)]x+[f(0,1)‑f(0,0)]y+[f(1,1)‑f(1,0)‑f(0,1)‑f(0,0)]xy+f(0,0)
[0023] (3)确定消旋后图像边界。旋转后的图像大小相比于旋转前一般都会有改变,因此需要重新确定图像边界。图像上、下、左、右四个边界位置的确定按照如下公式进行计算:
[0024] left=max(x1,x2,x3,x4)
[0025] right=min(x1,x2,x3,x4)
[0026] top=max(y1,y2,y3,y4)
[0027] bottom=min(y1,y2,y3,y4)
[0028] (4)固定图像分辨率。在实际工程应用中,输出图像分辨率往往是固定不变的,而在针对原始视频图像进行不同消旋角的消旋操作后,图像分辨率必定会发生改变且分辨率大小无法固定,因此本发明针对消旋后的图像以图像中心为中心进行剪裁,固定输出图像分辨率,即保持相同大小的输出图像。
[0029] 本发明的重点在基于大规模集成电路高层综合技术来实现动态无极消旋,这是高分辨率系统实时性的重要保障,也是本发明最重要的创新点。
[0030] 本发明与现有技术相比的优点在于:
[0031] (1)本发明创新的设计了四合一模块,即充分利用高带宽数据流水的优势,数据流每流入两行就将其缓存在片内高速缓存中,并将每个像素周围的四个8位像素点合并成一个32位数据,并通过数据流水的方式缓存进DDR中,之后对某像素点进行双线性插值的消旋时,可将这32位数据取出并分割成四个8位的像素点即为其双线性插值所需用到的四个像素点,即可实现一次读取四个像素点的功能,由此可将算法延时降至原来的四分之一,处理延时与最近邻插值消旋处理相同,但处理效果却比最近邻插值消旋好得多。
[0032] (2)算法流水线加速优化。大规模集成电路FPGA相比于一般嵌入式系统的一大优势是可以以数据流水的方式对算法进行优化,因此本发明采用流水线的方式编写算法,在Vivado HLS开发工具中进行算法开发时,通过使用预编译指令pipeline(流水线优化指令),并保证编写的程序符合数据一次输入、一次使用和一次输出,即一个数据只能输入一次,且只能使用一次,最终必须输出且只能输出一次的流水线编程原则以防止数据流堵塞,即可以以牺牲硬件逻辑资源的方式对算法进行流水线化处理。
[0033] 具体而言流水线化允许并行执行操作,每个执行步骤无需等待完成所有操作后再开始下一项操作。流水线化适用于函数和循环,以循环流水线优化为例,每轮循环中的变量涉及读、计算和写三个操作,未进行流水线优化前,这三个操作按照串行顺序执行,每隔3个时钟周期读取一次输入,并在2个时钟周期后输出值;进行流水线优化后,每个时钟内都会执行一次读操作,多组数据按照并行方式执行。进行流水线优化前后的延时情况如附图3所示,未进行流水线优化前,两个读操作间需要3个时钟周期,经过8个时钟周期才会执行到最后一次写操作;进行流水线优化后,两个读操作间需要1个时钟周期,经过4个时钟周期就会执行到最后一次写操作,可见算法的流水线优化提高了数据吞吐量,大幅降低延时,提高图像消旋的实时性。
[0034] (3)多AXI高带宽总线实时并行优化。由于本发明要解决的问题是对高分辨图像实现实时消旋处理,而FPGA芯片的片内缓存(BRAM)空间有限,不足以缓存整帧高分辨率图像,因此本发明在ARM嵌入式端外挂64位128MB的DDR芯片,用于图像缓存。不同于直接缓存在BRAM中,由于DDR外挂在ARM端,因此FPGA芯片需要通过AXI总线从FPGA端向ARM端的DDR进行数据读写。通过分析和对延时的实际测量可得,由于(1)中已经对算法进行了流水线优化,消旋算法本身的延时已经被降至较低水平,因此延时主要来源于通过AXI总线从DDR读写数据。本发明所使用的FPGA+ARM处理架构芯片为Zynq UltraScale+MPSOC 15EG,其具有十分丰富的AXI总线资源(7条128位AXI总线),因此本发明使用多AXI高带宽总线并行处理的方式同时读写并处理多个像素点,大幅降低延时,增加数据吞吐量,提高算法实时性。最终本发明使用2条128位总线、1条64位总线进行多总线并行处理,针对1080p灰度图像,在360°范围内执行双线性插值消旋算法整体延时为12ms,无论是针对30fps的视频图像还是60fps的视频图像,均可在一帧时间内完成消旋操作,即实现了高分辨率图像的实时消旋处理。同时可以看到,本发明只占用了36%的总线资源即实现了1080p图像的消旋,因此继续增加总线的使用可以进一步提升图像实时消旋的分辨率。
[0035] (4)使用高层次综合技术实现算法设计优化和资源调度。本发明所使用的Zynq UltraScale+MPSOC 15EG处理芯片为Xilinx公司开发的异构嵌入式芯片,使用Vivado开发套件进行开发,其中包含高层次开发工具Vivado HLS,在HLS开发框架下,可以使用高层语言(C/C++/System C)按照特定的规范进行算法开发与优化设计,并最终由HLS工具将高层语言程序转化为硬件描述语言(Verilog HDL/VHDL)程序。使用高层综合工具进行开发可以方便的进行算法设计优化与逻辑资源的动态调度,大幅提升开发效率,充分发挥了FPGA+ARM架构的多AXI总线并行计算优势和多流水线加速特性,显著提高消旋算法性能。本发明从逻辑资源占用、延迟、吞吐量等方面进行设计权衡,由于本发明所使用芯片硬件逻辑资源较为丰富,因此决定牺牲逻辑资源占用来实现更低的算法延迟和更高的数据吞吐量。本发明充分利用了HLS的前述优点,从数据类型优化和数据吞吐量优化两个方面来提高消旋算法性能。具体而言,数据类型优化方面,本发明中多次使用20bit位宽数据,然而标准C的数据类型位宽都是8bit的整数倍,而若直接使用32bit位宽的整型数据则会造成逻辑资源的浪费,无法发挥出FPGA高性能和强大并行能力的优势,因此本发明利用HLS工具提供的任意位宽数据定义的方式定义了一个20bit位宽数据,极大节约了逻辑资源的使用。数据吞吐量优化方法,本发明按照“以面积换速度”的思路,对循环进行流水线优化和循环展开优化,以牺牲逻辑资源占用为代价提升算法吞吐量,提高算法性能。
[0036] (5)经实际测试,针对1920×1080可见光图像可以实现实时消旋处理,消旋范围为0‑360°,延时小于12ms,消旋角精度可达0.001°,最大像素误差小于1个像素,系统整体具有视频分辨率高、消旋范围大、消旋精度高、处理后图像清晰无锯齿、输出延迟低、系统稳定性强、加工容易、功耗低、体积小等优良特性。

附图说明

[0037] 图1为基于大规模集成电路高层次综合的动态无极消旋系统原理框架图;
[0038] 图2为基于双线性插值法的图像消旋算法原理示意图;
[0039] 图3为流水线优化延时效果图;
[0040] 图4为动态无极消旋处理模块流程图;
[0041] 图5为动态无极消旋系统效果演示,(a)为消旋处理前,(b)为消旋处理后。

具体实施方式

[0042] 下面结合附图对本发明的具体实施方式做进一步说明。
[0043] 如图1所示,本发明的消旋系统包括视频采集模块、视频解码模块、核心处理模块和视频编码模块;核心处理模块采用FPGA+ARM架构的异构片上系统;FPGA包括动态无极消旋模块、视频转AXI总线视频流模块、AXI视频流DDR读写模块以及本发明中用于降低算法延迟、提高总线带宽利用率而创新设计的像素合并模块即四合一模块;ARM包括视频存储模块DDR和RS422串口通信模块,FPGA与ARM之间的数据通信采用AXI控制总线进行。
[0044] 视频采集模块为工业相机,分辨率为1920×1080,帧频为30Hz或60Hz,视频输出格式不限。视频解码模块使用视频解码芯片,其作用是将输入的串行视频信号转化为并行格式视频以及数据有效信号DE、行同步信号HSYNC、场同步信号VSYNC,数据信号及有效信号、同步信号传递至FPGA进行后续处理。视频存储模块采用4片16位128MB的DDR4组合成一片64位128MB的DDR,由于消旋处理需要整帧图像缓存,而FPGA内部的片内缓存空间较小,不足以存储整帧图像,因此需要外挂存储器,本发明最终选择将DDR外挂在Zynq芯片的ARM端,这样更有利于后续操作。数据通信模块主要包括两部分,其一是本发明所设计的电子消旋系统与上位机主控之间的通信,这一通信基于RS422进行设计,这种稳定的低速传输协议可以满足本发明系统中消旋角度的传递;其二是Zynq芯片内部FPGA端和ARM端之间的通信,这二者之间的通信采用Xilinx所提供的AXI总线通信协议,通过AXI总线进行指令信息和图像信息的传递。视频编码模块为视频编码芯片,其作用是将并行视频数据和数据有效信号DE、行同步信号HSYNC、场同步信号VSYNC转化为串行视频信号输出,最后将其输出至显示器或采集卡进行实时显示。该系统的核心处理模的型号为Zynq UltraScale+MPSOC 15EG的ARM+FPGA架构的异构片上系统,Zynq架构芯片可以充分发挥FPGA端的并行加速功能以及ARM端的主控调度功能,是目前异构片上系统的主流芯片之一。本发明的核心为四合一模块和动态无极消旋模块,动态无极消旋模块的算法部署在FPGA端,内存调度和与上位机的通信在ARM端进行。
[0045] 本发明具体包含以下步骤:
[0046] 步骤一:视频采集及解码
[0047] 本发明采用工业相机采集视频图像,并通过解码芯片进行视频解码得到并行视频以及数据有效信号DE、行同步信号HSYNC、场同步信号VSYNC。本发明是基于FPGA AXI数据流进行设计,因此需要将解码得到的相关信号送入视频转AXI总线视频流模块,将并行视频数据转化为AXI总线视频流数据,便于后期高效的实现流水线加速优化。
[0048] 步骤二:紧邻像素合并
[0049] 本发明创新的设计了四合一模块,数据流每流入两行就将其缓存在片内高速缓存中,并将每个像素周围紧邻的四个8位像素点合并成一个32位数据,之后对某像素点进行双线性插值的消旋时,可将这32位数据取出并分割成四个8位的像素点即为其双线性插值所需用到的四个像素点,即可实现一次读取四个像素点的功能,由此可将算法延时降至原来的四分之一。
[0050] 步骤三:视频数据存储
[0051] 将步骤二合并后的32位视频流数据通过AXI视频流DDR读写模块缓存进ARM的DDR中;
[0052] 步骤四:视频数据实时动态无极消旋处理
[0053] 动态无极消旋处理模块流程图如图4所示。本发明使用Vivado高层综合技术设计动态无极消旋算法,并将其封装成IP核,本IP核定义了两个m_axi(AXI主机)端口,分别用于读、写DDR4的操作,读m_axi端口用于经AXI总线从DDR4的帧缓存区读取原始像素信息,经过消旋算法进行动态无极消旋处理后,利用写m_axi端口输出到DDR的另一个帧缓存区中,由此完成图像消旋的全部流程。
[0054] 步骤五:视频编码及输出显示
[0055] 经过步骤四的消旋处理后,消旋后的图像已缓存在DDR的一片缓存区域中,再次利用AXI视频流DDR读写模块从DDR中将缓存的消旋后的视频图像读出到AXI视频流中,并利用AXI总线视频流转视频模块将AXI视频流转化为带有显性同步信号的并行视频数据,并将其送入视频编码芯片中进行编码输出至监视器或采集卡进行消旋后结果的实时显示。
[0056] 根据上述步骤,上位机给定任意消旋角度,本发明系统即可实时输出消旋结果。例如上位机下发消旋角度为顺时针旋转0.625°,经消旋系统处理前后的图像如图5所示。图5中的(a)为消旋处理前的原始图像,可见该图像在水平方向上存在倾斜,即光轴未准确配平,存在逆时针方向的旋转角度,经上位机测定该旋转角度为0.625°,因此上位机向本消旋系统下发0.625°的消旋角度,经由本消旋系统进行视频图像消旋处理后的图像如图5中的(b)所示,可见消旋处理后的图像水平方向已配平,且消旋后的图像清晰无锯齿效应,消旋角精度达到了0.001°,该帧视频图像的处理时间小于12ms,具有高的实时性。
[0057] 本发明说明书中未做详细描述的内容属于本领域专业技术人员公知的现有技术。
[0058] 提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。