周中正,王洪栋
(中国矿业大学 信息与电气工程学院,徐州221116)
颜色传感器TCS230分辨率高,具有可编程的颜色通透选择,无需数/模转换[1],在科学研究领域得到了较为广泛的应用,如智能化水域污染监测[2]、介质界面检测[3]、颜色加密识别[4]、温度测量[5]等。但由于 TCS230采集颜色信息时受环境光强影响较大[1],只有在外界光强相对稳定或在实验室条件下才能使TCS230的优点得以发挥。虽然目前TCS230的颜色识别有白平衡算法来支撑,但白平衡处理并不能滤除光强干扰,在不易采取屏蔽措施的情况下往往难以达到识别精度的要求。另外,目前颜色识别的研究多基于PC平台,基于处理能力相对较弱的单片机平台的实用方案几乎没有。
本研究基于MCU平台,利用RGB-YCbCr变换,可从RGB值中提取对颜色识别有用的色度信息[6-7],为消除环境光强的不良影响创造了条件。本颜色识别方案是在大量实践和尝试的基础上得到的,而且能够在全国机器人大赛智能搬运项目的比赛条件下满足精度要求,为MCU平台下的颜色识别提供了参考,具有较高的实际应用价值。
物体颜色的感知是在白光的照耀下,物体表面反射出的有色光在人眼中所引起的反应,未被反射的成分则被物体吸收了。根据三原色理论,不同的颜色是由三原色(红、绿、蓝)按照不同的比例混合而成的,如果能得到某种颜色所对应的三原色的值,就能够唯一确定该颜色。利用感光材料的感光特性,依次测得物体表面反射光中红、绿、蓝各色光的含量,即可实现对颜色的识别。
值得注意的是,只有在标准白光(RGB含量相等)照射的条件下才能客观地反映出物体对光的反射特性,即得到物体表面的颜色信息,但现实测量条件下的光常为非标准白光。另外,感光材料对三种原色的敏感性不同,而且受感光原件制造精度、测量误差和环境亮度的影响,在对同一物体表面颜色的测取过程中,往往会得到一组有一定分布特点的RGB点,难以测得该颜色的精确信息,但可据此来判别出有限的几种颜色。
TCS230是专用的颜色传感器,其结构如图1所示。
TCS230内部集成了可配置的硅光电二极管阵列和一个电流/频率转换器,可输出频率随光强线性变化且占空比为50%的方波。
图1 TCS230引脚封装及功能框图
用户可通过可编程引脚S0、S1来选择100%、20%或2%的输出比例因子,通过引脚S2、S3来选择所需的滤光器颜色,如表1所列。
表1 S0、S1、S2、S3引脚功能分配表
在工作时,可通过改变TCS230感光部位滤光器的颜色,依次让三种原色的色光通过,根据其输出频率随光强线性变化的特性,得到色光中的红绿蓝三原色信息。例如,当选择红色滤光器时,红色光能透射到感光部位,而蓝绿光则不能透过,此时即可得到红色光在此种颜色中的含量信息。但由于TCS230的感光部位对三种原色的敏感性不同,需要利用白平衡算法进行调整,具体方法为:在实验室中利用标准白光(可用白色光源经试管透射得到)照射TCS230的二极管阵列,得到TCS230的RGB频率调整参数(可设红色光为A),然后在比赛条件下测得TCS230的RGB频率参数(设红色光为a),运用白平衡调整(R=255·a/A),即可得到 RGB的理论值[8]。
颜色由亮度和色度来刻画,色度是不包括亮度在内的颜色的性质,反映的是颜色的色调和饱和度。在比赛中要辨别物块颜色,就需要提取色度信息,而亮度信息则属于干扰。利用TCS230运用白平衡算法获取的RGB值既与色度有关,又受亮度影响。虽然在实验室条件下仍可完成颜色的测量,但白平衡调整并未解决亮度干扰的问题,当环境光强改变时RGB值也会出现较大变化,在比赛条件下往往达不到判别的精度。
本颜色识别方案利用色度学RGB原理,运用RGBYCbCr变换,将RGB模式转换为YCbCr模式。YCbCr模式是刻画颜色性质的一种模式,其中Y代表亮度,Cb和Cr则代表色调、饱和度。常见的JPEG图片格式采用的就是YCbCr色彩系统。RGB-YCbCr变换公式为:
本方案以色度信息Cb、Cr为主要判据,解决了利用RGB参数判别颜色受亮度干扰的问题,对不易区分的颜色以RGB值为辅助判据来进一步判别。
颜色识别流程如图2所示。首先拉低使能引脚开启TCS230,控制引脚S2、S3依次选通红绿蓝三种滤光器,利用MC9S12XS128的定时器和脉冲累加器来获取TCS230在三种色光下的输出频率,即可得到原始的RGB频率信息,利用白平衡调整,得到RGB的理论值。由RGB-YCb-Cr变换公式(1)求出Cb、Cr值,这样就滤除了亮度干扰,获取了物块的色度信息,然后根据各颜色对应的CbCr分布图(如图3所示),即可实现物块颜色的判别。其中,CbCr分布图的构建方法(颜色分布的平面分割方法)为:经多次预测量(即比赛前测量)得到一系列关于Cb、Cr的散点,以Cb为x轴、以Cr为y轴作平面图,根据散点的分布来分割各颜色物块对应的区域,要尽可能给各色块以足够的裕量。如果在CbCr分布图中出现了不同颜色有重叠区的情况,就需要进行RGB辅助判断,即根据获取的RGB值中容易区分重叠颜色的一个或多个值(如根据R值或根据R、G值)来进一步辅助判断。
图2 颜色识别流程图
图3 各颜色物块CbCr分布及分割示意图
智能搬运项目的比赛场地如图4所示。比赛时,参赛选手在置有黄、白、红、黑、蓝 5种颜色物块的袋子中随机依次抽取三个物块,并按抽取顺序,将三个物块摆放至拾起区(图4中黄、红、蓝颜色区与中部交叉点之间的白色区域)。分拣搬运小车从出发区(图4下方绿色矩形区域)出发,沿黑线循迹至拾起区拾取物块,并根据物块颜色将其送至对应颜色区,最后回到出发区。比赛成绩由小车送物块至对应颜色区的精确度(图4黄、白、红、黑、蓝各颜色区靶心10环为10分,随环数减小分数依次降低)和回到出发区的时间综合决定。
图4 智能搬运比赛场地
智能搬运小车的基本结构框图如图5所示。硬件部分主要由MPU、传感器模块和动作模块构成。MPU采用Freescale公司16位MC9S12XS128芯片,它包含8个8位PWM通道且相邻两通道可合并为一个16位通道,可高精度控制舵机动作;还包含8通道的16位标准定时器TIM及1个16位的脉冲累加器[9],可方便地测出TCS230在红绿蓝色光下的输出频率。传感器模块包括用于循迹的光电对管TK-20、用于探测物块的测距传感器GP2Y0A02YK0F和用于采集物块颜色RGB信息的颜色传感器TCS230。动作模块主要由小车轮子的驱动舵机S4309R和用于抓取物块的驱动舵机SR-403P构成。软件的关键部分包括:用于循迹纠正控制的定时器中断、用于判别物块颜色的颜色识别和用于产生舵机控制信号的双通道合并PWM产生。
图5 智能搬运小车系统结构图
利用上文设计的智能搬运小车检验该颜色识别算法,得到的统计结果如表2所列。
表2 智能搬运小车分拣各色块实测统计表
该统计结果显示,本颜色识别方案在比赛环境条件下的颜色识别成功率达91.4%以上,可以满足比赛精度的要求,表明本颜色识别方案能够在单片机平台中有效地实现颜色的识别。
① 将RGB-YCbCr变换应用于TCS230的颜色识别是解决TCS230受外界光强干扰问题的有效途径,是对现行TCS230白平衡算法的良好补充。
② 对不同物体颜色按CbCr参数的分布情况进行平面分割,并用RGB值辅助判断的方法是区分物体颜色的一种实用方法,适用于单片机颜色判别系统。
[1]张松灿,肖本贤.高分辨率颜色传感器TCS230的原理和应用[J].单片机与嵌入式系统应用,2005(3).
[2]侯昭武,包敬海,李尚平,等.基于TCS230智能化轮船污染监测仪的研究[J].自动化与仪表,2010(3).
[3]王安敏,尚绪超,赵龙.基于颜色传感器TCS230的油水界面检测仪的设计[J].机械设计与制造,2010(9).
[4]F Yucel,O Oral,N Caglayan.Design and Implementation of a Personal Computer Authorization System using Color Detection[J].Electronics and Electrical Engineering,2011,115(9).
[5]Zhao Guangxing Zhao Guangyi,ZhaoYuan.Design of color temperature measurement device based on TCS230[C].Beijing:IET International Conference on Wireless Sensor Network,2010.
[6]Saarinen K.Comparison of decimation and interpolation methods in case of multiple repeated RGB-YCbCr colour image format conversions[C].USA:Circuits and Systems,1994.
[7]江凤兵.基于RGB-H-CbCr新颜色空间的肤色检测算法研究[J].科技广场,2011(9).
[8]秦志强,李昌帅,许国璋.智能传感器应用项目教程[M].北京:电子工业出版社,2010:85-88.
[9]王宜怀,曹金华.嵌入式系统设计实战:基于飞思卡尔S12X微控制器[M].北京:北京航空航天大学出版社,2011:207-248.
[10]TAOS Inc.Texas Advanced Optoelectronic Solutions TCS230 Datasheet.2007.