農(nóng)業(yè)儀器網(wǎng)

農(nóng)業(yè)環(huán)境監(jiān)測儀中多路圖像采集系統(tǒng)的設(shè)計(jì)

來源: http://m.askacustomsbroker.com/  類別:技術(shù)文章  更新時(shí)間:2013-11-12  閱讀
      近年來,隨著計(jì)算機(jī)圖像處理技術(shù)、人工智能方法、圖像模式識(shí)別和多光譜識(shí)別等高新技術(shù)的發(fā)展,計(jì)算機(jī)圖像處理技術(shù)也日臻成熟,已經(jīng)廣泛深入農(nóng)業(yè)領(lǐng)域,其主要應(yīng)用集中于農(nóng)作物種子資源檢測、農(nóng)產(chǎn)品分級、農(nóng)業(yè)機(jī)器視覺、農(nóng)產(chǎn)品長勢檢測、精細(xì)灌溉、農(nóng)業(yè)環(huán)境監(jiān)測儀等。作為圖像處理的前端,圖像采集是一個(gè)重要的環(huán)節(jié),它將對象的可視化圖像和特征轉(zhuǎn)化為能被計(jì)算機(jī)處理的數(shù)據(jù)。所以,圖像采集系統(tǒng)的穩(wěn)定性對圖像處理的效果具有直接的影響。目前,圖像采集有很多方法,最常用的圖像采集方法是圖像采集卡形式。圖像采集卡工作過程是通過視頻接口從視頻源獲取視頻信號(hào),然后視頻信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,并利用解碼器進(jìn)行解碼,從而可處理視頻數(shù)據(jù)。
      本文研究并實(shí)現(xiàn)農(nóng)業(yè)環(huán)境監(jiān)測儀的一種嵌入式數(shù)字圖像采集系統(tǒng),該系統(tǒng)基于ARMS3C2440-Linux2.6.30.4平臺(tái),采用的USB2.0數(shù)字?jǐn)z像頭來獲取圖像,視頻編程采用V4L2API,通過移植USB gadget下USB device模塊在flash存儲(chǔ)器上開辟空間作為上位機(jī)和PC、下位機(jī)和其它處理終端的共享空間,在此空間中共享圖像數(shù)據(jù)。這樣上位機(jī)可以通過訪問這塊空間實(shí)現(xiàn)圖像的采集,為下一步圖像處理提供穩(wěn)定且高質(zhì)量的圖像來源。

圖 1 農(nóng)業(yè)環(huán)境監(jiān)測儀的系統(tǒng)結(jié)構(gòu)圖

  本農(nóng)業(yè)環(huán)境監(jiān)測儀系統(tǒng)處理器采用s3c2440,該芯片是三星公司推出的16/32RISC處理器,采用ARM920T內(nèi)核,整體設(shè)計(jì)融合了MMU,AMBABUS和Harvard結(jié)構(gòu),具有獨(dú)立的16kB指令Cache和16kB數(shù)據(jù)Cache。Linux內(nèi)核采用Linux2.6.30.4。圖像采集設(shè)備采用中星微ZC301數(shù)字?jǐn)z像頭,該攝像頭為USB接口。該終端的系統(tǒng)結(jié)構(gòu)圖如圖1所示。
  農(nóng)業(yè)環(huán)境監(jiān)測儀中ARM-Linux平臺(tái)搭建:Linux內(nèi)核移植及配置Linux內(nèi)核是Linux操作系統(tǒng)的核心。它主要包括以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信以及系統(tǒng)的初始化(引導(dǎo))和系統(tǒng)調(diào)用等。
  本系統(tǒng)的軟件部分包括系統(tǒng)初始化引導(dǎo)程序boot loader、Linux2.6.30.4操作系統(tǒng)內(nèi)核、yaffs文件系統(tǒng)、USB攝像頭驅(qū)動(dòng)、Frame buffer設(shè)備驅(qū)動(dòng)、V4L2API和USB device驅(qū)動(dòng)等。Linux內(nèi)核實(shí)現(xiàn)了系統(tǒng)內(nèi)存管理、軟件程序管理、硬件管理和文件系統(tǒng)管理等功能。隨著內(nèi)核的不斷發(fā)展,內(nèi)核的功能逐漸增強(qiáng),但目錄變動(dòng)不大。本文要想實(shí)現(xiàn)圖像的多路采集,首先需要移植內(nèi)核Linux2.6.30.4,主要步驟如下:因?yàn)樾枰玫統(tǒng)affs2文件系統(tǒng),首先要為內(nèi)核增加yaffs2補(bǔ)。恍薷臋C(jī)器碼,使之與boot loader的機(jī)器碼一致;指定目標(biāo)板、編譯器和編譯器路徑;增加devfs文件系統(tǒng)管理器的支持;修改晶振頻率;修改mtd分區(qū);修改NandFlash驅(qū)動(dòng),支持K9F1G08的Nand Flash;把s3c2440的默認(rèn)配置寫入con fig文件;配置內(nèi)核。
  配置CPU選項(xiàng):
配置 CPU 選項(xiàng)
  增加對ZC301USB攝像頭的支持:
增加對 ZC301 USB 攝像頭的支持
  當(dāng)然也要選擇上Support for Host-side USB,USB device file system,USB device class-devices,OHCIHCD support等選項(xiàng)來支持USBhost接口。最后make zIm-age,生成內(nèi)核映像。
  交叉編譯工具安裝在Linux系統(tǒng)中,工具鏈?zhǔn)巧蓛?nèi)核映像必需的程序段,工具鏈的工作過程是從一個(gè)工具的輸出再到下一個(gè)工具的輸入。Linux工具鏈包括3部分:Com-piler,Assembler,Linker。GCC是Linux下C/C++語言的編譯器。本系統(tǒng)采用虛擬機(jī)中安裝RedHat9的方式作為交叉編譯器3.4.1的編譯環(huán)境,將編譯器的壓縮包c(diǎn)ross-3.4.1.tar.bz2拷到Linux某目錄下,進(jìn)入該目錄解壓,修改/etc/bashrc文件,將解壓的3.4.1/bin目錄添加到命名的默認(rèn)路徑。農(nóng)業(yè)環(huán)境監(jiān)測儀的模塊的編譯和加載使用命令make modulesM=./drivers/usb/gadget編譯生成s3c2410_udc.ko和file_storage.ko;然后將其下載到目標(biāo)機(jī)中Linux2.6.30.4/lib/modules/2.6.30.4目錄下,使用insmods3c2410_udc.ko和insmodg_file_storage.kofile=floppy.Img removable分別加載;等待模塊加載完后,重新插拔USBdevice接口,PC端出現(xiàn)可移動(dòng)存儲(chǔ)設(shè)備,至此Nand Flash模擬U盤成功;然后進(jìn)行格式化,格式為FAT文件系統(tǒng)。
  農(nóng)業(yè)環(huán)境監(jiān)測儀的V4L2圖像采集部分:V4L2重要接口函數(shù)和數(shù)據(jù)結(jié)構(gòu)Video for Linux(簡稱V4L),是Linux中支持影像設(shè)備的一組API,它配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動(dòng)程序,可以實(shí)現(xiàn)圖像采集、AM/FM無線廣播、影像CODEC和頻道切換等功能,F(xiàn)在已有的版本為Video4Linux2(簡稱為V4L2),是從V4L的基礎(chǔ)上發(fā)展起來的,從2.5.x版本后開始加入Linux內(nèi)核。
  所謂的V4L2有兩層含義:應(yīng)用程序可以按照此框架訪問視頻設(shè)備、獲取圖像信息;在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進(jìn)行讀寫,攝像頭在/dev/video0下。主要的函數(shù)有open(),close(),ioctl(),mmap(),write(),read()等。主要涉及的數(shù)據(jù)結(jié)構(gòu)有:structv4l2_buffer,structv4l2_re-quest_buffers,structv4l2_capability,structv4l2_crop-cap,structv4l2_crop,structv4l2_format等。
  農(nóng)業(yè)環(huán)境監(jiān)測儀用戶空間視頻采集過程首先在進(jìn)行makemenuconfig操作時(shí),將mul time-dia device菜單中的Video for Linux選項(xiàng)選上,這樣內(nèi)核就配置了為農(nóng)業(yè)環(huán)境監(jiān)測儀獲取視頻的設(shè)備提供接口的Video4Linux。V4L2下用戶空間應(yīng)用程序的流程如下:首先用open系統(tǒng)調(diào)用打開視頻設(shè)備,通過io ctl讀取設(shè)備信息并初始化設(shè)備;更改設(shè)備當(dāng)前設(shè)置。視頻采集可采用兩種方法:內(nèi)存映射或直接從設(shè)備讀;對采集的視頻進(jìn)行處理;關(guān)閉視頻設(shè)備。在視頻數(shù)據(jù)的傳輸中一般不使用read(),write()系統(tǒng)調(diào)用來直接運(yùn)行,大多數(shù)情況下使用內(nèi)存映射的流傳輸方式,流傳輸方式不要實(shí)際數(shù)據(jù)的拷貝,驅(qū)動(dòng)和應(yīng)用程序之間只需要交換被映射內(nèi)存的指針就可以了。
  其流程圖如2所示。

圖2 V4L2 圖像采集流程圖

  此時(shí)的用戶程序需要包含頭文件<Linux/video-dev2.h>,使用arm-linux-gcc編譯,并下載到目標(biāo)板運(yùn)行。
  農(nóng)業(yè)環(huán)境監(jiān)測儀的多路協(xié)調(diào)本文以兩路視頻為例。進(jìn)程是運(yùn)行著一個(gè)或多個(gè)線程線程的地址空間和這些線程所需要的系統(tǒng)資源。它是Linux運(yùn)行的基本單元,所有的進(jìn)程都擁有自己獨(dú)立的處理環(huán)境和系統(tǒng)資源。進(jìn)程的環(huán)境由當(dāng)前系統(tǒng)狀態(tài)及其父進(jìn)程信息決定并組成。對于單CPU系統(tǒng)來說,雖然Linux操作系統(tǒng)是一個(gè)多用戶多任務(wù)的操作系統(tǒng),但在某一時(shí)刻,只能有一個(gè)進(jìn)程處于運(yùn)行狀態(tài),各任務(wù)根據(jù)調(diào)度算法在這些狀態(tài)之間不停地切換。在Linux2.6內(nèi)核中,用戶級進(jìn)程擁有以下幾種狀態(tài):就緒/運(yùn)行態(tài)、等待狀態(tài)(可以被中斷)、等待狀態(tài)(不可以被中斷)、停止?fàn)顟B(tài)和僵死狀態(tài)。每個(gè)進(jìn)程都受調(diào)度策略和優(yōu)先級的控制。這些參數(shù)可以通過應(yīng)用程序顯示執(zhí)行sched_setscheduler()和sched_setparam()函數(shù)來指定。
  用戶進(jìn)程狀態(tài)轉(zhuǎn)換如圖3所示。

圖3 用戶空間進(jìn)程狀態(tài)轉(zhuǎn)換圖

  實(shí)驗(yàn)結(jié)果采集流程:配置USB攝像頭,連續(xù)抓取10幅圖片,分別取第1和第10幅圖像進(jìn)行分析對比試驗(yàn)。效果如圖4所示。

圖 4 效果對比圖

  由圖4可見,圖像在灰度為200處右移,實(shí)際表現(xiàn)為亮度變大,圖像質(zhì)量越來越清晰,說明開始階段圖像采集設(shè)備前期具有短暫的調(diào)節(jié)過程,調(diào)節(jié)后的圖形質(zhì)量明顯提高。
  VC++界面設(shè)計(jì)Windows下,與USB外設(shè)的任何通信需通過設(shè)備驅(qū)動(dòng),該驅(qū)動(dòng)知道如何與系統(tǒng)的USB驅(qū)動(dòng)和訪問設(shè)備的應(yīng)用程序通信。Windows包含應(yīng)用程序與USB通信需要的各種信息,不需要再安裝驅(qū)動(dòng);Win32的應(yīng)用程序接口(API)函數(shù),使得設(shè)備驅(qū)動(dòng)能與應(yīng)用程序之間相互通信,開發(fā)應(yīng)用程序也不需要去了解復(fù)雜的USB協(xié)議。主要步驟有:建立MFC AppWizard(exe)工程;打開設(shè)備并返回設(shè)備句柄;獲取設(shè)備信息;識(shí)別接口信息;識(shí)別設(shè)備路徑名;設(shè)置設(shè)備等。與設(shè)備進(jìn)行數(shù)據(jù)交換,首先把設(shè)備打開,windows下每個(gè)設(shè)備被當(dāng)成一個(gè)文件夾來訪問,每個(gè)文件都有一個(gè)文件名。文件打開后就可以使用Read File和Write File來讀寫文件了。
  本系統(tǒng)采用Nand Flash模擬PC和下位機(jī)之間的交互區(qū)域,實(shí)現(xiàn)了圖像的存儲(chǔ)和訪問。其具有如下優(yōu)點(diǎn):結(jié)構(gòu)層次清晰;圖像傳輸可連續(xù);圖像采集可控性強(qiáng);圖像質(zhì)量高。但是,由于FAT不是為Flash設(shè)計(jì),因此需要透過FTL來訪問Nand Flash。此外,PC和下位機(jī)的同步問題也需要進(jìn)一步的研究和改善。
  圖像處理和識(shí)別作為一種更加直觀的途徑正越來越多的應(yīng)用在農(nóng)業(yè)環(huán)境監(jiān)測儀的農(nóng)業(yè)領(lǐng)域里。本文設(shè)計(jì)了一種基于嵌入式Linux圖像采集系統(tǒng),重點(diǎn)研究了Nand Flash模擬USB device實(shí)現(xiàn)圖像存儲(chǔ)的過程。實(shí)驗(yàn)證明,本系統(tǒng)提供的高質(zhì)量且穩(wěn)定的圖像來源能夠應(yīng)用于農(nóng)業(yè)環(huán)境中。
  • 中國農(nóng)業(yè)儀器網(wǎng)】聲明部分文章轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),且不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如涉及作品內(nèi)容、版權(quán)和其它問題,請?jiān)?0日內(nèi)與本網(wǎng)聯(lián)系。
top
推薦儀器
智能人工氣候箱 TP-R系列
型號(hào):TP-R系列
智能蟲情測報(bào)燈 TPCB-II-C7.0 plus/TPCB-III-C7.0 plus
型號(hào):TPCB-II-C7.0 plus/TPCB-III-C7.0 plus

©2024 http://m.askacustomsbroker.com 版權(quán)所有:浙江托普云農(nóng)科技股份有限公司

地址:杭州市拱墅區(qū)祥園路88號(hào)中國(杭州)智慧信息產(chǎn)業(yè)園I座11-13樓

聯(lián)系電話:0571-86056609 0571-86059660 0571-88971438

售后服務(wù)專線:400-672-1817

浙ICP備09083614號(hào)

免費(fèi)咨詢

  • 在線詢價(jià): QQ
  • 南:13388425012
  • 微信客服
  • 北:19032001373
  • 微信客服