周中正,王洪棟
(中國礦業大學 信息與電氣工程學院,徐州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.