获取图像的主色调的方法、装置及终端与流程

文档序号:16540782发布日期:2019-01-08 20:21阅读:233来源:国知局
获取图像的主色调的方法、装置及终端与流程

本申请涉及计算机技术领域,特别涉及一种获取图像的主色调的方法、装置及终端。



背景技术:

主色调是图像中出现频率最高的颜色。在诸如智能手机、平板电脑、台式计算机之类的终端上,存在很多需要对图像进行颜色分析,获取得到图像主色调的应用场景。

相关技术中,获取图像的主色调的方法包括:终端的中央处理器(centralprocessingunit,cpu)遍历目标图像中的每一个像素点,获取得到每个像素点在红绿蓝(redgreenblue,rgb)颜色空间中的每种颜色通道中的亮度值,根据每个颜色通道出现频率最高的亮度值得到目标图像的主色调。

由于相关技术中需要终端的中央处理器遍历目标图像中的每一个像素点,统计rgb颜色空间中的亮度值在每个像素点中的分布,因此中央处理器的计算开销较大,从而导致在某些情况下,例如终端的中央处理器计算能力较差的情况下,获取图像的主色调的时间较长。



技术实现要素:

本申请实施例提供了一种获取图像的主色调的方法、装置及终端,用以解决相关技术获取图像的主色调时间较长的问题。所述技术方案如下:

一方面,本申请实施例提供了一种获取图像的主色调的方法,所述方法由终端执行,所述方法包括:

获取目标图像中的像素点的色相值和饱和度值;

根据所述色相值在多个色相区间中的分布情况,确定出所述目标图像的主色相区间;

根据所述饱和度值在多个饱和度区间中的分布情况,确定出所述目标图像的主饱和度区间;

查询得到所述主色相区间对应的主色相值,以及所述主饱和度区间对应的主饱和度值;

根据所述主色相值以及所述主饱和度值确定所述目标图像的主色调主色相区间主饱和度区间主色相区间主饱和度区间。

一方面,本申请实施例提供了一种获取图像的主色调的装置,所述装置应用于终端中,所述装置包括:

图形处理模块,用于对目标图像进行降采样处理,得到所述目标图像对应的参考图像,所述参考图像的分辨率低于所述目标图像;获取所述参考图像中每个像素点的色相值和饱和度值,得到每个所述色相值对应的色相区间,以及每个所述饱和度值对应的饱和度区间,所述色相区间是所述终端中预设的色相值的取值区间,所述饱和度区间是所述终端中预设的饱和度值的取值区间;

中央处理模块,用于统计得到对应色相值数量最多的主色相区间,以及对应饱和度值数量最多的主饱和度区间;查询得到所述主色相区间对应的主色相值,以及所述主饱和度区间对应的主饱和度值;根据所述主色相值、所述主饱和度值以及预设的明度值,得到所述目标图像的主色调。

一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的获取图像的主色调的方法。

一方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上所述的获取图像的主色调的方法。

本申请实施例提供的技术方案带来的有益效果至少为:

通过获取目标图像中的像素点的色相值和饱和度值,根据色相值在多个色相区间分布情况,以及饱和度值在多个饱和度区间中的分布情况,主色相区间主饱和度区间确定出主色相区间以及主饱和度区间,从而查询得到主色相区间对应的主色相值以及主饱和度区间对应的主饱和度值,进而得到目标图像的主色调,由于主色相值和主饱和度值是根据获取得到的主色相区间和主饱和度区间通过查表得到的,终端不需要精确获取得到出现频率最高的色相值和饱和度值,因此降低了终端的计算开销,在一定程度上降低了获取图像的主色调的时间。

附图说明

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

图1是本申请实施例提供的终端的结构框图;

图2是rgb颜色空间的示意图;

图3是hsv颜色空间的示意图;

图4是本申请一个示例性实施例提供的获取图像的主色调的方法的流程图;

图5是本申请一个示例性实施例提供的获取图像的主色调的方法的流程图;

图6是本申请一个示例性实施例提供的纹理的示意图;

图7是本申请一个示例性实施例提供的获取图像的主色调的装置的框图;

图8是本申请实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例涉及的若干个名词进行简单介绍:

rgb颜色空间:是一种通过获取红色(red,r)通道、绿色(green,g)通道、蓝色(blue,b)通道共三种颜色通道的亮度值的叠加来定义颜色的颜色标准。示例性的,rgb颜色空间中的每种颜色通道包括256级亮度值,亮度值为0时亮度最低,亮度值为255时亮度最高;当红色通道的亮度值为0,绿色通道的亮度值为0,蓝色通道亮度值为0时,对应的颜色为黑色;当红色通道的亮度值为255,绿色通道的亮度值为255,蓝色通道亮度值为255时,对应的颜色为白色;当红色通道的亮度值为255,绿色通道的亮度值为0,蓝色通道亮度值为0时,对应的颜色为红色。

色相(hue):是不同波长的光对应的光谱色。示例性的,可通过色相环对色相进行定义。色相环以角度为单位,取值范围为[0°,360°],从红色开始按照逆时针顺序,红色对应0°,绿色对应120°,蓝色对应240°。

饱和度(saturation):又被称为彩度、纯度,是用于表示颜色相对光谱色的纯度的参数。示例性的,饱和度的取值区间为[0,1],纯度最高时,饱和度为1;纯度最低时,饱和度为0,饱和度为0的颜色没有色彩。通常儿童动画片或儿童读物中,多采用饱和度较高的颜色,以适应儿童的色彩感觉。

明度(value或lightness):是表示颜色所具有的亮度和暗度。示例性的,可通过灰度测试卡作为明度的基准,将黑色的灰度定义为0,白色的灰度定义为10,在[0,10]之间等分为10个不同灰度的灰度区间作为灰度测试卡。

hsv颜色空间:也被称为hsl颜色空间,是一种根据色相、饱和度和明度定义颜色的颜色标准。示例性的,色相为0°、饱和度为1、明度为10的颜色为红色。

图形处理器(graphicsprocessingunit,gpu):又称显示核心、视觉处理器、显示芯片,是一种在诸如智能手机、平板电脑、台式计算机之类的终端上专门进行图像运算工作的微处理器。图形处理器对应有帧缓冲存储器(framebuffer)。

帧缓冲存储器:简称帧缓存或显存,是终端的屏幕所显示画面的一个直接映象,又称为位映射图(bitmap)或光栅。帧缓冲存储器的每一存储单元对应屏幕上的一个像素,整个帧缓冲存储器对应一帧图像。

纹理(texture):是一个具有色调属性和/或区域属性的像素连续集,其物理实际表现为帧缓冲存储器中一段连续的空间。图形处理器可通过构建包含色相区间和饱和度区间的纹理对图像的色相值和饱和度值进行归类。

中央处理器:是一块超大规模的集成电路,是计算机设备的运算核心(core)和控制核心(controlunit)。其主要功能是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括算术逻辑运算单元(arithmeticlogicunit,alu)和高速缓冲存储器(cache)及实现它们之间联系的数据(data)、控制及状态的总线(bus)。

本申请实施例中的获取图像的主色调的方法可应用于终端之间的文件传输的应用场景,或,终端中显示图像的应用场景,也可适用于其它需要获取图像的主色调的场景,本申请实施例不做限定。

终端之间的文件传输的应用场景

终端之间可通过有线或无线网络实现文件的传输,接收终端通过应用程序接收到发送终端发送的目标文件后,在应用程序的用户界面显示目标文件的图标,接收终端将目标文件的图标或缩略图作为目标图像,获取得到目标图像的主色调,将用户界面的颜色调整为目标图像的主色调。

目标图像的主色调是接收终端根据主色相区间对应的色相值、主饱和度区间对应的饱和度值以及预设的明度值得到的,主色相区间是参考图像的色相值分布频率最高的色相区间,主饱和度区间是参考图像的饱和度值分布频率最高的饱和度区间,参考图像是对目标图像降采样处理得到的图像,参考图像的分辨率低于所述目标图像。

终端中显示图像的应用场景

终端中的应用程序打开并在该应用程序的应用界面显示目标图像后,终端获取得到目标图像的主色调,将用户界面的颜色调整为目标图像的主色调。

目标图像的主色调是终端根据主色相区间对应的色相值、主饱和度区间对应的饱和度值以及预设的明度值得到的,主色相区间是参考图像的色相值分布频率最高的色相区间,主饱和度区间是参考图像的饱和度值分布频率最高的饱和度区间,参考图像是对目标图像降采样处理得到的图像,参考图像的分辨率低于所述目标图像。

图1,示出了本申请一个示例性实施例提供的终端的结构框图。该终端100包括:处理器110以及存储器120,处理器110和存储器120通过总线或其它方式实现通信。其中,处理器110包括中央处理器111和图形处理器112,存储器120中存储有操作系统121和应用程序122。

操作系统121是为应用程序122提供对计算机硬件的安全访问的基础软件。

应用程序122可以是具有终端之间文件传输功能的应用程序,在终端100通过应用程序122接收到其它终端发送的目标文件时,该目标文件的图标为目标图像,当目标文件是图像文件时,该目标文件即为目标图像;应用程序122也可以是具有读取并显示目标图像功能的应用程序。

应用程序122具有用户界面,用户界面上显示有目标图像,应用程序122通过调用图形处理器112获取目标图像中的像素点的色相值和饱和度值,调用中央处理器111根据色相值在多个色相区间中的分布情况,确定出所述目标图像的主色相区间,根据饱和度值在多个饱和度区间中的分布情况,确定出目标图像的主饱和度区间,查询得到主色相区间对应的色相值,以及主饱和度区间对应的饱和度值,根据主色相值以及主饱和度值确定目标图像的主色调,将用户界面的颜色调整为目标图像的主色调。

本申请实施例中的终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器等等。该终端中安装和运行有具有终端之间文件传输功能的应用程序,或,读取并显示目标图像功能的应用程序。

图2示出了rgb颜色空间的示意图,如图2所示,rgb色彩空间200可以视为一个三维立体空间,该三维立体空间的x轴、y轴和z轴分别表示红色通道的红色亮度值、蓝色通道的蓝色亮度值以及绿色通道的绿色亮度值,可通过确定红色通道、蓝色通道以及绿色通道这三种颜色通道的亮度值确定rgb颜色空间中对应的颜色。

rgb颜色空间中,每种颜色通道的亮度值具有256级强度,强度值的取值范围为[0,255],因此,rgb颜色空间中,三种颜色通道的颜色的叠加组合为16777216(256×256×256)种可能。

相关技术中,获取图像的主色调的方法为:终端调用中央处理器遍历目标图像中的每一个像素点,得到每个像素点在红色通道的红色亮度值、蓝色通道的蓝色亮度值以及绿色通道的绿色亮度值,统计得到红色通道中出现频率最高的红色亮度值、蓝色通道中出现频率最高的蓝色亮度值、绿色通道中出现频率最高的绿色亮度值,从而根据出现频率最高的红色亮度值、蓝色亮度值以及绿色亮度值确定目标图像的主色调。

相关技术中获取图像的主色调的方法具有以下缺陷:

(1)相关技术中,中央处理器需要对目标图像进行遍历统计,将会带来较大的计算开销,从而导致在某些情况下,例如终端的中央处理器计算能力较差的情况下,获取图像的主色调的时间较长。

(2)相关技术中,终端获取得到的目标图像的主色调是由一组确切的亮度值确定的,例如,中央处理器统计得到的出现频率最高的红色亮度值为255,绿色亮度值为64,蓝色亮度值为64,则确定该主色调为棕色,因此,相关技术中需要在rgb颜色空间的16777216种颜色可能中确定主色调颜色,中央处理器的计算量较大,从而导致计算能力较弱的终端(例如手机、平板电脑等移动终端)需要较长的时间获取目标图像的主色调,或,无法实现对目标图像的主色调的获取。

(3)相关技术中,由于终端获取得到的目标图像的主色调是由一组确切的亮度值确定的,对于主色调相近但是却不同的目标图像,终端获取得到的主色调也是不同的,在某些场景下,例如终端在用户界面显示多个主色调相近但是却不同的目标图像,由于终端获取得到的主色调不同,因此终端在显示这些目标图像的时需要多次调整用户界面的颜色,导致显示用户界面的一致性较差。

图3示出了hsv颜色空间的示意图,如图3所示,hsv颜色空间可以视为一个柱坐标系,柱坐标中的高度z表示明度值,柱坐标中的半径r表示饱和度值,柱坐标系中的弧度φ表示色相值。其中,明度值的取值范围为[0,1],饱和度值的取值范围为[0,1],色相值的取值范围为[0°,360°]。

hsv颜色空间能够直观的展现出颜色之间的关系。例如,明度、饱和度值相同,色相不同的颜色,在hsv颜色空间中具有相同的高度和半径,但是柱形的截面角度不同,从而这两种颜色在hsv颜色空间中具有不同的形状;色相值和饱和度值相同,明度不同的颜色,在hsv空间中具有相同截面角度和半径,但是高度不同,因此这两种颜色在hsv空间中具有相同的形状,但是具有不同的高度。

图4示出了本申请一个示例性实施例提供的获取图像的主色调的方法的流程图。如图4所示,以该方法可应用于如图1所示的终端中来举例说明,该方法包括:

步骤401,获取目标图像中的像素点的色相值和饱和度值。

其中,目标图像可以是终端接收的目标文件的图标、终端接收的图像或终端中存储的图像中的任意一种图像。

当终端中默认的颜色标准为hsv颜色空间时,终端获取得到目标图像后,得到目标图像中的像素点的色相值和饱和度值;当终端中默认的颜色标准为rgb颜色空间时,终端获取得到目标图像后,得到目标图像中的像素点在每个颜色通道中的亮度值,将像素点在每个颜色通道中的亮度值转化为在hsv颜色空间中的色相值、饱和度值和明度值,从而得到目标图像中的像素点的色相值和饱和度值。

可选的,终端对目标图像进行降采样处理,得到降采样后的图像,获取得到降采样后的图像中的像素点的色相值和饱和度值。

降采样是终端对目标图像进行降低分辨率处理,得到降采样后的图像的过程。例如,目标图像的分辨率为1000×1000像素,降采样率为1/2,终端根据降采样率,对目标图像进行降采样,得到分辨率为500×500的降采样后的图像。

示例性的,终端可通过对目标图像的像素点进行隔行采样和/或隔列采样的方式进行降采样处理,本申请对降采样的具体实现方式不做限定。

通过降采样处理后,终端只需要对分辨率较低的图像进行处理,不需要遍历整个目标图像进行处理,降低了图形处理器的计算开销。

步骤402,根据色相值在多个色相区间中的分布情况,确定出目标图像的主色相区间。

色相区间是根据终端中预设的色相取值范围划分的取值区间。例如,终端中预设的色相取值范围是全域色相值,全域色相值的取值区间为[0°,360°],则可以将全域色相值等分为360份,分别为[0°,1°]、[1°,2°]、……、[358°,359°]以及[359°,360°],每一份取值区间即为色相区间。

可选的,色相区间之间可以是连续的,也可以是不连续的。例如,上述示例中的色相区间即为全域色相值对应的连续的色相区间;全域色相值对应的不连续的色相区间可以设定为[0°,1°]、[2°,3°]、……、[357°,358°]以及[359°,360°]。

可选的,色相区间的取值范围可以包括全域色相值,也可以不包括全域色相值。例如,预设的背景色为蓝色和绿色时,可将与蓝色近似的色相取值区间[100°,140°]以及与绿色近似的色相取值区间[220°,260°]作为色相区间的取值范围,将这两个取值范围再细分为色相区间,该色相区间可以是连续的,也可以是不连续的。

终端获取得到目标图像中的像素点的色相值后,将每个色相值归入对应的色相区间内,得到每个色相区间对应的色相值个数,将色相区间中包含色相值数量最多的色相区间确定为主色相区间。

例如,终端获取得到色相值为0.5°,则将0.5°的色相值归入[0°,1°]的色相区间中,若[0°,1°]的色相区间中只包含0.5°这一个色相值,则终端确定[0°,1°]的色相区间中包含的色相值数量为1。

步骤403,根据饱和度值在多个饱和度区间中的分布情况,确定出目标图像的主饱和度区间。

饱和度区间是根据终端中预设的饱和度取值范围划分的取值区间。例如,终端中预设的饱和度取值范围是全域饱和度值,全域饱和度值的取值区间为[0,1],则可以将全域色相值等分为10份,分别为[0,0.1]、[0.1,0.2]、……、[0.8,0.9]以及[0.9,1],每一份取值区间即为饱和度区间。

可选的,饱和度区间之间可以是连续的,也可以是不连续的。例如,上述示例中的饱和度区间即为全域饱和度值对应的连续的饱和度区间;全域饱和度值对应的不连续的饱和度区间可以设定为[0,0.1]、[0.2,0.3]、……、[0.7,0.8]以及[0.9,1]。

可选的,饱和度区间的取值范围可以包括全域饱和度值,也可以不包括全域饱和度值。例如,应用程序开发者不希望将用户界面的颜色调整为饱和度过高或饱和度过低的颜色,可在饱和度取值范围[0.3,0.7]设置饱和度区间。

终端获取得到目标图像中的像素点的饱和度值后,将每个饱和度值归入对应的饱和度区间内,得到每个饱和度区间对应的饱和度值个数,将饱和度区间中包含饱和度值数量最多的饱和度区间确定为主饱和度区间。

例如,终端获取得到饱和度值为0.5°,则将0.5°的色相值归入[0°,1°]的色相区间中,若[0°,1°]的色相区间中只包含0.5°这一个色相值,则终端确定[0°,1°]的色相区间中包含的色相值数量为1。

步骤404,查询得到主色相区间对应的主色相值,以及主饱和度区间对应的主饱和度值。

每个色相区间对应一个色相值,每个饱和度区间对应一个饱和度值,例如,[0°,1°]的色相区间对应的色相值为0.5°,[0,0.1]的饱和度区间对应的饱和度值为0.05。

终端根据查询得到主色相区间对应的色相值,将主色相区间对应的色相值作为主色相值,查询得到主饱和度区间对应的饱和度值,将珠饱和度区间对应的饱和度值作为主饱和度值。

步骤405,根据主色相值以及主饱和度值确定目标图像的主色调。

终端根据得到主色相值、主饱和度值以及预设的明度值,即可确定hsv空间中的颜色,从而得到目标图像的主色调。

综上所述,本申请实施例中,通过获取目标图像中的像素点的色相值和饱和度值,根据色相值在多个色相区间分布情况,以及饱和度值在多个饱和度区间中的分布情况,主色相区间主饱和度区间确定出主色相区间以及主饱和度区间,从而查询得到主色相区间对应的主色相值以及主饱和度区间对应的主饱和度值,进而得到目标图像的主色调,由于主色相值和主饱和度值是根据获取得到的主色相区间和主饱和度区间通过查表得到的,终端不需要精确获取得到出现频率最高的色相值和饱和度值,因此降低了终端的计算开销,在一定程度上降低了获取图像的主色调的时间。

本申请实施例中,通过将每个色相区间对应一个色相值,每个饱和度区间对应一个饱和度值,能够使色相值相近的色相值对应同一色相值,饱和度值相近的饱和度值对应同一饱和度值,由于目标图像的主色调是根据主色相值以及主饱和度值确定的,因此在某些情况下能够使主色调相近的目标图像获取得到相同的主色调,从而终端在显示不同目标图像的主色调时,提高了显示主色调的一致性。

可选的,本申请实施例中,通过对目标图像进行降采样处理,得到降采样后的图像,终端获取降采样后的图像中的像素点的色相值和饱和度值,从而获取得到目标图像的主色调,由于降采样后的图像的分辨率较低,因此降低了终端的计算量,在一定程度上降低了获取目标图像主色调的时间。

图5示出了本申请一个示例性实施例提供的获取图像的主色调的方法的流程图。如图5所示,该方法可应用于如图1所示的终端中,该方法包括:

步骤501,图形处理器对目标图像进行降采样处理,得到降采样后的图像。

图形处理器对目标图像进行降采样处理的过程可参考图4实施例中的步骤401,在此不做赘述。

示例性的,图形处理器根据终端中预设的降采样率对目标图像进行降采样处理,例如,当长度和宽度的降采样率均为1/2时,若目标图像的分辨率为1000×1000,则降采样后的图像的分辨率为500×500,图形处理器中将视口(光栅化次数)设置为为500×500的分辨率。当终端的操作系统的显示驱动为开放图形库(opengraphicslibrary,opengl)时,采用glviewport指令对参考图像进行光栅化处理;当终端的操作系统的显示驱动为金属(metal)时,采用glviewport指令对参考图像进行光栅化处理。

步骤502,图形处理器获取降采样后的图像中每个像素点在rgb颜色空间中每种颜色通道中的亮度值。

通常终端的操作系统中默认的颜色标准为rgb颜色空间,图形处理器获取得到降采样后的图像中每个像素点的红色亮度值、绿色亮度值以及蓝色亮度值。

示例性的,图形处理器获取得到参考图像中坐标为(1,1)的紫色像素点在红色亮度值为128,绿色亮度值为0,蓝色亮度值为128。

步骤503,图形处理器根据每个像素点在每种颜色通道中的亮度值,计算得到每个像素点的色相值和饱和度值。

图形处理器在获取得到每个像素点在rgb颜色空间中每种颜色通道中的亮度值后,需要对每种颜色通道的亮度值执行rgb颜色空间转hsv颜色空间的处理,即,图形处理器根据预设的算法,将参考图像中每个像素点在rgb颜色空间中每种颜色通道中的亮度值转化为hsv颜色空间中的色相值和饱和度值。

示例性的,图形处理器获取得到参考图像中坐标为(1,1)的像素点的红色亮度值为128,绿色亮度值为0,蓝色亮度值为128后,通过预设的算法,得到该像素点的色相值为300°,饱和度值为1。

步骤504,图形处理器将预设的色相取值范围划分为n个色相区间,n为正整数。

图形处理器根据预设的色相取值范围,将该色相取值范围划分为n个色相区间。可选的,n个色相区间之间是连续的,或,n个色相区间之间是不连续的;预设的色相取值范围为全域色相值,或,预设的色相取值范围不是全域色相值。

示例性的,预设的色相取值范围是全域色相值,全域色相值的取值区间为[0°,360°],由于图形处理器的帧缓冲存储器中取值最大为1,图形处理器令全域色相值的取值区间为[0°,1°],将[0°,1°]的取值区间等分为360份,分别为[0°,1/360°]、[1°,2/360°]、……、[358/360°,359/360°]以及[359/360°,1°],每一份取值区间即为色相区间,其中,n=360。

步骤505,图形处理器将预设的饱和度取值范围等分为m个饱和度区间,m为正整数。

图形处理器根据预设的饱和度取值范围,将该饱和度取值范围划分为m个饱和度区间。可选的,m个饱和度区间之间是连续的,或,m个饱和度区间之间是不连续的;预设的饱和度取值范围为全域饱和度值,或,预设的饱和度取值范围不是全域饱和度值。

示例性的,预设的饱和度取值范围为全域饱和度值,全域饱和度值的取值区间为[0,1],则图形处理器将全域色相值等分为10份,分别为[0,0.1]、[0.1,0.2]、……、[0.8,0.9]以及[0.9,1],每一份取值区间即为饱和度区间,其中,m=10。

需要说明的是,图形处理器可以先执行步骤504,再执行步骤505;也可以先执行步骤505,再执行步骤504,在此不做限定。

步骤506,图形处理器将每个像素点的色相值归入所属的色相区间中,统计得到落入每个色相区间中的色相值数量。

图形处理器将获取得到的每个像素点的色相值归入所属的色相区间中,统计得到n个色相区间中每个色相区间中包含的色相值数量。例如,终端可将获取得到的0.5/360°的色相值归入[0°,1/360°]的色相区间,若色相区间[0°,1/360°]只包括色相值0.5/360°,则色相区间[0°,1/360°]对应的色相值数量为1。

步骤507,图形处理器将每个像素点的饱和度值归入所属的饱和度区间中,统计得到落入每个饱和度区间的饱和度值数量。

图形处理器将获取得到的每个像素点的色相值归入所属的色相区间中,统计得到m个饱和度区间中每个饱和度区间包含的饱和度值数量。例如,终端可将获取得到的0.45的饱和度值归入[0.4,0.5]的饱和度区间,若饱和度区间[0.4,0.5]只包括饱和度值0.45,则饱和度区间[0.4,0.5]对应的饱和度值数量为1。

需要说明的是,图形处理器可以先执行步骤506,再执行步骤507;或,先执行步骤507,再执行步骤506,在此不做限定。

步骤508,图形处理器根据每个色相区间包含的色相值数量以及每个饱和度区间包含的饱和度值数量,构建得到n行m+1列纹理元素的纹理,i为正整数,j为整数,1≤i≤n,1≤j≤m。

图形处理器根据得到的每个色相区间包含的色相值数量以及每个饱和度区间包含的饱和度值数量,在帧缓冲存储器中构建得到n行m+1列纹理元素的纹理,该纹理中的纹理元素t(i,j)表示第i个色相区间包含的色相值个数以及第j-1个饱和度区间包含的饱和度值个数。当j=1时,第0个饱和度区间表示没有该饱和度区间,即,纹理中的第一列纹理元素不包含饱和度区间及饱和度区间包含的饱和度值数量。

示例性的,当终端的操作系统的显示驱动为opengl时,纹理类型为opengltexture;当终端的操作系统的显示驱动为metal时,纹理类型为metaltexture。

如图6所示,纹理600包括n行,m+1列的纹理元素,其中,第一列纹理元素t(i,0)为第1个色相区间至第n个色相区间,以及每个色相区间包含的色相值个数,其不包括饱和度区间以及饱和度区间包含的饱和度值数量。图6中hi(pi)表示第i个色相区间对应的色相值数量为pi,sj(qj)表示第j个饱和度区间对应的饱和度值数量为qj。

步骤509,中央处理器读取纹理的第一列中每个色相区间包含的色相值数量,将第一列中包含色相值数量最多的色相区间确定为主色相区间。

终端通过图形处理器生成纹理后,通过调用中央处理器读取纹理的第一列中的纹理元素,得到每个色相区间包含的色相值数量,将第一列纹理元素中包含色相值数量最多的色相区间确定为主色相区间。

示例性的,中央处理器可通过以下公式读取得到主色相区间:

其中,表示第i个色相区间中的色相值数量为pi。

步骤510,中央处理器读取主色相区间所在的行中,每个饱和度区间包含的饱和度值数量,将主色相区间所在的行中包含饱和度值数量最多的饱和度区间确定为主饱和度区间。

在确定主色相区间后,中央处理器读取纹理中主色相区间所在的行中的纹理元素,确定该行中包含饱和度值最多的饱和度区间,将包含饱和度值最多的饱和度区间确定为主饱和度区间。

示例性的,在确定主色相区间为hi后,中央处理器可通过以下公式读取得到主色相区间和主饱和度区间:

其中,表示纹理中第i行中,色相区间sj中的色相值数量为qj。

步骤511,中央处理器查询得到主色相区间对应的主色相值,以及主饱和度区间对应的主饱和度值。

每个色相区间可根据需求设置对应的色相值,每个饱和度区间可根据需求设置对应的饱和度值。例如,[0°,1/360°]的色相区间对应的色相值为0.5°,[0,0.1]的饱和度区间对应的饱和度值为0.05。

中央处理器查询得到主色相区间对应的色相值,将主色相区间对应的色相值作为主色相值,查询得到主饱和度区间对应的饱和度值,将珠饱和度区间对应的饱和度值作为主饱和度值。

步骤512,中央处理器根据主色相值、主饱和度值以及预设的明度值,得到目标图像的主色调。

中央处理器根据主色相值、主饱和度值以及预设的明度值,即可确定hsv空间中的颜色,从而得到目标图像的主色调。

可选的,中央处理器将终端的显示屏上显示的用户界面的颜色调整为目标图像的主色调。

示例性的,在即时通信应用程序的对话界面应用场景中,终端获取得到其它终端发送的目标文件的图标的主色调,或,其它终端发送的目标图像的主色调后,将对话界面的颜色调整为该主色调的颜色。

示例性的,在音乐播放应用程序的音乐播放界面的应用场景中,终端获取得到封面图像的主色调后,将音乐播放界面的颜色调整为封面图像的主色调。

综上所述,本申请实施例中,通过获取目标图像中的像素点的色相值和饱和度值,根据色相值在多个色相区间分布情况,以及饱和度值在多个饱和度区间中的分布情况,主色相区间主饱和度区间确定出主色相区间以及主饱和度区间,从而查询得到主色相区间对应的主色相值以及主饱和度区间对应的主饱和度值,进而得到目标图像的主色调,由于主色相值和主饱和度值是根据获取得到的主色相区间和主饱和度区间通过查表得到的,终端不需要精确获取得到出现频率最高的色相值和饱和度值,因此降低了终端的计算开销,在一定程度上降低了获取图像的主色调的时间。

本申请实施例中,通过将每个色相区间对应一个色相值,每个饱和度区间对应一个饱和度值,能够使色相值相近的色相值对应同一色相值,饱和度值相近的饱和度值对应同一饱和度值,由于目标图像的主色调是根据主色相值以及主饱和度值确定的,因此在某些情况下能够使主色调相近的目标图像获取得到相同的主色调,从而终端在显示不同目标图像的主色调时,提高了显示主色调的一致性。

可选的,本申请实施例中,通过对目标图像进行降采样处理,得到降采样后的图像,终端获取降采样后的图像中的像素点的色相值和饱和度值,从而获取得到目标图像的主色调,由于降采样后的图像的分辨率较低,因此降低了终端的计算量,在一定程度上降低了获取目标图像主色调的时间。

可选的,本申请实施例中,通过图形处理器对目标图像进行降采样处理,获取每个像素点的色相值和饱和度值后,通过创建纹理将每个色相值和饱和度值归入各自所属的色相区间和饱和度区间中,通过中央处理器读取纹理得到主色相值和主饱和度值,从而得到目标图像的主色调,由于不需要中央处理器对整个获取主色调的过程进行处理,因此降低了中央处理器的计算量,从一定程度上降低了获取图像的主色调的时间。

可选的,本申请实施例中,通过将预设的色相取值范围不设置为全域色相值,和/或,将预设的饱和度取值范围不设置为全域饱和度值,由于终端不需要将每个色相值归入到全域色相值对应的色相区间中,和/或,终端不需要将每个饱和度值归入到全域饱和度值对应的饱和度区间中,因此降低了中央处理器的计算量,从一定程度上降低了获取图像的主色调的时间。

可选的,本申请实施例中,通过将色相区间之间设置为不连续,和/或,将饱和度区间之间设置为不连续,由于终端不需要将每个色相值归入到连续的色相区间中,和/或,终端不需要将每个饱和度值归入到连续的饱和度区间中,因此降低了中央处理器的计算量,从一定程度上降低了获取图像的主色调的时间。

图7示出了本申请一个示例性实施例提供的获取图像的主色调的装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为图1实施例中的终端100。该装置包括图形处理模块710以及中央处理模块720。

图形处理模块710,用于获取目标图像中的像素点的色相值和饱和度值。

中央处理模块720,用于根色相值在多个色相区间中的分布情况,确定出目标图像的主色相区间;根据饱和度值在多个饱和度区间中的分布情况,确定出目标图像的主饱和度区间;查询得到主色相区间对应的主色相值,以及主饱和度区间对应的主饱和度值;根据主色相值以及主饱和度值确定目标图像的主色调。

在一个可选的实施例中,图形处理模块710,还用于确定每个色相值所属的色相区间,统计得到落入每个色相区间中的色相值数量。

中央处理模块720,还用于将每个色相区间中,包含色相值数量最多的确定为主色相区间。

在一个可选到的实施例中,图形处理模块710,还用于确定每个饱和度值所属的饱和度区间,统计得到落入每个饱和度区间中的饱和度值数量。

中央处理模块720,还用于将每个饱和度区间中,包含饱和度值数量最多的确定为主饱和度区间。

在一个可选的实施例中,图形处理模块710,还用于确定每个饱和度值所属的饱和度区间,统计得到落入每个饱和度区间中的饱和度值数量。

中央处理模块720,还用于将具有最大的饱和度值数量的饱和度区间,确定为主饱和度区间。

在一个可选的实施例中,图形处理模块710,还用于将预设的饱和度取值范围划分为m个饱和度区间,m为正整数;将每个饱和度值归入所属的饱和度区间中。

中央处理模块720,还用于统计得到落入m个饱和度区间中每个饱和度区间中的饱和度值数量。

在一个可选的实施例中,图形处理模块710,还用于根据每个色相区间包含的色相值数量,以及每个饱和度区间包含的饱和度值数量构建得到纹理,该纹理包括n行m+1列的纹理元素,纹理中第i行第j列的纹理元素表示第i个色相区间包含的色相值数量以及第j-1个饱和度区间包含的饱和度值数量,i为正整数,j为整数,1≤i≤n,1≤j≤m。

中央处理模块710,还用于读取纹理的第一列中每个色相区间包含的色相值数量,将第一列中包含色相值数量最多的色相区间确定为主色相区间。

在一个可选的实施例中,中央处理模块720,还用于读取纹理中,主色相区间所在的行中每个饱和度区间包含的饱和度值数量,将主色相区间所在的行中包含饱和度值数量最多的饱和度区间确定为主饱和度区间。

在一个可选的实施例中,图形处理模块710,还用于对目标图像进行降采样处理,得到降采样后的图像;获取降采样后的图像中每个像素点的色相值和饱和度值。

在一个可选的实施例中,图形处理模块710,还用于获取每个像素点在rgb颜色空间中每种颜色通道的亮度值;根据每个像素点在每种颜色通道中的亮度值,计算得到每个像素点在hsv颜色空间中的色相值和饱和度值。

在一个可选的实施例中,中央处理模块710,还用于将终端的显示屏上显示的用户界面的颜色调整为主色调。

图8,示出了本申请一个示例性实施例提供的终端800的结构框图。该终端800可以是便携式移动终端,比如:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器。终端800还可能被称为用户设备、便携式终端等其他名称。

终端800包括有:处理器801、存储器802以及显示屏803。

处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有图形处理器,图形处理器用于负责显示屏所需要显示的内容的渲染和绘制;或,处理器801包括中央处理和图形处理器。一些实施例中,处理器801还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是有形的和非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中提供的获取图像的主色调的方法。

显示屏803用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。显示屏803还可以具有采集在触摸显示屏803的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。触摸显示屏803用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,触摸显示屏803可以为一个,设置终端800的前面板;在另一些实施例中,触摸显示屏803可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,触摸显示屏803可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,触摸显示屏805还可以设置成非矩形的不规则图形,也即异形屏。触摸显示屏805可以采用lcd(liquidcrystaldisplay,液晶显示器)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本申请还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的获取图像的主色调的方法。

可选地,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的获取图像的主色调的方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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