高分辨率顏色傳感器TCS230的原理和應(yīng)用
摘 要:以CCD作為圖像傳感器,以CPLD作為圖像采集系統(tǒng)的控制核心,以DSP作為基本圖像處理單元,實(shí)現(xiàn)了圖像自動(dòng)采集處理系統(tǒng),完成了圖像的快速采集、存儲(chǔ)及數(shù)據(jù)處理。不僅對(duì)系統(tǒng)的硬件設(shè)計(jì)和軟件設(shè)計(jì)進(jìn)行了討論,而且對(duì)應(yīng)用的算法也進(jìn)行了簡(jiǎn)單的介紹。
關(guān)鍵詞:CPLD CCD A/D DSP 圖像處理
CCD是一種光電轉(zhuǎn)換式圖像傳感器。它利用光電轉(zhuǎn)換原理把圖像信息直接轉(zhuǎn)換成電信號(hào),這樣便實(shí)現(xiàn)了非電量的電測(cè)量。同時(shí)它還具有體積小、重量輕、噪聲低、自掃描、工作速度快、測(cè)量精度高、壽命長(zhǎng)等諸多優(yōu)點(diǎn),因此受到人們的高度重視,在精密測(cè)量、非接觸無(wú)損檢測(cè)、文件掃描與航空遙感等領(lǐng)域中,發(fā)揮著重要的作用[1]。對(duì)被測(cè)圖像信息進(jìn)行快速采樣、存儲(chǔ)及數(shù)據(jù)處理,是線陣CCD數(shù)據(jù)采集發(fā)展的新方向。尋找滿足要求的處理器已成當(dāng)務(wù)之急。DSP(數(shù)字信號(hào)處理器)是一種具有高速性、實(shí)時(shí)性和豐富的芯片內(nèi)部資源的處理器,它的出現(xiàn)為人們解決了這個(gè)難題。為了節(jié)約成本、減少體積,本文用CPLD控制圖像的讀入,以TMS320VC5402 DSP作為處理器,并結(jié)合CA3318CE A/D轉(zhuǎn)換器介紹一種CCD圖像采集處理系統(tǒng)的設(shè)計(jì)方法。根據(jù)課題研究,將此系統(tǒng)應(yīng)用于手寫體數(shù)字的采集和識(shí)別中。如果配以適當(dāng)?shù)墓鈱W(xué)系統(tǒng),便可以實(shí)現(xiàn)光-機(jī)-電-算一體化設(shè)計(jì)。
1 系統(tǒng)概述
本系統(tǒng)主要由線陣CCD、ADC、DSP、可編程邏輯器件CPLD等幾部分組成。待輸入圖像經(jīng)光源照明后,經(jīng)物鏡成像在CCD光敏元件陣列上,CCD通過(guò)驅(qū)動(dòng)電路完成一次Y方向的自掃描。在控制電路的作用下,CCD輸出信號(hào)進(jìn)行濾波放大處理,并經(jīng)A/D轉(zhuǎn)換電路進(jìn)行數(shù)字化處理。一行圖像數(shù)據(jù)通過(guò)數(shù)據(jù)通道進(jìn)入幀存儲(chǔ)器。以上操作與CCD自掃描同步進(jìn)行,不受CPU的控制。隨后,控制電路啟動(dòng)步進(jìn)電機(jī),帶動(dòng)進(jìn)紙機(jī)構(gòu)移動(dòng)到下一采樣位置,CCD又進(jìn)行Y方向的自掃描,并重復(fù)上述過(guò)程,輸入第二行的數(shù)據(jù),直至整幅畫面輸入完畢。DSP讀取存儲(chǔ)器存儲(chǔ)的處理數(shù)據(jù),并根據(jù)用戶的要求將處理結(jié)果上傳給主機(jī)供用戶使用。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
2 基本硬件組成
2.1 線陣CCD傳感器
本系統(tǒng)采用TCD1208AP線陣CCD作為圖像傳感器。TCD1208AP是日本TOSHIBA公司生產(chǎn)的線陣CCD傳感芯片,具有2160個(gè)像元,像元尺寸及間距為14μm×14μm;TCD1208AP具有靈敏度高、暗電流低等特點(diǎn),工作電壓為單一的5V,是二相輸出的線陣CCD器件。主要用于通信傳真、圖像掃描、光學(xué)字符閱讀機(jī)等場(chǎng)合。TCD1208AP傳感器共需要四個(gè)5V的驅(qū)動(dòng)時(shí)鐘(SH、RS、Ф1、Ф2)。時(shí)序圖如圖2所示。
圖2 TCD1208AP 傳感器時(shí)序圖
2.2 放大濾波及A/D轉(zhuǎn)換
TCD1208AP傳感器輸出信號(hào)OS有以下特點(diǎn):
·負(fù)極性信號(hào)
·包含有周期性的復(fù)位脈沖串?dāng)_
·有效信號(hào)幅值較小
CCD輸出信號(hào)的上述特點(diǎn)決定了它不能直接送入A/D轉(zhuǎn)換器,必須先從硬件上對(duì)其進(jìn)行一系列的預(yù)處理,消除信號(hào)中的驅(qū)動(dòng)脈沖(主要是復(fù)位脈沖)及噪聲等所造成的干擾,因此需將信號(hào)進(jìn)行前置反向、濾波及放大。在電路設(shè)計(jì)中,選用一片CA3450運(yùn)算放大器進(jìn)行反向、放大;并在CA3450的輸出端接一級(jí)RC濾波器濾除噪聲。經(jīng)過(guò)上述處理的信號(hào)就可以被送入A/D轉(zhuǎn)換器進(jìn)行數(shù)字化處理。8位、高速、并行閃速結(jié)構(gòu)的A/D轉(zhuǎn)換芯片(CA3318CE)的轉(zhuǎn)換速率(最大為15MHz)完全可以滿足CCD(1MHz)的工作要求,利用A/D轉(zhuǎn)換技術(shù)將信號(hào)轉(zhuǎn)換成與之相應(yīng)的、能夠反應(yīng)圖像灰度變化的數(shù)字量,提高了測(cè)量精度和分辨率。當(dāng)CA3318CE的輸出使能有效時(shí),就可以將A/D轉(zhuǎn)換結(jié)果送至8位數(shù)據(jù)線上。這樣,在數(shù)據(jù)存儲(chǔ)器寫允許及地址有效的前提下,就能將數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)器SRAM中。
2.3 可編程邏輯電路CPLD
CPLD的主要作用有:用來(lái)控制CCD的驅(qū)動(dòng)時(shí)鐘、各種同步控制時(shí)鐘(A/D轉(zhuǎn)換,數(shù)字信號(hào)存取)以及存儲(chǔ)器地址的產(chǎn)生。合適的CPLD是根據(jù)實(shí)際需要在實(shí)驗(yàn)過(guò)程中選定的,在設(shè)計(jì)中選用了ALTERA公司的MAX7000系列芯片EPM7128S,該系列芯片是典型的通過(guò)JTEG在線編程的CPLD器件。外部時(shí)鐘信號(hào)作為CPLD的基準(zhǔn)信號(hào),其它時(shí)序信號(hào)的產(chǎn)生都是以此為基礎(chǔ)的。
2.4 步進(jìn)機(jī)構(gòu)
線性CCD是逐行掃描的,要想得到清晰的圖像,對(duì)步進(jìn)機(jī)構(gòu)的速度是有要求的。步進(jìn)機(jī)構(gòu)應(yīng)該勻速運(yùn)動(dòng),其速度必需和掃描速度保持一致。影響水平方向分辨率的主要原因是轉(zhuǎn)動(dòng)電機(jī)的轉(zhuǎn)速。雖然轉(zhuǎn)速越高,越節(jié)省時(shí)間,但是掃描間隔卻相應(yīng)增大,分辨率下降;轉(zhuǎn)速越低,則分辨率越高。
2.5 TMS320VC5402處理器
TMS320VC5402是定點(diǎn)數(shù)字信號(hào)處理器,體系結(jié)構(gòu)為哈佛結(jié)構(gòu),具有先進(jìn)的多總線結(jié)構(gòu),40位算術(shù)邏輯單元(ALU)包括一個(gè)40位桶形移位寄存器和兩個(gè)40位累加器,數(shù)據(jù)/程序?qū)ぶ房臻g為64K/1MB,內(nèi)置16KB的RAM和4KB的ROM,有兩個(gè)緩沖串口。另外,它還提供DMA方式和多種片內(nèi)外設(shè),操作速度最高為100MIPS。
3 系統(tǒng)的硬件設(shè)計(jì)
3.1 CPLD控制信號(hào)
根據(jù)驅(qū)動(dòng)脈沖時(shí)序關(guān)系確定時(shí)鐘驅(qū)動(dòng)信號(hào)SH、Φ1、Φ2和RS的參數(shù)。各路脈沖的技術(shù)指標(biāo)如下:RS=1MHz,占空比為1:3,方波;Φ1=Φ2=0.5MHz,占空比為 1:1,方波,Φ1、Φ2在并行轉(zhuǎn)移時(shí)是一個(gè)大于SH=1持續(xù)時(shí)間的寬脈沖;在SH的光積分時(shí)間內(nèi),至少有2212個(gè)RS脈沖。在設(shè)計(jì)中,SH波形采用計(jì)數(shù)器的形式進(jìn)行設(shè)計(jì)。Φ1、Φ2、RS的波形由分頻產(chǎn)生。行同步信號(hào)Фc與SH同周期,利用Фc的上升沿使A/D轉(zhuǎn)換器進(jìn)入工作狀態(tài)(Фc為低電平時(shí),A/D轉(zhuǎn)換無(wú)法啟動(dòng)),它的上升沿對(duì)應(yīng)CCD輸出信號(hào)的第一個(gè)有效像素。SP是像元同步信號(hào),它的脈沖頻率是復(fù)位信號(hào)RS的整數(shù)倍。為了保證CCD輸出、A/D轉(zhuǎn)換、地址發(fā)生三者同步,將CCD驅(qū)動(dòng)電路的RS與ADC的時(shí)鐘CLK相連,存儲(chǔ)器的寫允許端與ADC的允許端相連。部分設(shè)計(jì)程序如下:
PROCESS(CLK,RESET)
BEGIN
IF RESET=‘1’ THEN CNTB<=0;
ELSE
IF CLK´EVENT AND CLK=‘1’ THEN
IF CNTB>2212 THEN CNTB<=0;
ELSE CNTB<=CNTB+1;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(RESET,CNTB)
BEGIN
IF RESET=´1´ THEN SH<=´1´;
ELSE
CASE CNTB IS
WHEN 0 TO 2212=> SH<=‘0’;
WHEN OTHERS=> SH<=‘1’;
END CASE;
END IF;
END PROCESS;
PROCESS(CLK,RESET)
BEGIN
IF RESET=‘1’ THEN CNT<=0;
ELSE
IF CLK´EVENT AND CLK=‘1’ THEN
IF CNT<5 THEN
CNT<=CNT+1;
ELSE CNT<=0;
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(CNT,RESET)
BEGIN
IF RESET=‘1’ THEN F1<=‘1’;F2<=‘0’;
ELSE
CASE CNT IS
WHEN 0 =>F1<=‘1’;F2<=‘0’;
WHEN 4 =>F1<=‘1’;F2<=‘0’;
WHEN 5 =>F1<=‘1’;F2<=‘0’;
WHEN OTHERS=> F1<=‘0’;F2<=‘1’;
END CASE;
END IF;
END PROCESS;
根據(jù)所要攝取圖像的數(shù)據(jù)量,選用三片IS61LV5128AL-12T SRAM(共1.5M),用來(lái)存放一幀圖像數(shù)據(jù)。它們的地址線和讀寫控制線是由CPLD提供的。
SRAM地址信號(hào)的產(chǎn)生是通過(guò)計(jì)數(shù)器實(shí)現(xiàn)的,這里將A/D轉(zhuǎn)換的時(shí)鐘同步信號(hào)作為計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號(hào)。每次采樣前,設(shè)初始地址為零,時(shí)鐘同步信號(hào)每出現(xiàn)一次下降沿,地址值加1。在采集完一幀數(shù)據(jù)時(shí)地址自動(dòng)復(fù)位。考慮到延時(shí)的問(wèn)題,數(shù)據(jù)信號(hào)與地址信號(hào)不能同時(shí)發(fā)生。如果寫信號(hào)一直有效,會(huì)造成同一地址存放不同的數(shù)據(jù),從而影響了輸出數(shù)據(jù)的正確性。針對(duì)這一問(wèn)題,在設(shè)置寫信號(hào)WR時(shí),檢測(cè)地址ADDR最后一位(ADDR[0])和時(shí)鐘同步信號(hào)的上升沿的變化。當(dāng)檢測(cè)到ADDR[0]變化時(shí),WR置低,說(shuō)明有效;當(dāng)檢測(cè)到時(shí)鐘同步信號(hào)上升沿到來(lái)時(shí),WR置高,此時(shí)無(wú)效。這樣每一位數(shù)據(jù)都能被寫入相應(yīng)的地址中。
在設(shè)計(jì)中,時(shí)序發(fā)生器產(chǎn)生的所有驅(qū)動(dòng)和控制時(shí)序信號(hào)都是在MUXPLUSII開(kāi)發(fā)環(huán)境下設(shè)計(jì)完成并經(jīng)編譯、校驗(yàn)后在線下載到CPLD器件內(nèi)部的??梢?jiàn),一片CPLD可以替代原來(lái)的幾十個(gè)分立元件來(lái)實(shí)現(xiàn)CCD圖像讀入系統(tǒng)中各種驅(qū)動(dòng)和控制時(shí)序邏輯,而且CPLD還允許設(shè)計(jì)編程保密位??傊捎肅PLD有利于減小系統(tǒng)電路板的面積、提高系統(tǒng)的安全保密性、降低系統(tǒng)功耗和保證產(chǎn)品的質(zhì)量。
3.2 DSP的控制信號(hào)
當(dāng)系統(tǒng)啟動(dòng)時(shí),DSP通知EPM7128S啟動(dòng)采集,采集完畢后DSP便可以訪問(wèn)SRAM中的數(shù)據(jù),并完成后繼的圖像處理工作。另外,在本系統(tǒng)中,DSP還有一個(gè)重要的功能,即負(fù)責(zé)控制SRAM的訪問(wèn)權(quán)。在系統(tǒng)中,ADC以及DSP都需要對(duì)SRAM進(jìn)行訪問(wèn),這必然會(huì)產(chǎn)生SRAM的訪問(wèn)爭(zhēng)用問(wèn)題。對(duì)于這一問(wèn)題是通過(guò)DSP來(lái)解決的。在采集圖像期間,DSP通過(guò)XF引腳控制緩沖/驅(qū)動(dòng)器SN74LVTH16244,使得采集期間ADC與SRAM導(dǎo)通,DSP與SRAM隔離;在處理數(shù)據(jù)期間,DSP與SRAM導(dǎo)通,ADC與SRAM隔離,這樣就解決了ADC、DSP對(duì)SRAM的使用權(quán)爭(zhēng)用問(wèn)題。
3.3 存儲(chǔ)空間擴(kuò)展
TMS320VC5402的數(shù)據(jù)尋址空間只有64K,而一幀圖像的存儲(chǔ)量達(dá)到1M多,由于硬件資源的限制和實(shí)時(shí)處理的要求,要存儲(chǔ)這么大的數(shù)據(jù),必須進(jìn)行存儲(chǔ)空間的擴(kuò)展。
所以在系統(tǒng)中,采用I/O空間擴(kuò)展。由于I/O空間全部是片外的,所以進(jìn)行擴(kuò)展后上述問(wèn)題得以解決。具體實(shí)現(xiàn)如下:首先將HPI端口通過(guò)硬件或軟件設(shè)置成通用I/O端口,然后把這些端口作為片選信號(hào)進(jìn)行空間擴(kuò)展。當(dāng)進(jìn)行尋址時(shí),首先在HPI的端口輸出相應(yīng)的片選信號(hào),然后在地址總線上輸出相應(yīng)的地址值,這樣就完成了數(shù)據(jù)的存儲(chǔ)和處理。
4 系統(tǒng)的軟件設(shè)計(jì)
單幀讀入識(shí)別過(guò)程如下:
(1)DSP發(fā)幀啟動(dòng)脈沖Fstart給CPLD,地址譯碼器和觸發(fā)器清零。
(2)CPLD接收Fstart。
(3)開(kāi)始行掃描,并將數(shù)字化后的信號(hào)存入SRAM。完成一行采集,發(fā)DMA信號(hào)給DSP。
(4)DSP接收到DMA信號(hào)后,啟動(dòng)步進(jìn)電機(jī)前進(jìn)。
(5)步進(jìn)電機(jī)到達(dá)一定位置時(shí),轉(zhuǎn)為(3)。
(6)一幀數(shù)據(jù)采集完畢時(shí),發(fā)中斷信號(hào)Ready給DSP,DSP讀取SRAM,處理數(shù)據(jù)。
(7)數(shù)據(jù)處理完,若有新頁(yè),則轉(zhuǎn)到(1)。
軟件流程圖如圖3所示。
圖3 軟件流程圖
5 識(shí)別算法
根據(jù)手寫體數(shù)字的特征,采用一種簡(jiǎn)單易行的識(shí)別算法。算法中主要包括圖像的預(yù)處理、特征提取和識(shí)別。
(1)二值化。二值化處理是將得到的灰度圖像轉(zhuǎn)化為二值數(shù)字圖像,本系統(tǒng)采用全局閾值法進(jìn)行二值化處理。
(2)平滑。由于平滑能夠去除孤立的噪聲、干擾,能平滑筆畫的邊沿,所以這是必不可少的預(yù)處理步驟。這里使用一種簡(jiǎn)單且行之有效的平滑方法——中值濾波方法。
(3)分割。圖像的分割是從圖像采集中所得到的整幅圖像中分出需要識(shí)別的數(shù)字圖像區(qū)和無(wú)用的背景圖像區(qū)。由于手寫體數(shù)字的限制,這里采用基于方框的查找法。
(4)規(guī)范化。為了便于對(duì)任意字符的特征提取,還要對(duì)字符進(jìn)行正規(guī)化處理。由于每個(gè)手寫數(shù)字的大小和在框內(nèi)相對(duì)位置的不同,不能直接進(jìn)行訓(xùn)練和識(shí)別,所以對(duì)處理后的點(diǎn)陣數(shù)據(jù)用基于重心的位置規(guī)范法進(jìn)行規(guī)范,使之成為16×16的點(diǎn)陣數(shù)據(jù)格式,為后續(xù)的處理所用。
(5)細(xì)化。本文采用并行細(xì)化算法[4]。該方法采用16種3×3的鄰域作為刪除模板“剝?nèi)?rdquo;圖像的最外層,同時(shí)又采用兩種3×4的鄰域作為恢復(fù)模板恢復(fù)被刪去的影響連續(xù)性的關(guān)鍵點(diǎn),從而達(dá)到每次迭代都能完全“剝?nèi)?rdquo;圖像的最外層而不破壞圖像連續(xù)性的目的。這種方法計(jì)算量小,所得骨架基本上位于圖像的中軸,端點(diǎn)無(wú)明顯的收縮,能滿足本文所用識(shí)別方法對(duì)細(xì)化結(jié)果的要求。
特征提取的主要任務(wù)是對(duì)預(yù)處理后的二進(jìn)制點(diǎn)陣數(shù)據(jù)進(jìn)行處理,提取出數(shù)字圖像中有關(guān)骨架、輪廓、拓?fù)浣Y(jié)構(gòu)、筆劃分布等方面的特征信息,再送給分類器。本文提取數(shù)字的離散余弦特征。
考慮到DSP芯片的程存空間及識(shí)別速度,本系統(tǒng)采用的是傳統(tǒng)的手寫體數(shù)字識(shí)別算法——BP網(wǎng)絡(luò)算法,對(duì)單個(gè)字符進(jìn)行識(shí)別。本文用了三層BP實(shí)現(xiàn)手寫體數(shù)字的高效率識(shí)別。輸入層來(lái)自數(shù)字的離散余弦特征,輸出層有10個(gè)單元,分別代表0~9這十個(gè)數(shù)字。在學(xué)習(xí)過(guò)程中,為了提高學(xué)習(xí)速率,對(duì)學(xué)習(xí)步長(zhǎng)η進(jìn)行了不斷的自適應(yīng)調(diào)節(jié)。 6 試驗(yàn)結(jié)果及經(jīng)驗(yàn)總結(jié)
經(jīng)過(guò)在測(cè)試集上測(cè)試,當(dāng)拒識(shí)率為3.10%時(shí),硬件識(shí)別系統(tǒng)的識(shí)別率達(dá)到94.52%,可靠性為97.54% ;當(dāng)拒識(shí)率為2.95%時(shí),硬件識(shí)別系統(tǒng)識(shí)別率達(dá)到了94.79%,可靠性為97.68%。可見(jiàn)此系統(tǒng)具有較好的性能。在試驗(yàn)過(guò)程中,總結(jié)出以下幾點(diǎn)經(jīng)驗(yàn):
(1)在設(shè)計(jì)時(shí)最好了解CPLD的內(nèi)部結(jié)構(gòu),這對(duì)邏輯設(shè)計(jì)和實(shí)現(xiàn)有很大幫助。
(2)使用的I/O超過(guò)80%或者資源利用率超過(guò)80%時(shí),布線的布通率將不能保證。
(3)算法盡可能簡(jiǎn)單,以提高圖像處理的速度。
本系統(tǒng)將圖像輸入、識(shí)別集成到一個(gè)系統(tǒng)中,很好地實(shí)現(xiàn)了圖像的快速采集、存儲(chǔ)及數(shù)據(jù)處理功能,具有一定的實(shí)用價(jià)值。對(duì)于高分辨率要求的圖像采集識(shí)別系統(tǒng)來(lái)說(shuō),本方法依然適用。在硬件方面,如果用TMS320VC6201代替TMS320VC5402,效果將更佳。在識(shí)別方法上,如果將本文的識(shí)別方法作為多級(jí)分類器的一類,和其它一些基于統(tǒng)計(jì)的方法,如外圍輪廓法、數(shù)學(xué)變換法等結(jié)合在一起,應(yīng)該能夠取得更好的識(shí)別效果。