一种基于RGB值定位颜色在色盘中位置的方法和装置与流程

文档序号:17749851发布日期:2019-05-24 20:53阅读:892来源:国知局
一种基于RGB值定位颜色在色盘中位置的方法和装置与流程

本发明涉及颜色处理领域,尤其涉及一种基于RGB值定位颜色在色盘中位置的方法和装置。



背景技术:

对于基于RGB值定位该颜色在色盘中的位置,目前是通过对色盘取样,然后找出取样点和当前颜色最接近的颜色,进而定位该颜色在色盘中的位置。由于取样不均匀或者取样点不是足够多的时候,与当前颜色最接近的样点与当前颜色会存在较大的误差,导致当前颜色在色盘定位不准确,误差较大。

因此,需要一种新的技术方案精确定位RGB值在标准RGB色盘中的位置。



技术实现要素:

有鉴于此,本发明要解决的技术问题是提供一种基于RGB值定位颜色在色盘中位置的方法和装置,以根据RGB值精确定位该颜色在标准色盘中的位置。

本发明解决上述技术问题所采用的技术方案如下:

根据本发明的一个方面,提供一种基于RGB值定位颜色在色盘中位置的方法,该方法包括:

将色盘按R、G和B三原色等分为三个扇形区域;

将所述三个扇形区域再分别等分为两个子区域;

根据R、G和B值及其所属子区域计算该颜色的坐标值。

优选的,该方法之前还包括:

获取亮度H、色度S和饱和度L值;

将所述H、S和L值转化为R、G和B值。

优选的,所述获取亮度H、色度S和饱和度L值进一步包括:

获取RGB灯的亮度H、色度S和饱和度L值。

优选的,将所述H、S和L值转化为R、G和B值包括:

如果s=0,则r,g和b都等于l;

如果s≠0,则

p=2×l-q

对于每个颜色向量Color=(ColorR,ColorG,ColorB)=(r,g,b),

其中,h表示色相角,且h∈[0,360];s表示饱和度,l表示亮度,且s∈[0,1],l∈[0,1],r,g,b分别表示一个颜色R、G和B值的归一化值域,r∈[0,1],g∈[0,1],b∈[0,1];将归一化值域乘以255为对应的RGB的值。

优选的,根据R、G和B值及其所属子区域计算该颜色的坐标值进一步包括:

判断R、G、B值是否为特殊值,如果是,则按特殊点计算坐标;如果不是,则按以下公式计算:

如果xORy为真,则

且,

当xySign为假时,y=-y,x=y/temp2

当xySign为真时,y不变,x=y/temp2

如果xORy为假,则

且,

当xySign为假时,x=-x;y=x*temp2

当xySign为真时,x不变,y=x*temp2

其中,angleSign表示夹角系数的正负;xySign表示是否将x或者y是否是原来的相反数,xORy表示根据x还是y来获取坐标的正负,真值表示根据x正负来获取,假值表示根据y正负来获取,且:

如果G=255并且R<B,则K=60,xySign为真,xORy为真,angleSign为假,M=R,N=B;

如果G=255并且R>=B,则K=60,xySign为真,angleSign为真,M=B,N=R;

如果R=255并且B<G,则K=180,xySign为假,xORy为假,angleSign为假,M=B,N=G;

如果R=255并且B>=G,则K=180,xySign为假,xORy为假,angleSign为真,M=G,N=B;

如果B=255并且G<R,则K=300,xySign为假,xORy为真,angleSign为假,M=G,N=R;

如果B=255并且G>=R,则K=300,xySign为假,xORy为真,angleSign为假,M=G,N=R;

如果angleSign为正值,则

如果angleSign为负值,则

优选的,所述按特殊点计算坐标包括:

如果G=255且B=255,则y=0

如果G=255,R=255且B=0,则

如果B=255,R=255且G=0,则

如果R=255,G=255且B=255,则x=0,y=0

根据本发明的另一方面,一种基于RGB值定位颜色在色盘中位置的装置,该装置包括以下模块:

色盘分区模块,用于将色盘按R、G和B三原色等分为三个扇形区域,将所述三个扇形区域再分别等分为两个子区域;

坐标计算模块,用于根据R、G和B值及其所属子区域计算该颜色的坐标值。

优选的,所述装置还包括:

HSL获取模块,用于获取亮度H、色度S和饱和度L值;

RGB计算模块,用于将所述H、S和L值转化为R、G和B值。

优先的,所述HSL获取模块具体用于:

获取RGB灯的亮度H、色度S和饱和度L值。

根据本发明的再一个方面,本发明还提供一种智能终端,智能终端包括上述基于RGB值定位颜色在色盘中位置的装置。

本发明实施例的方法和装置,依据RGB色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB值计算坐标来定位颜色在RGB色盘中的位置,能够精确定位,没有误差。

附图说明

图1为本发明实施例一提供的一种基于RGB值定位颜色在色盘中位置的方法的流程图;

图2为本发明实施例一提供的RGB色盘划分示意图;

图3为本发明实施例一提供的RGB色盘中颜色坐标示意图;

图4为本发明实施例二提供的定位RGB灯颜色在色盘中位置的方法的流程图;

图5为本发明实施例三提供的基于RGB值定位颜色在色盘中位置的装置的模块结构图;

图6为本发明实施例四提供的定位RGB灯颜色在色盘中位置的装置的模块结构图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例一

如图1所示,本发明提供的一种基于RGB值定位颜色在色盘中位置的方法,包括以下步骤:

S102、将色盘按R、G和B三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域。

具体的,如图2和图3,将色盘按RGB三原色等分为三个扇形区域,将这三个扇形区域再分别等分为两个子区域;根据颜色点所属子区域及其坐标计算该颜色点的RGB值。其中,六个子区域G-B子区域,G-R子区域,R-G子区域,R-B子区域、B-R子区域、B-G子区域分别为原色子区域。即在标准的255色盘中,可以等分为红、绿、蓝三个扇形区域,那么圆盘就可以分为三个120°的区域。在每个区域中,又要分为两个60°,所以将一个圆分为六个区域分别计算。在各个颜色区域中,当前区域的分量值必定等于255。如在红色扇形区域的R-G子区域和R-B子区域的R值为255不变,G-B子区域和G-R子区域的G值为255不变,B-R子区域和B-G子区域的G值为255不变。

S104、根据R、G和B值及其所属子区域计算该颜色的坐标值。

如图3所示,设圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,且数值范围均为(0~r),R表示红色分量值,G表示绿色分量值,B表示蓝色分量值。结合坐标象限,就可以通过R、G、B这三个值来获取x,y值,从而定位出该颜色点在色盘上的位置。

1)首先判断R、G、B值是否为特殊值,如果是,则按特殊点计算坐标。

如果G=255并且B=255,则y=0

如果G=255,R=255并且B=0,则

如果B=255,R=255并且G=0,则

如果R=255,G=255并且B=255,则x=0,y=0

2)如果R、G、B值不是特殊值,则按以下方式计算坐标。

2.1)定义以下几个参数:angleSign表示夹角系数的正负,flase为负,true为正;xySign表示是否将x或者y是否是原来的相反数,flase为负,true为正;xORy表示根据x还是y来获取坐标的正负,false表示根据x正负来获取,true表示根据y正负来获取;M和N仅仅表示是参数的意思。

如果G=255并且R<B则xy坐标点在G-B子区域,此时

K=60

xySign为真

xORy为真

angleSign为假

M=R

N=B

如果G=255并且R>=B则xy坐标点在,G-R子区域,此时

K=60

xySign为真

angleSign为真

M=B

N=R

如果R=255并且B<G则xy坐标点在R-G子区域,此时

K=180

xySign为假

xORy为假

angleSign为假

M=B

N=G

如果R=255并且B>=G则xy坐标点在R-B子区域,此时

K=180

xySign为假

xORy为假

angleSign为真

M=G

N=B

如果B=255并且G<R则xy坐标点在B-R子区域,此时

K=300

xySign为假

xORy为真

angleSign为假

M=G

N=R

如果B=255并且G>=R则xy坐标点在B-G子区域,此时

K=300

xySign为假

xORy为真

angleSign为假

M=G

N=R

2.2)将上述参数代入以下公式进行计算

如果angleSign为真,则

如果angleSign为假,则

如果xORy为真,则

如果xySign为假,那么y=-y;x=y/temp2;

如果xySign为真,那么y不变;x=y/temp2;

如果xORy为假,则

如果xySign为假,那么x=-x;y=x*temp2。

如果xySign为真,那么x不变;y=x*temp2。

由上述计算可以得出任意点A(x,y)的坐标值。

本发明实施例的方法,依据色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB值计算坐标来定位颜色在RGB色盘中的位置,能够精确定位,没有误差。

实施例二

如图4所示,本发明实施例以RGB灯为例,提供一种定位RGB灯颜色在色盘中的位置的方法,该方法包括以下步骤:

S402、获取RGB灯的亮度H、色度S和饱和度L值。

需要说明的是,本实施例仅仅以RGB灯为例进行说明,实际实施例中可以从任意显示彩变化的设备获取H、S、L值。比如RGB电子显示屏等设备。

S404、将H、S和L值转化为R、G和B值。S406、将色盘按R、G和B三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域。

S408、根据R、G和B值及其所属子区域计算该颜色的坐标值。

其中,步骤S406、和步骤S406分别与上述实施例一的S102、步骤S104相同,本实施例中不再重述。

本发明实施例的方法,通过获取RGB灯的HSL值,进而转化为RGB值,依据色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB值计算坐标来定位颜色在RGB色盘中的位置,能够精确定位,没有误差。

实施例三

如图5所示,本发明提供的一种基于RGB值定位颜色在色盘中位置的方法,包括以下模块:

色盘分区模块530,用于将色盘按R、G和B三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域。

具体的,如图2和图3,将色盘按RGB三原色等分为三个扇形区域,将这三个扇形区域再分别等分为两个子区域;根据颜色点所属子区域及其坐标计算该颜色点的RGB值。其中,六个子区域G-B子区域,G-R子区域,R-G子区域,R-B子区域、B-R子区域、B-G子区域分别为原色子区域。即在标准的255色盘中,可以等分为红、绿、蓝三个扇形区域,那么圆盘就可以分为三个120°的区域。在每个区域中,又要分为两个60°,所以将一个圆分为六个区域分别计算。在各个颜色区域中,当前区域的分量值必定等于255。如在红色扇形区域的R-G子区域和R-B子区域的R值为255不变,G-B子区域和G-R子区域的G值为255不变,B-R子区域和B-G子区域的G值为255不变。

坐标计算模块540,用于根据R、G和B值及其所属子区域计算该颜色的坐标值。

如图3所示,设圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,且数值范围均为(0~r),R表示红色分量值,G表示绿色分量值,B表示蓝色分量值。结合坐标象限,计算模块20就可以通过R、G、B这三个值来获取x,y值,从而定位出该颜色点在色盘上的位置,具体用于:

1)首先判断R、G、B值是否为特殊值,如果是,则按特殊点计算坐标。

如果G=255并且B=255,则y=0

如果G=255,R=255并且B=0,则

如果B=255,R=255并且G=0,则

如果R=255,G=255并且B=255,则x=0,y=0

2)如果R、G、B值不是特殊值,则按以下方式计算坐标。

2.1)定义以下几个参数:angleSign表示夹角系数的正负,flase为负,true为正;xySign表示是否将x或者y是否是原来的相反数,flase为负,true为正;xORy表示根据x还是y来获取坐标的正负,false表示根据x正负来获取,true表示根据y正负来获取。

如果G=255并且R<B则xy坐标点在G-B子区域,此时

K=60

xySign为真

xORy为真

angleSign为假

M=R

N=B

如果G=255并且R>=B则xy坐标点在,G-R子区域,此时

K=60

xySign为真

angleSign为真

M=B

N=R

如果R=255并且B<G则xy坐标点在R-G子区域,此时

K=180

xySign为假

xORy为假

angleSign为假

M=B

N=G

如果R=255并且B>=G则xy坐标点在R-B子区域,此时

K=180

xySign为假

xORy为假

angleSign为真

M=G

N=B

如果B=255并且G<R则xy坐标点在B-R子区域,此时

K=300

xySign为假

xORy为真

angleSign为假

M=G

N=R

如果B=255并且G>=R则xy坐标点在B-G子区域,此时

K=300

xySign为假

xORy为真

angleSign为假

M=G

N=R

2.2)将上述参数代入以下公式进行计算

如果angleSign为真,则

如果angleSign为假,则

如果xORy为真,则

如果xySign为假,那么y=-y;x=y/temp2;

如果xySign为真,那么y不变;x=y/temp2;

如果xORy为假,则

如果xySign为假,那么x=-x;y=x*temp2。

如果xySign为真,那么x不变;y=x*temp2。

由上述计算可以得出任意点A(x,y)的坐标值。

本发明实施例的装置,依据色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB值计算坐标来定位颜色在RGB色盘中的位置,能够精确定位,没有误差。

实施例四

如图6所示,本发明实施例以RGB灯为例,提供一种定位RGB灯颜色在色盘中的位置的装置,该方法包括以下步骤:

HSL获取模块610,用于获取RGB灯的亮度H、色度S和饱和度L值。

需要说明的是,本实施例仅仅以RGB灯为例进行说明,实际实施例中可以从任意显示彩变化的设备获取H、S、L值。比如RGB电子显示屏等设备。

RGB值计算模块620,用于将H、S和L值转化为R、G和B值。

如果s=0,则r,g和b都等于l;

如果s≠0,则

p=2×l-q

对于每个颜色向量Color=(ColorR,ColorG,ColorB)=(r,g,b),

其中,h表示色相角,且h∈[0,360];s表示饱和度,l表示亮度,且s∈[0,1],l∈[0,1],r,g,b分别表示一个颜色R、G和B值的归一化值域,r∈[0,1],g∈[0,1],b∈[0,1];将归一化值域乘以255为对应的RGB的值。

色盘分区模块630,用于将色盘按R、G和B三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域。

坐标计算模块640,用于根据R、G和B值及其所属子区域计算该颜色的坐标值。

其中,分区模块630和坐标计算模块640分别与上述实施例三的分区模块530和坐标计算模块540相同,本实施例中不再重述。

本发明实施例的装置,通过获取RGB灯的HSL值,进而转化为RGB值,依据色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB值计算坐标来定位颜色在RGB色盘中的位置,能够精确定位,没有误差。

此外,本发明还提供了一种智能终端,该智能终端包括上述任意一项技术方案的基于RGB值定位颜色在色盘中的位置的装置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来控制相关的硬件完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。

以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。

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