一种基于RGB色盘取色方法和装置
技术领域
本发明涉及颜色处理领域,尤其涉及一种基于RGB色盘取色方法和装置。
背景技术
对于取色,目前大多数方法是通过吸取RGB标准色盘上面的颜色来获取RGB值,进而通过RGB的值转化为亮度、色度、饱和度来控制色彩显示设备的颜色变化。
然而,由于UI设计师画RGB色盘的时候,一些特定的颜色比如纯绿、纯红,纯蓝处在色盘的边缘,是无法画出来的。所以取色的时候无法取到这些特定颜色,从而存在边缘误差。
因此,需要一种新的技术方案能取到RGB色盘上面所有的颜色而没有边缘误差。
发明内容
有鉴于此,本发明要解决的技术问题是提供一种基于RGB色盘取色方法和装置,以取到RGB色盘上面所有的颜色而没有边缘误差。
本发明解决上述技术问题所采用的技术方案如下:
根据本发明的一个方面,提供的一种基于RGB色盘取色方法包括:
通过颜色点在色盘中的坐标计算出该颜色点的RGB值;
将RGB值转化为亮度、色度、饱和度值;
将亮度、色度、饱和度值发送给色彩显示设备。
优选的,通过颜色点在色盘中的坐标计算出该颜色点的RGB值进一步包括:
将色盘按R、G、B三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域;
根据颜色点所属子区域及其坐标计算该颜色点的RGB值。
优选的,根据颜色点所属子区域及其坐标计算该颜色点的RGB值进一步包括按以下公式计算:
当A(x,y)在G-B子区域中时,G=255,B=255-C*(255-R),且
当A(x,y)在G-R子区域中时,G=255,R=B+C*(255-B),且
当A(x,y)在R-G区域时,R=255,G=B+C*(255-B),且
当A(x,y)在R-B区域时,R=255,B=G+C*(255-G),且
当A(x,y)在B-R子区域时,B=255,R=G+C*(255-G),且
当A(x,y)在B-G子区域时,B=255,G=255-C*(255-R),且
其中,圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,且数值范围为(0~r),六个子区域G-B子区域,G-R子区域,R-G子区域,R-B子区域、B-R子区域、B-G子区域分别为原色子区域,C表示系数,R表示红色分量值,G表示绿色分量值,B表示蓝色分量值。
优选的,将RGB值转化为亮度、色度、饱和度值进一步包括按以下公式计算:
其中,r,g,b均为0到1之间的实数,分别表示一个颜色点的R、G和B值规范化到值域[0,1]之间的实数,R、G、B值的取值范围是[0,255];max表示r,g和b中的最大值,min表示r,g和b中的最小值,h表示色相角,h∈[0,360];s表示饱和度,s∈[0,1],l表示亮度,且l∈[0,1]。
优选的,该方法之后还包括:
色彩显示设备根据亮度、色度、饱和度值转化为相应的颜色进行显示。
根据本发明的另一个方面,提供的一种基于RGB色盘取色装置包括:
RGB值计算模块,用于通过颜色点在色盘中的坐标计算出该颜色点的RGB值;
HSL值计算模块,用于将RGB值转化为亮度、色度、饱和度值;
发送模块,用于将亮度、色度、饱和度值发送给色彩显示设备。
优选的,RGB值计算模块进一步包括:
分区单元,用于将色盘按RGB三原色等分为三个扇形区域,将三个扇形区域再分别等分为两个子区域;
计算单元,用于根据颜色点所属子区域及其坐标计算该颜色点的RGB值。
优选的,计算单元具体用于按以下方式计算:
当A(x,y)在G-B子区域中时,G=255,B=255-C*(255-R),且
当A(x,y)在G-R子区域中时,G=255,R=B+C*(255-B),且
当A(x,y)在R-G区域时,R=255,G=B+C*(255-B),且
当A(x,y)在R-B区域时,R=255,B=G+C*(255-G),且
当A(x,y)在B-R子区域时,B=255,R=G+C*(255-G),且
当A(x,y)在B-G子区域时,B=255,G=255-C*(255-R),且
其中,圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,数值范围(0~r);G-B子区域,G-R子区域,R-G子区域,R-B子区域、B-R子区域、B-G子区域分别表示原色子区域,C表示系数,R表示红色分量值,G表示绿色分量值,B表示蓝色分量值。
优选的,HSL值计算单元具体用于按以下公式计算:
其中,r,g,b均为0到1之间的实数,分别表示一个颜色点的R、G和B值规范化到值域[0,1]之间的实数,R、G、B值的取值范围是[0,255];max表示r,g和b中的最大值,min表示r,g和b中的最小值,h表示色相角,h∈[0,360];s表示饱和度,s∈[0,1],l表示亮度,且l∈[0,1]。
优选的,该装置还包括色彩显示模块,用于根据亮度、色度、饱和度值转化为相应的颜色进行显示。
本发明实施例的方法和装置,根据RGB色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB色盘中的坐标来计算RGB颜色,能取到RGB色盘上面所有的颜色而没有边缘误差。
附图说明
图1为本发明实施例一提供的基于RGB色盘取色方法的流程图;
图2为本发明实施例一提供的RGB色盘划分示意图;
图3为本发明实施例一提供的RGB色盘中颜色点坐标示意图;
图4为本发明实施例二提供的基于RGB色盘取色方法的流程图;
图5为本发明实施例三提供的基于RGB色盘取色装置的模块结构图;
图6为本发明实施例四提供的基于RGB色盘取色装置的模块结构图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、
明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一
如图1所示,本发明提供的一种基于RGB色盘取色方法,包括以下步骤:
S102、通过颜色点在色盘中的坐标计算出该颜色点的RGB值。
优选的,如图2和图3所示,本步骤S102进一步包括:将色盘按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不变。如图3所示,设圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,且数值范围均为(0~r),C表示系数,R表示红色分量值,G表示绿色分量值,B表示蓝色分量值,则有:
当A(x,y)在G-B子区域中时,G=255,B=255-C*(255-R),且
当A(x,y)在G-R子区域中时,G=255,R=B+C*(255-B),且
当A(x,y)在R-G区域时,R=255,G=B+C*(255-B),且
当A(x,y)在R-B区域时,R=255,B=G+C*(255-G),且
当A(x,y)在B-R子区域时,B=255,R=G+C*(255-G),且
当A(x,y)在B-G子区域时,B=255,G=255-C*(255-R),且
S104、将RGB值转化为亮度、色度、饱和度值。
具体的,本步骤S104可以采用按以下公式计算:
其中,r,g,b均为0到1之间的实数,分别表示一个颜色点的R、G和B值规范化到值域[0,1]之间的实数;R、G、B值的取值范围是[0,255],可以通过将R、G、B值分别除以255实现规范化得到r,g,b值。max表示r,g和b中的最大值,min表示r,g和b中的最小值,h表示色相角,h∈[0,360];s表示饱和度,s∈[0,1],l表示亮度,且l∈[0,1]。
本发明实施例的方法,根据RGB色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB色盘中的坐标来计算颜色值,能取到RGB色盘上面所有的颜色而没有边缘误差。
实施例二
如图4所示,本发明实施例提供的基于RGB色盘取色的方法,应用于控制色彩变化的设备,比如RGB灯控制、RGB控制盒,RGB电子显示屏等设备,下面以RGB灯控制为例说明,该方法包括以下步骤:
S402、通过颜色点在色盘中的坐标计算出该颜色点的RGB值。
S404、将RGB值转化为亮度、色度、饱和度值。
S406、将亮度、色度、饱和度值发送给RGB灯。
S408、RGB灯根据亮度、色度、饱和度值转化为相应的颜色进行显示。
其中,步骤S402、步骤S404、步骤S406分别与上述实施例一的S102、步骤S104、步骤S106相同,本实施例中不再重述。
本发明实施例的方法,通过RGB色盘中的坐标来计算颜色值,能取到RGB色盘上面所有的颜色而没有边缘误差,进而通过将RGB值转化为亮度、色度、饱和度来控制RGB灯的显示,精确度高。
实施例三
如图5,本发明实施例提供的一种基于RGB色盘取色装置包括RGB值计算模块10、HSL值计算模块20和发送模块30,其中:
RGB值计算模块10,用于通过颜色点在色盘中的坐标计算出该颜色点的RGB值。
具体的,RGB值计算模块10进一步包括:
分区单元,用于将RGB色盘按RGB三原色等分为三个扇形区域,再将三个扇形区域再分别等分为两个子区域。
计算单元,用于根据颜色点所属子区域及其坐标计算该颜色点的RGB值。
优选的,计算单元具体用于按以下方式计算:
当A(x,y)在G-B子区域中时,G=255,B=255-C*(255-R),且
当A(x,y)在G-R子区域中时,G=255,R=B+C*(255-B),且
当A(x,y)在R-G区域时,R=255,G=B+C*(255-B),且
当A(x,y)在R-B区域时,R=255,B=G+C*(255-G),且
当A(x,y)在B-R子区域时,B=255,R=G+C*(255-G),且
当A(x,y)在B-G子区域时,B=255,G=255-C*(255-R),且
其中,圆心点的坐标为(0,0),圆半径为r,颜色点A的坐标为A(x,y),x、y为自然数值,数值范围(0~r);G-B子区域,G-R子区域,R-G子区域,R-B子区域、B-R子区域、B-G子区域分别表示原色子区域,C表示系数,R表示红色分量值,G表示绿色分量值,B表示蓝色分量值。
HSL值计算模块20,用于将RGB值转化为亮度、色度、饱和度值。
优选的,HSL值计算单元20具体用于按以下公式计算:
其中,r,g,b均为0到1之间的实数,分别表示一个颜色点的R、G和B值规范化到值域[0,1]之间的实数;由于R、G、B值的取值范围是[0,255],即可以分别除以255实现规范化。max表示r,g和b中的最大值,min表示r,g和b中的最小值,h表示色相角,h∈[0,360];s表示饱和度,s∈[0,1],l表示亮度,且l∈[0,1]。
发送模块30,用于将亮度、色度、饱和度值发送给色彩显示设备。
上述方法实施例一和二中的技术特征在本装置均对应适用,这里不再重述。
本发明实施例的装置,根据RGB色盘中R、G、B三原色按照一定的规律分布的特性,通过RGB色盘中的坐标来计算颜色值,能取到RGB色盘上面所有的颜色而没有边缘误差。
实施例四
如图6所示,本发明实施例提供的基于RGB色盘取色装置,应用于控制色彩变化的设备,比如RGB灯控制、RGB控制盒,RGB电子显示屏等设备,下面以RGB灯控制为例说明,该装置包括:
RGB值计算模块10,用于通过颜色点在色盘中的坐标计算出该颜色点的RGB值。
HSL值计算模块20,用于将RGB值转化为亮度、色度、饱和度值。
发送模块30,用于将亮度、色度、饱和度值发送给色彩显示模块40。
色彩显示模块40,用于RGB灯根据亮度、色度、饱和度值转化为相应的颜色进行显示。
需要说明的是,上述方法实施例一和二中的技术特征在本装置均对应适用,这里不再重述。
本发明实施例的装置,通过RGB色盘中的坐标来计算颜色值,能取到RGB色盘上面所有的颜色而没有边缘误差,进而通过将RGB值转化为亮度、色度、饱和度来控制RGB灯的显示,精确度高。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来控制相关的硬件完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。