一种图像颜色的动态变换方法及装置与流程

文档序号:12472101阅读:196来源:国知局
一种图像颜色的动态变换方法及装置与流程

本发明涉及图像处理技术领域,尤其涉及一种图像颜色的动态变换方法及装置。



背景技术:

图像颜色的动态变换,是指依据逻辑需要,动态的对图像进行色彩变换的过程,色彩动态变换技术随着计算机多媒体应用的普及也得到了广泛的应用。以游戏为例,色彩的动态变换可以丰富玩家的造型,满足玩家造型的多样化、个性化需求,以及用于体现游戏角色属性值的变换,以满足游戏逻辑的需求。一个图像包括至少一个图素,所述图素是图像的最小绘制单元,在色彩变换过程中,每个图素中的颜色统一进行变化。

在现有技术中,图像色彩变换的方法为,将图像中的每一个图素依据颜色划分为若干区域,一个区域内像素的颜色相同,在进行颜色变换时,根据RGB颜色合成的原理生成新的颜色,其中,RGB分别代表红(R)、绿(G)、蓝(B)三种颜,并利用新的颜色对各区域内的原有颜色进行替换。当某个图素中包括颜色过渡(即颜色产生渐变)的区域时,为了达到图素整体颜色变换时的平滑过渡,需要在该图素中划分出更为细致的区域。



技术实现要素:

发明人在研究过程中发现,现有技术中,为了使得过渡色平滑渐变,通常将一个图素需要变换的每一种颜色均作为一个图素文件保存到系统中,当需要进行图素的色彩变换时,直接为该图像加载相应色彩的各个图素文件即可。但是这样就使得一个图素对应了多个图素文件,对于包括多个图素的图像来说,需要增加大量的图素文件保存到程序中,这使得程序占用系统较多的资源且颜色变换过程较为繁琐。因此,在图素颜色变换中达到过渡色平滑渐变的效果和颜色变换过程的快速简单处理就成为一种矛盾。

有鉴于此,本发明实施例的主要目的在于提供一种图像颜色的动态变换方法及装置,可以在不占用系统资源的基础上,提高了图素色彩变换的效率,且保证了图素过渡色的平滑渐变。

为实现上述目的,本发明实施例提供了一种图像颜色的动态变换方法,包括:

在内存中保存待变换图像中各个初始图素的初始颜色;

当接收到所述待变换图像的颜色变换指令时,将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素;所述颜色变换指令中携带了所述待变换图像进行动态变化后的目标颜色;

将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值;

将所述待变换图像的调整后的HUE值转换为RGB色彩模式的RGB值,并将转换后的待变换图像按照RGB值进行显示。

可选的,所述将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素,包括:

遍历所述待变换图像中的初始图素;

对当前遍历到的初始图素进行初始像素点遍历,将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;

当比较结果不同时,停止对当前遍历到的初始图素进行像素点遍历并继续遍历下一个初始图素,以及,将当前遍历到的初始图素标记为颜色需要发生变换的目标图素;

或者,

遍历所述待变换图像中的初始像素点;

将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;

当比较结果不同时,将当前遍历到的初始像素点所属的初始图素标记为颜色需要发生变换的目标图素,且在后续遍历过程中略过被标记的目标图素中的像素点。

可选的,所述将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值,包括:

确定所述目标图素对应的初始颜色在HLS色彩模式下对应的HUE值;

按照所述目标颜色的HUE值,对每一初始颜色对应的HUE值进行角度调整。

可选的,所述方法还包括:

保存所述待变换图像中各个图素的初始颜色在RGB色彩模式下的RGB值;

所述将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值之前,还包括:

将所述待变换图像中各个初始图素的初始颜色,由RGB色彩模式下的RGB值转换为HLS色彩模式下的HLS值。

可选的,所述方法还包括:

如果内存未满,则在内存中保存所述目标图素需要变换成的目标颜色;

如果内存已满,则释放最久未使用的内存块,并利用释放出的内存块保存所述目标图素需要变换成的目标颜色。

可选的,所述方法还包括:

保存所述目标图素需要变换成的目标颜色对应的HUE值。

可选的,所述将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值之前,还包括:

判断所述目标图素需要变换成的目标颜色对应的HUE值是否被保存在内存中;

若是,则从内存中获取所述目标图素需要变换成的目标颜色对应的HUE值,并将获取的HUE值转换为RGB色彩模式下的RGB值,再执行所述将转换后的待变换图像按照RGB值进行显示的步骤;

若否,则执行所述将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值的步骤。

可选的,所述保存所述目标图素需要变换成的目标颜色,包括:

采用内存池分配技术分配内存,并利用分配的内存保存所述目标图素需要变换成的目标颜色。

可选的,所述保存待变换图像中各个初始图素的初始颜色,包括:

采用调色板格式保存待变换图像中各个初始图素的初始颜色;

则相应的,所述保存所述目标图素需要变换成的目标颜色,包括:

采用调色板格式保存所述目标图素需要变换成的目标颜色。

本发明实施例还提供了一种图像颜色的动态变换装置,包括:

图素颜色保存单元,用于在内存中保存待变换图像中各个初始图素的初始颜色;

变换图素确定单元,用于当接收到所述待变换图像的颜色变换指令时,将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素;所述颜色变换指令中携带了所述待变换图像进行动态变化后的目标颜色;

图素色调调整单元,用于将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值;

变换图素显示单元,用于将待变换图像的调整后的HUE值转换为RGB色彩模式的RGB值,并将转换后的待变换图像按照RGB值进行显示。

本发明实施例提供的图像颜色的动态变换方法及装置,在确定需要进行色彩变换的图素后,在HLS模式下通过色调值调整即可实现图素的色彩变化,因此不必在系统中预先保存图素文件,仅通过改变HLS模式下的色调值即实现了图素色彩的变换,不但提高了图素色彩变换的效率,还降低了系统负荷,此外,由于同一个图素色彩变换统一进行,同一图素中所有像素点色调值(HUE)进行相同值的增加或减少,因而本发明不受划分区域的限制,便可实现对高质量色彩过渡图素的颜色变换。

附图说明

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

图1为本发明实施例HLS模式原理图;

图2为本发明实施例图像颜色的动态变换方法的流程示意图;

图3为本发明实施例图像颜色的动态变换方法的另一流程示意图;

图4为本发明实施例图像颜色的动态变换装置的组成示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明中涉及了RGB色彩模式与HLS色彩模式,下面对这两种模式进行介绍。

所述RGB色彩模式是当前较常用的色彩合成模式,几乎所有的绘图软件及图像显示都采用了RGB色彩模式,其优点在于处理方便,占用空间小。RGB分别代表红(R)、绿(G)、蓝(B)三种颜色,在光谱色中,这三种颜色是人眼最敏感的色彩,可以混成绝大多数色彩,反之,绝大部分色彩亦可分解为红绿蓝三色,即所谓的三原色原理。由红、绿、蓝相加混合,以取得其他颜色的颜色合成方式称为RGB色彩模式。R、G、B这三个参数的取值范围都在0至255之间,例如,(0,0,0)显示为白色,(255,255,255)显示黑色。

所述HLS色彩模式是最接近现实习惯的一种色彩模式,较符合一般用户的色彩调整习惯。HLS由三个要素组成,即色相或色调(HUE)、亮度(Lightness)、饱和度(Saturation)。色相(色调)是色彩最基本的属性,即色彩的颜色范围,光谱中的每一种色彩都是一种色相,比如在红色至紫色之间,可以定义出任意数量的色相。图1所示为HLS模式原理图。图中纵坐标表示亮度(L,Lightness),横坐标表示饱和度(S,Saturation),圆弧代表色相(色调)(H,Hue),沿着圆弧转动一定角度,色彩实现均匀的变换过渡。

基于上述说明可知,对于HLS色彩模式,修改色调值即可实现颜色的变换,即参照图1,通过调整圆弧角度即可实现图像色彩的变换;而对于RGB色彩模式,若需要进行色彩变换,R、G、B这三个参数是以一个比例在变换,这个比例较难获取,并且这三个参数值均在发生变化,进而在实现过程中带来不便。因此,本发明的关键点之一在于采用HLS模式进行色彩变换,仅通过改变色调一个参数值,就可实现色彩的变换,且色彩变换效率较高。

下面对本发明实施例进行具体介绍。

参见图2,为本发明实施例提供的图像颜色的动态变换方法的流程示意图,该方法包括以下步骤:

步骤201:在内存中保存待变换图像中各个初始图素的初始颜色。

对于当前的图像变换操作,所述待变换图像为变换前的图像,所述待变换图像中包括至少一个图素,每个图素由至少一个像素点组成。

在一些实施方式中,步骤201可以包括:在内存中采用调色板格式保存待变换图像中各个初始图素的初始颜色。在这种实施方式中,为了节省存储空间,使用调色板格式记录所述待变换图像中每个初始图素的初始颜色,初始图素中每个像素点的初始颜色对应的是该初始图素所使用调色板中的一个颜色,当采用步骤203对一副初始图素进行色彩变换时,需要对这幅初始图素里面的所有初始像素点的初始颜色进行转换,实际上是把该初始图素所使用调色板中的所有颜色进行转换后存为另一个调色板,并把新生成的调色板作为该初始图素所使用的调色板。

步骤202:当接收到所述待变换图像的颜色变换指令时,将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素;所述颜色变换指令中携带了所述待变换图像进行动态变化后的目标颜色。

由于所述颜色变换指令中包含有变换后的图像颜色信息,即包括了变换后图像中每个图素中的每个像素点对应的目标颜色信息,因此可以将变换前的图像即所述待变换图像与变换后的图像进行颜色对比,即将所述待变换图像中每个初始图素中的初始颜色与变换后的目标颜色进行对比,从而找到所述待变换图像中哪些图素发生了颜色变换。具体可以对所述待变换图像中的初始像素点进行遍历,将遍历到的初始像素点与变换后图像中相同位置的目标像素点进行像素值比较,对于比较结果不同的被遍历像素点,将该被遍历像素点所属的初始图素确定为颜色需要发生变换的目标图素。

在其中一种实施方式中,步骤202中将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素,可以包括:遍历所述待变换图像中的初始图素;对当前遍历到的初始图素进行初始像素点遍历,将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;当比较结果不同时,停止对当前遍历到的初始图素进行像素点遍历并继续遍历下一个初始图素,以及,将当前遍历到的初始图素标记为颜色需要发生变换的目标图素。

在这种实施方式中,是以初始图素为单位,遍历所述待变换图像中的每个初始图素,在遍历初始图素时可采用逐行或逐列的顺序逐个遍历每个初始图素,对于每个遍历到的初始图素执行以下操作:对当前遍历到的初始图素中的初始像素点进行遍历,在遍历初始像素点时可采用逐行或逐列的顺序逐个遍历每个初始像素点,对于当前遍历到的初始像素点,将该初始像素点和变换后图像中与该初始像素点相同位置的目标像素点进行像素值的比较,只要出现比较结果不同的初始像素点,为了节省遍历时间,可停止对当前初始图素中的初始像素点进行遍历,进而继续对下一初始图素中的初始像素点进行遍历,同时将当前初始图素标记为颜色需要发生变换的目标图素。

在另一种实施方式中,步骤202中将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素,可以包括:遍历所述待变换图像中的初始像素点;将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;当比较结果不同时,将当前遍历到的初始像素点所属的初始图素标记为颜色需要发生变换的目标图素,且在后续遍历过程中略过被标记的目标图素中的像素点。

在这种实施方式中,是以初始像素点为单位,采用逐行或逐列等方式遍历所述待变换图像中的初始像素点,对于当前遍历到的初始像素点,将该初始像素点和变换后图像中与该初始像素点相同位置的目标像素点进行像素值的比较,当比较结果不同,则将该初始像素点所属的初始图素标记为颜色需要发生变换的目标图素,进而继续遍历下一初始像素点,在后续的遍历过程中,为了节省遍历时间且避免重复标记图素,略过被标记过的初始图素中的初始像素点。

步骤203:将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值。

为实现步骤203,所述方法还可以包括:在内存中保存所述待变换图像中各个图素的初始颜色在RGB色彩模式下的RGB值,即保存所述待变换图像中每个初始像素点的初始颜色对应的RGB值,且在步骤203之前,将所述待变换图像中各个初始图素的初始颜色,由RGB色彩模式下的RGB值转换为HLS色彩模式下的HLS值,主要是将所述待变换图像中各初始像素点的初始颜色对应的RGB值转换为代表像素点初始颜色的HUE值。

对于所述待变换图像中颜色需要发生变换的目标图素,通过对代表颜色的HUE值进行调整便可实现对所述目标图素的颜色变化,因此,如果所述待变换图像中各个初始图素中的初始颜色是以RGB色彩模式保存在内存中的,则把所述目标图素中的每个初始颜色在RGB模式下的值转换成HLS值,通过对HLS值中的H值进行一定角度的修改,达到变换颜色的目的。基于此,步骤203可以包括:确定所述目标图素对应的初始颜色在HLS色彩模式下对应的HUE值;按照所述目标颜色的HUE值,对每一初始颜色对应的HUE值进行角度调整。

进一步地,所述方法还可以包括:如果内存未满,则在内存中保存所述目标图素需要变换成的目标颜色;如果内存已满,则释放最久未使用的内存块,并利用释放出的内存块保存所述目标图素需要变换成的目标颜色。为了提高系统的处理效率,本发明实施例使用内存池技术创建分配内存用于保存图素颜色,即在保存所述目标图素需要变换成的目标颜色时,是采用内存池分配技术分配内存,并利用分配的内存保存所述目标图素需要变换成的目标颜色。

更进一步的,为了节省内存存储空间,使用调色板格式记录变换后的图素颜色,即在内存中保存所述目标图素需要变换成的目标颜色时,具体可以采用调色板格式保存所述目标图素需要变换成的目标颜色。

可以理解的是,步骤203采用了HLS模式进行色彩变换,通过修改HLS模式中的色调值即HUE值,而不改变饱和度值和亮度值即可实现色彩变化,而对于RGB模式,基于RGB的原理,图素色彩在进行变换时,R、G、B三个参数以一定的比例在进行变换,该比例不容易获取,并且三个参数都在进行变换,因而在动态色彩变换中计算量大,因此仅通过改变HLS模式下的色调值即实现了图素色彩的变换,因而提高了图素色彩变换的效率,

为了进一步提高图素颜色动态变换的效率,本发明实施例在对目标图素变换后的目标颜色进行保存的同时还保存了该目标颜色对应的HUE值,即在保存保存所述目标图素需要变换成的目标颜色时,还保存所述目标图素需要变换成的目标颜色对应的HUE值。由于内存中可以保存已经使用过的图素颜色或预设的图素颜色,这些图素中的颜色还可以以HUE值的方式进行保存,在对所述目标图素进行色彩变换时,可根据已保存图素颜色的HUE值,判断所述所述目标图素需要变换成的目标颜色对应的HUE值是否保存在内存中,若是,则为提高图像变换效率,则可直接进行图素颜色的调用,否则采用步骤203对所述目标图素的HUE值进行角度调整以进行图素的颜色变换。可见,在步骤203之前还可以包括:判断所述目标图素需要变换成的目标颜色对应的HUE值是否被保存在内存中;若是,则从内存中获取所述目标图素需要变换成的目标颜色对应的HUE值,并将获取的HUE值转换为RGB色彩模式下的RGB值,再执行步骤204中将转换后的待变换图像按照RGB值进行显示的步骤;若否,则执行步骤203。

步骤204:将待变换图像的调整后的HUE值转换为RGB色彩模式的RGB值,并将转换后的待变换图像按照RGB值进行显示。

一般情况下,由于计算机显示器的物理结构是遵循RGB模式的,因此,为了能够兼容当前多数的显示技术,步骤204将调整后的HUE值转换为RGB值,并将转换后的待变换图像按照RGB值进行图像显示。

参见图3所示的图像颜色的动态变换方法的另一流程示意图。

初始化图素信息,包括以下步骤。

301:加载图素。该步骤可具体到:判断该图素是否已经保存在内存中,若是,则在收到图素颜色变换请求后可直接执行步骤306,若被请求图素未保存在内存中,则进一步判断当前内存剩余空间是否足够,若是则转到步骤302执行创建缓冲区的步骤,若否,则淘汰内存空间中保存的最久未使用的图素,以释放内存空间,进而执行步骤302。

302:创建缓冲区,本发明中推荐采用内存池的技术在内存中分配创建缓冲区。除内存池技术外,还可采用NEW或者malloc动态申请内存。通常,采用采用NEW或者malloc动态申请内存时,少量的操作不会造成不良影响,但是如果频繁进行申请内存块的操作,则会造成系统处理效率上的损失,更有甚者,若造成内存碎片的存在,从而进一步影响系统的效率。基于上述考虑,本发明中采用内存池技术,即一次性申请一个大点的内存块,每次需要的时候就分配一块进行使用,当该内存块不够时才去申请新的内存块。通常情况,内存池技术更加适用于每次申请固定大小的内存块的应用。本发明较佳实施例中采用内存池技术,然而并不构成对本发明采用其他内存使用技术的限制。

303:创建调色板,为了减少运算量,本实施例中使用调色板格式记录像素颜色。所述调色板以数组的形式存在,记录256种颜色,即一副图素中最多有256种颜色,每次颜色转换只需计算一个调色板内的256种颜色就可以。调色板里的每种颜色都有一个编号,以达到唯一标识的目的,每个像素点的颜色编号对应调色板里的一个编号,图素进行色彩变换时,图素当前使用的调色板的编号变化为新生成的调色板编号,但是每个像素点对应的调色板内的编号并不变,进行色彩变换时,将当前调色板里的256种颜色进行色彩变换计算,从而生成一个新的调色板并被保存。

调色板和缓冲区是随着图素存在而存在的,即只有当绘制图素时,调色板和缓冲区会在内存中被创建,若图素在下一个显示画面中不需进行绘制,则该图素所创建的调色板和缓冲区被释放。

由于人眼可明显区分的色相为7个,图素色彩在这7个色相之间进行变换,即可丰富视觉感受。因此,在本实施例中为每个图素设置7个调色板,编号从0至6用以标识。但本发明并无意限制设置调色板的数量。为了进一步减少运算量,为每个图素在内存中创建8个缓冲区,用以保存调色板,这8个缓冲区中,一个缓冲区用于保存默认调色板,另外7个缓冲区用于分别保存设置的7个调色板,并按照最久未使用淘汰原则,保留最近使用过的8个调色板在缓冲区中。进而,多数色彩变换仅在第一次使用时包含计算过程,当再次请求变换的颜色已在缓冲区中保存时,则可直接进行调用并显示输出,使得进一步降低了系统运算量。

304:设置默认调色板,并保存到缓冲区中,由于本实施例进行色彩转换计算时,以默认调色板为基准,因此默认调色板一直保存在缓冲区中,直到该图像不再被显示。设置编号为0的调色板属性,包括偏转角度(即Hue值),最后一次使用时间、图像中每个象素点的颜色对应的调色板中颜色的值。以下为一调色板数据结构。

struct Pal

{

int last_ref_time;

int hue;

int palate[256];

}

其中,int last_ref_time为该调色板最后一次被使用的时间,用以标识该调色板是否久未使用;int hue为该调色板颜色变换时以默认调色板为基准的HUE值偏转角度,在进行颜色变换时,可根据int hue的记录判断当前请求的颜色是否已保存在缓冲区中,进而确定是否需要计算生成新的调色板或直接从缓冲区中调用;int palate[256]为该调色板数据,被图素中各像素点引用从而实现图素的绘制。

305:绘制图素,以下所示为一个图素对象的数据结构。

class Image

{

Pal extPal[8];

int width;

int height;

void*pImageData;

int findPal(hue);

int getPal(hue);

}

由该实例可知,一个图素的属性中包括了调用的调色板,调色板数组的下标为调色板编号;该图素的高度及宽度;该图素的色调值。

根据已知HUE值,请求对当前图像进行色彩转换,包括以下步骤。

306:遍历缓冲区,根据HUE值判断具有该HUE值的调色板是否被保存,若保存则进行步骤307,否则进行步骤308。

307:返回调色板编号,实现对该调色板的调用,并且,修改绘制当前图素所用调色板的编号,修改该调色板的最后使用时间为当前时间;进行步骤312,绘制图素。

308:遍历缓冲区,判断是否有空闲的缓冲区,若有则进行310,否则进行309。

309:如上文所提供调色板数据结构,根据其中最近被调用时间的属性,淘汰最久未使用的调色板,释放内存空间;由于本实施例中所进行的色彩变换均以所述默认调色板为基准,对HUE值进行调整,因而,本步骤中所述的最久未使用淘汰原则不适用默认调色板,所述默认调色板一直保存在缓冲区中,直到图素在下一个显示循环中不进行显示为止。

以下提供一实例,具体体现步骤26至步骤29的处理过程。

int Image::getPal(int hue)

{

int find=findPal(hue)

if(find==0)

{

int def_ref_time=0;

int found=0;

int i=0;

for(i=1;i<8;i++)

{

if(extPal[i].hue==0)

{

break;

}

elseif(extPal[i].last_ref_time>def_ref_time)

{

def_ref_time=extPal[i].last_ref_time;

fount=i;

}

}

find=(i<8)?i:found;

convPal(extPal[0],extPal[find])

}

extPal[find].last_ref_time=time();

return find;

}

310:以默认调色板为基准,重新计算调色板中的256个颜色值;具体的,将默认调色板中每个颜色值由RGB模式转换为HLS模式,获取HLS模式下的颜色值后,对其中的色调(HUE)值进行调整,即一定角度的增加或减少,以能获得所请求的颜色。

311:将新计算生成的调色板保存到当前缓冲区,保存到缓冲区的颜色值采用RGB模式。其中调色板颜色值RGB模式和HLS模式的相互转换方法参照上文说明,不再赘述。

312:显示输出图素。

以下示出绘制图素的实例。

void DrawImage("name",hue)//图素名称,颜色对应的HUE值

{

Image&aImage=findImageByName("name")//根据图素名称判断是否已在内存

int palIdx=aImage.getPal(hue)//根据色调值调用调色

CopyToScreen(aImage.pData,aImage.extPal[palIdx])//输出显示

}

在上文所举实施例中,设置默认调色板作为颜色变换的基准,使得色调值的调整更加灵活,颜色变换更加灵活;然而,本发明中同样可不设置所述默认调色板作为改变HUE值标准,在进行颜色变换时只要知道各调色板间HUE值之间的偏转角度,同样可实现颜色变换。如上文所述的RGB模式的优点,上述实施例在保存图素调色板颜色时采用RGB模式的值,然而,本发明并不排除在保存图素颜色时采用HLS模式值的方式,进而在显示输出图素前应将HLS模式转换为RGB模式。

以上详细介绍了图素色彩的动态变换方法,该方法尤其适用于游戏界面的图像显示,然而,本发明并不对该技术的应用领域进行限定。

此外,由于本发明中涉及RGB色彩模式与HLS色彩模式之间的图像转换,下面给出RGB色彩模式与HLS色彩模式之间的转换公式:

1)由HLS色彩模式向RGB模式的转换公式如下:

MIN=2×L-MAX

S=0

R=G=B=L

S≠0

h=H+120

h=h-360 h≥360

h=H

h=H-120

h=h+360 h<0

2)由RGB色彩模式向HLS色彩模式的转换公式如下:

MAX=max(R,G,B)

MIN=min(R,G,B)

L=(MAX+MIN)/2

MAX=MIN

S=0

H=0

MAX≠MIN

Cr=(MAX-R)/(MAX-MIN)

Cg=(MAX-G)/(MAX-MIN)

Cb=(MAX-B)/(MAX-MIN)

H=60×H

H=H+360 H<0

本发明实施例提供的图像颜色的动态变换方法,在确定需要进行色彩变换的图素后,在HLS模式下通过色调值调整即可实现图素的色彩变化,因此不必在系统中预先保存图素文件,仅通过改变HLS模式下的色调值即实现了图素色彩的变换,不但提高了图素色彩变换的效率,还降低了系统负荷,此外,由于同一个图素色彩变换统一进行,同一图素中所有像素点色调值(HUE)进行相同值的增加或减少,因而本发明不受划分区域的限制,便可实现对高质量色彩过渡图素的颜色变换。

参见图4,为本发明实施例提供的图像颜色的动态变换装置的组成示意图,包括:

图素颜色保存单元401,用于在内存中保存待变换图像中各个初始图素的初始颜色;

变换图素确定单元402,用于当接收到所述待变换图像的颜色变换指令时,将所述初始颜色与目标颜色进行比较,得到所述待变换图像中颜色需要发生变换的目标图素;所述颜色变换指令中携带了所述待变换图像进行动态变化后的目标颜色;

图素色调调整单元403,用于将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值;

变换图素显示单元404,用于将待变换图像的调整后的HUE值转换为RGB色彩模式的RGB值,并将转换后的待变换图像按照RGB值进行显示。

在一些实施方式中,所述变换图素确定单元402,包括:

第一遍历模块,用于遍历所述待变换图像中的初始图素;

第一比较模块,用于对当前遍历到的初始图素进行初始像素点遍历,将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;

第一标记模块,用于当比较结果不同时,停止对当前遍历到的初始图素进行像素点遍历并继续遍历下一个初始图素,以及,将当前遍历到的初始图素标记为颜色需要发生变换的目标图素;

或者,所述变换图素确定单元402,包括:

第二遍历模块,用于遍历所述待变换图像中的初始像素点;

第二比较模块,用于将当前遍历到的初始像素点与相同位置下所述目标颜色对应的目标像素点进行像素值比较;

第二标记模块,用于当比较结果不同时,将当前遍历到的初始像素点所属的初始图素标记为颜色需要发生变换的目标图素,且在后续遍历过程中略过被标记的目标图素中的像素点。

在一些实施方式中,所述图素色调调整单元403,包括:

色调值确定模块,用于确定所述目标图素对应的初始颜色在HLS色彩模式下对应的HUE值;

图素色调调整模块,用于按照所述目标颜色的HUE值,对每一初始颜色对应的HUE值进行角度调整。

在一些实施方式中,所述装置还包括:

第一保存单元,用于保存所述待变换图像中各个图素的初始颜色在RGB色彩模式下的RGB值;

模式转换单元,用于在所述图素色调调整单元403将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值之前之前,将所述待变换图像中各个初始图素的初始颜色,由RGB色彩模式下的RGB值转换为HLS色彩模式下的HLS值。

在一些实施方式中,所述装置还包括:

变换颜色存储单元,用于如果内存未满,则在内存中保存所述目标图素需要变换成的目标颜色;如果内存已满,则释放最久未使用的内存块,并利用释放出的内存块保存所述目标图素需要变换成的目标颜色。

在一些实施方式中,所述装置还包括:

第二保存单元,用于保存所述目标图素需要变换成的目标颜色对应的HUE值。

在一些实施方式中,所述装置还包括:

图素判断单元,用于将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值,统一调整为所述目标颜色在HLS色彩模式下对应的HUE值之前,判断所述目标图素需要变换成的目标颜色对应的HUE值是否被保存在内存中;

图素调用单元,用于若所述图素判断单元的判断结果为是,则从内存中获取所述目标图素需要变换成的目标颜色对应的HUE值,并将获取的HUE值转换为RGB色彩模式下的RGB值,再利用所述变换图素显示单元404实现所述将转换后的待变换图像按照RGB值进行显示的功能;若所述图素判断单元的判断结果为否,则利用图素色调调整单元403实现将所述目标图素中的初始颜色在HLS色彩模式下对应的HUE值统一调整为所述目标颜色在HLS色彩模式下对应的HUE值的功能。

在一些实施方式中,所变换颜色存储单元,具体用于采用内存池分配技术分配内存,并利用分配的内存保存所述目标图素需要变换成的目标颜色。

在一些实施方式中,所述图素颜色保存单元,具体用于采用调色板格式保存待变换图像中各个初始图素的初始颜色;所述变换颜色存储单元,具体用于采用调色板格式保存所述目标图素需要变换成的目标颜色。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。

需要说明的是,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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