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