《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 一種便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì)
一種便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第19期
劉亞雷1,于艷美2,孟春寧1
(1.公安海警學(xué)院 機(jī)電管理系,浙江 寧波 315801; 2.寧波大學(xué) 科學(xué)與技術(shù)學(xué)院,浙江 寧波 315801)
摘要: 為了快速、實(shí)時(shí)地采集水下圖像,提出了一種基于RVMDK開發(fā)平臺(tái)的便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì)。首先給出了水下圖像采集系統(tǒng)的總體組成,闡述了RVMDK開發(fā)軟件環(huán)境;其次,分別對(duì)OV7670程序、LCD程序、SCCB接口程序進(jìn)行了設(shè)計(jì);最后,對(duì)提出的圖像采集軟件系統(tǒng)進(jìn)行了試驗(yàn)。試驗(yàn)結(jié)果表明,該程序設(shè)計(jì)能夠有效地實(shí)現(xiàn)水下圖像實(shí)時(shí)采集功能。
Abstract:
Key words :

  摘  要: 為了快速、實(shí)時(shí)地采集水下圖像,提出了一種基于RVMDK開發(fā)平臺(tái)的便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì)。首先給出了水下圖像采集系統(tǒng)的總體組成,闡述了RVMDK開發(fā)軟件環(huán)境;其次,分別對(duì)OV7670程序、LCD程序SCCB接口程序進(jìn)行了設(shè)計(jì);最后,對(duì)提出的圖像采集軟件系統(tǒng)進(jìn)行了試驗(yàn)。試驗(yàn)結(jié)果表明,該程序設(shè)計(jì)能夠有效地實(shí)現(xiàn)水下圖像實(shí)時(shí)采集功能。

  關(guān)鍵詞: 水下圖像采集;OV7670程序;SCCB接口程序;LCD程序

0 引言

  21世紀(jì)是海洋的世紀(jì),水下探測(cè)技術(shù)是水下觀測(cè)、海洋防衛(wèi)、水下搜救打撈、艦艇檢修等方面的關(guān)鍵技術(shù)之一。海警艦艇機(jī)艙集中了船上絕大多數(shù)設(shè)備裝置的儀表,是艦艇航行的關(guān)鍵部分?;赑C機(jī)的圖像采集系統(tǒng)具有功能豐富、接口靈活多變、數(shù)據(jù)處理能力強(qiáng)等優(yōu)點(diǎn)[1-2]。該類型圖像采集系統(tǒng)通過硬件傳輸路線連接到多媒體監(jiān)控終端,然后基于通信網(wǎng)絡(luò),將圖像信息傳到一個(gè)或者多個(gè)監(jiān)控中心[3-4]。系統(tǒng)不僅能夠?qū)崿F(xiàn)多媒體信息處理如壓縮、存儲(chǔ)等基本功能,還能夠?qū)崿F(xiàn)智能存儲(chǔ)和圖像自動(dòng)識(shí)別等高級(jí)功能,實(shí)現(xiàn)模擬監(jiān)控?zé)o法實(shí)現(xiàn)的“監(jiān)控”功能[5-6]。但是該類圖像采集系統(tǒng)在有限空間的機(jī)艙內(nèi)部所占體積大,且成本較高,不利于便攜采集。因此,本文設(shè)計(jì)了一種快速、實(shí)時(shí)的水下圖像采集系統(tǒng)軟件,通過試驗(yàn)驗(yàn)證,該軟件能夠有效地實(shí)現(xiàn)水下圖像便捷、實(shí)時(shí)采集的功能。

1 水下圖像采集系統(tǒng)的總體設(shè)計(jì)

001.jpg

  本系統(tǒng)的總體目標(biāo)是采用帶FIFO的OV7670攝像頭模塊,由STM32F103ZET6單片機(jī)通過SCCB總線讀取數(shù)據(jù),并在LCD液晶顯示屏上實(shí)時(shí)顯示圖像數(shù)據(jù)。如圖1所示為水下圖像采集系統(tǒng)的總體設(shè)計(jì)框圖。由圖可知,本系統(tǒng)結(jié)構(gòu)主要由ARM主處理器及其外圍電路、CMOS圖像傳感器、LCD液晶顯示屏等幾部分組成,系統(tǒng)硬件實(shí)現(xiàn)簡(jiǎn)單。

2 軟件環(huán)境

  軟件以RVMDK為開發(fā)平臺(tái),實(shí)現(xiàn)水下圖像采集系統(tǒng)的主要算法、控制流程等。RVMDK源自德國(guó)的KEIL公司,是RealView MDK的簡(jiǎn)稱。該軟件集成了最領(lǐng)先的技術(shù),支持Cortex-M3主處理器內(nèi)核,本文將選擇RVMDK3.80A版本的編譯器進(jìn)行程序編譯。由于單片機(jī)主處理器為STM32F103ZET6,F(xiàn)LASH容量為512 KB,容量偏大,因此選擇startup_stm32f10x_hd.s作為STM32芯片啟動(dòng)文件。如圖2所示為STM32芯片啟動(dòng)文件加載圖。

002.jpg

3 水下圖像采集軟件設(shè)計(jì)

  3.1 軟件方案設(shè)計(jì)

003.jpg

  如圖3所示為水下圖像采集程序流程圖。首先是系統(tǒng)初始化程序,主要包括TFT液晶顯示模塊的初始化、SCCB接口、OV7670攝像頭、FIFO緩存器AL422B模塊的初始化。系統(tǒng)產(chǎn)生中斷指令,使得FIFO_WEN置高電位,再次產(chǎn)生中斷指令,使得FIFO_WEN置低電位,從而完成一個(gè)FIFO_WEN周期。讀取FIFO_WEN數(shù)據(jù),檢測(cè)是否完成一幀,如果完成,則檢測(cè)是否收到采集完畢指令,如此往復(fù)循環(huán),直到采集完畢。

  3.2 OV7670程序設(shè)計(jì)

  通過OV7670.c代碼先編程設(shè)計(jì)OV7670相關(guān)的I/O口和SCCB接口,完成OV7670的寄存器序列的初始化工作。OV7670的寄存器特多,配置很麻煩,本文用到的配置序列,存放在ov7670_init_reg_tbl數(shù)組里面,通過這個(gè)二維數(shù)組來(lái)存儲(chǔ)初始化序列寄存器和寫入寄存器的數(shù)值,整個(gè)數(shù)組存放在ov7670cfg.h文件中。ov7670cfg.h文件的代碼如下:

  const u8 ov7670_init_reg_tbl[][2]=

  {

  /*以下為OV7670 QVGA RGB565參數(shù)*/

  {0x3a,0x04},

  {0x40,0x10},

  {0x12,0x14},//QVGA,RGB 輸出

  {0x6e,0x11},  //100

  {0x6f,0x9f},  //0x9e for advance AWB

  {0x55,0x00},  // 亮度

  {0x56,0x40},  // 對(duì)比度

  {0x57,0x80},

  //0x40,change according to Jim′s request

  };

  #end if

  以上代碼中,每個(gè)條目的第一個(gè)字節(jié)為寄存器地址,第二個(gè)字節(jié)為設(shè)置的值,比如{0X3a,0x04},就表示在0X3a地址,寫入0X04這個(gè)值。

  通過對(duì)寄存器的配置,完成了OV7670攝像頭模塊的程序設(shè)計(jì),使OV7670工作在QVGA模式,以RGB565格式輸出。在完成初始化之后,準(zhǔn)備讀取OV7670采集的圖像數(shù)據(jù)。

  3.3 LCD初始化程序設(shè)計(jì)

  TFT-LCD液晶顯示模塊程序設(shè)計(jì)的關(guān)鍵在于FSMC控制器的配置和寄存器地址的計(jì)算。單片機(jī)的FSMC使用的是AHB3提供的時(shí)鐘信號(hào),STM32微處理器的FSMC控制器對(duì)外設(shè)地址映射從0X60000000開始到0X9FFFFFFF結(jié)束,一共由4個(gè)Bank組成,在TFT-LCD程序設(shè)計(jì)過程中選擇了Bank1。寄存器地址則由TFT-LCD的RS和CS端與FSMC接口的連接方式來(lái)計(jì)算。本文STM32與TFT模塊連接時(shí),僅將2.8英寸的TFT屏看成一個(gè)SRAM來(lái)處理。本程序函數(shù)用來(lái)驅(qū)動(dòng)ILI9320LCD芯片。程序函數(shù)如下:

  void LCD_Init(void)

  {GPIO_InitTypeDef GPIO_InitStructure;

  FSMC_NORSRAMInitTypeDef

  FSMC_NORSRAMInitStructure;

  FSMC_NORSRAMTimingInitTypeDefreadWriteTiming;

  FSMC_NORSRAMTimingInitTypeDefwriteTiming;

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);  //使能FSMC時(shí)鐘

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);

  //使能PORTB,D,E,G以及AFIO復(fù)用功能時(shí)鐘

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

  //PB0推挽輸出背光

  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;  //推挽輸出

  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

  GPIO_Init(GPIOB,&GPIO_InitStructure);

  ..........

  readWriteTiming.FSMC_AddressSetupTime=0x01;

  //地址建立時(shí)間(ADDSET)為2個(gè)HCLK1/36 MHz=27 ns

  readWriteTiming.FSMC_AddressHoldTime=0x00;

  readWriteTiming.FSMC_DataSetupTime=0x0f;

  readWriteTiming.FSMC_BusTurnAroundDuration=0x00;

  readWriteTiming.FSMC_CLKDivision=0x00;

  readWriteTiming.FSMC_DataLatency=0x00;

  readWriteTiming.FSMC_AccessMode=FSMC_AccessMode_A;  //模式A

  writeTiming.FSMC_AddressSetupTime=0x00;

  //地址建立時(shí)間(ADDSET)為1個(gè)HCLK

  writeTiming.FSMC_AddressHoldTime=0x00;

  //地址保持時(shí)間(A)

  writeTiming.FSMC_DataSetupTime=0x03;

  //數(shù)據(jù)保存時(shí)間為4個(gè)HCLK

  writeTiming.FSMC_BusTurnAroundDuration=0x00;

  writeTiming.FSMC_CLKDivision=0x00;

  writeTiming.FSMC_DataLatency=0x00;

  writeTiming.FSMC_AccessMode=FSMC_AccessMode_A;  //模式A

  3.4 SCCB接口初始化程序設(shè)計(jì)

  由于對(duì)攝像頭的工作參數(shù)的配置是通過SCCB來(lái)實(shí)現(xiàn)的,因此在軟件設(shè)計(jì)時(shí),首先設(shè)計(jì)出SCCB程序從而控制攝像頭的相關(guān)參數(shù)。SCCB設(shè)計(jì)程序如下:

  void SCCB_Init(void)

  {

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG, ENABLE);  //使能PB端口時(shí)鐘

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;

  //端口配置

  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//輸入

  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

  GPIO_Init(GPIOG, &GPIO_InitStructure);

  GPIO_SetBits(GPIOG,GPIO_Pin_13);  //輸出高電平

  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3; //端口配置

  GPIO_Init(GPIOD, &GPIO_InitStructure);

  GPIO_SetBits(GPIOD,GPIO_Pin_3);  //輸出高電平

  SCCB_SDA_OUT();

  }

  以上是模擬SCCB初始化函數(shù)、使能PB端口時(shí)鐘和相關(guān)引腳的配置。SCCB起始信號(hào)函數(shù)如下:

  void SCCB_Start(void)

  {

  SCCB_SDA=1;  //數(shù)據(jù)線高電平

  SCCB_SCL=1;  //在時(shí)鐘線高的時(shí)候數(shù)據(jù)線由高至低

  delay_us(50);

  SCCB_SDA=0;

  delay_us(50);

  SCCB_SCL=0;

  //數(shù)據(jù)線上電位恢復(fù)低電平(對(duì)于單操作函數(shù)必要)

  }

  通過SCCB起始信號(hào)函數(shù)可以看出,當(dāng)時(shí)鐘為高電平時(shí),數(shù)據(jù)線由高到低為SCCB起始信號(hào),在激活狀態(tài)下,SDA和SCL均為低電平。SCCB的停止信號(hào)如下:

  void SCCB_Stop(void)

  {

  SCCB_SDA=0;

  delay_us(50);

  SCCB_SCL=1;

  delay_us(50);

  SCCB_SDA=1;

  delay_us(50);

  }

  通過SCCB停止信號(hào)函數(shù)可以看出,當(dāng)時(shí)鐘為高電平的時(shí)候,數(shù)據(jù)線的由低到高為SCCB停止信號(hào),在空閑狀況下SDA和SCL均為高電平。

4 實(shí)驗(yàn)分析

  為了方便操作,整個(gè)系統(tǒng)設(shè)計(jì)為外接電源供電,同時(shí)打開控制面板來(lái)控制供電??刂泼姘鍘Э傞_關(guān)、燈光旋轉(zhuǎn)開關(guān)、攝像頭控制接口、燈光控制接口和電源輸入接口,通過220 V交流電轉(zhuǎn)12 V直流電轉(zhuǎn)換器實(shí)現(xiàn)STM32、攝像頭、LED燈光的供電一體化。整個(gè)系統(tǒng)的供電由4根電源線控制,包含18根攝像頭信號(hào)線和兩根LED燈光控制線。

  由于攝像頭前設(shè)計(jì)了33顆專業(yè)級(jí)LED燈,總光源面積為504π mm2。實(shí)驗(yàn)前將LED燈光全部打開且調(diào)節(jié)到最亮狀態(tài),用不同環(huán)徑(中間空出攝像頭的位置)的不透光的圓環(huán)形黑紙條成比例地遮住LED燈,分別在明亮、一般、較暗三種環(huán)境下進(jìn)行圖像采集實(shí)驗(yàn)。明亮、一般、較暗環(huán)境的判斷標(biāo)準(zhǔn)如表1所示。三種情況下圓柱體的圖像采集情況如圖4、5、6所示。

004.jpg

  從以上在不同燈光環(huán)境下采集的同一物體圖像可以看出,三種環(huán)境下石塊紋理清晰可見,從而證實(shí)了本文設(shè)計(jì)的水下圖像采集軟件能夠有效地實(shí)現(xiàn)圖像采集功能,并且在不同的燈光強(qiáng)度下,圖像采集效果不同,燈光強(qiáng)度越強(qiáng),采集效果越好。

5 結(jié)論

  結(jié)合論文的研究目標(biāo),給出了包含OV7670攝像頭模塊、STM32F103ZET6單片機(jī)處理器模塊、SCCB總線讀取數(shù)據(jù)模塊以及LCD液晶顯示屏模塊的水下圖像采集系統(tǒng)。分別對(duì)系統(tǒng)的OV7670程序、LCD程序、SCCB接口程序進(jìn)行了設(shè)計(jì)。通過在不同燈光強(qiáng)度下的試驗(yàn),證實(shí)了本文設(shè)計(jì)的水下圖像采集軟件能夠有效地實(shí)現(xiàn)水下圖像采集功能。

  參考文獻(xiàn)

  [1] 張磊.基于ARM的CMOS數(shù)字圖像傳感器圖像采集系統(tǒng)的研究與設(shè)計(jì)[D].哈爾濱:哈爾濱工程大學(xué),2008.

  [2] 劉甲玉.基于ARM的圖像采集與無(wú)線傳輸技術(shù)的研究[D].蕪湖:安徽工程大學(xué),2010.

  [3] 詹青龍.網(wǎng)絡(luò)視頻技術(shù)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2004.

  [4] OSTHEIMER D, LEMAY S, GHAZAL M. A modular distributed video surveillance system over IP[C]. Canadian Conference on Electrical and Computer Engineering, 2006: 518-521.

  [5] 梁修如,嚴(yán)國(guó)萍.嵌入式視頻監(jiān)控服務(wù)器系統(tǒng)典型方案及其性能分析[J].電視技術(shù),2005,24(10):93-96.

  [6] 耿艷明,王宏遠(yuǎn).一種基于IP的視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2004,23(3):75-77.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。