一种基于FPGA的图像处理方法和系统转让专利

申请号 : CN202211071486.9

文献号 : CN115460350B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘相锋赵鸿波

申请人 : 白犀牛智达(北京)科技有限公司

摘要 :

本发明公开了一种基于FPGA的图像处理方法和系统,应用于FPGA处理器,涉及摄像头和主计算单元,FPGA处理器分别与摄像头和主计算单元连接,包括:实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据;去除图像数据携带的地址信息,并根据图像数据的图像缺陷进行校正,生成中间数据;逐一判断中间数据是否满足地址信息的多个写入条件;若全部满足,则将地址信息写入中间数据,生成目标数据;将图像数据和目标数据发送至主计算单元。解决了现有技术需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。本发明利用FPGA处理器的并行处理能力释放基础图像处理功能,降低了系统的延迟。

权利要求 :

1.一种基于FPGA的图像处理方法,其特征在于,应用于FPGA处理器,涉及摄像头和主计算单元,所述FPGA处理器分别与所述摄像头和所述主计算单元连接,所述方法包括:实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据;

去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据;

逐一判断所述中间数据是否满足所述地址信息的多个写入条件;其中,还涉及DDR4组件,所述DDR4组件与所述FPGA处理器连接;所述逐一判断所述中间数据是否满足所述地址信息的多个写入条件的步骤,包括:判断所述中间数据是否满足所述地址信息的开始写入条件;

若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件;

若满足,则获取所述中间数据对应的地址字节长度,并判断是否接收到所述DDR4组件发送的已备好接收信号;

若接收到,则从所述中间数据读取突发字节长度数据,并将所述突发字节长度数据、所述地址字节长度和写入数据有效信号输送至所述DDR4组件;

当接收到所述DDR4组件的反馈信号时,判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数;

若等于,则判定所述中间数据满足所述地址信息的全部写入条件;

若全部满足,则将所述地址信息写入所述中间数据,生成目标数据;

将所述图像数据和所述目标数据发送至所述主计算单元。

2.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,还涉及设备主板接插件,所述设备主板接插件分别与所述摄像头和所述FPGA处理器连接;所述实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据的步骤,包括:按照GMSL2协议实时发送所述摄像头拍摄的环境图像至所述设备主板接插件,生成GMSL2数据;

通过所述设备主板接插件将所述GMSL2数据进行解串,生成图像数据。

3.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,所述去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据的步骤,包括:去除所述图像数据携带的地址信息,生成无地址数据;

将所述无地址数据中的RAW格式转换成RGB格式,生成RGB图像数据;

根据所述RGB图像数据的图像缺陷进行校正,生成中间数据;其中,所述校正包括gamma校正、图像增强、图像缩放和图像识别。

4.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,所述判断所述中间数据是否满足所述地址信息的开始写入条件的步骤,包括:判断所述中间数据是否满足所述地址信息的开始写入条件;所述中间数据还包括帧开始写信号;

若所述帧开始写信号为上升沿时,则判定所述中间数据满足所述地址信息的开始写入条件;

若所述帧开始写信号不为上升沿时,则判定所述中间数据不满足所述地址信息的开始写入条件。

5.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,所述若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件的步骤,包括:若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件;

若满足,则传输所述中间数据对应的地址信息至所述DDR4组件;

若不满足,则将新的输送数据累加至所述先入先出队列中的输送数据,直至所述先入先出队列中的输送数据满足所述中间数据的输送条件。

6.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,所述若满足,则获取所述中间数据对应的地址字节长度,并判断是否接收到所述DDR4组件发送的已备好接收信号的步骤,包括:若所述先入先出队列中的输送数据满足所述中间数据的输送条件,则获取所述中间数据对应的地址字节长度;

判断是否接收到所述DDR4组件发送的已备好接收地址信号;

当接收到所述已备好接收地址信号时,获取所述中间数据的写入数据有效信号,并判断是否接收到所述DDR4组件发送的已备好接收数据信号。

7.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,所述当接收到所述DDR4组件的反馈信号时,判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数的步骤,还包括:当接收到所述DDR4组件的反馈信号时,从所述反馈信号中获取所述突发字节长度数据对应的字节数;

判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数;

当所述突发字节长度数据对应的字节数小于所述中间数据对应的字节数时,则将新的地址数据累加写入所述突发字节长度数据;

跳转执行所述判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数的步骤,直至所述突发字节长度数据对应的字节数等于所述中间数据对应的字节数。

8.根据权利要求1所述的基于FPGA的图像处理方法,其特征在于,还包括:实时获取所述摄像头拍摄的环境视频;

按照预定格式将所述环境视频进行压缩,并发送至所述主计算单元。

9.一种基于FPGA的图像处理系统,其特征在于,应用于FPGA处理器,涉及摄像头和主计算单元,所述FPGA处理器分别与所述摄像头和所述主计算单元连接,所述系统包括:图像数据模块,用于实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据;

中间数据模块,用于去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据;

写入条件模块,用于逐一判断所述中间数据是否满足所述地址信息的多个写入条件;

其中,还涉及DDR4组件,所述DDR4组件与所述FPGA处理器连接;所述逐一判断所述中间数据是否满足所述地址信息的多个写入条件的步骤,包括:判断所述中间数据是否满足所述地址信息的开始写入条件;若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件;若满足,则获取所述中间数据对应的地址字节长度,并判断是否接收到所述DDR4组件发送的已备好接收信号;若接收到,则从所述中间数据读取突发字节长度数据,并将所述突发字节长度数据、所述地址字节长度和写入数据有效信号输送至所述DDR4组件;当接收到所述DDR4组件的反馈信号时,判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数;若等于,则判定所述中间数据满足所述地址信息的全部写入条件;

目标数据模块,用于若全部满足,则将所述地址信息写入所述中间数据,生成目标数据;

发送模块,用于将所述图像数据和所述目标数据发送至所述主计算单元。

说明书 :

一种基于FPGA的图像处理方法和系统

技术领域

[0001] 本发明涉及图像处理技术领域,尤其涉及一种基于FPGA的图像处理方法和系统。

背景技术

[0002] 随着人工智能的发展,智能汽车逐渐走进了大众的视野。智能汽车也称无人车,其通过车载传感器来感知车辆周围环境,车辆的中央控制系统根据传感器感知的道路和障碍物等信息综合控制车辆的转向和速度从而使车辆安全、可靠的在道路上行驶。因此,基于图像的感知技术是无人车的关键技术,在环境感知和导航领域较其他传统传感器感知技术具有明显的优势。但大量图像的传输与处理又占用了大量的计算资源,所以对大数据量、高带宽图像的预处理愈发的重要。
[0003] 在现有技术中,通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟。

发明内容

[0004] 本发明提供了一种基于FPGA的图像处理方法和系统,解决了现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0005] 本发明第一方面提供的一种基于FPGA的图像处理方法,应用于FPGA处理器,涉及摄像头和主计算单元,所述FPGA处理器分别与所述摄像头和所述主计算单元连接,所述方法包括:
[0006] 实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据;
[0007] 去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据;
[0008] 逐一判断所述中间数据是否满足所述地址信息的多个写入条件;
[0009] 若全部满足,则将所述地址信息写入所述中间数据,生成目标数据;
[0010] 将所述图像数据和所述目标数据发送至所述主计算单元。
[0011] 可选地,还涉及设备主板接插件,所述设备主板接插件分别与所述摄像头和所述FPGA处理器连接;所述实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据的步骤,包括:
[0012] 按照GMSL2协议实时发送所述摄像头拍摄的环境图像至所述设备主板接插件,生成GMSL2数据;
[0013] 通过所述设备主板接插件将所述GMSL2数据进行解串,生成图像数据。
[0014] 可选地,所述去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据的步骤,包括:
[0015] 去除所述图像数据携带的地址信息,生成无地址数据;
[0016] 将所述无地址数据中的RAW格式转换成RGB格式,生成RGB图像数据;
[0017] 根据所述RGB图像数据的图像缺陷进行校正,生成中间数据;其中,所述校正包括gamma校正、图像增强、图像缩放和图像识别。
[0018] 可选地,还涉及DDR4组件,所述DDR4组件与所述FPGA处理器连接;所述逐一判断所述中间数据是否满足所述地址信息的多个写入条件的步骤,包括:
[0019] 判断所述中间数据是否满足所述地址信息的开始写入条件;
[0020] 若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件;
[0021] 若满足,则获取所述中间数据对应的地址字节长度,并判断是否接收到所述DDR4组件发送的已备好接收信号;
[0022] 若接收到,则从所述中间数据读取突发字节长度数据,并将所述突发字节长度数据、所述地址字节长度和写入数据有效信号输送至所述DDR4组件;
[0023] 当接收到所述DDR4组件的反馈信号时,判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数;
[0024] 若等于,则判定所述中间数据满足所述地址信息的全部写入条件。
[0025] 可选地,所述判断所述中间数据是否满足所述地址信息的开始写入条件的步骤,包括:
[0026] 判断所述中间数据是否满足所述地址信息的开始写入条件;所述中间数据还包括帧开始写信号;
[0027] 若所述帧开始写信号为上升沿时,则判定所述中间数据满足所述地址信息的开始写入条件;
[0028] 若所述帧开始写信号不为上升沿时,则判定所述中间数据不满足所述地址信息的开始写入条件。
[0029] 可选地,所述若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件的步骤,包括:
[0030] 若满足,则获取所述中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足所述中间数据的输送条件;
[0031] 若满足,则传输所述中间数据对应的地址信息至所述DDR4组件;
[0032] 若不满足,则将新的输送数据累加至所述先入先出队列中的输送数据,直至所述先入先出队列中的输送数据满足所述中间数据的输送条件。
[0033] 可选地,所述若满足,则获取所述中间数据对应的地址字节长度,并判断是否接收到所述DDR4组件发送的已备好接收信号的步骤,包括:
[0034] 若所述先入先出队列中的输送数据满足所述中间数据的输送条件,则获取所述中间数据对应的地址字节长度;
[0035] 判断是否接收到所述DDR4组件发送的已备好接收地址信号;
[0036] 当接收到所述已备好接收地址信号时,获取所述中间数据的写入数据有效信号,并判断是否接收到所述DDR4组件发送的已备好接收数据信号。
[0037] 可选地,所述当接收到所述DDR4组件的反馈信号时,判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数的步骤,还包括:
[0038] 当接收到所述DDR4组件的反馈信号时,从所述反馈信号中获取所述突发字节长度数据对应的字节数;
[0039] 判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数;
[0040] 当所述突发字节长度数据对应的字节数小于所述中间数据对应的字节数时,则将新的地址数据累加写入所述突发字节长度数据;
[0041] 跳转执行所述判断所述突发字节长度数据对应的字节数是否等于所述中间数据对应的字节数的步骤,直至所述突发字节长度数据对应的字节数等于所述中间数据对应的字节数。
[0042] 可选地,还包括:
[0043] 实时获取所述摄像头拍摄的环境视频;
[0044] 按照预定格式将所述环境视频进行压缩,并发送至所述主计算单元。
[0045] 本发明第二方面提供的一种基于FPGA的图像处理系统,应用于FPGA处理器,涉及摄像头和主计算单元,所述FPGA处理器分别与所述摄像头和所述主计算单元连接,所述系统包括:
[0046] 图像数据模块,用于实时获取所述摄像头拍摄的环境图像,将所述环境图像转换成图像数据;
[0047] 中间数据模块,用于去除所述图像数据携带的地址信息,并根据所述图像数据的图像缺陷进行校正,生成中间数据;
[0048] 写入条件模块,用于逐一判断所述中间数据是否满足所述地址信息的多个写入条件;
[0049] 目标数据模块,用于若全部满足,则将所述地址信息写入所述中间数据,生成目标数据;
[0050] 发送模块,用于将所述图像数据和所述目标数据发送至所述主计算单元。
[0051] 从以上技术方案可以看出,本发明具有以下优点:
[0052] 本发明通过实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据,将图像数据中携带的地址信息去除,可方便数据传输,故高效、延迟低,并按照图像数据中存在的图像缺陷对应校正,生成中间数据;逐一判断中间数据是否满足地址信息的多个写入条件,当全部满足时,即可将地址信息写入中间数据中,生成目标数据。将图像数据和目标数据一并发送到主计算单元。解决了现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0053] 本发明利用FPGA处理器的并行处理能力释放主计算单元中基础图像处理功能,降低了系统的延迟,且将前期大量的图像处理算法直接利用FPGA的并行与数据流的技术手段去实现,释放了大量的计算资源,可用于部署更多的算法模型。

附图说明

[0054] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0055] 图1为本发明实施例一提供的一种基于FPGA的图像处理方法的步骤流程图;
[0056] 图2为本发明实施例二提供的一种基于FPGA的图像处理方法的步骤流程图;
[0057] 图3为本发明实施例二提供的车规相机(摄像头)、设备主板接插件和FPGA处理器的结构连接示意图;
[0058] 图4为本发明实施例二提供的FPGA处理器的内部结构示意图;
[0059] 图5为本发明实施例三提供的一种基于FPGA的图像处理方法的内部状态机流程示意图;
[0060] 图6为本发明实施例三提供的一种基于FPGA的图像处理方法的Writepath组件外部接口示意图;
[0061] 图7为本发明实施例四提供的一种基于FPGA的图像处理系统的结构框图。

具体实施方式

[0062] 本发明实施例提供了一种基于FPGA的图像处理方法和系统,用于解决现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0063] 为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0064] 请参阅图1,图1为本发明实施例一提供的一种基于FPGA的图像处理方法的步骤流程图。
[0065] 本发明提供的一种基于FPGA的图像处理方法,应用于FPGA处理器,涉及摄像头和主计算单元,FPGA处理器分别与摄像头和主计算单元连接,此方法包括以下步骤:
[0066] 步骤101、实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据。
[0067] 需要说明的是,FPGA(Field Programmable Gate Array),现场可编程逻辑门阵列,FPGA内部含有触发器、查找表、乘法器等资源,经过编程后的FPGA处理器把上述资源按照一定逻辑连接起来。FPGA的IO资源很丰富,数据在芯片内部可以并行处理,且FPGA也可以外接DDR芯片,在需要大数据量缓存的时候也可以处理。FPGA的数据处理与传输几乎不需要CPU的参与,当CPU计算的时候需要CPU深度参与,必经CPU的核数有限,且切换任务会有延迟。FPGA则不同,例如计算Y,B,CR的三行公式可以并行处理,每一个时钟计算一步。R*0.299、G*0.587、B*0.114可以同时计算,然后下一个时钟相加。这一段的计算是如上述中乘法器与查找表等资源独立完成的,不需要CPU或者其他设备的参与,所以FPGA可以利用逻辑资源的任意搭配做到数据的并行处理,可以节约大量的计算资源,便于主计算单元部署更多的算法模型。
[0068] 在本发明实施例中,实时获取摄像头拍摄的环境图像,可方便及时处理环境图像,为方便传输,将环境图像转换成图像数据,便于后续处理。
[0069] 步骤102、去除图像数据携带的地址信息,并根据图像数据的图像缺陷进行校正,生成中间数据。
[0070] 需要说明的是,中间数据指的是图像数据经过去除地址信息以及进行图像校正等操作生成的新数据。
[0071] 在具体实施例中,去除图像数据携带的地址信息,生成无地址数据,无地址数据是AMD FPGA内部的一种数据格式,以数据流的模式进行数据传输,没有地址的操作,故传输效率高,延迟低。按照图像数据中的各个图像缺陷进行对应校正,校正可以包括gamma校正、图像增强、图像缩放和图像识别等,如无图像缺陷的,则无需进行校正操作。
[0072] 步骤103、逐一判断中间数据是否满足地址信息的多个写入条件。
[0073] 需要说明的是,写入条件指的是按照地址信息的写入要求设定的一系列条件。
[0074] 在具体实施例中,将地址信息写入中间数据前,中间数据按照预定顺序需要同时满足多个写入条件。如首先需要判断中间数据是不是可以满足地址信息的开始写入条件;第二判断先入先出队列中的输送数据能不能满足中间数据的输送条件;第三判断有没有接收到DDR4组件发送的已备好接收信号;第四则判断突发字节长度数据对应的字节数有没有等于中间数据对应的字节数,具体地,写入条件包括但不限定以上几种,具体可视实际情况增加、修改或删减相应的写入条件。
[0075] 步骤104、若全部满足,则将地址信息写入中间数据,生成目标数据。
[0076] 需要说明的是,目标数据指的是将图像数据经过去除地址、格式转换、图像校正以及重新写入地址等一系列处理完成后得到的数据。
[0077] 在具体实施例中,若中间数据满足地址信息的全部写入条件的,即可将地址信息写入中间数据。若中间数据有一项不满足地址信息的写入条件,则按照该项写入条件情况对应执行相关操作,直至满足全部写入条件,才能生成目标数据。
[0078] 步骤105、将图像数据和目标数据发送至主计算单元。
[0079] 需要说明的是,通过PCIE接口把处理完成的目标数据和图像数据(原始数据)一并发送给主计算单元,用于后期的数据落盘等。
[0080] 本发明通过实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据,将图像数据中携带的地址信息去除,可方便数据传输,故高效、延迟低,并按照图像数据中存在的图像缺陷对应校正,生成中间数据;逐一判断中间数据是否满足地址信息的多个写入条件,当全部满足时,即可将地址信息写入中间数据中,生成目标数据。将图像数据和目标数据一并发送到主计算单元。解决了现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0081] 本发明利用FPGA处理器的并行处理能力释放主计算单元中基础图像处理功能,降低了系统的延迟,且将前期大量的图像处理算法直接利用FPGA的并行与数据流的技术手段去实现,释放了大量的计算资源,可用于部署更多的算法模型。
[0082] 请参阅图2‑图4,图2为本发明实施例二提供的一种基于FPGA的图像处理方法的步骤流程图。
[0083] 本发明提供的一种基于FPGA的图像处理方法,应用于FPGA处理器,涉及摄像头和主计算单元,FPGA处理器分别与摄像头和主计算单元连接,此方法包括以下步骤:
[0084] 步骤201、按照GMSL2协议实时发送摄像头拍摄的环境图像至设备主板接插件,生成GMSL2数据。
[0085] 需要说明的是,GMSL(Gigabit Multimedia Serial Links),为千兆多媒体串行链路。
[0086] 在具体实施例中,如图3所示,车规相机(摄像头)通过同轴电缆连到设备主板FAKRA接插件上,内部走的协议为GMSL2,故摄像头拍摄的环境图像通过同轴电缆发送至设备主板接插件上,生成GMSL2数据。
[0087] 步骤202、通过设备主板接插件将GMSL2数据进行解串,生成图像数据。
[0088] 在具体实施例中,设备主板FAKRA接插件把收到的GMSL2信号输出给解串芯片,将GMSL2数据转换图像数据(MIPI数据)后发送给FPGA。
[0089] 需要说明的是,MIPI(Mobile Industry Processor Interface),为移动产业处理器接口。
[0090] 步骤203、去除图像数据携带的地址信息,并根据图像数据的图像缺陷进行校正,生成中间数据。
[0091] 可选地,步骤203还包括以下步骤S11‑S13:
[0092] S11、去除图像数据携带的地址信息,生成无地址数据;
[0093] S12、将无地址数据中的RAW格式转换成RGB格式,生成RGB图像数据;
[0094] S13、根据RGB图像数据的图像缺陷进行校正,生成中间数据;其中,校正包括gamma校正、图像增强、图像缩放和图像识别。
[0095] 在具体实施例中,如图4所示,图像数据(MIPI数据)通过IO传输给FPGA内部,首先进入MIPI_RX组件被转换成无地址数据(AXI4_stream数据)。
[0096] 其次,进入Bayer_RGB组件把摄像头传来的RAW格式转换成RGB格式,RAW格式每个像素都用一种颜色表示,另外两种颜色需要用周围点含有这个颜色的像素时可通过差值计算得到。例如一个像素只有绿色颜色,绿色不用差值,红色就取上下或者左右两个像素的平均值。此时的运算也是通过数据流模式和并行缓存的技术实现的。实现算法为高分辨率差值算法,能够提供更精细的图像边沿特点,特别适合无人车识别场景,与原始CPU相比,这里可以多点并行计算。
[0097] 最后,进入Image processing组件也是通过数据流模式实现图像的gamma校正、图像增强、图像缩放等功能,具体可按照图像缺陷对应进行校正。
[0098] 需要说明的是,数据流模式就是后端的组件准备好了向上反馈ready信号,当上方组件收到ready信号才继续往下传输数据。
[0099] 步骤204、逐一判断中间数据是否满足地址信息的多个写入条件。
[0100] 可选地,还涉及DDR4组件,DDR4组件与FPGA处理器连接;步骤204还带包括以下步骤S21‑S26:
[0101] S21、判断中间数据是否满足地址信息的开始写入条件;
[0102] S22、若满足,则获取中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足中间数据的输送条件;
[0103] S23、若满足,则获取中间数据对应的地址字节长度,并判断是否接收到DDR4组件发送的已备好接收信号;
[0104] S24、若接收到,则从中间数据读取突发字节长度数据,并将突发字节长度数据、地址字节长度和写入数据有效信号输送至DDR4组件;
[0105] S25、当接收到DDR4组件的反馈信号时,判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数;
[0106] S26、若等于,则判定中间数据满足地址信息的全部写入条件。
[0107] 需要说明的是,DDR4组件(DDR4芯片)指的是用于图像处理时的数据缓存;开始写入条件指的是开始写入地址信息所设定的条件;帧起始地址指的是中间数据第一帧的起始地址;先入先出队列(FIFO,First Input First Output)指的是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
[0108] 在具体实施例中,如图4所示,当图像数据经过一系列处理之后得到中间数据,中间数据进入Writepath组件后,先按照预定顺序满足多个写入条件,才可将地址信息写入中间数据。
[0109] 具体地,首先判断中间数据是不是可以满足地址信息的开始写入条件,当中间数据满足地址信息的开始写入条件时,才可以开始写入地址信息,并获取中间数据的帧起始地址,可从帧起始地址开始写入该地址信息。当中间数据不满足地址信息的开始写入条件时,无法开始写入地址信息。
[0110] 第二判断先入先出队列中的输送数据能不能满足中间数据的输送条件,当输送数据足够输送中间数据对应的地址信息时,获取中间数据对应的地址字节长度,并将中间数据对应的地址信息输送至DDR4组件;当输送数据不足以输送中间数据对应的地址信息,则持续累加新的输送数据,直到输送数据足够输送中间数据对应的地址信息。
[0111] 第三判断有没有接收到DDR4组件发送的已备好接收信号,当接收到已备好的接收信号时,从中间数据读取突发字节长度数据,并将突发字节长度数据、地址字节长度和写入数据有效信号输送至DDR4组件。
[0112] 当接收到DDR4组件的反馈信号时,第四则判断突发字节长度数据对应的字节数有没有等于中间数据对应的字节数,如果等于,就判定中间数据满足地址信息的全部写入条件。即可将地址信息写入中间数据。
[0113] 可选地,步骤S21还包括以下步骤S31‑S33:
[0114] S31、判断中间数据是否满足地址信息的开始写入条件;中间数据还包括帧开始写信号;
[0115] S32、若帧开始写信号为上升沿时,则判定中间数据满足地址信息的开始写入条件;
[0116] S33、若帧开始写信号不为上升沿时,则判定中间数据不满足地址信息的开始写入条件。
[0117] 需要说明的是,帧开始写信号指的是第一帧开始写入的信号。
[0118] 在具体实施例中,判断中间数据能不能满足地址信息的开始写入条件的,决定于帧开始写信号是否为上升沿。若帧开始写信号为上升沿时,即可判定中间数据满足地址信息的开始写入条件。若帧开始写信号不为上升沿时,则判定中间数据不满足地址信息的开始写入条件。
[0119] 可选地,步骤S22还包括以下步骤S41‑S43:
[0120] S41、若满足,则获取中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足中间数据的输送条件;
[0121] S42、若满足,则传输中间数据对应的地址信息至DDR4组件;
[0122] S43、若不满足,则将新的输送数据累加至先入先出队列中的输送数据,直至先入先出队列中的输送数据满足中间数据的输送条件。
[0123] 在具体实施例中,若中间数据满足地址信息的开始写入条件时,就可获取中间数据的帧起始地址,再判断先入先出队列中的输送数据能不能满足中间数据的输送条件,当输送数据足够输送中间数据对应的地址信息时,获取中间数据对应的地址字节长度,并将中间数据对应的地址信息输送至DDR4组件;当输送数据不足以输送中间数据对应的地址信息,则持续累加新的输送数据,直到输送数据足够输送中间数据对应的地址信息。
[0124] 可选地,步骤S23还包括以下步骤S51‑S53:
[0125] S51、若先入先出队列中的输送数据满足中间数据的输送条件,则获取中间数据对应的地址字节长度;
[0126] S52、判断是否接收到DDR4组件发送的已备好接收地址信号;
[0127] S53、当接收到已备好接收地址信号时,获取中间数据的写入数据有效信号,并判断是否接收到DDR4组件发送的已备好接收数据信号。
[0128] 在本发明实施例中,若先入先出队列中的输送数据满足中间数据的输送条件,即获取中间数据对应的地址字节长度,依次判断有没有接收到DDR4组件发来的已备好接收地址信号和已备好接收数据信号;当接收到已备好接收地址信号时,获取中间数据的写入数据有效信号,便可得知写入数据有效信号有哪些,当接收到已备好接收数据信号时,从中间数据读取突发字节长度数据,并将突发字节长度数据、地址字节长度和写入数据有效信号输送至DDR4组件。
[0129] 可选地,步骤S25还包括以下步骤S61‑S64:
[0130] S61、当接收到DDR4组件的反馈信号时,从反馈信号中获取突发字节长度数据对应的字节数;
[0131] S62、判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数;
[0132] S63、当突发字节长度数据对应的字节数小于中间数据对应的字节数时,则将新的地址数据累加写入突发字节长度数据;
[0133] S64、跳转执行判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数的步骤,直至突发字节长度数据对应的字节数等于中间数据对应的字节数。
[0134] 在具体实施例中,接收到DDR4组件的反馈信号时,反馈信号携带有突发字节长度数据,其中,突发字节长度数据包含有字节数,比较突发字节长度数据对应的字节数与中间数据对应的字节数是否相等,当相等时,就可以判定中间数据满足地址信息的全部写入条件,即可将地址信息写入中间数据;当突发字节长度数据对应的字节数小于中间数据对应的字节数时,将新的地址数据累加写入突发字节长度数据,重复执行比较突发字节长度数据对应的字节数与中间数据对应的字节数是否相等的操作,直到两者的字节数相等。
[0135] 步骤205、若全部满足,则将地址信息写入中间数据,生成目标数据。
[0136] 在本发明实施例中,步骤205的具体实施过程与步骤104类似,在此不再赘述。
[0137] 步骤206、将图像数据和目标数据发送至主计算单元。
[0138] 在具体实施例中,FPGA在把处理过的图像数据(原始数据)发送给主计算单元,用于后期的数据落盘等。如图4所示,PCIE_DMA组件把DDR4组件中已经处理过的目标数据,打包成PCIE协议的数据包发送至主计算单元,起到协议转换与数据搬移的作用。
[0139] 需要说明的是,DMA(Direct Memory Access),为直接存储器访问,可实时访问DDR4组件。
[0140] 此方法,还包括以下步骤S71‑S72:
[0141] S71、实时获取摄像头拍摄的环境视频;
[0142] S72、按照预定格式将环境视频进行压缩,并发送至主计算单元。
[0143] 需要说明的是,如图4所示的CU_H264/H265组件为FPGA的视频编解码模块。
[0144] 在具体实施例中,实时获取摄像头拍摄的环境视频数据,VCU_H264/H265模块把环境视频数据按照H265格式压缩。并把压缩过的视频传输至主计算单元,用于后期的数据落盘等。
[0145] 本发明通过实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据,将图像数据中携带的地址信息去除,可方便数据传输,故高效、延迟低,并按照图像数据中存在的图像缺陷对应校正,生成中间数据;逐一判断中间数据是否满足地址信息的多个写入条件,当全部满足时,即可将地址信息写入中间数据中,生成目标数据。将图像数据和目标数据一并发送到主计算单元。解决了现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0146] 本发明利用FPGA处理器的并行处理能力释放主计算单元中基础图像处理功能,降低了系统的延迟,且将前期大量的图像处理算法直接利用FPGA的并行与数据流的技术手段去实现,释放了大量的计算资源,可用于部署更多的算法模型。
[0147] 请参阅图5‑图6,图5为本发明实施例三的一种基于FPGA的图像处理方法的内部状态机流程示意图。
[0148] 本发明提供的一种基于FPGA的图像处理方法的内部状态机执行流程,结合图5和图6所示,具体流程如下:
[0149] 当axis_tvs_i为上升沿的时候状态机由W_IDLE转到W_WRADDR_CMD;同时帧起始地址赋值给axi_awaddr_o;拉低dma_done信号,代表开始写数据;
[0150] 在W_WRADDR_CMD状态机中等待模块接口axis接口输入到FIFO里的数据够发送一个突发数据;当足够发送一个突发数据时切到:W_WRADDR_CMD_WAIT状态机,同时拉高axi_awvalid_o信号,拉低axi_wvalid_o信号,因为此时不是传输数据,而传输的是数据的地址;赋值此次写的字节长度axi_awlen_o;拉高给DDR4模块的反馈axi_bready_o;
[0151] 在W_WRADDR_CMD_WAIT状态机中等待DDR4传输过来的已经准备好接收地址信号:axi_awready_i,当axi_awready_i信号为高时切到W_WRDATA状态机,同时拉高写入数据有效信号:axi_wvalid_o;拉低axi_awvalid_o信号,因为在axi_awready_i信号为高的时候地址信号已经被DDR4接收到。
[0152] 在W_WRDATA状态机收到DDR4传来的接收数据准备好信号:axi_wready_i时,同时读出FIFO内数据,一直读到一个突发长度的数据读完,读出的数据和axi_wvalid_o信号、axi_awlen_o等一起发送给DDR4。
[0153] 当一个突发的数据发送完成后切到W_WRDATA_CMD_LAST状态机,同时拉高axi_wlast_o信号,代表一个突发写完成,
[0154] 在W_WRDATA_CMD_LAST状态机中等待DDR4的反馈信号axi_bvalid_i,当收到DDR4的反馈信号后,判断已经写的突发字节数够不够模块输入的axis_width_i*axis_heighth_i的字节数。如果不够再切到状态机:W_WRADDR_CMD循环。同时在W_WRDATA_CMD_LAST状态机中根据上一次突然写的字节数,累加这次写的地址:axi_awaddr_o。周而复始的循环,直到一帧的数据全部写完。然后状态切到空闲状态机:W_IDLE,同时拉高dma_done信号,等待下一次写。
[0155] 具体地,各个信号所代表的意思如下:
[0156] axis_tready_o:判断FIFO是否满信号,如果FIFO快满了,拉低此信号告诉上游不能再发送数据过来;
[0157] axis_tdata_i:等待写入FIFO的数据;
[0158] axis_tlast_i:等待写入FIFO数据的一行最后一个数据标志位;
[0159] axis_width_i:行字节数,用于计算突然写是否完成;
[0160] axis_heighth_i:一帧有多少行,用于计算一帧数据是否完成;
[0161] start_addr_i:一帧在DDR4的起始写地址。
[0162] 另外,如图6所示,各个接口所代表的意思如下:
[0163] Axis:数据流数据;
[0164] axis_tclk_i:数据流时钟;
[0165] axis_tvs_i:模块开始写信号;
[0166] axis_width_i:要传的帧宽度;
[0167] axis_heighth_i:要传的帧高度;
[0168] start_addr_i:在内存里开始写的起始位置;
[0169] axis_tddr_sel_i:多个地址选择信号;
[0170] rd_dma_done:读模块读完一帧指示信号;
[0171] M00_AXI:地址映射数据接口;
[0172] dma_done:写完一帧指示信号;
[0173] write_addr:正在写的帧地址;
[0174] axis_tddr_sel_o:正在写的一帧、帧号。
[0175] 请参阅图7,图7为本发明实施例四提供的一种基于FPGA的图像处理系统的结构框图。
[0176] 本发明提供的一种基于FPGA的图像处理系统,应用于FPGA处理器,涉及摄像头和主计算单元,FPGA处理器分别与摄像头和主计算单元连接,此系统包括:
[0177] 图像数据模块701,用于实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据;
[0178] 中间数据模块702,用于去除图像数据携带的地址信息,并根据图像数据的图像缺陷进行校正,生成中间数据;
[0179] 写入条件模块703,用于逐一判断中间数据是否满足地址信息的多个写入条件;
[0180] 目标数据模块704,用于若全部满足,则将地址信息写入中间数据,生成目标数据;
[0181] 发送模块705,用于将图像数据和目标数据发送至主计算单元。
[0182] 可选地,图像数据模块701包括:
[0183] 图像数据子模块,用于实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据;
[0184] 中间数据子模块,用于去除图像数据携带的地址信息,并根据图像数据的图像缺陷进行校正,生成中间数据。
[0185] 可选地,中间数据模块702还包括:
[0186] 无地址数据子模块,用于去除图像数据携带的地址信息,生成无地址数据;
[0187] RGB图像数据子模块,用于将无地址数据中的RAW格式转换成RGB格式,生成RGB图像数据;
[0188] 中间数据子模块,用于根据RGB图像数据的图像缺陷进行校正,生成中间数据;其中,校正包括gamma校正、图像增强、图像缩放和图像识别。
[0189] 可选地,还涉及DDR4组件,DDR4组件与FPGA处理器连接;写入条件模块703还包括:
[0190] 写入条件子模块,用于判断中间数据是否满足地址信息的开始写入条件;
[0191] 输送条件子模块,用于若满足,则获取中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足中间数据的输送条件;
[0192] 已备好接收信号子模块,用于若满足,则获取中间数据对应的地址字节长度,并判断是否接收到DDR4组件发送的已备好接收信号;
[0193] DDR4组件子模块,用于若接收到,则从中间数据读取突发字节长度数据,并将突发字节长度数据、地址字节长度和写入数据有效信号输送至DDR4组件;
[0194] 判断字节数子模块,用于当接收到DDR4组件的反馈信号时,判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数;
[0195] 全部写入条件子模块,用于若等于,则判定中间数据满足地址信息的全部写入条件。
[0196] 可选地,写入条件子模块还包括:
[0197] 开始写入条件子模块,用于判断中间数据是否满足地址信息的开始写入条件;中间数据还包括帧开始写信号;
[0198] 帧开始写信号为上升沿子模块,用于若帧开始写信号为上升沿时,则判定中间数据满足地址信息的开始写入条件;
[0199] 帧开始写信号不为上升沿子模块,用于若帧开始写信号不为上升沿时,则判定中间数据不满足地址信息的开始写入条件。
[0200] 可选地,输送条件子模块还包括:
[0201] 判断输送条件子模块,用于若满足,则获取中间数据的帧起始地址,并判断先入先出队列中的输送数据是否满足中间数据的输送条件;
[0202] 满足输送条件子模块,用于若满足,则传输中间数据对应的地址信息至DDR4组件;
[0203] 不满足输送条件子模块,用于若不满足,则将新的输送数据累加至先入先出队列中的输送数据,直至先入先出队列中的输送数据满足中间数据的输送条件。
[0204] 可选地,已备好接收信号子模块还包括:
[0205] 地址字节长度子模块,用于若先入先出队列中的输送数据满足中间数据的输送条件,则获取中间数据对应的地址字节长度;
[0206] 已备好接收地址信号子模块,用于判断是否接收到DDR4组件发送的已备好接收地址信号;
[0207] 已备好接收数据信号子模块,用于当接收到已备好接收地址信号时,获取中间数据的写入数据有效信号,并判断是否接收到DDR4组件发送的已备好接收数据信号。
[0208] 可选地,判断字节数子模块还包括:
[0209] 获取字节数子模块,用于当接收到DDR4组件的反馈信号时,从反馈信号中获取突发字节长度数据对应的字节数;
[0210] 判断字节数是否相等子模块,用于判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数;
[0211] 字节数小于子模块,用于当突发字节长度数据对应的字节数小于中间数据对应的字节数时,则将新的地址数据累加写入突发字节长度数据;
[0212] 跳转执行子模块,用于跳转执行判断突发字节长度数据对应的字节数是否等于中间数据对应的字节数的步骤,直至突发字节长度数据对应的字节数等于中间数据对应的字节数。
[0213] 此系统,还包括:
[0214] 环境视频子模块,用于实时获取摄像头拍摄的环境视频;
[0215] 压缩环境视频子模块,用于按照预定格式将环境视频进行压缩,并发送至主计算单元。
[0216] 本发明通过实时获取摄像头拍摄的环境图像,将环境图像转换成图像数据,将图像数据中携带的地址信息去除,可方便数据传输,故高效、延迟低,并按照图像数据中存在的图像缺陷对应校正,生成中间数据;逐一判断中间数据是否满足地址信息的多个写入条件,当全部满足时,即可将地址信息写入中间数据中,生成目标数据。将图像数据和目标数据一并发送到主计算单元。解决了现有技术通常是直接将图像数据发送到主计算单元中进行处理,但主计算单元一般都是基于X86架构或者ARM架构,都需要CPU的深度参与,造成消耗了大量的CPU资源,导致图像处理过程中产生延迟的技术问题。
[0217] 本发明利用FPGA处理器的并行处理能力释放主计算单元中基础图像处理功能,降低了系统的延迟,且将前期大量的图像处理算法直接利用FPGA的并行与数据流的技术手段去实现,释放了大量的计算资源,可用于部署更多的算法模型。
[0218] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0219] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0220] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0221] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0222] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0223] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。