??? 摘?要: 以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" title="A/D">A/D? DSP? 圖像處理
?
??? CCD是一種光電轉(zhuǎn)換式圖像傳感器,。它利用光電轉(zhuǎn)換原理把圖像信息直接轉(zhuǎn)換成電信號(hào),這樣便實(shí)現(xiàn)了非電量的電測(cè)量,。同時(shí)它還具有體積小,、重量輕、噪聲低,、自掃描,、工作速度快、測(cè)量精度高,、壽命長等諸多優(yōu)點(diǎn),,因此受到人們的高度重視,在精密測(cè)量,、非接觸無損檢測(cè),、文件掃描與航空遙感等領(lǐng)域中,發(fā)揮著重要的作用[1],。對(duì)被測(cè)圖像信息進(jìn)行快速采樣,、存儲(chǔ)及數(shù)據(jù)處理,是線陣" title="線陣">線陣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通過驅(qū)動(dòng)電路完成一次Y方向的自掃描。在控制電路的作用下,,CCD輸出信號(hào)進(jìn)行濾波放大處理,,并經(jīng)A/D轉(zhuǎn)換電路進(jìn)行數(shù)字化處理。一行圖像數(shù)據(jù)通過數(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ù)上述過程,,輸入第二行的數(shù)據(jù),直至整幅畫面輸入完畢,。DSP讀取存儲(chǔ)器存儲(chǔ)的處理數(shù)據(jù),,并根據(jù)用戶的要求將處理結(jié)果上傳給主機(jī)供用戶使用。系統(tǒng)結(jié)構(gòu)圖如圖1所示,。
?
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.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)過上述處理的信號(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的主要作用有:用來控制CCD的驅(qū)動(dòng)時(shí)鐘,、各種同步控制時(shí)鐘(A/D轉(zhuǎn)換,數(shù)字信號(hào)存?。┮约按鎯?chǔ)器地址的產(chǎn)生,。合適的CPLD是根據(jù)實(shí)際需要在實(shí)驗(yàn)過程中選定的,在設(shè)計(jì)中選用了ALTERA公司的MAX7000系列芯片EPM7128S,,該系列芯片是典型的通過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)" title="同步信號(hào)">同步信號(hào)Фc與SH同周期,利用Фc的上升沿" title="上升沿">上升沿使A/D轉(zhuǎn)換器進(jìn)入工作狀態(tài)(Фc為低電平時(shí),,A/D轉(zhuǎn)換無法啟動(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),,用來存放一幀圖像數(shù)據(jù)。它們的地址線和讀寫控制線是由CPLD提供的,。
??? SRAM地址信號(hào)的產(chǎn)生是通過計(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í)的問題,,數(shù)據(jù)信號(hào)與地址信號(hào)不能同時(shí)發(fā)生,。如果寫信號(hào)一直有效,會(huì)造成同一地址存放不同的數(shù)據(jù),,從而影響了輸出數(shù)據(jù)的正確性,。針對(duì)這一問題,在設(shè)置寫信號(hào)WR時(shí),,檢測(cè)地址ADDR最后一位(ADDR[0])和時(shí)鐘同步信號(hào)的上升沿的變化,。當(dāng)檢測(cè)到ADDR[0]變化時(shí),WR置低,,說明有效,;當(dāng)檢測(cè)到時(shí)鐘同步信號(hào)上升沿到來時(shí),WR置高,,此時(shí)無效,。這樣每一位數(shù)據(jù)都能被寫入相應(yīng)的地址中。
??? 在設(shè)計(jì)中,,時(shí)序發(fā)生器產(chǎn)生的所有驅(qū)動(dòng)和控制時(shí)序信號(hào)都是在MUXPLUSII開發(fā)環(huán)境下設(shè)計(jì)完成并經(jīng)編譯,、校驗(yàn)后在線下載到CPLD器件內(nèi)部的??梢?,一片CPLD可以替代原來的幾十個(gè)分立元件來實(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便可以訪問SRAM中的數(shù)據(jù),,并完成后繼的圖像處理工作,。另外,在本系統(tǒng)中,,DSP還有一個(gè)重要的功能,,即負(fù)責(zé)控制SRAM的訪問權(quán)。在系統(tǒng)中,,ADC以及DSP都需要對(duì)SRAM進(jìn)行訪問,,這必然會(huì)產(chǎn)生SRAM的訪問爭(zhēng)用問題,。對(duì)于這一問題是通過DSP來解決的,。在采集圖像期間,DSP通過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)用問題,。
3.3 存儲(chǔ)空間擴(kuò)展
??? TMS320VC5402的數(shù)據(jù)尋址空間只有64K,而一幀圖像的存儲(chǔ)量達(dá)到1M多,由于硬件資源的限制和實(shí)時(shí)處理的要求,,要存儲(chǔ)這么大的數(shù)據(jù),,必須進(jìn)行存儲(chǔ)空間的擴(kuò)展。
??? 所以在系統(tǒng)中,,采用I/O" title="I/O">I/O空間擴(kuò)展,。由于I/O空間全部是片外的,所以進(jìn)行擴(kuò)展后上述問題得以解決,。具體實(shí)現(xiàn)如下:首先將HPI端口通過硬件或軟件設(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í)別過程如下:
??? (1)DSP發(fā)幀啟動(dòng)脈沖Fstart給CPLD,,地址譯碼器和觸發(fā)器清零,。
??? (2)CPLD接收Fstart。
??? (3)開始行掃描,,并將數(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ù)處理完,,若有新頁,,則轉(zhuǎn)到(1)。
??? 軟件流程圖如圖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ū)和無用的背景圖像區(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)ァ眻D像的最外層,,同時(shí)又采用兩種3×4的鄰域作為恢復(fù)模板恢復(fù)被刪去的影響連續(xù)性的關(guān)鍵點(diǎn),,從而達(dá)到每次迭代都能完全“剝?nèi)ァ眻D像的最外層而不破壞圖像連續(xù)性的目的。這種方法計(jì)算量小,,所得骨架基本上位于圖像的中軸,端點(diǎn)無明顯的收縮,,能滿足本文所用識(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í)別,。輸入層來自數(shù)字的離散余弦特征,輸出層有10個(gè)單元,,分別代表0~9這十個(gè)數(shù)字,。在學(xué)習(xí)過程中,為了提高學(xué)習(xí)速率,,對(duì)學(xué)習(xí)步長η進(jìn)行了不斷的自適應(yīng)調(diào)節(jié),。
6 試驗(yàn)結(jié)果及經(jīng)驗(yàn)總結(jié)
??? 經(jīng)過在測(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%,。可見此系統(tǒng)具有較好的性能,。在試驗(yàn)過程中,,總結(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超過80%或者資源利用率超過80%時(shí),,布線的布通率將不能保證,。
??? (3)算法盡可能簡(jiǎn)單,以提高圖像處理的速度,。
??? 本系統(tǒng)將圖像輸入,、識(shí)別集成到一個(gè)系統(tǒng)中,很好地實(shí)現(xiàn)了圖像的快速采集,、存儲(chǔ)及數(shù)據(jù)處理功能,,具有一定的實(shí)用價(jià)值。對(duì)于高分辨率要求的圖像采集識(shí)別系統(tǒng)來說,,本方法依然適用,。在硬件方面,如果用TMS320VC6201代替TMS320VC5402,,效果將更佳,。在識(shí)別方法上,如果將本文的識(shí)別方法作為多級(jí)分類器的一類,和其它一些基于統(tǒng)計(jì)的方法,如外圍輪廓法,、數(shù)學(xué)變換法等結(jié)合在一起,應(yīng)該能夠取得更好的識(shí)別效果,。
參考文獻(xiàn)
1 王慶有.CCD應(yīng)用技術(shù)[M].天津:天津大學(xué)出版社,2000
2 TCD1208AP.? TOSHIBA Corp., 1997
3 TMS320VC5402 Fixed-point Digital Signal Processor. Texas?Instruments,1998
4 朱 江,,宣國榮. 一種基于骨架特征順序編碼的脫機(jī)手寫體數(shù)字識(shí)別方法[J].小型微型計(jì)算機(jī)系統(tǒng),,2001;22(8)
5 李 彩,劉 勇,,王 安. MAX7000S在線陣CCD數(shù)據(jù)采集卡中的應(yīng)用[J].量子電子學(xué)報(bào),2003;20(1)