一种调色板变换算法的优化方法、装置及系统与流程

文档序号:12038232阅读:401来源:国知局
一种调色板变换算法的优化方法、装置及系统与流程

本发明实施例涉及图像处理技术领域,特别是涉及一种调色板变换算法的优化方法、装置及系统。



背景技术:

随着图像处理技术及图像采集设备的快速发展,互联网的图像数据呈现爆炸式增长,且用户对图像像素质量的要求越来越高,图像数据规模呈指数级增长,为了减少图像数据规模的增长,在互联网数据中心服务器上,可采用jpg、png、webp等图像压缩算法对原始图像进行处理,以减少图片源文件大小来降低对数据中心存储负载和网络带宽的压力。

调色板变换算法是图像压缩算法中常用的一种变换方式,当图像中包含像素种类较少且像素重复率比较大时,可将图像中的像素存储信息变换成对应颜色索引值,来减少图像中存放像素信息所需要的字节数,从而降低整个图像的文件大小。在png、webp等图像压缩算法中,均使用到了调色板变换方式来降低图像的大小。

在现有图像压缩算法中,调色板变换算法均采用c语言方式实现,并基于冯诺依曼体系结构的cpu上串行执行,即需要对整幅图像的像素进行一次遍历,来生成图像的调色板信息。

但是,由于通用处理器串行执行方式的局限性,导致图像压缩过程性能受限,尤其是近年来图像分辨率的不断增大,数据中心对图像压缩性能的要求越来越高,现有技术中调色板变换算法方法已经无法满足需求,因此,在图像压缩处理过程中如何改进调色板变换的方法,提升调色板变换算法性能,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种调色板变换算法的优化方法、装置及系统,以加快图像压缩时调色板变换过程的速度,有效的降低了延时现象,提升了调色板变换算法性能。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种调色板变换算法的优化方法,包括:

通过opencl语言的写缓存方式,将获取的待压缩图像发送至fpga板卡的内存中;

所述fpga板卡接收所述待压缩图像的像素数据后,利用所述opencl语言实现的创建调色板kernel,创建存储所述待压缩图像的像素数值的调色板;利用所述opencl语言实现的调色板变换算法kernel,根据所述像素在所述调色板中对应的索引值,对所述待压缩图像相应的像素进行替换,以实现所述待压缩图像的调色板变换;

通过所述opencl语言的读缓存方式,从所述fpga板卡的内存中读取所述调色板中的数据及经过调色板变换后的图像数据。

可选的,所述利用所述opencl语言实现的创建调色板kernel包括:

在利用所述opencl语言描述实现创建调色板kernel时,采用制导语句方式实现循环展开、循环流水优化的控制。

可选的,所述将获取的待压缩图像发送至fpga板卡的内存中为:

将获取的待压缩图像发送至fpga板卡的ddr内存中,以进行存储。

可选的,所述利用所述opencl语言实现的创建调色板kernel,创建存储所述待压缩图像的像素数值的调色板包括:

对所述待压缩图像的像素进行遍历,以统计不同颜色的数值;

为所述待压缩图像创建调色板,以存储不同像素数值,并根据所述待压缩图像的分辨率设置所述调色板的存储空间。

可选的,在所述为所述待压缩图像创建调色板,以存储不同像素数值之后,还包括:

根据颜色数值对所述调色板中存储的像素数值按照从大到小的方式进行排序。

可选的,所述通过所述opencl语言的读缓存方式,从所述fpga板卡的内存中读取所述调色板中的数据及经过调色板变换后的图像数据包括:

当接收到所述fpga板卡反馈的图像的调色板变换完成指令后,通过所述opencl语言的读缓存方式,从所述fpga板卡的ddr内存中读取所述调色板中的数据以及经过调色板变换后的图像数据。

可选的,所述利用所述opencl语言实现的调色板变换算法kernel包括:

在利用所述opencl语言中描述实现调色板变换算法kernel时,采用制导语句方式实现循环展开、循环流水优化的控制。

本发明实施例另一方面提供了一种调色板变换算法的优化装置,包括:

发送数据模块,用于通过opencl语言的写缓存方式,将获取的待压缩图像发送至fpga板卡的内存中;

图像的调色板变换模块,用于所述fpga板卡接收所述待压缩图像的像素数据后,利用所述opencl语言实现的创建调色板kernel,创建存储所述待压缩图像的像素数值的调色板;利用所述opencl语言实现的调色板变换算法kernel,根据所述像素在所述调色板中对应的索引值,对所述待压缩图像相应的像素进行替换,以实现所述待压缩图像的调色板变换;

读取数据模块,用于通过所述opencl语言的读缓存方式,从所述fpga板卡的内存中读取所述调色板中的数据及经过调色板变换后的图像数据。

可选的,所述图像的调色板变换模块为在利用所述opencl语言描述实现创建调色板kernel时,采用制导语句方式实现循环展开、循环流水优化的控制的模块。

本发明实施例还提供了一种调色板变换算法的优化系统,包括处理器以及fpga板卡,所述处理器通过pci-e接口与所述fpga板卡相连;

其中,所述处理器包括如前所述的调色板变换算法的优化装置;所述fpga板卡用于对待压缩图像进行调色板变换。

本发明实施例提供了一种调色板变换算法的优化方法,利用opencl语言将主机端获取的待压缩图像通过写缓存的方式发送至fpga板卡的内存中;在fpga板卡接收所述待压缩图像的像素数据后,利用opencl语言实现的创建调色板kernel,创建存储待压缩图像的像素数值的调色板;利用opencl语言实现的调色板变换算法kernel,根据各像素在调色板中对应的索引值,对待压缩图像相应的像素进行替换;通过opencl语言读缓存的方式,从fpga板卡的内存中读取调色板中的数据及经过调色板变换后的图像数据。

本申请提供的技术方案的优点在于,在图像进行压缩过程中,利用fpga对图像的调色板变换进行循环执行,提高了调色板创建及变换功能的吞吐率性能,大大的提高了调色板变换算法的速度,有效的降低了图像调色板变换算法的延迟,提高了调色板变换算法的性能;此外,采用opencl语言,可降低fpga硬件加速单元的开发复杂度,提高开发效率。

此外,本发明实施例还针对调色板变换算法的优化方法提供了相应的实现装置及系统,进一步使得所述方法更具有实用性,所述装置及系统具有相应的优点。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种调色板变换算法的优化方法的流程示意图;

图2为本发明实施例提供的调色板变换算法的优化装置的一种具体实施方式结构图;

图3为本发明实施例提供的调色板变换算法的优化系统的一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

本申请的发明人经过研究发现,随着图像分辨率的不断增大,以及用户对图像压缩性能的要求越来越高,现有的图像压缩变化算法急需改善,以提升图像压缩性能。

fpga(field-programmablegatearray,现场可编程门阵列),它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物,是一种新型的异构计算平台加速器件,由可编程的逻辑块和互联网络组成,可在不同逻辑下执行多个线程,实现流水线并行处理,具有较强的并行处理能力。fpga在大数据处理领域具有诸多优势,如采用流水线方式实现并行计算、低功耗、动态可重构等。

异构计算是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式,能够根据每一个计算子系统的结构特点为其分配不同的计算任务,常见的计算单元有中央处理器cpu、图形处理器gpu、数字信号处理dsp、专用集成电路asic、fpga等。比如cpu和gpu之间的“协同计算、彼此加速”,从而突破cpu发展的瓶颈。这种模式可提高服务器的计算性能、能效比和计算实时性。

fpga可作为硬件加速协处理器来提升图像编解码算法的性能,但是针对fpga硬件加速系统,传统上是采用vhdl/verilog等rtl硬件描述语言进行设计,具有很高的设计复杂度,往往导致较长的开发周期。随着技术的发展,opencl作为一种开放式计算高级编程语言,采用的算法调试模式代替了传统硬件描述语言对fpga进行编译开发,有效的解决了传统上fpga硬件加速电路设计所存在的较高复杂度问题。opencl可直接写入fpga进行程序验证,为fpga广泛应用于通用计算领域进行快速开发提供了便利的保证。

鉴于此,本申请通过将fpga板卡与cpu结合为异构平台,主机端cpu调用opencl语言将待压缩图像通过写缓存的方式发送至fpga板卡的内存中;然后在fpga板卡实现待压缩图像的调色板变换;最后再调用opencl语言通过读缓存的方式,从fpga板卡的内存中读取调色板中的数据及经过调色板变换后的图像数据。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先请参见图1,图1为本发明实施例提供的一种调色板变换算法的优化方法的流程示意图,本发明实施例可包括以下内容:

s101:通过opencl语言的写缓存方式,将获取的待压缩图像发送至fpga板卡的内存中。

主机端cpu获取待压缩图像,利用opencl语言的写缓存的方法,将待压缩图像的原始像素数据可通过pcie接口发送到fpga板卡上的ddr内存中,进行存储。当然,也可放于fpga板卡上的其他存储设备中,这均不影响本申请的实现。

fpga板卡与主机端cpu可通过pci-e接口连接,通过opencl框架中提供的writebuffer函数将图像像素数据通过pcie接口写到fpga板卡上的ddr内存中,供opencl实现的kernel使用。opencl语言提供了封装好的pci-e接口驱动程序,与现有技术相比,有效的避免了对pcie通信驱动的开发,降低了系统的开发难度。

s102:所述fpga板卡接收所述待压缩图像的像素数据后,利用所述opencl语言实现的创建调色板kernel,创建存储所述待压缩图像的像素数值的调色板;利用所述opencl语言实现的调色板变换算法kernel,根据所述像素在所述调色板中对应的索引值,对所述待压缩图像相应的像素进行替换,以实现所述待压缩图像的调色板变换。

图像像素为采用rgba格式进行像素的描述,对于一个像素,r(red)、g(green)、b(blue)、a(alpha)四种颜色数据分别占1个字节,一个像素采用4字节整型数据表示,而在opencl语言中,采用一个unsignedint32类型数据表示一个像素。

利用所述opencl语言实现的创建调色板kernel,可对待压缩图像的像素依次进行遍历,以统计不同颜色的数值,即对图像的像素进行统计;然后为待压缩图像创建调色板,以存储不同像素数值,并根据待压缩图像的分辨率设置所述调色板的存储空间。调色板存储空间的大小可根据图像分辨率大小自动调节,但是调色板缓存空间最大可设置为1024。

为了便于后续图像的像素进行替换,还可根据颜色数值对所述调色板中存储的像素数值按照从大到小的方式进行排序。

在利用opencl语言进行创建调色板kernel的代码实现时,可通过制导语句进行循环展开优化控制,同时消除循环相关的访存依赖关系,提高kernel中循环程序流水执行的效率,以及降低自动生成的fpga硬件电路所占用的硬件资源开销,实现高效并行流水的具有创建调色板功能的fpga硬件电路的设计。

创建调色板kernel与调色板变换kernel之间可采用channel进行通信,以传输调色板数据信息。

使用opencl语言描述实现的调色板变换kernel,对图像像素进行处理,对于每个像素,在调色板缓存中进行查找对应的像素数值,然后利用该像素数值在调色板中的索引数值,替换掉图像中原始像素的数值,调色板缓存数据采用channel方式从创建调色板kernel传递至该调色板变换kernel。在kernel代码实现时,通过对opencl实现的循环程序进行循环展开、循环流水优化,提高调色板变换功能模块fpga硬件加速单元的性能,提高kernel中循环程序流水执行的效率,降低自动生成的fpga硬件电路所占用的硬件资源开销。

创建调色板kernel与调色板变换kernel,可采用alterasdkforopencl(aocl)工具进行综合,自动生成可在fpga平台执行的硬件比特流文件。

在采用opencl创建调色板kernel与调色板变换kernel过程中,具体可采用制导语句pragmaunroll进行循环展开优化控制,同时消除循环相关的访存依赖关系,提高kernel中循环程序流水执行的效率。当然,也可采用其他制导语句,这均不影响本申请的实现。

s103:通过所述opencl语言的读缓存方式,从所述fpga板卡的内存中读取所述调色板中的数据及经过调色板变换后的图像数据。

由于fpga板卡对待压缩图像进行调色板变换需要一定的时间,主机端cpu可一直发送一个获取数据的指令,也可通过下述方式进行:

判断所述fpga板卡是否完成对待压缩图像进行调色板变换;

当判定所述fpga板卡完成对待压缩图像进行调色板变换时,调用opencl读缓存方式,从所述fpga板卡的内存中读取调色板中的数据以及经过调色板变换后的图像数据。

或者:

当接收到所述fpga板卡反馈的图像的调色板变换完成指令后,调用opencl读缓存方式,从所述fpga板卡的ddr内存中读取调色板中的数据以及经过调色板变换后的图像数据。

当然,也可通过其他方式来触发主机端cpu到fpga板卡的内存中读取解码后的数据。

在本发明实施例提供的技术方案中,在图像进行压缩过程中,利用fpga对图像的调色板变换进行循环执行,提高了调色板创建及变换功能的吞吐率性能,大大的提高了调色板变换算法的速度,有效的降低了图像调色板变换算法的延迟,提高了调色板变换算法的性能;此外,采用opencl语言,可降低fpga硬件加速单元的开发复杂度,提高开发效率。

本发明实施例还针对调色板变换算法的优化方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的调色板变换算法的优化装置进行介绍,下文描述的调色板变换算法的优化装置与上文描述的调色板变换算法的优化方法可相互对应参照。

参见图2,图2为本发明实施例提供的调色板变换算法的优化装置在一种具体实施方式下的结构图,该装置可包括:

发送数据模块201,用于通过opencl语言的写缓存方式,将获取的待压缩图像发送至fpga板卡的内存中。

图像的调色板变换模块202,用于所述fpga板卡接收所述待压缩图像的像素数据后,利用所述opencl语言实现的创建调色板kernel,创建存储所述待压缩图像的像素数值的调色板;利用所述opencl语言实现的调色板变换算法kernel,根据所述像素在所述调色板中对应的索引值,对所述待压缩图像相应的像素进行替换,以实现所述待压缩图像的调色板变换。

读取数据模块203,用于通过所述opencl语言的读缓存方式,从所述fpga板卡的内存中读取所述调色板中的数据及经过调色板变换后的图像数据。

可选的,所述图像的调色板变换模块202可为在利用所述opencl语言描述实现创建调色板kernel时,采用制导语句方式实现循环展开、循环流水优化的控制的模块。

所述图像的调色板变换模块202还可为在利用所述opencl语言中描述实现调色板变换算法kernel时,采用制导语句方式实现循环展开、循环流水优化的控制的模块。

在另外一些实施方式中,所述图像的调色板变换模块202可包括:

统计单元2021,用于对所述待压缩图像的像素进行遍历,以统计不同颜色的数值;

创建单元2022,用于为所述待压缩图像创建调色板,以存储不同像素数值,并根据所述待压缩图像的分辨率设置所述调色板的存储空间;

排序单元2023,用于根据颜色数值对所述调色板中存储的像素数值按照从大到小的方式进行排序。

可选的,在本实施例的另一些实施方式中,所述读取数据模块203可为当接收到所述fpga板卡反馈的图像的调色板变换完成指令后,通过所述opencl语言的读缓存方式,从所述fpga板卡的ddr内存中读取所述调色板中的数据以及经过调色板变换后的图像数据的模块。

本发明实施例所述调色板变换算法的优化装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例在图像进行压缩过程中,利用fpga对图像的调色板变换进行循环执行,提高了调色板创建及变换功能的吞吐率性能,大大的提高了调色板变换算法的速度,有效的降低了图像调色板变换算法的延迟,提高了调色板变换算法的性能;此外,采用opencl语言,可降低fpga硬件加速单元的开发复杂度,提高开发效率。

本发明实施例还提供了一种调色板变换算法的优化系统,参见图3,可包括:

处理器301以及fpga板卡302,所述处理器301通过pci-e接口与所述fpga板卡302相连;

其中,所述处理器301包括如前任意一个实施例所述的调色板变换算法的优化装置;所述fpga板卡302用于对待压缩图像进行调色板变换。

当然,主机端的处理器301还可通过其他接口与fpga板卡302相连,进行互相通信。

本发明实施例所述调色板变换算法的优化系统的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例在图像进行压缩过程中,利用fpga对图像的调色板变换进行循环执行,提高了调色板创建及变换功能的吞吐率性能,大大的提高了调色板变换算法的速度,有效的降低了图像调色板变换算法的延迟,提高了调色板变换算法的性能;此外,采用opencl语言,可降低fpga硬件加速单元的开发复杂度,提高开发效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种调色板变换算法的优化方法、装置及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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