国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的圖像編碼與采集系統(tǒng)

2018-04-07 19:10:24丁紅勝
電子設(shè)計(jì)工程 2018年5期
關(guān)鍵詞:內(nèi)存嵌入式攝像頭

王 坤,丁紅勝

(1.北京科技大學(xué)數(shù)理學(xué)院,北京100083;2.北京科技大學(xué)北京市弱磁檢測(cè)及應(yīng)用工程技術(shù)研究中心,北京 100083)

隨著機(jī)器視覺、模式識(shí)別等技術(shù)領(lǐng)域的發(fā)展,圖像處理技術(shù)與人們的生活息息相關(guān),在安防、醫(yī)療等各個(gè)領(lǐng)域都有著極其重要的作用。作為圖像處理的第一個(gè)重要環(huán)節(jié)便是圖像的顯示、編碼與采集工作。目前圖像采集的方案多種多樣,都有自己的適用領(lǐng)域。例如:采用ARM9+WinCE的圖像采集方案[1],但是WinCE嵌入式系統(tǒng)近幾年使用率逐漸下降;基于FPGA的高速圖像采集系統(tǒng)[2-5],F(xiàn)PGA圖像的采集速度快,效果好,但是FPGA開發(fā)難度相對(duì)大,硬件成本相對(duì)較高,對(duì)于一些消費(fèi)電子類不合適。相比于ARM9與FPGA,STM32的成本降低,開發(fā)難度小。文獻(xiàn)[6-7]基于2.4寸的顯示屏設(shè)計(jì)了圖像顯示系統(tǒng),對(duì)于清晰度要求較高的場(chǎng)合還存在一定的不足。文獻(xiàn)[6]采用的攝像頭是200萬(wàn)像素的OV2640攝像頭,這對(duì)于攝像頭模塊的利用率存在較大的浪費(fèi)。文中主要利用STM32F407單片機(jī)、OV2640攝像頭模塊和TFTLCD液晶作為主要硬件設(shè)備,設(shè)計(jì)了一款圖像的編碼、顯示與采集系統(tǒng),分析了整個(gè)系統(tǒng)硬件軟件設(shè)計(jì)。

1 硬件設(shè)計(jì)

系統(tǒng)的硬件結(jié)構(gòu)作為整個(gè)系統(tǒng)最重要,最核心的部分,決定了整個(gè)系統(tǒng)的圖像處理能力與穩(wěn)定運(yùn)行及成本。

1.1 主控芯片

作為最核心的部件,芯片的選取非常關(guān)鍵。綜合考慮處理能力、開發(fā)難度、芯片成本問題,我們選用STM32F407ZGT6作為整個(gè)系統(tǒng)的主控芯片,該芯片在STM32系列中綜合性能較強(qiáng)。某些功能相對(duì)STM32F1來(lái)說(shuō)進(jìn)行了重大改進(jìn),比如FSMC的速度,F(xiàn)4刷屏速度可達(dá)3 300 W像素/秒,而F1的速度則只有500 W左右[8]。對(duì)于提高視頻流的顯示質(zhì)量極為有利。

1.2 OV2640攝像頭模塊

OV2640是OV(OmniVision)公司生產(chǎn)的一顆1/4寸的CMOS UXGA(1632*1232)圖像傳感器。該傳感器體積小、工作電壓低,提供單片UXGA攝像頭和影像處理器的所有功能。通過SCCB總線控制,可以輸出整幀、子采樣、縮放和取窗口等方式的各種分辨率8/10位影像數(shù)據(jù)[9]。OV2640的圖像數(shù)據(jù)格式,一般用兩種輸出方式:RGB565和JPEG。OV2640自帶壓縮引擎,可以將原始數(shù)據(jù)流壓縮成JPEG格式輸出,避免了編寫JPEG編碼算法。使用過程中通過軟件編程控制輸出格式,具有較好的操作性。

STM32F4自帶了一個(gè)數(shù)字?jǐn)z像頭(DCMI)接口,該接口是一個(gè)同步并行接口,能夠接收外部8位、10位、12位或14位CMOS攝像頭模塊發(fā)出的高速數(shù)據(jù)流??芍С植煌臄?shù)據(jù)格式:YCbCr4:2:2/RGB565逐行視頻和壓縮數(shù)據(jù)(JPEG)。

本系統(tǒng)使用STM32F407ZGT6的DCMI接口連接OV2640攝像頭模塊,該模塊采用8位數(shù)據(jù)輸出接口,自帶24M有源晶振,無(wú)需外部提供時(shí)鐘,采用百萬(wàn)高清鏡頭,單獨(dú)3.3 V供電即可正常使用。

1.3 外部SRAM

STM32F407ZGT6自帶192K字節(jié)的SRAM,對(duì)一般應(yīng)用來(lái)說(shuō)已經(jīng)足夠,但是對(duì)于圖像編碼采集等對(duì)內(nèi)存要求高的場(chǎng)合明顯不夠用。因此選擇了一顆1M字節(jié)的SRAM芯片:IS62WV51216用來(lái)存儲(chǔ)處理圖像。所使用的是TSOP44封裝的IS62WV51216芯片,可以直接與STM32F4的FSMC相連接。

1.4 SD卡

此系統(tǒng)需要大容量的外部存儲(chǔ)設(shè)備,來(lái)存儲(chǔ)圖像數(shù)據(jù)。目前常用的外部存儲(chǔ)設(shè)備有U盤,F(xiàn)LASH存儲(chǔ)器,以及SD卡等。綜合比較最終選擇適合此套系統(tǒng)的SD卡。將此套系統(tǒng)設(shè)計(jì)上標(biāo)準(zhǔn)的SD卡接口,使用STM32F4自帶的SDIO接口驅(qū)動(dòng)。SDIO模式允許4線的高速傳輸,傳輸速率快[10],最高通信速度可達(dá)48 MHz(分頻器旁路時(shí)),最高每秒可傳輸數(shù)據(jù)24M字節(jié),能夠滿足系統(tǒng)的圖像數(shù)據(jù)的傳輸速度。SDIO與DCMI接口有一部分是公用引腳,使用時(shí)要注意分時(shí)復(fù)用。

1.5 液晶模塊

隨著電子產(chǎn)品的不斷更新,各種顯示界面的開發(fā)越來(lái)越多,由于TFT彩屏的性價(jià)比高,因而被廣泛用在各種電子設(shè)備上作為顯示屏[11]。綜合考慮性能和成本,本系統(tǒng)選用的液晶模塊為4.3寸TFTLCD。最大分辨率為800*480。TFTLCD模塊采用16位的并方式與外部連接,不采用8位的方式,是因?yàn)椴势恋臄?shù)據(jù)量比較大,尤其是在顯示圖片的時(shí)候,如果用8位數(shù)據(jù)線,就會(huì)比16位方式慢一倍以上。液晶驅(qū)動(dòng)芯片為NT35510,驅(qū)動(dòng)芯片自帶顯存GRAM。當(dāng)軟件配置好驅(qū)動(dòng)芯片各個(gè)寄存器后,可以直接向GRAM里面發(fā)送數(shù)據(jù),便可以在液晶屏幕上顯示相應(yīng)的圖像信息。

STM32F4系列芯片都帶FSMC接口,STM32F4的FSMC將外部設(shè)備分為兩類:NOR/PSRAM設(shè)備、NAND/PC卡設(shè)備。它們共用地址數(shù)據(jù)總線等信號(hào),具有不同的CS以區(qū)分不同的設(shè)備。TFTLCD就是用的FSMC_NE4做片選,其實(shí)就是將TFTLCD當(dāng)成SRAM來(lái)控制。其操作時(shí)序和SRAM的控制完全類似,唯一不同就是TFTLCD有RS信號(hào),但是沒有地址信號(hào)。

該系統(tǒng)除包含上述的幾個(gè)重要硬件模塊之外,還包括按鍵、LED、USB轉(zhuǎn)串口、STlink接口線路等硬件模塊。整體的硬件框圖如圖1所示。

圖1 硬件結(jié)構(gòu)圖

2 軟件設(shè)計(jì)

2.1 文件系統(tǒng)

應(yīng)用SD卡必須要使用文件系統(tǒng)管理,本系統(tǒng)選擇FATFS文件系統(tǒng)來(lái)管理SD卡。FATFS是一個(gè)完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)[12]。它完全用標(biāo)準(zhǔn)C語(yǔ)言編寫,所以具有良好的硬件平臺(tái)獨(dú)立性。FATFS模塊的層次結(jié)構(gòu)分為應(yīng)用層、FATFS模塊、底層存儲(chǔ)媒介接口及RTC。最頂層是應(yīng)用層,使用者無(wú)需理會(huì)FATFS的內(nèi)部結(jié)構(gòu)和復(fù)雜的FAT協(xié)議,只需要調(diào)用FATFS模塊提供給用戶的一系列應(yīng)用接口函數(shù),如f_open,f_read,f_write和f_close等,就可以像在PC上讀/寫文件那樣簡(jiǎn)單[13]。在此系統(tǒng)中按FATFS的移植方法移植了FATFS文件系統(tǒng)。

2.2 數(shù)據(jù)處理

JPEG是 Joint Photographic Experts Group(聯(lián)合圖像專家小組)的縮寫,是第一個(gè)國(guó)際圖像壓縮標(biāo)準(zhǔn)。JPEG圖像壓縮算法能夠在提供良好的壓縮性能的同時(shí),具有比較好的重建質(zhì)量,被廣泛應(yīng)用于圖像、視頻處理領(lǐng)域。

OV2640可以直接壓縮數(shù)據(jù)為JPEG格式,當(dāng)輸出數(shù)據(jù)是JPEG數(shù)據(jù)的時(shí)候,輸出的JPEG數(shù)據(jù)以:0XFF,0XD8開頭,以0XFF,0XD9 結(jié)尾,且在0XFF,0XD8之前,或者0XFF,0XD9之后,會(huì)有不定數(shù)量的其他數(shù)據(jù)存在(一般是0),編寫程序時(shí)直接忽略這些數(shù)據(jù),將得到的0XFF,0XD8-0XFF,0XD9之間的數(shù)據(jù),存儲(chǔ)在SD卡中,保存為.jpg/.jpeg文件,然后可以直接在電腦上采集到的JPEG圖像。

BMP文件格式,又稱為Bitmap(位圖)或是DIB(Device-Independent Device,設(shè)備無(wú)關(guān)位圖),是Windows系統(tǒng)中廣泛使用的圖像文件格式[14]。它可以不作任何變換地保存圖像像素域的數(shù)據(jù)。BMP文件是由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)等四部分組成。本系統(tǒng)采用16位深度的數(shù)據(jù)格式,因?yàn)镺V2640模塊可直接輸出RGB565格式數(shù)據(jù),而且液晶模塊也可以直接顯示RGB565格式的像素點(diǎn),避免對(duì)不同深度的位圖進(jìn)行轉(zhuǎn)換,減少芯片的運(yùn)算復(fù)雜度。

將LCD的顯存保存為BMP格式的圖片文件的步驟設(shè)計(jì)如下:

1)創(chuàng)建BMP位圖信息,并初始化各個(gè)相關(guān)信息。設(shè)置BMP圖片的分辨率為L(zhǎng)CD分辨率(800*480)、BMP圖片的大?。ㄕ麄€(gè)BMP文件大?。?、BMP的像素位數(shù)(16位)和掩碼等信息。

2)將BMP位圖信息保存到一個(gè)BMP文件中。創(chuàng)建新BMP文件,寫入BMP位圖信息,之后才開始BMP數(shù)據(jù)的寫入。

3)保存位圖數(shù)據(jù)。將位圖數(shù)據(jù)保存到上一步所創(chuàng)建的BMP文件里,只需要從LCD的GRAM里面讀取各點(diǎn)的顏色值,依次寫入第二步創(chuàng)建的BMP文件即可。注意:保存順序(即讀GRAM順序)是從左到右,從下到上。

4)關(guān)閉文件。使用FATFS,在文件創(chuàng)建之后,必須調(diào)用f_close,文件才會(huì)真正體現(xiàn)在文件系統(tǒng)里面,否則是不會(huì)寫入。這個(gè)要特別注意,寫完之后,一定要調(diào)用f_close函數(shù)將文件關(guān)閉。

2.3 數(shù)據(jù)流向

數(shù)據(jù)的合理流向是圖像采集的關(guān)鍵部分。對(duì)于大量圖像數(shù)據(jù)的傳輸,若數(shù)據(jù)的流向與各個(gè)設(shè)備的存儲(chǔ)傳送速度處理不好經(jīng)常會(huì)造成數(shù)據(jù)丟失的現(xiàn)象,此處應(yīng)該設(shè)定好圖像的緩存。本系統(tǒng)通過按鍵判斷是存儲(chǔ)JPEG圖像還是BMP圖像。

針對(duì)JPEG圖像數(shù)據(jù)的傳輸傳輸,用到了STM32的外設(shè)DMA控制器。DMA,全稱為:Direct Memory Access,即直接存儲(chǔ)器訪問。DMA是一種快速傳送數(shù)據(jù)的機(jī)制,由 DMA控制器(DMA controller,DMAC)實(shí)現(xiàn)。DMA的應(yīng)用能夠有效減輕處理器的負(fù)擔(dān),可以大大提高數(shù)據(jù)傳輸?shù)男?,從而提高系統(tǒng)性能[15]。STM32系列單片機(jī)將DMA以外設(shè)的方式集成到 Cortex之內(nèi)[16]。

本系統(tǒng)要用到內(nèi)存管理,存儲(chǔ)圖像數(shù)據(jù)要用到大數(shù)組,其他地方也要用到一些數(shù)組,所以,因此內(nèi)部RAM無(wú)法再定義這么大的數(shù)組了。并且這個(gè)數(shù)組不能使用外部SRAM(實(shí)測(cè):DCMI接口使用DMA直接傳輸JPEG數(shù)據(jù)到外部SRAM會(huì)出現(xiàn)數(shù)據(jù)丟失,所以DMA接收J(rèn)PEG數(shù)據(jù)只能用內(nèi)部SRAM),解決方法是使用DMA的雙緩沖機(jī)制來(lái)讀取,DMA雙緩沖讀取JPEG數(shù)據(jù)的原理框圖如圖2所示。

圖2 雙緩沖原理圖

DMA接收來(lái)自O(shè)V2640的JPEG數(shù)據(jù)流,首先使用M0AR(內(nèi)存1)來(lái)存儲(chǔ),當(dāng)M0AR滿了之后,自動(dòng)切換到M1AR(內(nèi)存2),同時(shí)程序讀取M0AR(內(nèi)存1)的數(shù)據(jù)到外部SRAM;當(dāng)M1AR滿了以后,又切回M0AR,同時(shí)程序讀取M1AR(內(nèi)存2)的數(shù)據(jù)到外部SRAM;依次循環(huán)(此時(shí)的數(shù)據(jù)處理,是通過DMA傳輸完成中斷實(shí)現(xiàn)的,在中斷函數(shù)中處理),直到幀中斷,結(jié)束一幀數(shù)據(jù)的采集,讀取剩余數(shù)據(jù)到外部SRAM,完成一次JPEG數(shù)據(jù)的采集。

其中,M0AR,M1AR所指向的內(nèi)存,必須是內(nèi)部?jī)?nèi)存,由于采用雙緩沖機(jī)制,因此不必定義一個(gè)很大的數(shù)組,一次性接收所有JPEG數(shù)據(jù)了,而是可以分批次接收。

最后,將通過雙緩沖機(jī)制存儲(chǔ)在外部SRAM的JPEG數(shù)據(jù),保存為.jpg/.jpeg存放在SD卡,就完成了一次JPEG圖片的存儲(chǔ)。

對(duì)于BMP圖片的存儲(chǔ),相對(duì)來(lái)說(shuō)要簡(jiǎn)單一些,從LCD的GRAM里面讀取各點(diǎn)的顏色值,依次寫入創(chuàng)建的BMP文件即可(如2.2小節(jié)描述的步驟)

2.4 邏輯設(shè)計(jì)

在每一個(gè)接口函數(shù)及硬件配置完成后,系統(tǒng)的整體邏輯結(jié)構(gòu)并不復(fù)雜。整體執(zhí)行順序?yàn)椋洪_機(jī)的時(shí)候先檢測(cè)字庫(kù),然后檢測(cè)SD卡根目錄是否存在PHOTO文件夾,如果不存在則創(chuàng)建,如果創(chuàng)建失敗,則報(bào)錯(cuò)(提示功能不可用)。在找到SD卡的PHOTO文件夾后,開始初始化OV2640,在初始化成功之后,就一直在屏幕顯示OV2640拍攝的內(nèi)容。按下KEY0,可以保存BMP格式的圖像文件,分辨率與LCD分辨率相同。按下KEY1可以保存JPEG格式的圖像文件(分辨率為UXGA,即1600*1200)。圖片保存成功之后,蜂鳴器“滴”聲提示存儲(chǔ)成功。同時(shí)設(shè)計(jì)了LED指示燈,DS0還是指示程序運(yùn)行狀態(tài),DS1用于指示DCMI幀中斷。

程序簡(jiǎn)要流程圖如圖3所示。

程序設(shè)計(jì)的偽代碼如下:

圖3 程序流程圖

3 結(jié)束語(yǔ)

通過實(shí)驗(yàn)驗(yàn)證,將存儲(chǔ)有圖像的SD卡放到電腦,可以成功查看采集到的圖像信息。本套系統(tǒng)成功采集存儲(chǔ)1 600*1 200的JPEG圖片與800*480的BMP圖片,圖像質(zhì)量較好。

本文基于STM32F4與OV2640及其他硬件設(shè)備設(shè)計(jì)完成了圖像編碼與顯示存儲(chǔ)系統(tǒng)。硬件方面成本低廉,功耗小,適合長(zhǎng)時(shí)間穩(wěn)定運(yùn)行,而且充分發(fā)揮了STM32與OV2640的最大功能;軟件方面,各模塊驅(qū)動(dòng)完善,開發(fā)簡(jiǎn)單,應(yīng)用方便,可以在本套系統(tǒng)基礎(chǔ)上進(jìn)行裁剪,適應(yīng)特定的應(yīng)用。由于BMP圖像編碼過程沒有使用調(diào)色板,因此數(shù)據(jù)量較大,系統(tǒng)在BMP圖像的編碼存儲(chǔ)方面,速度還稍慢,但是對(duì)于一些特定的應(yīng)用已經(jīng)完全可以滿足。

參考文獻(xiàn):

[1]蔡衛(wèi)明.ARM9+WinCE嵌入式圖像采集系統(tǒng)開發(fā)技術(shù)研究與實(shí)現(xiàn)[D].重慶:重慶理工大學(xué),2009.

[2]潘明,陳元枝,李強(qiáng).基于FPGA的圖像采集系統(tǒng)的設(shè)計(jì)[J].研究與開發(fā),2012,31(3):58-61.

[3]侯廣琦,魏平,白延柱.多通道嵌入式高速圖像采集存儲(chǔ)系統(tǒng)的研究[J].儀器儀表學(xué)報(bào),2011,32(11):2543-2548.

[4]曹山.基于FPGA的實(shí)時(shí)圖像采集和處理系統(tǒng)[D].西安:西安工業(yè)大學(xué),2015.

[5]楊林森.高速智能圖像采集系統(tǒng)的設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2015.

[6]王建,梁振濤,鄭文斌等.STM32和OV2640的嵌入式圖像采集系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(9):47-48.

[7]張勇強(qiáng),陽(yáng)泳,余建坤.基于STM32圖像采集與顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2016(2):34-36.

[8]劉軍,張洋.精通STM32庫(kù)函數(shù)版本[M].北京:北京航空航天大學(xué)出版社,2015.

[9]黃健,羅國(guó)平,杜麗君.基于STM32F407平臺(tái)OV2640驅(qū)動(dòng)程序設(shè)計(jì)[J].通訊世界,2015(10):246-247.

[10]徐建功,趙杰.基于STM32F103XX微處理器的Micro SD卡讀寫[J].嵌入式技術(shù),2010(5):27-32.

[11]湯莉莉,黃偉.基于STM32的FSMC接口驅(qū)動(dòng)TFT彩屏設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013(20):139-144.

[12]崔鵬偉,閆學(xué)文.基于SD卡的FATFS文件系統(tǒng)的研究與應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2013,26(11):141-142.

[13]張濤,左謹(jǐn)平,馬華玲.FatFs在32位控制器STM32上的移植[J].電子技術(shù),2011:25-27.

[14]宋葉未,葉建芳.BMP格式位圖文件的分析及顯示方法[J].現(xiàn)代電子技術(shù),2011,34(27):5-7.

[15]梁科,李國(guó)峰等.通用多通道高性能DMA控制器設(shè)計(jì)[J].天津大學(xué)學(xué)報(bào),2008(5):621-626.

[16]張?zhí)?基于STM32單片機(jī)DMA機(jī)制的多通道數(shù)據(jù)采集[J].科技論壇,2013(30):27.

猜你喜歡
內(nèi)存嵌入式攝像頭
浙江首試公路非現(xiàn)場(chǎng)執(zhí)法新型攝像頭
攝像頭連接器可提供360°視角圖像
“春夏秋冬”的內(nèi)存
搭建基于Qt的嵌入式開發(fā)平臺(tái)
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
奔馳360°攝像頭系統(tǒng)介紹
Altera加入嵌入式視覺聯(lián)盟
倍福 CX8091嵌入式控制器
基于內(nèi)存的地理信息訪問技術(shù)
上網(wǎng)本為什么只有1GB?
郧西县| 台东市| 全南县| 赫章县| 慈利县| 大竹县| 江津市| 郎溪县| 闵行区| 石屏县| 蓬莱市| 祥云县| 秦皇岛市| 湖北省| 南陵县| 镇沅| 扬州市| 黔西县| 陆良县| 乌拉特中旗| 正镶白旗| 郧西县| 古交市| 开江县| 邵武市| 宿松县| 灯塔市| 根河市| 门头沟区| 昆明市| 钦州市| 平原县| 宝应县| 邵东县| 霍州市| 金阳县| 丰城市| 临澧县| 蚌埠市| 平陆县| 濉溪县|