多颜色空间取色器的设计与实现

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Microcomputer Applications Vol. 30, No.

12, 2014 设计与研究 微型电脑应用 2014 年第 30 卷第 12 期

文章编号:1007-757X(2014)12-0032-03

多颜色空间取色器的设计与实现
徐尤华,熊传玉
摘 要:目前常用软件使用颜色时多以 RGB 颜色空间为主,也有少数软件使用了 HSB、Lab、CMYK 等颜色空间。在肤色检
测研究领域,RGB 颜色空间已经满足不了研究需要,通常会采用 HSI、HSV、YCbCr、YIQ、YUV 等颜色空间,用于提高肤色
检测的准确率和检测效率。针对常见软件的不足,给出了一款基于多颜色空间的取色器,实时抓取光标位置的颜色,并转
换为 HSI、HSV、YCbCr、YIQ、YUV 颜色空间的表示形式,能让用户直观的看到同一颜色在不同颜色空间的各个分量值,加
深用户对各种颜色的理解。
关键词:肤色检测;取色器;颜色空间;RGB;HSI
中图分类号:TP311 文献标志码:A

Research and Implementation of Color Picker Based on Multi Color Space


Xu Youhua, Xiong Chuanyu
(Department of Computers, Guangdong Songshan Vocational College, Shaoguan 512126, China)
Abstract: Currently, common software usually use RGB color space, while a few software use HSB, Lab, and CMYK as well. In
skin color detection research field, as RGB can’t meet the researches’ requirements, HSI, HSV, YCbCr, YIQ and YUV color space
is usually used, to improve the skin detection accuracy and efficiency. Aiming at the insufficient of common software, the paper
create a color picker based on multiply color space, getting the color on the position of cursor, converting to HIS, HSV, YCbCr,
YIQ,YUV color space representation. It can help users observe assignment component of different color space to one color
intuitively, and enhance user’s understanding on various colors.
Key words: Skin Color Detection; Color Picker; Color Space; RGB; HSI

0 引言 相互叠加得到的各种颜色,是目前应用最为广泛的颜色空
间。图像中的每一个像素的 RGB 分量的取值范围为[0,255],
在肤色检测、人脸识别和手势识别等研究中,会通过对
三种分量按照不同的比例进行混合可以得到各种颜色。
肤色的判断将感兴趣的部分分割出来。由于不同人种肤色会 1.2 HSI 颜色空间
有差别,即使相同人种肤色也有体现一定的差异,再加上亮 HSI 颜色空间通过色调(Hue)、饱和度(Saturation)和
度等因素,对肤色识别的准确率构成一定的影响。通过科研 强度(Intensity)3 个分量来感知颜色,I 分量与图像的彩色
人员大量的研究工作发现,肤色检测在特定的颜色空间结合 信息无关,H 和 S 分量与人感受颜色的方式紧密相连,非常
特定的检测方法,准确率会有很大提高 [1-3]。目前常见的颜 适合彩色特性的检测与分析。
色空间为 RGB 颜色空间,多数和取色、调色相关的应用软 HSI 颜色空间与 RGB 颜色空间的转换公式如下:
件都采用了 RGB 颜色空间,也有少部分专业软件应用了更  (R  G )  (R  B ) 
  c o s 1  
 2 ( R  G ) 2  ( R  B )(G  B 
多的颜色空间,如 office 系列软件提供了 RGB 和 HSL 两种  
 , G  B
颜色空间的取色及调色功能,Adobe 系列软件提供了 HSB、 H  
 2   , G  B
Lab、CMYK 三种颜色空间的取色及调色功能。对于肤色检 S  1
3 m in ( R , G , B )
R  G  B
测中常见颜色空间如 HIS、HSV、YCbCr、YIQ、YUV 等目 R  G  B
I 
前还没有专业的软件提供相应的取色调色功能。为了方便研 3

究者能够直观的看到同一颜色在不同颜色空间中各分量的 1.3 HSV 颜色空间


HSV 颜色空间是通过色调(Hue)、饱和度(Saturation)
取值情况,以及各分量随着颜色变化而变化的具体情况,对
和亮度(Value)来感知颜色。色调用角度度量,取值范围
常见颜色空间与 RGB 颜色空间的转换进行研究,设计了一
为[0。,360。],饱和度取值范围为[0.0,1.0],值越大越饱和,
款基于全屏幕取色的多颜色空间取色器。 亮度取值范围为[0.0,1.0]。
1 常见颜色空间与 RGB 颜色空间的转换 HSV 颜色空间与 RGB 颜色空间的转换公式如下[4]:
先对 RGB 的 3 个颜色分量进行归一化处理。
1.1 RGB 颜色空间
RGB 颜色空间是通过对红绿蓝三种颜色通道的变化及
——————————————
作者简介:徐尤华(1977-),男,汉族,湖北荆门人,广东松山职业技术学院计算机系,讲师,硕士,研究方向:信息系统项目开发与管理,韶关,
512126
熊传玉(1979-),女,汉族,湖北荆州人,广东松山职业技术学院计算机系,讲师,硕士,研究方向:web 开发,韶关,512126

・32・
Microcomputer Applications Vol. 30, No.12, 2014 设计与研究 微型电脑应用 2014 年第 30 卷第 12 期

m ax  m ax(r, g ,b )
屏幕上表示指针坐标的 Point 对象,通过 Point 对象可以获
m in  m in ( r , g , b )
取到表示(x,y)坐标空间中的位置。

 0  , m a x  m in MouseInfo 类能够获取某个点的位置信息,而取色器需

60  g  b
, m ax  r且 g  b 要在鼠标移动过程中实时获取所在位置的颜色,通过独立的
 m a x  m in
 g  b 线程来监控鼠标当前位置以达到实时获取对应位置颜色的
H  60   360, m ax  r且 g  b
 m a x  m in 目的。
 b  r
 6 0  m a x  m in  120, m ax  g

Timer timer=new Timer();

60  r  g
 240, m ax  b
timer.schedule(new TimerTask() {
 m a x  m in public void run() {
0, m ax  0
 point=MouseInfo.getPointerInfo().getLocation();
S   m a x  m in
 , m ax  0
m ax ……
V  m ax }
1.4 YCbCr 颜色空间 }, 100,100);
YCbCr 颜色空间通过亮度、蓝色色度分量和红色色度分 以上代码每隔 100 毫秒获取一次鼠标位置信息,设置
量来感知颜色。 schedule()方法的第三个参数可以调整两次获取位置之间的
YCbCr 颜色空间与 RGB 颜色空间转换公式如下[5]: 时间间隔。
 Y   0 .2 9 9 0 0 .5 8 7 0 0 .1 1 4 0  R  2.3 像素点颜色的获取
 C b     0 .1 6 8 7  0 .3 3 1 3 0 .5 0 0 0  G 
     Java 的 awt 包中 Robot 类用于为测试自动化、自运行演
 C r   0 .5 0 0 0  0 .4 1 8 7  0 .0 8 1 3   B 
示程序和其他需要控制鼠标和键盘的应用程序生成本机系
1.5 YIQ 颜色空间 统输入事件。调用 getPixelColor()方法可以获取给定屏幕坐
YIQ 颜色空间通常被北美的电视系统所使用,通过亮 标处的像素颜色。
度、色调和饱和度来感知颜色。 获取鼠标位置信息的线程获取到鼠标位置信息后,将位
YIQ 颜色空间与 RGB 颜色空间的转换公式如下[6]: 置信息传入 getPixelColor()方法即可得到对应位置的颜色信
 Y   0 .2 9 9 0 0 .5 8 7 0 0 .1 1 4 0  R  息。
 I    0 .5 9 5 7  0 .2 7 4 5  0 .3 2 1 2  G 
     Robot robot=new Robot();
 Q   0 .2 1 1 5  0 .5 2 2 6 0 .3 1 1 1   B  Color color=robot.getPixelColor(point.x, point.y);
1.6 YUV 颜色空间 2.4 颜色空间转换
YUV 颜色空间通常被欧洲电视系统所使用,通过亮度 为了方便的对各种颜色空间分量数据以及相互的转换
和两个色度来感知颜色。 进行管理,为各个颜色空间建立相应的模型,在各个模型中
YUV 颜色空间与 RGB 颜色空间的转换公式如下[8]: 提供转换方法,及各分量的管理方法。
 Y   0 .2 9 9 0 .5 8 7 0 .1 1 4   R  几乎所有的颜色空间分量都可以通过 RGB 颜色空间的
U     0 .1 4 7  0 .2 8 9 0 .4 3 6   G  各个分量转换得到,因此,各个模型的构造方法直接通过
    
V   0 .6 1 5  0 .5 1 5  0 .1 0 0   B  RGB 颜色构造自己的颜色分量。
public class HSI {
2 取色器设计
double H,S,I;
通过线程监控鼠标的移动,获取光标在屏幕中的位置, public HSI(Color color)
抓取该像素点的颜色后,获取该点 RGB 颜色空间的各个分 {
量值,通过对应转换公式转换为对应颜色空间的各分量值。 int r,g,b;
2.1 开发平台 r=color.getRed();
Java 是一种可以开发跨平台应用软件的面向对象的程 g=color.getGreen();
序设计语言,是由 Sun 公司于 1995 年推出。Java 技术具有 b=color.getBlue();
卓越的通用性、高效性、平台移植性和安全性,广泛应用于 //引入转换公式,确定 HSI 分量值
个人 PC、数据中心、游戏控制台、科学超级计算机、移动 }
}
电话和互联网,同事拥有全球最大的开发者专业社群。在全
//setter、getter 方法省略
球云计算和移动互联网的产业环境下,Java 更具备了显著优
}
势和广阔前景。
以上为 HSI 颜色空间模型部分代码,其他颜色空间模
2.2 光标位置的获取
型类似。
为了获取有关鼠标的信息,Java 中 MouseInfo 提供了
2.5 程序运行界面截图
getPointerInfo() 方 法 用 于 返 回 表 示 鼠 标 指 针 当 前 位 置 的
程序启动后,监控鼠标的线程随即启动,监控光标位置,
PointerInfo 实例,再通过该实例调用 getLocation()方法获取
得到光标位置后,获取对应点的颜色转换为各个颜色空间的

・33・
Microcomputer Applications Vol. 30, No.12, 2014 设计与研究 微型电脑应用 2014 年第 30 卷第 12 期

表达形式,在界面上给出颜色效果以及各个分量的值,如图 识。
1 所示: 参考文献
[1] 徐战武,朱淼良.肤色检测最优空间.计算机辅助设计与
图形学报[J].2006.9:1350-1351.
[2] 郭耸,顾国昌等.肤色相似度和动态阈值相结合的肤色
分割技术.计算机工程与应用[J].2010.46:1-3.
[3] 易轶虎,曲道奎等.基于参数查找表的肤色检测算法
[J].2010.3:262-263.
图 1 程序运行界面截图
[4] 蒋崛,张小宁等.HSV空间中具有调整因子的肤色增强
方法.真空科学与技术学报[J].2011.5:515-517.
3 总结 [5] 胡晓燕,张宇.基于肤色的人脸检测算法研究.合肥工业
多颜色空间取色器总结了目前常见软件对颜色空间的 大学学报[J].2012.7:909-910.
使用情况,针对肤色检测中常见的颜色空间,分别给出了各 [6] 赵晓晖,申铉京.基于亮度的自适应色度空间模型肤色
个颜色空间的各个分量值,能够让用户直观的看到同一颜色 算法研究.仪器仪表学报[J].2005.8:591-592.
(收稿日期:2014.09.25)
不同颜色空间的数值表示形式,对颜色有一个更深入的认

(上接第 17 页) [2] 谢小勇. 基于网络传输测井数据无损压缩算法的研究


[D].电子科技大学,2013.
4 总结
[3] 刘付斌, 李艾华. 偶极子数字阵列声波测井仪中数据
根据无线随钻测量系统独特的特征设计了基于 压缩的实现[J]. 设计与研发, 2007, 12: 58-61.
Huffman 编码的无线随钻测量系统的数据压缩协议,通过对 [4] 张伟, 师奕兵. 声波测井数据压缩的一种 SPIHT 改进
真实井史资料的仿真,发现该方法与传统的 ASCII 码以及浮 算法[J]. 电子测量与仪器学报, 2008, 22(1): 15-19.
点数的表示方法相比,可以大大减少传输的二进制比特流的 [5] 贾安学, 乔文孝, 鞠晓东等. 声波测井井下数据压缩
长度,从而提高无线随钻测量信道的数据传输效率。 算法压缩效果测试[J]. 测井技术, 2011, 35(3): 288-291.
[6] 严正国, 张家田. 井下电视图像压缩技术[J]. 西安石
参考文献
油大学学报(自然科学版), 2007, 22(5): 94-97.
[1] 张煜,熊轲,裘正定,王升辉. 基于压缩感知的随钻测井
(收稿日期:2014.10.15)
编码传输方法[J]. 地球物理学报,2013,01:335-347.

(上接第 19 页) 4 总结
从图 2 可以明显看出网络的训练效果很好,很短的时间
时间序列数据一直是数据挖掘中研究的一个热点,尤其
内就进化达到误差的要求。
是小样本、贫信息的时间序列数据。本文根据这类数据的特
首先,把已训练好的网络保存,然后将用于测试的后 6
点,充分利用灰色理论处理小样本数据和神经网络强大的数
个月的数据输入网络,同时将预测结果与实际的订单数进行
据分类能力,将灰色系统理论与神经网络相融合,来构建灰
比对,比对结果如图 3 所示:
色神经网络模型,通过仿真实验也充分反映出,对于小样本
的时间序列数据,本文的灰色神经网络具有较好的挖掘能
力,为这类数据的挖掘处理提供了一条新的思路。
参考文献
[1] 罗芳琼,吴春梅.时间序列分析的理论与应用综述[J].柳
州师专学报, 2009,24(03):113-117
[2] 陈湘涛,李明亮,陈玉娟.基于时间序列相似性聚类的应
用研究综述[J].计算机工程与设计, 2010,31(3):577-581.
[3] 何典,梁英.金融时间序列数据挖掘的研究与应用[J].世
图 3 灰色神经网络预测结果对比
界科技研究与发展, 2008,30(1):104-106.
图 3 实验结果表明,本文建立的灰色神经网络的预测结 [4] 李 爱 国 , 覃 征 . 在 线 分 割 时 间 序 列 数 据 [J]. 软 件 学
果较好,与实际订单之间的平均误差仅为 8.9%,说明该网 报,2004,15(11):1672-1679
络对于小样本、贫信息的时间序列数据具有较好的挖掘性 [5] 李斌,谭立湘,章劲松等.面向数据挖掘的时间序列符号
能。 化方法研究[J].电路与系统学报,2000,5(2):9-14.
(收稿日期:2014.09.08)

・34・

You might also like