一种基于FPGA计算的批量图片分割调度处理合成系统及方法与流程

文档序号:21187877发布日期:2020-06-20 18:15阅读:196来源:国知局
一种基于FPGA计算的批量图片分割调度处理合成系统及方法与流程

本发明涉及图片处理领域,尤其涉及一种基于fpga计算的批量图片分割调度处理合成系统及方法。



背景技术:

目前,人工智能对于图片的处理和应用广泛的用于图片的降噪、识别等方面,在对图片的处理方面提供了越来越多的重要的作用。随着技术的发展,算法的计算量也越来越大,因此需要考虑在什么平台上进行算法的搭建,其中,传统的算法搭建平台是cpu,但是其投入成本较高且功耗大。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于fpga计算的批量图片分割调度处理合成系统及方法,用于解决现有技术中对于大图片进行处理,投入成本高功耗大的问题。

本发明提供一种基于fpga计算的批量图片分割调度处理合成系统,所述系统包括分割模块、调度模块、处理模块以及合并模块,所述分割模块包括图片队列和支线队列,所述调度模块包括发送模块、监听模块以及重发分配模块,所述处理模块包括iceserver模块、iceserverdog模块以及pl模块;

所述图片队列用于存储待分割的大图片,所述支线队列用于存储分割后的小图片;

所述发送模块用于向iceserver模块发送每个支线队列中的图片数据;

所述监听模块用于监听支线队列与iceserver模块的连接状态;

所述重发分配模块用于支线队列图片数据发送异常时,记录异常并重新发送图片数据

所述iceserver模块是基于套接字分发协议的客户端,用于接收并暂存支线队列中的图片数据;

所述iceserverdog模块是一个守护线程,用于iceserver模块出现错误时,重新唤醒iceserver模块;

所述pl模块是fpga内部处理模块,用于对图片数据的每个像素进行计算;

所述合并模块用于图片数据排序并合并。

进一步的,当大图片的高度和宽度都小于或者等于512像素时,不会对大图片进行分割,直接发送到支线队列;当大图片的高度和宽度任意一个大于512像素时,将大图片分割成512*512的小图片,发送到支线队列;如果大图片的尺寸不能直接整除,则将末尾的小图片直接取余数大小。

进一步的,所述支线队列共有24个,每个支线队列会接收每张大图片的id、小图片的id以及小图片的二进制数据,当s大于24时,会将小图片依次重新分配到新的支线队列中。

进一步的,每个支线队列最多存储两张小图片。

进一步的,所述iceserver模块包括多个ip队列,所述ip队列以线程连接的形式分别与24个支线队列连接。

一种基于fpga计算的批量图片分割调度处理合成方法,所述方法包括以下步骤:

步骤1:分割模块将图片队列中的多张高度和宽度为h*w的大图片分割成s张小图片,将小图片依次存入24个支线队列中,并行向调度模块发送图片数据;

其中,s=(h/512)*(w/512),每个支线队列最多保存两张小图片;

步骤2:调度模块暂存各个支线队列中的图片数据,并通过发送模块将图片数据依次发送到处理模块,所述调度模块包括监听模块、发送模块以及重发分配模块;

步骤3:处理模块对图片数据进行计算,并将计算后的图片数据发送到合并模块,所述处理模块包括iceserver模块、iceserverdog模块以及pl模块,所述iceserver模块包括多个ip队列;

步骤4:合并模块根据图像数据的id进行排序并合并。

进一步的,所述步骤2具体如下:

步骤2.1:监听模块监听每个支线队列与iceserver模块ip队列的连接状态;

步骤2.2:发送模块从支线队列中取出图片数据,监听模块获取可用的ip队列,向ip队列发送图片数据;

步骤2.3:ip队列暂存图片数据,并获取所有fpga芯片pl模块的状态;

步骤2.4:根据ip队列向pl模块发送图片数据,pl模块计算图片数据的每个像素,并等待返回;

进一步的,当监听模块监听每个ip队列时,如果返回正常,则开始向pl模块发送图片数据;如果返回异常,则获取当前出错的ip队列中暂存的图片数据,并监听当前可用的新的ip队列,将图片数据暂存于新的ip队列,并向pl模块发送图片数据;

pl模块计算处理后,如果返回正常,则继续加入可用的ip队列;如果返回异常,则调用重发分配模块在支线队列中找到图片数据对应的id,根据监听状态重新生成标识符,重新分配支线队列与ip队列的连接;若无返回,则重新获取pl模块的状态。

进一步的,所述步骤3具体如下:

步骤3.1:将处理前后的图片数据暂存于iceserver模块的内存中;

步骤3.2:iceserverdog模块对iceserver模块的接收状态进行监控,若超时,则重启iceserver模块;

步骤3.3:pl模块对图像数据的每个像素进行计算。

进一步的,所述发送模块是基于套接字分发协议的客户端,所述iceserver模块是基于套接字分发协议的服务端,pl模块是fpga内部处理模块,pl模块与iceserver模块共享内存,iceserverdog模块是iceserver模块的守护线程,所述ip队列以线程连接的形式分别与24个支线队列连接。

如上所述,本发明的一种基于fpga计算的批量图片分割调度处理合成系统及方法,具有以下有益效果:本发明通过pc机对大图片进行分割和调度,并且通过fpga进行计算,最后通过pc机进行合并,能够快速准确的对大图片进行处理,充分利用fpga的碎片时间,提高fpga的使用率;通过fpga进行计算,具有投入成本低功耗小的优势。

附图说明

图1显示为本发明实施方式中公开的系统结构框图;

图2显示为本发明实施方式中公开的iceserver模块控制流程图;

图3显示为本发明实施方式中公开的pl模块控制流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

如图1所示,本发明提供一种基于fpga计算的批量图片分割调度处理合成系统,所述系统包括分割模块、调度模块、处理模块以及合并模块;

所述分割模块包括用于存储待分割大图片的图片队列和用于存储分割后小图片的支线队列;

其中,小图片的分割数量取决于大图片的高度和宽度,当大图片的高度和宽度都小于或者等于512像素时,不会对大图片进行分割,直接发送到支线队列;当大图片的高度和宽度任意一个大于512像素时,将大图片分割成512*512的小图片,对大图片的高度和宽度分别除以512,如果不能直接整除,则将末尾的小图片直接取余数,若大图片的高宽为h*w,则可以切割成s张小图片,s=(h/512)*(w/512),并将切割后的小图片依次分配到支线队列,所述支线队列共有24个,每个支线队列会接收每张大图片的id、小图片的id以及小图片的二进制数据,当s大于24时,会将小图片依次重新分配到新的支线队列中,由于正常处理的小图片的分辨率分别为2k或者4k,则每个支线队列最多存储两张小图片;

所述调度模块包括发送模块、监听模块以及重发分配模块;

所述处理模块包括iceserver模块、iceserverdog模块以及pl模块(programmablelogic,可编程逻辑模块),所述iceserver模块包括多个ip队列,所述ip队列以线程连接的形式分别与24个支线队列连接;

所述发送模块是基于套接字分发协议的客户端,用于向iceserver模块发送每个支线队列中的图片数据;

所述监听模块用于监听每个支线队列与每个ip队列的连接状态;

所述重发分配模块用于当支线队列图片数据发送异常时,记录异常并重新发送图片数据;

当大图片分割分配到支线队列后,发送模块开始向每个连接状态正常的线程发送图片数据,在此过程中,监听模块监听发送的每个图片数据的完整性和连接状态,当一切正常时,监听模块不工作,当连接不正常或者图片数据包不完整时,监听模块会记录此支线队列与ip队列的错误信息,调用重发分配模块,对错误的图片数据或者连接不正常的ip队列重新发送至一个新支线队列并正确处理,监听模块会再次重新连接出错的ip队列,如果连接成功,则继续维护监听,连接不成功,则通过打印信息上报出错信息;

所述iceserver模块是基于套接字分发协议的服务端,用于接收暂存支线队列中的图片数据;

所述iceserverdog模块是一个守护iceserver模块的守护线程(看门狗),当iceserver模块出现错误时,用于重新唤醒iceserver模块;

所述pl模块是fpga内部处理模块,用于对图片数据的每个像素进行计算;

其中,pl模块与iceserver模块共享内存,iceserver模块用于接收图片的二进制数据,并将数据直接写入内存中,写入完成后,调度模块会发送一条计算的指令,pl模块开始对内存中的图片的二进制数据进行计算,计算完成后会写入新指定的内存中,iceserver模块复制此内存中的二进制数据,并返回给合并模块;

所述合并模块对每个支线队列连接处理完成后,会依次销毁,并把每个小图片放入一个完成队列,根据小图片的id依次排序,排序完成后开始按照原始大图片的大小进行合并。

本发明提供一种基于fpga计算的批量图片分割调度处理合成方法,所述方法包括以下步骤:

步骤1:分割模块将图片队列中的多张高度和宽度为h*w的大图片分割成s张小图片,并将小图片依次存入24个支线队列中,并行向调度模块发送图片数据,其中s=(h/512)*(w/512),每个支线队列最多保存两张小图片;

具体如下:

依次读取图片队列中的大图片,根据大图片的高度和宽度判断大图片是否需要分割,当高度和宽度都小于或者等于512时,不需要分割,直接放入支线队列中,当高度和宽度任意一个大于512时,分割后放入支线队列中;

其中,每张大图片和每张小图片都有一个特定的id,在大图片分割时,如果不能直接整除,则将末尾的小图片直接取余数大小。

如图2所示,步骤2:调度模块暂存各个支线队列中的图片数据,并通过发送模块将图片数据依次发送到处理模块,所述调度模块包括监听模块、发送模块以及重发分配模块;

具体如下:

步骤2.1:监听模块监听每个支线队列与iceserver模块ip队列的连接状态;

步骤2.2:发送模块从支线队列中取出图片数据,监听模块获取可用的ip队列,向ip队列发送图片数据;

步骤2.3:ip队列暂存图片数据,并获取所有fpga芯片pl模块的状态;

步骤2.4:根据ip队列向pl模块发送图片数据,pl模块计算图片数据的每个像素,并等待返回;

当监听模块监听每个ip队列时,如果返回正常,则开始向pl模块发送图片数据;如果返回异常,则获取当前出错的ip队列中暂存的图片数据,并监听当前可用的ip队列,根据新的ip队列暂存图片数据,并向pl模块发送图片数据;

如图3所示,pl模块计算处理后,如果返回正常,则继续加入可用的ip队列;如果返回异常,则调用重发分配模块在支线队列中找到图片数据对应的id,根据监听状态重新生成标识符,重新分配支线队列与ip队列的连接;如果无返回,则重新获取pl模块的状态;

步骤3:处理模块对图片数据进行计算,并将计算后的图片数据发送到合并模块;

具体如下:

步骤3.1:将处理前后的图片数据存储于iceserver模块的内存中;

步骤3.2:iceserverdog模块对iceserver模块的接收状态进行监控,若超时,则重启iceserver模块;用于对图片数据的每个像素进行计算;

步骤3.3:pl模块计算图像数据的每个像素进行计算;

步骤4:合并模块根据图像数据的id进行排序并合并。

其中,所述发送模块是基于套接字分发协议的客户端,所述iceserver模块是基于套接字分发协议(socket通信)的服务端,pl模块是fpga内部处理模块,pl模块与iceserver模块共享内存,iceserverdog模块是iceserver模块的“看门狗”,所述ip队列以线程连接的形式分别与24个支线队列连接;

综上所述,本发明通过pc机对大图片进行分割和调度,并且通过fpga进行计算,最后通过pc机进行合并,能够快速准确的对大图片进行处理,充分利用fpga的碎片时间,提高fpga的使用率;通过fpga进行计算,具有投入成本低功耗小的优势。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

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