Rgb模式图像的色彩拉伸方法和系统的制作方法

文档序号:6491121阅读:688来源:国知局
Rgb模式图像的色彩拉伸方法和系统的制作方法
【专利摘要】一种RGB模式图像的色彩拉伸方法,包括以下步骤:获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值;从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值;根据读取的颜色拉伸值构建所述RGB模式图像的色彩拉伸图像;所述RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。上述方法中,片段渲染器只需要查找当前处理的纹理元素的颜色值在RGB拉伸值纹理中的相应通道中对应的列上存储的颜色拉伸值,即可得到当前处理的纹理元素的颜色拉伸值,省去了颜色拉伸值计算过程,从而降低了色彩拉伸运算量。此外,还提供一处RGB模式图像的色彩拉伸系统。
【专利说明】RGB模式图像的色彩拉伸方法和系统
【【技术领域】】
[0001]本发明涉及图像处理技术,特别涉及一种RGB模式图像的色彩拉伸方法和系统。【【背景技术】】
[0002]大多数的颜色可以由具有某一颜色值的红、绿、蓝三种颜色合成产生,因此,红、绿、蓝又称为基色。红、绿、蓝的颜色取值范围为O~255。RGB模式的图像包括R通道、G通道和B通道,分别用于存储图像中所有像素的R颜色值、G颜色值和B颜色值,像素的R颜色值、G颜色值和B颜色值分别代表合成该像素的颜色的红色、绿色、蓝色的颜色值。在对R颜色值、G颜色值和B颜色值进行运算时,一般将R颜色值、G颜色值和B颜色值进行归一化处理,即除以255,将除以255后得到的小数作为相应的颜色值进行运算。
[0003]RGB模式图像的色彩拉伸即分别将某幅RGB模式的图像的R通道、G通道和B通道中的颜色(分别为红色、绿色、蓝色)通过拉伸函数进行拉伸变换,得到一幅全新的图像。新图像与原图像的图案内容保持一致,但在色彩和亮度等方面会发生变化。
[0004]在图形处理器(GPU, Graphic Processing Unit)的流式编程模型中,所有的数据都必须以“流”的形式进行加载处理,并通过抽象的3D API (应用程序编程接口)进行访问。在利用图形处理器进行图像处理时,最直接有效的数据加载方法是把待处理的图像打包(转换)为纹理,将纹理上传到图形处理器,图形处理器对纹理进行操作。图像与图像的纹理是一一对应的。 纹理由纹理元素组成,纹理对应于图像,而纹理元素则对应于像素,图形处理器对纹理的纹理元素进行处理相当于对相应的图像的像素进行处理。
[0005]图形处理器在对图像进行图像色彩拉伸时,对加载的图像的纹理进行处理,首先确定纹理中各顶点的位置,根据顶点的位置对纹理进行光栅化,进一步根据光栅化得到的区域获取区域内的纹理元素,图形处理器中的片段渲染器(fragment shader)对区域内的纹理元素逐一进行色彩拉伸变换,并输出变换后得到的值。变换后得到的值组成新的纹理,新的纹理对应新的图像。
[0006]在传统方法中,图形处理器中的片段渲染器对RGB模式图像进行色彩拉伸时,需要对图像的纹理的所有纹理元素的R颜色值、G颜色值和B颜色值进行拉伸计算,对于宽度为M像素、高度为N像素的图像需要进行MXNX3次拉伸计算,运算量非常大。

【发明内容】

[0007]基于此,有必要提供一种能降低色彩拉伸运算量的RGB模式图像的色彩拉伸方法。
[0008]一种RGB模式图像的色彩拉伸方法,包括以下步骤:
[0009]获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值;
[0010]从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值;
[0011]根据读取的颜色拉伸值构建所述RGB模式图像的色彩拉伸图像;
[0012]所述RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。
[0013]此外,还有必要提供一种能降低色彩拉伸运算量的RGB模式图像的色彩拉伸系统。
[0014]一种RGB模式图像的色彩拉伸方法系统,其特征在于,包括:
[0015]颜色值获取模块,用于获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值;
[0016]拉伸值查找模块,用于从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值;
[0017]拉伸图像构建模块,用于根据读取的颜色拉伸值构建所述RGB模式图像的色彩拉伸图像;
[0018]所述RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。
[0019]上述RGB模式图像的色彩拉伸方法和系统,RGB拉伸值纹理的通道中依次存储了对应基色的取值范围内的颜色值的颜色拉伸值,片段渲染器只需要查找当前处理的纹理元素的颜色值在RGB拉伸值纹理中的相应通道中对应的列上存储的颜色拉伸值,即可得到当前处理的纹理元素的颜色拉伸值,省去了颜色拉伸值计算过程,从而降低了色彩拉伸运算量。
【【专利附图】

【附图说明】】
[0020]图1为一个实施例`中的RGB模式图像的色彩拉伸方法的流程示意图;
[0021]图2为一个实施例中生成并上传RGB拉伸值纹理的过程的流程示意图;
[0022]图3为一个实施例中RGB拉伸值图像的R通道中R颜色拉伸值的存储示意图;
[0023]图4为一个实施例中的RGB模式图像的色彩拉伸系统的结构示意图;
[0024]图5为另一实施例中的RGB模式图像的色彩拉伸系统的结构示意图。
【【具体实施方式】】
[0025]如图1所示,在一个实施例中,一种RGB模式图像的色彩拉伸方法,包括以下步骤:
[0026]步骤S102,获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值。颜色值包括R颜色值、G颜色值和B颜色值。
[0027]在一个实施例中,步骤S102之前,上述RGB模式图像的色彩拉伸方法还包括以下步骤:将待处理的RGB模式图像转换成纹理;将RGB模式图像的纹理上传到图形处理器;通过图形处理器对上传的RGB模式图像的纹理进行预处理;逐一获取预处理后的纹理的纹理元素传送给片段渲染器。
[0028]将RGB模式图像的纹理上传到图形处理器后,图形处理器对纹理进行相关处理,例如,图形处理器所进行的处理包括图形处理器的顶点设置单元根据纹理进行顶点设置、图形处理器的光栅化单元对纹理进行光栅化操作等。对纹理进行光栅化操作可以将纹理划分为多个区域,进一步的,可获取光栅化划分的区域内的纹理元素,并按照预设规则逐一将区域内的纹理元素传送给片段渲染器。[0029]步骤S104,从RGB拉伸值纹理中读取当前处理的纹理元素的颜色值对应的列上存储的颜色拉伸值。具体的,可分别从RGB拉伸值纹理的与上述颜色值对应的通道中读取上述颜色值对应的列上存储的颜色拉伸值,R颜色值对应R通道、G颜色值对应G通道、B颜色值对应B通道。即,在RGB拉伸值纹理的R通道中读取R颜色值对应的列上存储的颜色拉伸值、在RGB拉伸值纹理的G通道中读取G颜色值对应的列上存储的颜色拉伸值,以及在RGB拉伸值纹理的B通道中读取B颜色值对应的列上存储的颜色拉伸值。
[0030]RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。三基色的取值范围内的颜色值为都O~255。即,RGB拉伸值纹理的R通道中依次存储了 O至255的R颜色拉伸值、G通道中依次存储了 O至255的G颜色拉伸值、B通道中依次存储了 O至255的B颜色拉伸值。
[0031]其中,i(i=0,l,…,255)的R颜色拉伸值为将i进行归一化处理(即除以255)后,对处理后的值进行R颜色对应的拉伸变换后得到的颜色拉伸值。O至255的G颜色拉伸值、O至255的B颜色拉伸值与O至255的R颜色拉伸值的意义相同。
[0032]如图2所示,在一个实施例中,在步骤S104之前,上述RGB模式图像的色彩拉伸方法还包括生成并上传RGB拉伸值纹理的过程,包括以下步骤:
[0033]步骤S202,计算RGB模式图像的基色的取值范围内的颜色值的颜色拉伸值。即计算O至255的颜色拉伸值,颜色拉伸值包括R颜色拉伸值、G颜色拉伸值和B颜色拉伸值。
[0034]在一个实施例中,根据相应的颜色拉伸函数计算O至255的颜色拉伸值。可根据R颜色拉伸函数计算O至255的R颜色拉伸值,根据G颜色拉伸函数计算O至255的G颜色拉伸值,根据B颜色拉伸函数计算O至255的B颜色拉伸值。其中,R颜色拉伸函数、G颜色拉伸函数和B颜色拉伸函数为预设的函数。
`[0035]步骤S204,将计算得到的基色对应的颜色拉伸值依次存储到宽度大于等于256像素的RGB拉伸值图像的基色对应的通道中。
[0036]优选的,RGB拉伸值图像为宽度等于256像素的图像。步骤S204可将计算得到的基色对应的颜色拉伸值依次存储为RGB拉伸值图像的该基色对应的通道中的第I至266列颜色值。
[0037]图3为RGB拉伸值图像的R通道中R颜色拉伸值的存储示意图。如图3所示,步骤S204可将O至255的R颜色拉伸值依次存储为RGB拉伸值图像的R通道中的第I至266列R颜色值、将O至255的G颜色拉伸值依次存储为RGB拉伸值图像的G通道中的第I至266列G颜色值、将O至255的B颜色拉伸值依次存储为RGB拉伸值图像的B通道中的第I至266列B颜色值。上述过程即相当于步骤S204将上述的O至255的R颜色拉伸值、G颜色拉伸值和B颜色拉伸值存储为RGB拉伸值图像的第I至266列像素的R颜色值、G颜色值和B颜色值。
[0038]图像与由图像转换的纹理是对应的,因此,RGB拉伸值图像的纹理的R通道中的第I至266列R颜色值即为O至255的R颜色拉伸值、G通道中的第I至266列G颜色值即为O至255的G颜色拉伸值、B通道中的第I至266列B颜色值即为O至255的B颜色拉伸值。
[0039]步骤S206,将RGB拉伸值图像转换为纹理,转换而成的纹理即为上述RGB拉伸值纹理。[0040]步骤S208,将RGB拉伸值纹理上传到片段渲染器。
[0041]片段渲染器加载RGB拉伸值纹理后,即可读取其存储的颜色拉伸值。
[0042]在本实施例中,若当前处理的纹理元素的R颜色值、G颜色值和B颜色值为归一化的值,步骤S104可将当前处理的纹理元素的R颜色值、G颜色值和B颜色值分别乘以255,使其还原成整数,还原而成的整数记为R’、G’、B’,进一步的可在RGB拉伸值纹理的R通道中读取第(R’ + I)列颜色值,在G通道中读取第(G’ + I)列颜色值,在B通道中读取第(B’ +O列颜色值,即可得到片段渲染器当前处理的纹理元素的色彩拉伸结果值。
[0043]步骤S106,根据读取的颜色拉伸值构建RGB模式图像的色彩拉伸图像。
[0044]获取到RGB模式图像的纹理的所有纹理元素的色彩拉伸结果值(即颜色拉伸值)后,图形处理器可进行后续相关的处理,得到RGB模式图像进行色彩拉伸后的新图像。
[0045]如图4所示,在一个实施例中,一种RGB模式图像的色彩拉伸系统,包括颜色值获取模块10、拉伸值查找模块20和拉伸图像构建模块30,其中:
[0046]颜色值获取模块10用于获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值。颜色值包括R颜色值、G颜色值和B颜色值。
[0047]拉伸值查找模块20用于从RGB拉伸值纹理中读取当前处理的纹理元素的颜色值对应的列上存储的颜色拉伸值。具体的,可分别从RGB拉伸值纹理的与上述颜色值对应的通道中读取上述颜色值对应的列上存储的颜色拉伸值,R颜色值对应R通道、G颜色值对应G通道、B颜色值对应B通道。即,在RGB拉伸值纹理的R通道中读取R颜色值对应的列上存储的颜色拉伸值、在RGB拉伸值纹理的G通道中读取G颜色值对应的列上存储的颜色拉伸值,以及在RGB拉伸值纹理的B通道中读取B颜色值对应的列上存储的颜色拉伸值。
[0048]RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。三基色的取值范围内的颜色值为都O~255。即,RGB拉伸值纹理的R通道中依次存储了 O至255的R颜色拉伸值、G通道中依次存储了 O至255的G颜色拉伸值、B通道中依次存储了 O至255的B颜色拉伸值。
[0049]其中,i(i=0,l,…,255)的R颜色拉伸值为将i进行归一化处理(即除以255)后,对处理后的值进行R颜色对应的拉伸变换后得到的颜色拉伸值。O至255的G颜色拉伸值、O至255的B颜色拉伸值与O至255的R颜色拉伸值的意义相同。
[0050]在一个实施例中,颜色值获取模块10、拉伸值查找模块20设置于图形处理器的片段渲染器中。
[0051]拉伸图像构建模块30用于根据读取的颜色拉伸值构建RGB模式图像的色彩拉伸图像。
[0052]获取到RGB模式图像的纹理的所有纹理元素的色彩拉伸结果值(即颜色拉伸值)后,拉伸图像构建模块30可进行后续相关的处理,得到RGB模式图像进行色彩拉伸后的新图像。
[0053]如图5所示 ,在一个实施例中,上述RGB模式图像的色彩拉伸系统还包括颜色拉伸值计算模块40、颜色拉伸值转存模块50、纹理转换模块60和上传模块70,其中:
[0054]颜色拉伸值计算模块40用于计算RGB模式图像的基色的取值范围内的颜色值的颜色拉伸值。即计算O至255的颜色拉伸值,颜色拉伸值包括R颜色拉伸值、G颜色拉伸值和B颜色拉伸值。[0055]在一个实施例中,颜色拉伸值计算模块40用于根据相应的颜色拉伸函数计算O至255的颜色拉伸值。颜色拉伸值计算模块40可根据R颜色拉伸函数计算O至255的R颜色拉伸值,根据G颜色拉伸函数计算O至255的G颜色拉伸值,根据B颜色拉伸函数计算O至255的B颜色拉伸值。其中,R颜色拉伸函数、G颜色拉伸函数和B颜色拉伸函数为预设的函数。
[0056]颜色拉伸值转存模块50用于将计算得到的基色对应的颜色拉伸值依次存储到宽度大于等于256像素的RGB拉伸值图像的基色对应的通道中。
[0057]优选的,RGB拉伸值图像为宽度等于256像素的图像。颜色拉伸值转存模块50可将计算得到的基色对应的颜色拉伸值依次存储为RGB拉伸值图像的该基色对应的通道中的第I至266列颜色值。
[0058]如图3所示,颜色拉伸值转存模块50可将O至255的R颜色拉伸值依次存储为RGB拉伸值图像的R通道中的第I至266列R颜色值、将O至255的G颜色拉伸值依次存储为RGB拉伸值图像的G通道中的第I至266列G颜色值、将O至255的B颜色拉伸值依次存储为RGB拉伸值图像的B通道中的第I至266列B颜色值。上述过程即相当于颜色拉伸值转存模块50用于将上述的O至255的R颜色拉伸值、G颜色拉伸值和B颜色拉伸值存储为RGB拉伸值图像的第I至266列像素的R颜色值、G颜色值和B颜色值。
[0059]图像与由图像转换的纹理是对应的,因此,RGB拉伸值图像的纹理的R通道中的第I至266列R颜色值即为O至255的R颜色拉伸值、G通道中的第I至266列G颜色值即为O至255的G颜色拉伸值、B通道中的第I至266列B颜色值即为O至255的B颜色拉伸值。
[0060]纹理转换模块60用于将RGB拉伸值图像转换为纹理,转换而成的纹理即为上述RGB拉伸值纹理。
[0061]上传模块70用于将RGB拉伸值纹理上传到片段渲染器。
[0062]片段渲染器加载RGB拉伸值纹理后,即可读取其存储的颜色拉伸值。
[0063]在本实施例中,若当前处理的纹理元素的R颜色值、G颜色值和B颜色值为归一化的值,拉伸值查找模块20可将当前处理的纹理元素的R颜色值、G颜色值和B颜色值分别乘以255,使其还原成整数,还原而成的整数记为R’、G’、B’,进一步的可在RGB拉伸值纹理的R通道中读取第(R’ + I)列颜色值,在G通道中读取第(G’ + I)列颜色值,在B通道中读取第(B’ + I)列颜色值,即可得到片段渲染器当前处理的纹理元素的色彩拉伸结果值。
[0064]在一个实施例中,纹理转换模块60还用于将待处理的RGB模式图像转换成纹理;上传模块70还用于将RGB模式图像的纹理上传到图形处理器;上述RGB模式图像的色彩拉伸系统还包括预处理模块和纹理元素传送模块(图中未示出),预处理模块用于对上传的RGB模式图像的纹理进行预处理;纹理元素传送模块用于逐一获取预处理后的纹理的纹理元素传送给片段渲染器。
[0065]预处理模块设置于图形处理器中,将RGB模式图像的纹理上传到图形处理器后,预处理模块对纹理进行相关处理,预算处理模块包括图形处理器的顶点设置单元和光栅化单元等,预处理模块对纹理进行的相关处理包括顶点设置单元根据纹理进行顶点设置操作、图形处理器的光栅化单元对纹理进行光栅化操作等。对纹理进行光栅化操作可以将纹理划分为多个区域,纹理元素传送模块可获取光栅化划分的区域内的纹理元素,并按照预设规则逐一将区域内的纹理元素传送给片段渲染器。
[0066]上述RGB模式图像的色彩拉伸方法和系统,RGB拉伸值纹理的通道中依次存储了对应基色的取值范围内的颜色值的颜色拉伸值,片段渲染器只需要查找当前处理的纹理元素的颜色值在RGB拉伸值纹理中的相应通道中对应的列上存储的颜色拉伸值,即可得到当前处理的纹理元素的颜色拉伸值,省去了颜色拉伸值计算过程,从而降低了色彩拉伸运算量。
[0067]而且,预先计算各基色取值范围内的颜色值的颜色拉伸值存储在图像中,将图像转换成纹理(即上述RGB拉伸值纹理)上传给图形处理器的片段渲染器,图形处理器处理的纹理一般存储在设备缓冲区中,例如容量相对较大(至少为100M量级)的显存中,从而不需要占用图形处理器的容量相对较小(大多数为IOK量级)的常量缓冲区的空间,因此,相对于其它需要占用图形处理器的常量缓冲区的方法而言,例如将颜色拉伸值存储在数组中的方法,可避免因为图形处理器常量缓冲区空间不足造成的处理速度降低的问题。
[0068]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序控制相关的硬件来完成的,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0069]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种RGB模式图像的色彩拉伸方法,包括以下步骤: 获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值; 从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值; 根据读取的颜色拉伸值构建所述RGB模式图像的色彩拉伸图像; 所述RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。
2.根据权利要求1所述的RGB模式图像的色彩拉伸方法,其特征在于,在从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值的步骤之前,所述方法还包括: 计算RGB模式图像的基色的取值范围内的颜色值的颜色拉伸值; 将计算得到的所述基色对应的颜色拉伸值依次存储到宽度大于等于256像素的RGB拉伸值图像的所述基色对应的通道中; 将所述RGB拉伸值图像转换为纹理,转换而成的纹理即为所述RGB拉伸值纹理; 将所述RGB拉伸值纹理上传到片段渲染器。
3.根据权利要求2所述的RGB模式图像的色彩拉伸方法,其特征在于,所述将计算得到的所述基色对应的颜色拉伸值依次存储到宽度大于等于256像素的RGB拉伸值图像的所述基色对应的通道中的步骤为: 将所述基色对应的颜色拉伸值依次存储为所述RGB拉伸值图像的所述基色对应的通道中的第I至266列颜色值。
4.根据权利要求1所述的RGB模式图像的色彩拉伸方法,其特征在于,在获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值的步骤之前,所述方法还包括: 将待处理的RGB模式图像转换成纹理; 将所述RGB模式图像的纹理上传到图形处理器 通过图形处理器对所述RGB模式图像的纹理进行预处理; 逐一获取预处理后的纹理的纹理元素传送给片段渲染器。
5.一种RGB模式图像的色彩拉伸方法系统,其特征在于,包括: 颜色值获取模块,用于获取RGB模式图像的纹理中片段渲染器当前处理的纹理元素的颜色值; 拉伸值查找模块,用于从RGB拉伸值纹理中读取所述颜色值对应的列上存储的颜色拉伸值; 拉伸图像构建模块,用于根据读取的颜色拉伸值构建所述RGB模式图像的色彩拉伸图像; 所述RGB拉伸值纹理的通道中依次存储对应基色的取值范围内的颜色值的颜色拉伸值。
6.根据权利要求5所述的RGB模式图像的色彩拉伸系统,其特征在于,所述系统还包括: 颜色拉伸值计算模块,用于计算RGB模式图像的基色的取值范围内的颜色值的颜色拉伸值; 颜色拉伸值转存模块,用于将计算得到的所述基色对应的颜色拉伸值依次存储到宽度大于等于256像素的RGB拉伸值图像的所述基色对应的通道中;纹理转换模块,用于将所述RGB拉伸值图像转换为纹理,转换而成的纹理即为所述RGB拉伸值纹理; 上传模块,用于将所述RGB拉伸值纹理上传到片段渲染器。
7.根据权利要求6所述的RGB模式图像的色彩拉伸系统,其特征在于,颜色拉伸值转存模块用于将所述基色对应的颜色拉伸值依次存储为所述RGB拉伸值图像的所述基色对应的通道中的第I至266列颜色值。
8.根据权利要求5所述的RGB模式图像的色彩拉伸方法,其特征在于,系统,其特征在于,所述纹理转换模块还用于将待处理的RGB模式图像转换成纹理; 所述上传模块还用于将所述RGB模式图像的纹理上传到图形处理器 所述系统还包括: 预处理模块,用于对所述RGB模式图像的纹理进行预处理; 纹理元素传送 模块,用于逐一获取预处理后的纹理的纹理元素传送给片段渲染器。
【文档编号】G06T3/00GK103810671SQ201210460641
【公开日】2014年5月21日 申请日期:2012年11月15日 优先权日:2012年11月15日
【发明者】姜德强 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1