1引言 圖像采集是數字圖像處理、圖像識別的基礎,其應用領域非常廣泛。傳統的圖像采集是采用圖像采集卡或視霸卡將CCD攝像機的模擬視頻信號經A/D采集、存儲后送計算機進行處理。這種方法使用普遍,技術比較成熟,但也存在一些問題。首先,CCD攝像機的輸出已轉換為模擬的NTSC或PAL制式并以SVideo或混合視頻信號方式輸出,這樣采集卡的采樣點在輸出時序上很難與攝像機的象素點一一對應,造成數字化后的視頻圖像質量損失較大,圖像分辨率也受制式限制。其次,這種方法的硬件電路復雜、成本較高,不利于推廣和普及使用。 CMOS圖像傳感器是近年發展起來的一種新型固體圖像傳感器,由于采用了相同的CMOS工藝,因此可以將象素陣列與驅動電路和信號處理電路集成在同一塊芯片上。而且,現在越來越多的CMOS圖像傳感器芯片將A/D集成進去,因此除了模擬視頻輸出外,還可直接輸出數字視頻信號和同步信號。這樣,利用CMOS圖像傳感器構成圖像采集系統時,傳統圖像采集卡的A/D就沒有必要了,而僅需設計適當的接口電路。由于圖像數據量比較大,必須選用可進行高速數據傳送的接口。PC機并口的數據傳輸速率最大可達2 MB/s,使用和編程控制也方便,作為圖像采集的接口是合適的。本文設計的系統正是基于這種思 路,圖像數據源選用有數字視頻輸出的CMOS圖像傳感器OV5017,PC機通過并口對OV5017進行圖像采集和控制。該系統實現了完整的圖像采集功能,在此基礎上通過在PC機上編寫相應軟件可完成后續的圖像處理和識別功能。本文先介紹OV5017和PC機并口,然后給出整個系統的硬件和軟件實現。 2CMOS圖像傳感器OV5017 2.1 OV5017的基本性能 OV5017是美國OmniVision公司開發的CMOS黑白圖像傳感器芯片,該芯片將CMOS傳感器技術與數字接口組合,用于視頻圖像應用。OV5017芯片的基本參數為: (1)單片1/4in視頻圖像傳感器,48pin,逐行掃描,內置8 b A/D。 (2)圖像尺寸4.2 mm×3.2 mm,象素尺寸11μm×11μm,象素數384×288 (3)幀頻50~0.5 Hz,曝光設定:1~1/100幀。 (4)信噪比(S/N)>42 dB。 (5)幀頻50 Hz、焦距1.4時,最小照度為0.5 lx。 OV5017輸出模擬視頻信號,格式為逐行掃描。OV5017內部嵌入了一個8 b的A/D,因而可以同步輸出8 b的數字視頻流D7~D0。在輸出數字視頻流的同時,還提供象素時鐘PCLK、水平參考信號HREF、垂直同步信號VSYNC,便于外部電路同步讀取圖像。 2.2OV5017的編程功能 OV5017具有豐富的編程控制功能,其圖像幀頻、曝光時間、增益控制、Gamma校正、圖像開窗等均可通過對芯片內部寄存器的讀寫進行設置。芯片內部有11個8 b寄存器,通過對地址線A3~A0的設置來選擇寄存器,通過讀寫數據線D7~D0來讀取或設置寄存器。在對寄存器進行讀(或寫)時,應使片選CSB與輸出使能OEB(或寫使能WEB)有效。 在本系統中需設置的寄存器有2個。地址號10xx的寄存器為視頻數據端口VPort,他是只讀的,當選中并讀取他時,芯片向外輸出數字視頻流。地址號0100的寄存器為幀頻控制寄存器FRCTL,他是讀寫的,幀頻可設置在50~0.5 Hz之間。 2.3數字圖像的輸出 數字視頻流的輸出必須通過對芯片內視頻數據端口VPORT的讀取才能實現。其步驟為: (1)設置地址總線A3~A0為10xx; (2)使能片選CSB(置低電平)與輸出使能OEB(置低電平)。 則芯片輸出數字視頻流和VSYNC,HREF,PCLK同步信號。 3計算機并行接口 在計算機接口種類日新月異的今天,計算機并口作為一種傳統的接口,因為其應用的廣泛性和靈活性,仍然在設備控制、數據采集等領域有著廣泛的應用。下面對PC機并口常用的數據傳輸模式和并口寄存器做一介紹。 3.1并口常用的3種數據傳輸模式 (1)SPP 早期PC機的并口是基于Centrionics打印機接口設計的,他的數據口只能單向傳輸(PC輸出數據),數據輸入只能靠讀取4位的狀態口,數據傳輸速率最大不超過250 kb/s。這種標準被稱為標準并行接口(StandardParallelPort)。 (2)EPP EPP(Enhanced ParallelPort,增強型并行接口)協議最早是由Intel,Xicrom和Zenith Data System聯合設計的,并于1994年在IEEE1284標準中發布了EPP1.7標準。該協議為PC和外設之間定義了雙向通信的標準。目前EPP有2個標準,EPP1.7和EPP1.9,2個標準之間有一定的差別。EPP接口與傳統并行口Centronics完全兼容,但與Centronics利用軟件實現握手不同,EPP接口協議通過硬件自動握手,能達到500k~2M B/s的通信速率。本系統并口即采用EPP模式。 (3)ECP ECP(Extended Capabilities Port,擴展功能接口)是由HP和Microsoft首先推出的。同EPP一樣,ECP也是雙向接口,并能以ISA總線速度傳輸數據。ECP有緩沖區,支持DMA傳輸和數據壓縮,尤其適用打印機、掃描儀及其他需大塊數據傳輸的外設。 3.2并口寄存器 并口中有3個可訪問的寄存器:數據端口(DATA)、狀態端口(STATUS)和控制端口(CONTROL),他們的偏移地址分別為00h,01h和02h,基地址由FDC37C935的配置寄存器選定。常用標準并口的3個連續地址為:378h(278h),379h(279h)和37Ah(27Ah)。EPP和ECP在此基礎上為每一接口保留附加地址,在附加地址上添加5個和3個寄存器。 4系統分析 系統的設計和實現必須充分分析OV5017和PC并口的性能特點。OV5017象素數為384×288,每一個象素占1個字節(8 b),故完整的一幀圖像為384×288≦110 kb。52OV5017具有可編程的特點,幀頻可在50~0.5 Hz內改變。如果圖像采集系統OV5017的幀頻設置為默認的最大值50 Hz,那么要求并口的數據傳輸速率至少應大于50×110 kb/s=5.5 Mb/s,已遠遠超過并口的最大數據傳輸速率(2 Mb/s)。 實際的情況由于是對圖像數據進行采集,還應考慮幀、行和象素同步的問題,即需要檢測VSYNC,HREF,PCLK信號,以保證同步。上述3種信號的頻率成一定的比例,其中PCLK的頻率最高,在幀頻50 Hz下為1/2XCLK(即7.159 MHz),顯然也超過并口的最大數據傳輸速率。 要實現PC機并口直接對OV5017的圖像數據進行采集,解決的辦法只有一個:降低OV5017的幀頻。那么幀頻究竟應設置為多大,或者說系統能達到的最大幀頻為多大,這主要取決于PC機并口適配器的最大數據傳輸速率。 一般的PC機主板沒有提供并口的這個參數,這里筆者給出一種自己探索出、行之有效的測量并口最大數據傳輸速率的簡單方法。用VC(或Turbo C等其他編程語言)寫一段小程序,程序內可包含N個連續的_inp(dport),其中_inp()為讀I/O口的函數,dport為并口數據端口的地址。通過測量這N個_inp(dport)執行的時間,除以N就得到讀并口一次的時間。執行這段程序前需要將中斷關掉,執行完后再開中斷(在VC中可嵌入_asm{cli}和_asm{sti})。以筆者的PC為例,實測執行一條_inp(dport)的時間為1μs,即是說該PC并口的最大數據傳輸速率在1 Mb/s左右。在該PC機上編寫的采集圖像數據的程序中,讀一個象素(1個字節)需要1μs,在讀之前需讀PCLK狀態也要1μs,再加上一定必要的余量(大概在1μs),一共讀一個象素字節需要3μs左右,因此OV5017 PCLK設置的周期應大于等于3μs。即PCLK最大頻率不能超333.3 kHz,相應幀頻VSYNC不超過2.328 Hz。筆者的PC在OV5017幀頻2 Hz下采集圖像,運行正常。 從上面分析可以知道,在本系統中,對OV5017的訪問有3個,一是設置地址號0100的幀頻控制寄存器FRCTL,第二個為設置地址號10xx的視頻數據寄存器,最后為讀數據線D0~D7及同步信號。結合OV5017的寄存器寫和讀連續視頻數據的時序,可以看出僅需對OV5017的A3,A2,OEB進行控制,而A1,A0,CSB和WEB可全部置0,以節約并口本不多的控制線的資源。 5系統硬件組成和工作原理 基于OV5017的計算機并口圖像采集系統的硬件組成,主要由OV5017,數據緩沖器74LS245,DB25并口和PC機組成。 系統工作原理是: 首先設置OV5017的幀頻。PC機并口控制端口的STROBE,INIT,AUTOFD輸出1,0,1分別設置OV5017的OEB,A3,A2,以選中OV5017的幀頻寄存器FRCTL。同時,并口控制端口的SELIN控制一個74LS245的DIR位為0,使數據緩沖器的數據傳輸方向為B到A。然后PC從并口的D0~D7輸出數據(幀頻參數)到OV5017的D0~D7。這樣幀頻參數就寫入到FRCTL中,OV5017的幀頻被設置。 接著準備讀OV5017的視頻數據寄存器VPORT。PC控制OEB,A3,A2分別為0,1,0,以選中VPORT,這時OV5017輸出視頻數據流和同步信號。同時將DIR設為1,以使OV5017的視頻數據流傳送到PC。 最后由PC機讀入視頻數據。PC并口的控制端口保持不變,由狀態端口的ERROR,ACK,SLCT分別檢測VSYNC,HREF,PCLK同步信號,由數據端口D0~D7讀入8位數據。這樣PC機就可以采集到完整的一幀圖像數據。 6系統軟件設計 6.1PC機BIOS設置 從上述分析知道,并口要完成數據的雙向傳輸,數據傳輸速率要求很高,SPP模式顯然不行,可選用EPP模式。方法是:進入PC機的BIOS設置,在外圍設備/并口方式(PeripheralSetup/ParallelPortMode)中設置為EPP。 6.2圖像采集軟件的編寫 PC機上的圖像采集軟件是用VisualC++6.0開發的。Microsoft的VisualC++是在Windows環境下開發應用程序的一種功能強大、使用非常廣泛的可視化編程工具。更為重要的是,關于VC的圖像處理和圖像識別的各種軟件、程序、算法、資料的豐富更是其他各種編程語言無法相比的,這一點也是采用VC的重要原因之一。 軟件的核心是圖像數據的采集,在此前需對OV5017進行初始化(主要是設置幀頻控制寄存器和視頻數據寄存器)。程序中對并口的讀操作為函數_inp(),寫操作為函數_outp()。在此基礎上可以擴展連續采集圖像、圖像處理、圖像識別等功能。 7結語 該系統充分利用了OV5017具有數字視頻輸出和可變幀頻的特點,以及PC機并口高速數據傳輸的能力,因此硬件電路簡潔,軟件編程容易,可稱得上是“單芯片的圖像采集系統”。該系統可以應用在一些低幀速的圖像采集和處理系統中(例如選票識別、汽車牌照識別等)。筆者已將他用于選票自動識別系統中,效果比較理想。系統不足之處是幀速較低,不能應用在要求高幀速的應用中。改進的辦法包括在接口電路中加入圖像壓縮功能,盡量采用高速的并口以及加入圖像緩存等。 |