《電子技術(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開(kāi)發(fā)平臺(tái)的便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì),。首先給出了水下圖像采集系統(tǒng)的總體組成,闡述了RVMDK開(kāi)發(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開(kāi)發(fā)平臺(tái)的便攜式水下圖像實(shí)時(shí)采集系統(tǒng)軟件設(shè)計(jì)。首先給出了水下圖像采集系統(tǒng)的總體組成,,闡述了RVMDK開(kāi)發(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)鍵部分,。基于PC機(jī)的圖像采集系統(tǒng)具有功能豐富,、接口靈活多變,、數(shù)據(jù)處理能力強(qiáng)等優(yōu)點(diǎn)[1-2]。該類型圖像采集系統(tǒng)通過(guò)硬件傳輸路線連接到多媒體監(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)軟件,通過(guò)試驗(yàn)驗(yàn)證,,該軟件能夠有效地實(shí)現(xiàn)水下圖像便捷,、實(shí)時(shí)采集的功能。

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

001.jpg

  本系統(tǒng)的總體目標(biāo)是采用帶FIFO的OV7670攝像頭模塊,,由STM32F103ZET6單片機(jī)通過(guò)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為開(kāi)發(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ì)

  通過(guò)OV7670.c代碼先編程設(shè)計(jì)OV7670相關(guān)的I/O口和SCCB接口,完成OV7670的寄存器序列的初始化工作,。OV7670的寄存器特多,配置很麻煩,,本文用到的配置序列,,存放在ov7670_init_reg_tbl數(shù)組里面,通過(guò)這個(gè)二維數(shù)組來(lái)存儲(chǔ)初始化序列寄存器和寫(xiě)入寄存器的數(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地址,,寫(xiě)入0X04這個(gè)值。

  通過(guò)對(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開(kāi)始到0X9FFFFFFF結(jié)束,一共由4個(gè)Bank組成,,在TFT-LCD程序設(shè)計(jì)過(guò)程中選擇了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ù)的配置是通過(guò)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ù)必要)

  }

  通過(guò)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),;

  }

  通過(guò)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í)打開(kāi)控制面板來(lái)控制供電,。控制面板帶總開(kāi)關(guān),、燈光旋轉(zhuǎn)開(kāi)關(guān),、攝像頭控制接口、燈光控制接口和電源輸入接口,,通過(guò)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燈光全部打開(kāi)且調(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)境下石塊紋理清晰可見(jià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ì),。通過(guò)在不同燈光強(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)載,。