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