黃智輝++李榕
摘 要: 為了提高顏色識別系統(tǒng)的準(zhǔn)確性、穩(wěn)定性以及設(shè)計(jì)靈活性,基于現(xiàn)場可編程門陣列技術(shù),設(shè)計(jì)了一個(gè)應(yīng)用于靜態(tài)圖片的顏色識別系統(tǒng),并設(shè)定了觸摸屏功能。通過觸摸讀取屏幕坐標(biāo)對應(yīng)的RGB顏色值,減少了環(huán)境變化對系統(tǒng)的影響,利用閾值判定法實(shí)現(xiàn)顏色識別。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)穩(wěn)定而且實(shí)用性強(qiáng),系統(tǒng)可以識別任意800×480像素bmp圖像的顏色,并具有較好的魯棒性。
關(guān)鍵詞: 顏色識別; 現(xiàn)場可編程門陣列; 觸摸屏; 閾值判定法
中圖分類號: TN911?34; TP212.9 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)10?0061?04
顏色識別是一種新興的檢測技術(shù),它是在自動控制系統(tǒng)的出現(xiàn)后才被提出的,也是自動控制理論的簡單應(yīng)用,并得到了大力的發(fā)展。雖然提出時(shí)間較晚,但在實(shí)時(shí)檢測系統(tǒng)以及自動控制方面有著重要的意義。隨著科技的進(jìn)步,處理器的速度有了飛躍性的發(fā)展,這也同時(shí)提高了這個(gè)系統(tǒng)的效率。物體顏色的識別,傳統(tǒng)方法是測出物體的三刺激值(RGB)坐標(biāo),通過查詢CIE(國際照明委員會)1931標(biāo)準(zhǔn)色度圖來確定顏色[1]。顏色是一個(gè)模糊的概念,采用量化和傳統(tǒng)的傳感器是不夠的[2]。
在信息化與科技日益發(fā)達(dá)的當(dāng)今社會,顏色識別正向智能化的方向發(fā)展,顏色識別作為自動控制系統(tǒng)的一項(xiàng)重要功能,是當(dāng)今數(shù)字圖像處理的研究熱點(diǎn)之一,具有重大的研究意義。在目前的實(shí)現(xiàn)方式中,有在PC上用軟件[3]實(shí)現(xiàn),但便攜性差。而單片機(jī)的設(shè)計(jì)雖然滿足功耗以及便攜性等因素[4],但其可升級性,設(shè)計(jì)的靈活性以及處理速度卻不及現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)。而在FPGA上有基于軟核的實(shí)現(xiàn)方式[5],但相對于硬件方式,軟核在速度上收到很大限制,但是相對于硬件實(shí)現(xiàn)方式,軟核在速度上收到很大的限制。
在算法方面,很多研究都是利用顏色傳感器TCS230[6?8]進(jìn)行顏色識別,在RGB色彩空間下[9]或者是在HSV[10]色彩空間下對顏色分量進(jìn)行測量,經(jīng)過單片機(jī)等處理器進(jìn)行白平衡等算法處理。有以下不足:計(jì)算量太大,實(shí)時(shí)性效果不好,以及環(huán)境變化對檢測效果影響大,同時(shí)在算法方面的計(jì)算都是在單片機(jī),F(xiàn)PGA的軟核實(shí)現(xiàn)。針對這種情況。本文提出使用FPGA硬件加上觸摸屏兩大硬件相結(jié)合的方式,在RGB色彩空間下,采用設(shè)定閾值識別顏色的方法。這種算法既簡單又能減少環(huán)境對系統(tǒng)的影響,而且精度高,能識別多種顏色,滿足生活要求,十分實(shí)用。
1 顏色識別系統(tǒng)
顏色識別系統(tǒng)設(shè)計(jì)的顏色識別主要是基于先檢測后識別的方法,通過對觸摸屏中觸摸的像素點(diǎn)進(jìn)行逐點(diǎn)分析,根據(jù)觸摸的坐標(biāo)點(diǎn)與顯示的像素點(diǎn)對應(yīng)檢測出對應(yīng)點(diǎn),提取像素信息進(jìn)行顏色識別。
1.1 系統(tǒng)設(shè)計(jì)款圖
系統(tǒng)設(shè)計(jì)主要包括2個(gè)功能:
(1) 圖像的讀取與顯示;
(2) 對于圖像及觸摸屏進(jìn)行算法處理,觸摸屏坐標(biāo)數(shù)/模轉(zhuǎn)化,觸摸屏坐標(biāo)對應(yīng)顏色坐標(biāo),圖像采集,緩存,算法處理,顯示模塊。
圖1 系統(tǒng)設(shè)計(jì)框圖
1.2 圖像讀取與顯示
為了適應(yīng)觸摸屏顯示的圖像大小,系統(tǒng)采用像素大小為800×480的bmp格式圖像,通過接口傳輸數(shù)據(jù),把圖像讀入DE2開發(fā)板的FLASH中。
圖像的顯示采用的是LCD顯示,顯示器采用的是altera公司出產(chǎn)的TRDB_LTM4.8寸液晶顯示觸摸屏,通過GPIO接口與FPGA相連,LCD控制器模塊主要是用來產(chǎn)生VGA顯示需要的時(shí)序以及根據(jù)行和場計(jì)數(shù)而產(chǎn)生的顏色坐標(biāo)。
1.3 觸摸屏
作為系統(tǒng)的核心部分,LTM控制器模塊主要是用來產(chǎn)生人觸摸到觸摸屏產(chǎn)生的坐標(biāo),由模擬信號經(jīng)過模/數(shù)轉(zhuǎn)換后產(chǎn)生觸摸屏坐標(biāo),再經(jīng)過公式換算成與顯示坐標(biāo)相對應(yīng)的顏色坐標(biāo)。這樣,在觸摸屏上觸碰的點(diǎn)就是要識別顏色的對應(yīng)像素點(diǎn)。
1.4 圖像的緩存
本文系統(tǒng)的圖像是24位RGB格式,R,G,B各8 b,為了高效地利用SDRAM,采用4端口的SDRAM,SDRAM的使用如圖2所示。
圖2 SDRAM圖像緩存
在本文系統(tǒng)中,SDRAM緩存3幅圖像。由于不同平臺的SDRAM的容量不一樣,為了在有限資源下完成系統(tǒng)設(shè)計(jì)要求,在這里做簡化處理。圖像寫入時(shí)BANK1低8位為Green,高8位為Red,BANK2低8位為Blue,高8位補(bǔ)0。
2 顏色識別原理及實(shí)現(xiàn)
顏色識別原理框圖如圖3所示。
圖3 顏色識別原理框圖
2.1 觸摸屏坐標(biāo)
LTM配備了ADI公司的AD7843觸摸屏數(shù)字轉(zhuǎn)換器芯片。 AD7843是一個(gè)12位模/數(shù)轉(zhuǎn)換器(ADC)進(jìn)行數(shù)字化的x和施加到觸摸屏上的觸摸點(diǎn)y坐標(biāo)。存儲在AD7843觸摸點(diǎn)的坐標(biāo)可通過串行端口接口而獲得。為了獲得來自ADC的坐標(biāo),用戶需要做的第一件事就是監(jiān)視來自ADC輸出的中斷信號ADC_PENIRQ_n。通過連接一個(gè)上拉電阻,在ADC_PENIRQ_n輸出保持高電平正常。當(dāng)連接到ADC的觸摸屏是通過筆或手指觸摸時(shí),ADC_PENIRQ_n輸出變?yōu)榈碗娖?,啟動一個(gè)中斷給FPGA,然后可以指示一個(gè)控制字通過串行端口接口被寫入到ADC。經(jīng)模數(shù)轉(zhuǎn)換之后,轉(zhuǎn)換成觸摸屏坐標(biāo),如圖4所示,觸碰的范圍由熒幕左下角開始,畫面分割為往上為x軸,可由12個(gè)2進(jìn)制數(shù)(3個(gè)16進(jìn)制數(shù))表現(xiàn)其位置。往右為t軸,可由12個(gè)2進(jìn)制數(shù)(3個(gè)16進(jìn)制數(shù))表現(xiàn)其位置。結(jié)合x軸與y軸的數(shù)字構(gòu)成觸碰熒屏系統(tǒng)。
圖4 觸摸屏坐標(biāo)
2.2 顏色邏輯坐標(biāo)
由于LCD讀取圖像數(shù)據(jù)顯示是從左上到右下的順序讀入,觸摸屏坐標(biāo)不符合邏輯要求,所以,為了方便把觸摸的坐標(biāo)對應(yīng)上顯示的坐標(biāo)800×480的要求,對X,Y分別運(yùn)用轉(zhuǎn)換公式:
oX_COORD≤((my_coordinate/5)-20);
oY_COORD≤(((mx_coordinate>>3)-20));
oX_COORD,oY_COORD就是轉(zhuǎn)換之后的顏色邏輯坐標(biāo),經(jīng)過轉(zhuǎn)換之后的坐標(biāo),如圖5所示,x坐標(biāo)從左往右逐漸變大,范圍0~800,y坐標(biāo)從上往下逐漸變大,范圍0~480。
圖5 顏色邏輯坐標(biāo)
2.3 RGB色彩空間
許多人都知道在繪畫時(shí)可以使用紅色、黃色和藍(lán)色這3種原色混合成不同的顏色,這些顏色就定義了一個(gè)色彩空間。將品紅色的量定義為 x坐標(biāo)軸、青色的量定義為y坐標(biāo)軸、藍(lán)色的量定義為z坐標(biāo)軸,這樣就得到一個(gè)三維空間,每種可能的顏色在這個(gè)三維空間中都有惟一的一個(gè)位置。但是,這并不是惟一的一個(gè)色彩空間。例如,當(dāng)在計(jì)算機(jī)監(jiān)視器上顯示顏色的時(shí)候,通常使用 RGB(紅色、綠色、藍(lán)色)色彩空間定義,這是另外一種生成同樣顏色的方法,紅色、綠色、藍(lán)色被當(dāng)作x,y和z坐標(biāo)軸。另外一個(gè)生成同樣顏色的方法是使用色相(x軸)、飽和度(y軸)和明度(z軸)表示,這種方法稱為 HSB 色彩空間。另外還有許多其他的色彩空間,許多可以按照這種方法用三維(x,y,z)、更多或者更少維表示,但是有些根本不能用這種方法表示。
通常所看到的物體的顏色,實(shí)際上是物體表面吸收了照射到它的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng),任何一種顏色都可以用3種基本顏色按照不同的比例混合得到。
在這里介紹RGB模型,如圖6所示,在這個(gè)顏色模型中,3個(gè)軸分別為RGB。原點(diǎn)對應(yīng)為黑色(0,0,0),高為原點(diǎn)最遠(yuǎn)的定點(diǎn)對應(yīng)白色(255,255,255)。由黑到白的灰度分布在從原點(diǎn)到最遠(yuǎn)的定點(diǎn)件的連線上,正方體的其他留個(gè)角點(diǎn)分別為紅,黃,綠,青,藍(lán)和品紅。需要注意一點(diǎn),RGB顏色模型所覆蓋的顏色域取決于顯示設(shè)備因光電的顏色特性。每一種顏色都有惟一的RGB值與它對應(yīng)。
圖6 RGB顏色模型
2.4 顏色檢測
一開始,把預(yù)先準(zhǔn)備好的800×480大小的BMP圖像存入FPGA的FLASH中,系統(tǒng)將會把圖像傳輸?shù)接|摸屏上,作為下一步的定位算法使用。其中,在顯示區(qū),coord_x和coord_y分別是顯示像素點(diǎn)的坐標(biāo)。在觸摸屏,x_coord和y_coord是經(jīng)過換算過后的觸摸邏輯坐標(biāo):
coord_x = x_coord
coord_y = y_coord
當(dāng)觸碰到想要識別的顏色的位置時(shí),使coord_x = x_coord,coord_y = y_coord,那么就將目標(biāo)定位到了該點(diǎn),經(jīng)過一個(gè)時(shí)鐘周期,坐標(biāo)未更新,分別把該點(diǎn)的R,G,B三色的數(shù)據(jù)輸出到判斷模塊,具體的verilog實(shí)現(xiàn)方式如下:
if ((coord_x == X_COORD )&& (coord_y == Y_COORD) ) begin
oLCD_R1 = read_red;
oLCD_G1 = read_green;
oLCD_B1 = read_blue;
2.5 顏色識別
讀取了R,G,B三色的數(shù)據(jù)之后,設(shè)定閾值,進(jìn)行判斷。上述提到,每種顏色都是有三原色按照不同的比例混合而成。比如黃色,紅:綠:藍(lán)的比例是255∶255∶0;紫色,紅:綠:藍(lán)的比例是160∶32∶240;比紫色淡點(diǎn)的紫羅蘭色,紅:綠:藍(lán)的比例是138∶43∶226。本系統(tǒng)選取了50種生活常見的顏色作為識別對象,將讀取的R,G,B分別與各顏色的R,G,B值做差,再取絕對值,再相加。
公式如下:
[X=|R-R1|+|G-G1|+|B-B1|]
X最小表示最接近該顏色,經(jīng)檢驗(yàn),準(zhǔn)確率達(dá)90%。
3 實(shí)驗(yàn)結(jié)果與分析
本文系統(tǒng)設(shè)計(jì)采用的硬件平臺是友晶公司的DE2開發(fā)板,使用的讓見是Quartus Ⅱ 11.0,F(xiàn)PGA芯片是EP2C35F672C6。
觸摸屏采用的是友晶公司推出的一款觸摸TRDB_LTM,具有可編程控制盒數(shù)字信號輸出等功能。其觸摸功能,通過內(nèi)嵌的10位ADC將模擬信號轉(zhuǎn)換為12位的數(shù)字信號。同時(shí),LTM還提供像素時(shí)鐘(PIXCLK)、行有效信號(FVAL)以及配置LTM所需要的I2C協(xié)議引腳SCLK和SDAT。所使用的平臺有4個(gè)按鍵;其中KEY[0]是復(fù)位按鍵。
取實(shí)驗(yàn)過程中算法每步所拍下的圖像,采用了兩幅圖做對比,圖7,圖8是顏色比較分明的圖像,分別用筆觸碰觸摸屏,數(shù)碼管觸碰坐標(biāo),LCD1602顯示顏色。由于拍照角度稍有差異,圖像形狀會略有不同。
圖7 筆觸碰綠色,數(shù)碼管顯示坐標(biāo),LCD顯示綠色
圖8 筆觸碰黃色,數(shù)碼管顯示坐標(biāo),LCD顯示黃色
圖9圖10是比較顏色比較復(fù)雜的圖像,分別用筆觸碰觸摸屏,數(shù)碼管觸碰坐標(biāo),LCD1602顯示顏色。
圖9 筆觸碰紫色,數(shù)碼管顯示坐標(biāo),LCD顯示紫色
4 結(jié) 語
本文通過采用FPGA器件設(shè)計(jì)基于FPGA觸摸屏的顏色識別,一定程度上解決了通過傳感器識別顏色受光線,環(huán)境變換對識別結(jié)果的影響。通過實(shí)驗(yàn)結(jié)果的驗(yàn)證,該系統(tǒng)識別顏色正確率高,而且方便實(shí)用,隨時(shí)可以更換圖片,可作為嬰幼兒識別顏色早教系統(tǒng),也方便為色盲癥患者提供顏色信息。FPGA純硬件實(shí)現(xiàn)的方式,設(shè)計(jì)靈活,有利于移植到其他FPGA系統(tǒng),也有利于發(fā)展為專業(yè)集成模塊。
圖10 筆觸碰藍(lán)色,數(shù)碼管顯示坐標(biāo),LCD顯示藍(lán)色
參考文獻(xiàn)
[1] 唐圣學(xué),劉波峰,徐東峰.基于模糊神經(jīng)網(wǎng)絡(luò)的顏色識別方法[J].傳感器技術(shù),2003,22(11):57?59.
[2] BOMBARDIER V, SCHMITT E, CHARPENTIER P. A fuzzy sensor for color matching vision system [J]. Measurement, 2009, 42(2): 189?201.
[3] 袁鋒偉,鄧騫,王玉林,等.基于PC的顏色識別與匹配系統(tǒng)的設(shè)計(jì)[J].南華大學(xué)學(xué)報(bào):自然科學(xué)版,2014,28(2):49?53.
[4] 盧川英,于浩成,孫敬輝,等.基于TCS230傳感器的顏色檢測系統(tǒng)[J].吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2008,26(6):621?626.
[5] 祝長鋒.基于FPGA的實(shí)時(shí)圖像檢測技術(shù)的研究[D].鎮(zhèn)江:江蘇大學(xué),2008.
[6] 胡建民.顏色傳感器TCS230及顏色識別電路[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(4):40?42.
[7] 王鵬程,官洪運(yùn),許文杰,等.基于顏色識別的手指多點(diǎn)跟蹤人機(jī)交互系統(tǒng)[J].微型機(jī)與應(yīng)用,2012,31(1):76?78.
[8] 張松燦,肖本賢.高分辨率顏色傳感器TCS230的原理和應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005(3):44?46.
[9] 可榮碩,馬曉軍,張思博,等.基于RGB色彩空間的顏色識別系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010,26(5):46?47.
[10] 董靜,王立峰.顏色傳感器在人民幣紙幣識別系統(tǒng)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2014,33(9):42?44.
[11] 封岸松,戰(zhàn)仕成,汪瀅.基于FPGA的RGB到Y(jié)CrCb顏色空間轉(zhuǎn)換[J].現(xiàn)代電子技術(shù),2010,33(10):122?124.