一种图像处理系统及图像处理的方法与流程

文档序号:11155125阅读:1115来源:国知局
一种图像处理系统及图像处理的方法与制造工艺

本发明涉及智能图像处理领域,尤其涉及一种图像处理系统及图像处理的方法。



背景技术:

智能图像处理算法特别是人工智能方面的算法,一般由于计算复杂,例如深度学习都需要强大的计算资源。该领域最重要的问题,是解决算法高性能及加速问题。早期,人们很容易想到利用云计算的海量处理资源来扩展计算能力,如Google(谷歌)著名的猫脸识别,建立了一个9层的深度神经网络,运行在16000个CPU(中央处理器)组成的服务器集群,经过3天得出结果。这种计算的缺点是,计算速度慢。另外一种就是利用GPU(Graphical Processing Unit,图形处理器)进行加速。如猫脸识别实验中,一位名叫Adam Coates的斯坦福大学研究人员想出了一个更好的解决方案,他用一种不同的微处理器(GPU),将三台计算机连贯在一起,让它们像是一个系统一样运行,结果与Google数千台计算机的运行效果是一样的。这绝对是一个非凡的成就。

两种方法各有优缺点,分布式计算速度慢,但很容易扩展,能充分利用现已部署的海量CPU资源,投资低。GPU运算速度快,但GPU是比较新的硬件设备,大量使用需要大量的投资。

当前,Hadoop(Hadoop Distributed File System,Hadoop分布式文件系统,大量数据分布式处理软件框架)系统已经有了广泛的使用,也出现了基于Hadoop的分布式图像处理方案。大批量图像处理这种计算密集型的应用也给分布式系统的设计带来了一定的挑战,而Hadoop在这种应用中有其自身的不足之处。例如,全量场景,任务内串行;重吞吐量,响应时 间完全没有保证等缺点,最致命的是Hadoop不适合做实时分析系统,这在一定程度上限制了Hadoop的应用场景。而传统的分布式图像处理系统,多数基于远程过程调用和NFS(Network File System,网络文件系统)实现,在系统通信和存储上也存在先天的不足。

另外,若涉及海量图像分析处理的时候,如果以流的形式在系统中传递会严重消耗网络带宽,增加响应时间。



技术实现要素:

本发明要解决的技术问题是提供一种图像处理系统及图像处理的方法,以提高处理大批量图像文件的效率。

为了解决上述技术问题,本发明提供了一种图像处理系统,其中,包括:

显示模块,用于接收用户上传的一张或多张图像,将所述图像上传到存储模块,向处理模块发送第一消息;在接收到所述处理模块的第二消息后,根据所述第二消息从所述存储模块下载对应处理后图像并进行显示;

所述处理模块,用于在接收到所述第一消息后,根据所述第一消息从所述存储模块下载图像并进行图像处理,将处理后的图像上传到所述存储模块,向所述显示模块发送所述第二消息;

所述存储模块,用于存储所述显示模块和所述处理模块上传的图像。

进一步地,上述图像处理系统还具有下面特点:

所述处理模块,还用于在接收到所述第一消息后解析所述第一消息,解析出的信息包括图像的存储路径信息,根据所述图像的存储路径信息从所述存储模块下载对应的图像。

进一步地,上述图像处理系统还具有下面特点:

所述处理模块,进行图像处理包括:将所述图像转化成字节流,调用对应的图像算法对所述字节流进行处理。

进一步地,上述图像处理系统还具有下面特点:

所述处理模块,进行图像处理后还用于:将图像处理日志信息上传到所述存储模块。

进一步地,上述图像处理系统还具有下面特点:所述显示模块,接收到所述处理模块的第二消息后还用于,从所述存储模块下载对应的图像处理日志信息并显示。

进一步地,上述图像处理系统还具有下面特点:所述第一消息为卡夫卡kafka分布式发布订阅消息系统消息。

进一步地,上述图像处理系统还具有下面特点:所述显示模块,每接收用户上传的一张图像向所述处理模块发送一条所述第一消息。

进一步地,上述图像处理系统还具有下面特点:所述第一消息携带图像的存储路径信息。

进一步地,上述图像处理系统还具有下面特点:所述第一消息还携带用户设置的图像算法参数和算法类型的信息。

进一步地,上述图像处理系统还具有下面特点:所述算法类型包括以下的任一种:

图像压缩算法、文字识别、不良图像检测和以图搜图。

进一步地,上述图像处理系统还具有下面特点:所述第二消息携带所述处理后的图像和日志信息的存储路径信息。

进一步地,上述图像处理系统还具有下面特点:所述第二消息为卡夫卡kafka分布式发布订阅消息系统消息。

进一步地,上述图像处理系统还具有下面特点:所述存储模块为Hadoop分布式文件系统HDFS。

为了解决上述问题,本发明还提供了一种图像处理的方法,应用于上述的图像处理系统,包括:

接收用户上传的一张或多张图像,存储所述图像;

下载所述图像,并进行图像处理,存储处理后的图像;

下载所述处理后的图像并进行显示。

进一步地,上述方法还具有下面特点:所述进行图像处理包括:

将所下载的图像数据转化成字节流,调用对应的图像算法对所述字节流进行处理。

进一步地,上述方法还具有下面特点:所述进行图像处理后,还包括:

存储图像处理日志信息。

进一步地,上述方法还具有下面特点:还包括:

下载所述图像处理日志信息并进行显示。

进一步地,上述方法还具有下面特点:

所述存储所述图像包括:将所述图像存储于Hadoop分布式文件系统HDFS;

所述存储处理后的图像,包括:将所述处理后的图像和图像处理日志信息存储于所述Hadoop分布式文件系统HDFS。

综上,本发明提供一种图像处理系统及图像处理的方法,可以提高处理大批量图像文件的效率。

附图说明

图1为本发明实施例的图像处理系统的示意图;

图2为本发明应用示例的图像处理系统的示意图;

图3为本发明实施例的图像处理的方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本发明的目的是为了克服现有技术的缺陷,本实施例提供一种图像处理系统,如图1所示,本实施例的图像处理系统包括:

显示模块,用于接收用户上传的一张或多张图像,将所述图像上传到存储模块,向处理模块发送第一消息;在接收到所述处理模块的第二消息后,根据所述第二消息从所述存储模块下载对应的图像并进行显示;

所述处理模块,用于在接收到所述第一消息后,根据所述第一消息从所述存储模块下载图像并进行图像处理,将处理后的图像上传到所述存储模块,向所述显示模块发送所述第二消息;

所述存储模块,用于存储所述显示模块和所述处理模块上传的图像。

在一优选实施例中,所述处理模块,还可以用于在接收到所述第一消息后解析所述第一消息,解析出的信息包括图像的存储路径信息,根据所述图像的存储路径信息从所述存储模块下载对应的图像。

在一优选实施例中,所述处理模块进行图像处理可以包括:将所述图像转化成字节流,调用对应的图像算法对所述字节流进行处理。

本实施例中的存储模块可以采用HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)存储模块,用于存储图像。

本实施例,将CPU与GPU相结合,充分利用分布式集群的扩展性和GPU运行的高速度,并进行研究;所述处理模块可以选择实时处理性能佳的Storm(风暴分布式实时计算系统)(一个开源的分布式实时计算系统),目的是让数据分析更加实时高效。

另外,本实施例中,将待处理的图像以及处理后的图像或结果全部存储到HDFS;在调用图像处理算法之前将图像路径信息转换成字节流,以及在完成图像分析后将处理后的图像或结果以字节流发送出去,其他环节传递的都是HDFS中图像存储的路径信息,这样大大减轻了网络负担,处理速度更快。

对于海量图像,采用Kafka(卡夫卡,一种高吞吐量的分布式发布订阅消息系统)消息队列,每张图像处理任务就发送一条kafka消息到Storm系 统。实现多条消息同时并发处理,避免Storm系统中循环单条消息处理。

图2为本发明应用示例的图像处理系统的示意图,如图2所示,本实施例的图像处理系统包括以下模块:可视化UI(用户界面)(相当于上述的显示模块),Kafka消息队列模块,HDFS、Storm模块,智能图像处理算法模块。其中,

可视化UI:该UI上,用户可以选择图像算法类型,设置算法参数,可以上传本地图像(单张图像或文件夹)。用户点击提交按钮后,就会将选择的图像处理算法任务提交到系统中,任务便开始启动。任务启动后,先将用户上传的图像存储到HDFS中,并向Storm模块发送Kafka消息。

Kafka消息队列模块:kafka是一种高吞吐量的分布式发布订阅消息系统,通过O(1)(常量复杂度)的磁盘数据结构提供消息的持久化,具有高吞吐量和长时间的稳定性能等特点。该模块负责整个图像分析系统的消息发送和接收,在输入端,将图像路径、算法类型、算法参数等信息发送给Storm模块;在输出端,将Storm模块计算得到的结果路径,甚至是算法处理的trace(跟踪)日志等信息发送到可视化界面后,由界面将图像处理后的结果展示出来。

HDFS:在实施例中,HDFS除了负责存储用户上传的图像外,图像算法处理后的结果也会存到这里。避免系统中大批量传递图像流而导致的带宽消耗。

Storm模块:Storm是一套极具可扩展能力、快速惊人且具备容错能力的开源实时分布计算系统,其高度专注于流处理领域。Storm在事件处理与增量计算方面表现突出,能够以实时方式根据不断变化的参数对数据流进行处理。该模块在系统中承担接收kafka消息、解析拆分消息字段、从HDFS下载和上传图像、调度算法处理等功能,属于核心处理模块。

智能图像处理模块:该模块是算法核心,所有智能图像算法都封装在这个模块中。本实施例的图像算法基本上都是用C或C++编码实现的,需要将每个算法封装成.so文件,并提供可调用的Java接口,实现图像算法的调用。

图3为本发明实施例的图像处理的方法的流程图,如图3所示,本实施例的方法应用于上述的图像处理系统,包括以下步骤:

步骤11、接收用户上传的一张或多张图像,存储所述图像;

步骤12、下载所述图像,并进行图像处理,存储处理后的图像;

步骤13、下载所述处理后的图像并进行显示。

本实施例的图像处理的方法处理图像的速度更快,同时可以减少网络带宽消耗。

以下以两个具体实施例对本发明的方法进行详细的说明。

实施例一

本实施例的图像处理的方法包括以下步骤:

步骤101:用户在可视化UI上上传待处理图像,设置算法相关参数,点击提交,即向系统提交了图像处理任务;

步骤102:可视化UI首先将用户上传的图像全部存储到HDFS,同时记录所有图像文件的存放路径信息;

步骤103:可视化UI发送Kafka消息到Storm模块,消息中携带HDFS单张图像存放路径信息、界面上设置的图像算法参数、算法类型等信息;每处理一张图像都会发送一个kafka消息,可一直连续发多条消息;

所述算法类型包括但不限于:图像压缩、文字识别(例如,OCR(Optical Character Recognition,光学字符识别))、不良图像检测、以图搜图。

步骤104:Storm模块中KafkaSpout(kafka消息源)用来接收Kafka消息,并将消息发给第一个bolt(消息处理者)进行消息字段解析拆分,拆分后的字段为:消息号(sessionid)、图像在HDFS上的存储路径、图像参数、算法类型等信息。

步骤105:拆分后的字段发送到第二个bolt:ReadHdfsBolt;

ReadHdfsBolt会根据每张图像的存储路径信息从HDFS上下载图像并转化成字节流。

步骤106:转换后的字节流发送到第三个bolt:AlgorithmBlot;

AlgorithmBlot根据算法类型消息字段,调用对应的智能图像算法对字节流进行处理,得到相应的处理结果(图像或文字等)。

本实施例中,AlgorithmBlot调用已封装好的相应图像算法java接口。其中,字节流作为接口的入参,图像处理后得到的结果转换成字节流。

其中,图像处理算法基本都是C或C++编码实现的,事先需要将算法封装成.so文件,并加载到工程中;而封装的java接口通过jni方式调算法.so文件。

步骤107:图像算法处理后得到结果(图像或文字等)以字节流的形式发送到第四个bolt:WriteHdfsBlot;

WriteHdfsBlot将字节流转换成图像格式或其他类型的处理结果存储到HDFS中。

步骤108:最后将HDFS中处理结果所在的路径等信息传递到最后一个bolt:KafkaBolt。

KafkaBolt将这些数据信息以kafka消息发送给可视化UI界面。

步骤109:可视化界面接收消息后,根据HDFS上存储的处理结果路径信息,从HDFS上下载处理后的图像或其他结果,并展示到界面上。

采用本发明实施例所述的图像处理的方法,与现有技术相比,可适用于实时性要求较高的场景,应用范围更广,处理速度更快,同时减少了网络带宽消耗,降低了算法处理时间。

本实施例中,用户在可视化界面上上传待处理的图像,同时设计算法类型以及参数后,向Storm模块中提交图像处理任务。任务启动后,首先将图像存储到HDFS中,并将图像路径信息发送kafka消息到Storm模块中。Storm模块负责从HSFS存储模块中下载图像并转换成字节流,并根据算法类型调用相关的算法接口。图像经算法处理后得到的结果先存储到HDFS中。最后Storm模块将结果路径信息以及处理日志等信息发送kafka消息到可视化界面,用于界面进行结果展示。

实施例二,本实施例以图像压缩算法为例,包括以下步骤:

步骤201:用户在可视化UI上上传待压缩的图像(一张或多张),选择算法类型为:图像压缩,同时设置图像压缩算法压缩因子参数(取值范围在0~1,默认值为0.85),点击提交按钮,即向系统提交了图像压缩处理任务;

步骤202:可视化UI首先将用户上传的所有图像全部存储到HDFS中,同时记录所有图像文件的存放路径;

步骤203:可视化UI发送Kafka消息到Storm模块,除了消息号sessionid外,消息中还携带HDFS单张图像存放路径、界面上设置的图像算法压缩因子参数、算法类型(图像压缩算法)等信息;每处理一张图像都会发送一个kafaka消息,可一直连续发多条消息;

步骤204:Storm模块中KafkaSpout用来接收Kafka消息,并将消息字段解析拆分,拆分后的字段为:消息号sessionid、图像在HDFS上的存储路径信息、压缩因子参数、算法类型(图像压缩算法);

步骤205:拆分后的字段发送到第二个bolt:ReadHdfsBolt;ReadHdfsBolt会根据每张图像的存储路径信息从HDFS上下载图像并转化成字节流;

步骤206:转换后的字节流发送到第三个bolt:AlgorithmBlot;AlgorithmBlot里面判断算法类型消息字段为图像压缩,则调用已封装好的图像压缩图像算法java接口。其中,字节流作为接口的入参,进行图像压缩处理后得到压缩后的图像流;

其中,图像处理算法基本都是C或C++编码实现的,事先需要将算法封装成.so文件,并加载到工程中;而封装的java接口通过jni方式调算法.so文件。

步骤207:压缩后的图像以字节流的形式发送到第四个bolt:WriteHdfsBlot;

WriteHdfsBlot将字节流转换成图像格式存储到HDFS中。

步骤208:最后将压缩后图像在HDFS中的路径等信息传递到最后一个bolt:KafkaBolt。

KafkaBolt将这些数据信息以kafka消息发送出去。

步骤209:可视化UI收到消息后,根据返回的图像路径信息从HDFS上下载压缩后的图像,并展示在UI上。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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