Professional Documents
Culture Documents
多颜色空间取色器的设计与实现
多颜色空间取色器的设计与实现
多颜色空间取色器的设计与实现
文章编号: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
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
・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)
不同颜色空间的数值表示形式,对颜色有一个更深入的认
(上接第 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・