引言
飛思卡爾智能車比賽已經(jīng)成功舉辦4屆,以攝像頭為主要傳感器的參賽隊(duì)伍大多數(shù)選用了模擬CCD或模擬CMOS攝像頭,。本文介紹了數(shù)字式CMOS 攝像頭MT9M011的性能特點(diǎn)和工作方式,,給出了MT9M011在基于HCSl2單片機(jī)的智能車控制系統(tǒng)中的應(yīng)用方案,并分析了數(shù)字?jǐn)z像頭的優(yōu)勢(shì)和不足,。
1 CMOS圖像傳感器的特點(diǎn)
CMOS圖像傳感器可通過CMOS技術(shù)將像素陣列與外圍支持電路(如圖像傳感器核心,、單一時(shí)鐘、所有的時(shí)序邏輯,、可編程功能和A/D轉(zhuǎn)換器)集成在同一塊芯片上,。與CCD(電容耦合器件)圖像傳感器相比,CMOS圖像傳感器將整個(gè)圖像系統(tǒng)集成在一塊芯片上,,具有體積小、重量輕,、功耗低,、編程方便、易于控制等優(yōu)點(diǎn),;同時(shí),,可通過I2C、SPI等接口配置其曝光時(shí)間,、增益控制等功能,,可控性強(qiáng)。因此,,CMOS圖像傳感器的應(yīng)用已經(jīng)變得越來越廣泛,。
2 MT9M011的性能特點(diǎn)與工作方式
2.1 MT9M011的基本參數(shù)
MT9M011是一款:Mieron公司推出的RGB三基色的130萬像素?cái)?shù)字式CMOS攝像頭,具有可編程控制及數(shù)字信號(hào)輸出等功能,。其輸出為Bayer彩色格式,,圖像尺寸為4.6 mm×3.7 mm,像素尺寸為3.6 μm×3.6 μm,,最大分辨率為1 280×1 024,,支持的最高時(shí)鐘頻率為25MHz;A/D轉(zhuǎn)換精度為10位,,最大信噪比為44 dB,,在最高分辨率模式下功耗為129 mW,。
MT9M011輸出為逐行掃描的數(shù)字信號(hào),通過內(nèi)嵌的10位ADC將模擬視頻信號(hào)采樣量化后同步輸出10位數(shù)據(jù)流,。同時(shí),,MT9M011還提供像素時(shí)鐘(PIXCLK)、行有效信號(hào)(LVAL),、幀有效信號(hào)(FVAL),,以及配置MT9M011所需的I2C協(xié)議引腳SCLK和SDAT。
2.2 MT9M011的編程功能
MT9M011有25個(gè)寄存器,,涉及攝像頭的各個(gè)方面,,通過與I2C兼容的串行總線時(shí)序讀寫。結(jié)合智能車競(jìng)賽應(yīng)用重點(diǎn)介紹以下寄存器:
?、傩衅鹗技拇嫫?Ox01)和列起始寄存器(Ox02),。這兩個(gè)寄存器決定輸出圖像的起始點(diǎn)坐標(biāo)。利用這兩個(gè)寄存器可以軟件調(diào)節(jié)攝像頭采集到的圖像整體位置,。
?、谛袑挾燃拇嫫?0x03)和列寬度寄存器(Ox04)。MT9M011的一大特色就是輸出數(shù)據(jù)的圖像大小可以任意調(diào)整,。通過這兩個(gè)寄存器可以針對(duì)當(dāng)前的應(yīng)用環(huán)境(即賽道)設(shè)置合適的圖像范圍,。
③曝光時(shí)間寄存器(Ox09),。該寄存器的值決定了攝像頭采集一幀圖像時(shí)感光元器件的感光時(shí)間,。通過調(diào)整該寄存器值的大小可以直接調(diào)整圖像的成像質(zhì)量。
?、軘?shù)據(jù)讀取模式寄存器(Ox20),。該寄存器可以使輸出的行數(shù)據(jù)和列數(shù)據(jù)減少至1/2或者1/4,也可以使輸出的圖像鏡面對(duì)稱,。
?、菰鲆嬖O(shè)置寄存器。它又包含Greenl分量增益設(shè)置寄存器(Ox2B),、Blue分量增益設(shè)置寄存器(Ox2C),、Red分量增益設(shè)置寄存器 (Ox2D)、Green2分量增益設(shè)置寄存器(Ox2E)和全局增益設(shè)置寄存器(Ox2F)5個(gè)寄存器,。由于RGB分量對(duì)同一光源表現(xiàn)出不同的數(shù)值,,因此需要針對(duì)不同的光源情況分別調(diào)整前4個(gè)寄存器的值,而這也是這款攝像頭最大的缺點(diǎn),。
2.3 MT9M011的數(shù)字圖像輸出
2.3.1 Bayer彩色格式輸出
MT9M011的輸出為Bayer彩色格式(Bayer color pattern),。這種輸出格式直接將濾波陣列上每一個(gè)像素點(diǎn)對(duì)應(yīng)的保留基色模擬電平值,通過A/D轉(zhuǎn)換后按時(shí)序先后輸出,。圖1展示了這種輸出格式對(duì)應(yīng)的局部像素點(diǎn)陣,。其中,,黑色像素點(diǎn)為輸出有效數(shù)據(jù)的第一個(gè)點(diǎn)。
2.3.2 MT9M011的輸出信號(hào)時(shí)序
像素?cái)?shù)據(jù)輸出時(shí)序和幀與行有效信號(hào)時(shí)序分別如圖2和圖3所示,。像素時(shí)鐘與主時(shí)鐘同頻,,在一幀圖像開始輸出時(shí)幀有效信號(hào)由低電平變?yōu)楦唠娖剑粠敵鼋Y(jié)束時(shí)由高電平變?yōu)榈碗娖?;而行有效信?hào)則在一行數(shù)據(jù)輸出有效時(shí)由低電平變?yōu)楦唠娖?,一行?shù)據(jù)輸出完成后由高電平變?yōu)榈碗娖健8鶕?jù)MT9M0ll的輸出信號(hào)時(shí)序就能正確地采集整幀圖像,。圖3中,,P為幀消隱區(qū),A為有效數(shù)據(jù)區(qū),,Q為行消隱區(qū),。
3 MT9M011在智能車控制系統(tǒng)中的應(yīng)用
3.1 硬件設(shè)計(jì)
MT9M011的電平是3.3 V,而HCSl2單片機(jī)系統(tǒng)的I/O電平是5 V,,因此需要通過電平轉(zhuǎn)換芯片將攝像頭輸出數(shù)據(jù)的電平提升到5V,。結(jié)合MT9M011的輸出信號(hào)時(shí)序關(guān)系和HCSl2單片機(jī)的特點(diǎn),本文利用HCSl2的 ECT模塊提取MT9M011的幀有效信號(hào)的上升沿,,采用ECT模塊對(duì)應(yīng)引腳的普通I/O口功能采集行有效信號(hào)的上升沿,。MT9M011的數(shù)據(jù)輸出信號(hào)有 10位,鑒于賽道環(huán)境相對(duì)簡(jiǎn)單,,只截取高8位作為攝像頭信號(hào)輸出,,既可以保證圖像分辨率,又可節(jié)省HCSl2的存儲(chǔ)空間,。HCSl2單片機(jī)本身帶有一個(gè)標(biāo)準(zhǔn)的I2C模塊,直接使用這個(gè)模塊與MT9M011的SCLK和SDAT相接,。
3.2 軟件設(shè)計(jì)
3.2.1 HCSl2單片機(jī)I2C模塊配置
HCSl2單片機(jī)提供標(biāo)準(zhǔn)的I2C模塊,,SCLK引腳能產(chǎn)生多種時(shí)鐘頻率,支持主從模式,,設(shè)有多種標(biāo)志位以供查詢,。初始化I2C模塊時(shí)需要完成以下工作:
①設(shè)置IBFD寄存器,,使產(chǎn)生的SCLK信號(hào)能夠?qū)T9M011進(jìn)行正常的配置,;
②設(shè)置IBEN寄存器位,,使能I2C模塊,;
③設(shè)置IBCR,,確定I2C模塊的主,、從模式,,收、發(fā)模式以及是否使能中斷功能等,。
3.2.2 MT9M011圖像數(shù)據(jù)采集
受限于單片機(jī)時(shí)鐘的約束關(guān)系,,HCSl2的通用I/O口無法檢測(cè)攝像頭像素時(shí)鐘信號(hào)跳變,本文采取以固定周期采集一行數(shù)據(jù)的方法,。因此,,采集像素?cái)?shù)據(jù)的關(guān)鍵是準(zhǔn)確地采集幀有效信號(hào)的上升沿和行有效信號(hào)的上升沿。選用的方案是:使用HCSl2單片機(jī)的ECT模塊采集幀有效信號(hào)的上升沿,,使用ECT 模塊普通端口模式采集行有效信號(hào)的上升沿,。
采集對(duì)象要求縱、橫分辨率都不能過低,,而HCSl2內(nèi)部存儲(chǔ)空間有限,,無法為高分辨率提供有利支持。針對(duì)這一矛盾,,利用一個(gè)像素
與其周圍點(diǎn)的值的關(guān)聯(lián)性,,以及攝像頭所具有的隔行和隔列輸出功能進(jìn)行跳采集。確定了1 280x 480的分辨率和行列均跳4行采集的模式,,
同時(shí)軟件上再進(jìn)行一次隔行采集,,最終可得80×60=4 800個(gè)像素?cái)?shù)據(jù)。采集數(shù)據(jù)的流程如圖4所示,。
3.2.3 采集圖像時(shí)遇到的問題及解決方法
(1)攝像頭晶振的選擇
MT9M011晶振的選擇是一個(gè)很重要的問題,,如果一幀圖像的時(shí)間超過20 ms,就無法體現(xiàn)它的主要優(yōu)勢(shì),。同時(shí),,也要考慮到HCSl2單片機(jī)的限制,HCSl2的總線頻率最大可達(dá)到32 MHz,,而在此條件下如果MT9M011的晶振選取過大,,則每一行采集到的點(diǎn)數(shù)過少。
通過式(1)可計(jì)算出MT9M011輸出一幀圖像所需的時(shí)間:
式中:ColNum+HBlanking和RowNum+VBlanking分別表示包含空白數(shù)據(jù)的總列數(shù)和總行數(shù),;fcamera表示攝像頭晶振頻率,,在一幀圖像大小已經(jīng)確定的情況下,該值越大則一幀時(shí)間越短,。
通過式(2)可計(jì)算出單片機(jī)一行采集像素點(diǎn)的個(gè)數(shù):
式中:RowPixNum表示一行能采集到的數(shù)據(jù),;ColNum表示每一行中輸出的像素?cái)?shù)據(jù)個(gè)數(shù);Tcamera是攝像頭晶振,,fcamera 的倒數(shù),;Cycle表示一個(gè)采集周期使用的機(jī)器周期數(shù),在整個(gè)采集過程中固定不變的,;fbus表示單片機(jī)的總線周期,。從式(2)可知,,在fbus一定的情況下,camera越小,,則一行采集到的數(shù)據(jù)就越少,,這樣不利于數(shù)據(jù)分析。
綜合考慮,,最終確定使用8 MHz的晶振作為MT9M011的時(shí)鐘,,而采用16 MHz晶振作為HCSl2的時(shí)鐘,單行采集80個(gè)點(diǎn),,可滿足路徑識(shí)別的需要,。
(2)攝像頭曝光時(shí)間和增益的設(shè)置問題MT9M011是一款RGB三基色的彩色攝像頭,采集到的數(shù)據(jù)為Bayer彩色格式,。由于提取的是賽道上的黑線信息,,圖像環(huán)境相對(duì)簡(jiǎn)單,因此這里直接將每一個(gè)分量的值作為該點(diǎn)像素的灰度值處理,。
如圖5(a)所示,,在使用默認(rèn)曝光時(shí)間和增益時(shí)采集得到的圖像有明顯的隔行噪聲效應(yīng),而且在一行間也有明顯的干擾噪聲存在,。這是因?yàn)橥还庠磳?duì)于RGB三種分量所體現(xiàn)出的數(shù)值不同,,直接將其當(dāng)作灰度值處理會(huì)產(chǎn)生恢復(fù)的圖像不均勻、噪聲大的現(xiàn)象,。解決辦法是通過多次
實(shí)踐調(diào)整攝像頭的曝光時(shí)間和RGB每個(gè)分量的增益值,,使3個(gè)分量在同一光源下反應(yīng)出的數(shù)值基本一致。經(jīng)過調(diào)整后得到的圖像如圖5(b)所示,。
4 數(shù)字式CMOS攝像頭與模擬攝像頭比較
數(shù)字式CMOS攝像頭MT9M011最大的優(yōu)勢(shì)在于節(jié)約時(shí)間,。選用合適的晶振及圖像大小能將整個(gè)小車控制周期限制在20ms左右。筆者曾經(jīng)做過實(shí)驗(yàn),,選用20MHz的晶振作為攝像頭時(shí)鐘,,將單片機(jī)倍頻到32 MHz。在這種條件下,,一個(gè)控制周期的反應(yīng)時(shí)間甚至能縮短到4ms左右,與模擬攝像頭的40 ms一幀圖像相比有明顯的優(yōu)勢(shì),。MT9M011的另一個(gè)優(yōu)勢(shì)是圖像大小可以任意設(shè)置,,因此筆者可以軟件調(diào)整圖像的大小和視野的高度,且MT9M011與單片機(jī)接口簡(jiǎn)單,,很大程度上減輕了硬件負(fù)擔(dān),。
MT9M011在智能車比賽應(yīng)用中也具有一些缺點(diǎn)。它不能自動(dòng)適應(yīng)各種光源,,需要人工進(jìn)行調(diào)整,;同時(shí),,它的動(dòng)態(tài)特性不如CCD攝像頭好,這點(diǎn)可以通過提高攝像頭晶振時(shí)鐘來縮短采集周期解決,。
結(jié)語
本文介紹了數(shù)字式CMOS攝像頭MT9MOll在基于HCSl2單片機(jī)的智能車中的應(yīng)用,,并針對(duì)數(shù)字?jǐn)z像頭與模擬攝像頭的各自特點(diǎn)進(jìn)行了比較。實(shí)踐表明,,選用數(shù)字式CMOS攝像頭作為智能車路徑識(shí)別傳感器是可行的,。