一种基于GPU的图像处理方法技术

技术编号:8047065 阅读:229 留言:0更新日期:2012-12-06 17:40
本发明专利技术公开了一种基于GPU的图像处理方法,该方法可以高效地处理多图层的图像数据。该方法主要包含以下步骤:首先,激活图层,即将所述待处理图像的某一图层从系统内存中拷贝到图形处理单元的显存中,如果显存容量不足,则同时需要将其他图层的数据在显存中删除,只保留在系统内存中的数据;其次,启动一个图像处理滤镜,在调节滤镜参数的时候,对被激活图层的当前可视区域内的缩略图进行实时计算;再次,使用每一个图层的缩略图进行由底至上的混合,以渲染到画布,并将该画布显示到窗口;最后,应用该图像处理滤镜,使用滤镜的参数计算出被激活图层完整的的调节结果。本发明专利技术能够有效节省显存,提供图像渲染的处理速度,对图像渲染进行批处理操作,并能够实时显示渲染结果。

【技术实现步骤摘要】

本专利技术涉及计算机图形
,尤其涉及一种图像处理的方法。
技术介绍
目前一个综合的图像处理软件需要能够对图像进行读取和存档,对图像应用滤镜,并且支持对操作的撤销和重做等等。传统的综合图像处理软件都是基于CPU进行设计的,因为该程序只需要管理内存和硬盘的数据,使用CPU可以很方便地实现以上功能,同时CPU核心数目有限,不会对算法的设计构成太大挑战。一个专业的图像处理软件必须要支持图层管理,选区管理等。这些在GPU的显存有限,编程不灵活的情况下,都带来了相当大的设计困难。 GPU的全称是Graphics Processing Unit,即图形计算单元,也即普通意义上的显卡芯片。GPU中有着大量的流处理器单元,可以并发地处理数据,因此GPU很适合于用来作图像处理。虽然使用GPU可以很方便地实现一个图像处理的算法,但是,要基于GPU实现一个综合的图像处理软件却会遇到很多困难,主要包括 存储管理困难GPU能够操作的存储单元是显卡上的显存,而CPU能够操作的则是系统内存,显存的容量通常要远远小于内存,而且由于软件必须同时使用GPU和CPU,所以需要高效地管理好这两个存储系统之间的使用,并且尽量减少两个数据存储区之间的通信开销。多线程实现困难由于使用GPU计算通常需要利用到OpenGL等图形API,而这些OpenGL API只能够工作在主线程,也就是⑶I线程的模式下,所以无法像通常方法一样,使用工作线程和GUI线程分离的方式,在密集计算的方式下给出界面反馈。撤销/重做系统实现困难由于使用GPU进行图像处理需要将图像数据拷贝至显存,而传统的撤销/重做系统实现则需要图像数据在系统内存中。这样,由于每一次滤镜或调节操作过后都需要进行撤销/重做数据的备份,则要求数据从显存到内存中进行拷贝,而大量的拷贝会对PCIE的传输造成较大压力,而且对实时性影响十分巨大。
技术实现思路
本专利技术的目的是针对上述问题提出的一种图像处理方法,能够在图像渲染操作时实时反馈的滤镜调节效果,平滑的画布缩放和拖动效果,显存与系统内存之间的相互拷贝大大减少,并且在显存容量有限的情况下可以支持多图层。本专利技术提供了一种图像处理方法,包括以下步骤 A、获取待处理图像,将所述待处理图像的一个图层从系统内存中拷贝到图形处理单元的显存中; B、启动一个图像处理滤镜,在调节滤镜参数的时候,对所述图层的当前可视区域内的缩略图进行实时计算并获得调节结果;C、使用所述待处理图像的每一个图层的缩略图进行由底至上的混合,以渲染到画布,并将该画布显不到窗口; D、最后,应用该图像处理滤镜,使用滤镜的参数计算出被激活图层完整的的调节结果。上述技术方案中,优选地,步骤A还包括 如果显存容量不足,则同时需要将其他图层的数据在显存中删除,只保留在系统内存中的数据。上述技术方案中,优选地,步骤C进一步包括 设置滤镜的参数,实时计算所述待处理图层的缩略图在所述参数下的处理结果; 当所述处理结果与所述待处理图层相比发生变化后,对所述待处理图层进行渲染。上述技术方案中,优选地,所述滤镜包括一个唯一的标识号和若干被序列化的参 数。上述技术方案中,优选地,还包括步骤 将所述待处理图像进行全图备份和参数备份,所述全图备份将所有图层进行备份,所述参数备份是将当前操作的参数进行备份; 当撤销当前使用参数方式进行备份的操作时,按操作的先后顺序找到所述图层对应的最邻近的全图备份,将数据恢复到该全图备份; 依次应用全部以参数备份形式存储的操作序列。上述技术方案中,优选地,所述步骤C中的渲染具体包括 建立一张空白的帧缓存数据区; 从上至下将各图层的缩略图混合到所述帧缓存数据区上并改变对应的值; 所述各图层的缩略图混合的时候,使用OpenGL着色器语言对帧缓存数据区中的每一个点进行赋值。 本专利技术的技术效果在于 可以实时反馈滤镜调节效果,平滑的画布缩放和拖动效果,显存与系统内存之间的相互拷贝大大减少,提高图像渲染的处理速度,节省显存,并且在显存容量有限的情况下可以支持多图层操作。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中 图I是本专利技术一种图像处理方法具体实施方式的流程图。具体实施例方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。本专利技术的一种具体实施方式提供了一种图像处理方法,包括以下步骤步骤101、激活图层,即将所述待处理图像的某一图层从系统内存中拷贝到图形处理单元的显存中,如果显存容量不足,则同时需要将其他图层的数据在显存中删除,只保留在系统内存中的数据; 要操作一个图层必须先激活该图层,在激活一个图层的同时,当前被激活的图层会首先被反激活,这样一个时刻只有一个图层被激活。反激活的过程就是把当前图层的数据从GPU显存拷贝到系统内存,释放GPU显存中的数据,并锁定该图层.激活的过程则刚好相反,数据从系统内存中拷贝到GPU显存,并且仍然保留内存中的数据区。非激活的图层则只在系统内存中保存数据,这样节省了显存的同时,保证了当前操作的快速性,因为当前操作所需要的数据都已经在显存中,不会造成较大延迟。步骤102、启动一个图像处理滤镜,在调节滤镜参数的时候,对被激活图层的当前可视区域内的缩略图进行实时计算; 每一个图层,包括像素图层和文字图层,都有与之对应的缩略图。对于像素图层而言,其缩略图是图层在画布可见范围内的一个子图层,并且其缩放比例在当前画布是缩小时与 画布一致,在当前画布是放大时保持100%。这样,保证图层缩略图是一个很小的数据,可以完整地存储在GPU显存中。在进行实时图层渲染过程当中,使用缩略图参与渲染计算,即渲染就是用每个图层的缩略图进行。由于所有的数据都在GPU显存中,所以可以获得十分快的速度。步骤103、使用每一个图层的缩略图进行由底至上的混合,以渲染到画布,并将该画布显示到窗口; 渲染的具体方法是首先建立一张空白(RGBA都为O)的帧缓存数据区,然后由下至上将图层缩略图混合到该帧缓存数据区上并改变它的值.每一个图层的缩略图在混合的时候,都使用OpenGL着色器语言(GLSL)来对帧缓存数据区中的每一个点进行赋值. 步骤104、最后,应用该图像处理滤镜,使用滤镜的参数计算出被激活图层完整的的调节结果。步骤104和步骤102之不同在于,步骤102只计算图层的缩略图数据,而步骤104是计算整个图层的数据。步骤104通常会比步骤102慢很多,所以通常是在用户在界面上点击确定之后才会执打。步骤103中的渲染方法中,滤镜和调节工具可以进行实时刷新。大部分的滤镜和调节工具都有很多的参数可以设置,比如曝光调节工具中的ga_a参数。在对滤镜和调节工具进行参数调整的过程中,用户期望在画布上获得对应参数的实时效果,每种工具都有不同的参数,在实际操作中会本文档来自技高网
...

【技术保护点】
一种图像处理方法,其特征在于,包括以下步骤:A、获取待处理图像,将所述待处理图像的一个图层从系统内存中拷贝到图形处理单元的显存中;B、启动一个图像处理滤镜,在调节滤镜参数的时候,对所述图层的当前可视区域内的缩略图进行实时计算并获得调节结果;C、使用所述待处理图像的每一个图层的缩略图进行由底至上的混合,以渲染到画布,并将该画布显示到窗口;D、应用该图像处理滤镜,使用滤镜的参数计算出被激活图层完整的的调节结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈实富张舒张乐
申请(专利权)人:成都平行视野科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1