引言
目前,國(guó)內(nèi)智能相機(jī)的開發(fā)還是處于起步階段,但是它卻在現(xiàn)實(shí)中擁有廣泛的應(yīng)用。典型的機(jī)器視覺系統(tǒng)是一般由光源、CCD或CMOS相機(jī)、圖像采集卡、圖像處理軟件及一臺(tái)PC機(jī)構(gòu)成。其中,圖像的采集功能由CCD/CMOS相機(jī)及圖像采集卡完成;圖像的處理則是在圖像采集/處理卡的支持下,由軟件在PC機(jī)上完成。由于基于PC機(jī)的機(jī)器視覺體積龐大、結(jié)構(gòu)復(fù)雜,其應(yīng)用系統(tǒng)的開發(fā)周期長(zhǎng)、成本高,因此智能相機(jī)就應(yīng)運(yùn)而生。本文提出了一種基于ADSP-BF537嵌入式智能相機(jī)的設(shè)計(jì)方案,使它能夠達(dá)到機(jī)器視覺檢測(cè)低成本,高速率,高精度,易操作,小體積的目的。
1 硬件平臺(tái)設(shè)計(jì)
嵌入式智能相機(jī)是一個(gè)微小的視覺檢測(cè)系統(tǒng),包含圖像采集裝置、圖像處理算法、圖像處理軟件和通信控制裝置。圖像采集裝置主要是獲取圖像數(shù)據(jù),使用的是CCD/CMOS傳感器。圖像處理主要是在DSP中進(jìn)行,是對(duì)圖像進(jìn)行預(yù)處理,識(shí)別、檢測(cè)圖像特征,分割圖像特征,提取圖像特征,最后得到圖像處理結(jié)果。這主要是在數(shù)字信號(hào)處理器(DSP)中完成。圖像通信裝置主要是對(duì)圖像處理過程進(jìn)行控制,并且實(shí)現(xiàn)圖像處理結(jié)果輸出。圖1為所設(shè)計(jì)智能相機(jī)的結(jié)構(gòu)框圖。

在本設(shè)計(jì)中,相機(jī)采用了ADI公司的ADSP-BF537作為控制核心。ADSP-BF537是具有較高性能的系列成員,擁有容量更大的嵌入式存儲(chǔ)器,從而可滿足諸如視頻安全/監(jiān)控和基于工業(yè)環(huán)境的分布式控制/工廠自動(dòng)化應(yīng)用等嵌入式應(yīng)用的較高吞吐量需求。ADSP-BF537提供了卓越的性能,并專為諸如遠(yuǎn)程監(jiān)視設(shè)備、VoIP、銷售點(diǎn)終端以及生物特征識(shí)別/安全應(yīng)用等低成本連接設(shè)備而設(shè)計(jì)。作為整個(gè)系統(tǒng)的核心,ADSP-BF537具有接口豐富,性能優(yōu)良,價(jià)格便宜的特點(diǎn),并具有強(qiáng)大的多媒體數(shù)據(jù)處理能力。
在圖像采集模塊中,相機(jī)使用了CMOS圖像傳感器。與CCD圖像傳感器的高成本相比,CMOS圖像觸感器具有低功耗,低成本的優(yōu)勢(shì)。隨著CMOS傳感器制造工藝的發(fā)展,其性能將會(huì)越來越接近CCD傳感器。相機(jī)通過CMOS圖像傳感器采集圖像數(shù)據(jù),并且在DSP通過I2C的控制下,把數(shù)據(jù)傳入DSP。
在通信控制模塊中,相機(jī)通過以太網(wǎng)、串口RS 232,I/O端口與外部進(jìn)行連接,從而實(shí)現(xiàn)相機(jī)的數(shù)據(jù)輸出與控制。以太網(wǎng)用以實(shí)現(xiàn)上位機(jī)與相機(jī)的通信與控制,而I/O端口用來外部觸發(fā)控制相機(jī)或者實(shí)現(xiàn)相機(jī)向外部輸出控制信號(hào)。串口RS 232主要是用來不通過仿真器來燒寫U_Boot引導(dǎo)程序和uClinux鏡像文件。
2 軟件設(shè)計(jì)
相機(jī)的軟件程序設(shè)計(jì)使用了一個(gè)Oscar(Open source camera)框架平臺(tái)和OpenCV視覺庫(kù),從而使軟件設(shè)計(jì)更加的簡(jiǎn)單、方便、快捷,圖2為Oscar框架與OpenCV的關(guān)系圖。Oscar為軟件的設(shè)計(jì)提供了簡(jiǎn)易的應(yīng)用方法模塊,并且隱藏了硬件接口的復(fù)雜性,從而使軟件設(shè)計(jì)者不需要關(guān)心底層硬件程序的設(shè)計(jì)。而OpenCV構(gòu)建了一個(gè)簡(jiǎn)單易用的計(jì)算機(jī)視覺框架,幫助并發(fā)人員更便捷地設(shè)計(jì)更復(fù)雜的計(jì)算機(jī)視覺相關(guān)的應(yīng)用程序。

2.1 Oscar框架
Oscar軟件框架嘲是為硬件平臺(tái)的應(yīng)用而抽取出來的。Oscar框架包含17個(gè)模塊,如表1所示,每個(gè)模塊都有相應(yīng)的功能和所需的平臺(tái)支持。在程序的編譯過程中,應(yīng)用程序只需要加載它需要的應(yīng)用模塊,從而節(jié)省了程序空間,提高了運(yùn)行效率。

下面主要介紹幾個(gè)重要的模塊:
Bitmap模塊提供從文件系統(tǒng)中讀取/寫入bmp圖片的函數(shù),支持24位BGR和Greyscale圖片。
Cam模塊實(shí)現(xiàn)了與CMOS傳感器的交互。它包含了讀/寫相機(jī)寄存器和捕捉圖片的功能,同時(shí)也能夠?qū)﹄p緩沖器和進(jìn)行自動(dòng)管理。在目標(biāo)板上,Cam模塊直接與CMOS傳感器的幀捕捉設(shè)備驅(qū)動(dòng)相連接。它把API方法傳輸?shù)絀OCTL。在主機(jī)上,這個(gè)模塊保存了傳感器的一個(gè)寄存器集,并且時(shí)刻讓它保持更新。由于必須從文件系統(tǒng)中加載,因此Cam模塊使用一個(gè)文件名來讀取得正確的圖像文件區(qū),并且通過Bitmap模塊來從文件系統(tǒng)中加載圖像。
Ipc模塊提供了一種在相同應(yīng)用程序進(jìn)程間做內(nèi)部交互的簡(jiǎn)單方法。這個(gè)交互是以客戶-服務(wù)機(jī)的方式進(jìn)行的。交互通道一面是發(fā)送讀/寫請(qǐng)求到客戶端,然后服務(wù)端響應(yīng)這些請(qǐng)求。這個(gè)通道使得低優(yōu)先權(quán)的服務(wù)端和客戶端的人機(jī)界面進(jìn)程之間交互不會(huì)阻塞。兩個(gè)進(jìn)程都需要在一系列的參數(shù)和大小上保持一致。通過參數(shù)識(shí)別,通信才會(huì)執(zhí)行。Ipc模塊在文件系統(tǒng)中通過AF_UNIX套接字發(fā)送請(qǐng)求和相應(yīng)信息。每個(gè)這樣的套接字代表的是一個(gè)全雙工接口,被稱為一個(gè)Ipc通道。通過Ipc通道配置號(hào)的注冊(cè),從而允許同時(shí)與多個(gè)進(jìn)程的交互。圖3,圖4為Ipc模塊的讀與寫。

2.2 OpenCV
OpenCV(Open Source Computer Vision Library)是一個(gè)基于開源的跨平臺(tái)計(jì)算機(jī)視覺庫(kù),可以運(yùn)行在Linux、Windows和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python,Ruby,Matlab等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV提供的視覺處理算法非常豐富,并且它部分以C語言編寫,加上其開源的特性,處理得當(dāng),不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,所以用它來做算法的移植很方便,OpenCV的代碼經(jīng)過適當(dāng)改寫可以正常的運(yùn)行在DSP系統(tǒng)和單片機(jī)系統(tǒng)中。OpenCV主體分為5個(gè)模塊,其中4個(gè)模塊如圖5所示。OpenCv的CV模塊包含基本的圖像處理函數(shù)和高級(jí)的計(jì)算機(jī)視覺算法。ML是機(jī)器學(xué)習(xí)庫(kù),包含一些基于統(tǒng)計(jì)的分類和聚類工具。HighGUI包含圖像和視頻輸入/輸出的函數(shù)。CXCore包含OpenCV的一些基本數(shù)據(jù)結(jié)構(gòu)和相關(guān)函數(shù)。

2.3 程序設(shè)計(jì)流程
相機(jī)通過RS 232串口把編譯好的U_Boot和μCLinux鏡像文件燒寫到里面的FLASH中,然后通過Eclipse集成開發(fā)環(huán)境進(jìn)行應(yīng)用軟件設(shè)計(jì)。本設(shè)計(jì)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的應(yīng)用,可以通過智能相機(jī)來檢測(cè)條形碼。流程圖如圖6所示。
在圖像處理模塊中,主要包含了圖像圖像預(yù)處理,分析條形碼黑白條寬度,判斷條形碼類別,最后識(shí)別出條形碼并且顯示條形碼數(shù)據(jù),流程框圖如圖7所示。

3 實(shí)驗(yàn)結(jié)果及分析
下面4張圖為在四種不同的速度情況下檢測(cè)的條形碼樣本,它們是在相同的外界環(huán)境(光源、曝光時(shí)間等)下檢測(cè)。圖8是在單幀圖片下的檢測(cè),圖9是在15f/s的速度下檢測(cè),圖10則是在20f/s的速度下檢測(cè)。在三種情況下分別對(duì)100個(gè)條形碼進(jìn)行檢測(cè),圖11是在30f/s的速度下進(jìn)行檢測(cè)。表2為檢測(cè)結(jié)果。

由表2可知,在低速(即在15f/s以下)時(shí),相機(jī)能夠?qū)l形碼進(jìn)行正確的檢測(cè),隨著速度的增加,檢測(cè)的合格率會(huì)逐漸的下降。

4 結(jié)語
此智能相機(jī)的設(shè)計(jì)是以ADSP-BF537為處理控制核心,結(jié)合Oscar框架和OpenCV視覺庫(kù)而實(shí)現(xiàn)的。通過一個(gè)簡(jiǎn)單的檢測(cè)條形碼的應(yīng)用程序可以看出,在檢測(cè)速度不高的情況下,此智能相機(jī)能夠準(zhǔn)確地檢測(cè)產(chǎn)品,并且操作簡(jiǎn)單,能夠廣泛地應(yīng)用到生活和生產(chǎn)實(shí)踐中。
-
芯片
+關(guān)注
關(guān)注
462文章
53334瀏覽量
456224 -
嵌入式
+關(guān)注
關(guān)注
5178文章
20044瀏覽量
326466 -
機(jī)器視覺
+關(guān)注
關(guān)注
163文章
4685瀏覽量
124720
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)估ADSP-BF537 Blackfin處理器的ADZS-BF537-EZLITE,ADSP-BF537 EZ-KIT Lite評(píng)估系統(tǒng)
嵌入式智能相機(jī)有什么優(yōu)點(diǎn)?
求一種基于ADSP-BF537的SOC驗(yàn)證方案
基于ADSP-BF537的無線視頻傳輸方案
ADSP-BF537 具備嵌入式網(wǎng)絡(luò)連接能力的Blackfin處理器
ADSP-BF534/ADSP-BF536/ADSP-BF537:Blackfin嵌入式處理器數(shù)據(jù)手冊(cè)
ADSP-BF537 EZ-KIT Lite電路板設(shè)計(jì)數(shù)據(jù)庫(kù)
EE-262:ADSP-BF537 Blackfin?針對(duì)ADSP-BF533用戶的亮點(diǎn)
ADSP-BF537 EZ-KIT Lite<sup>?</sup>評(píng)估系統(tǒng)手冊(cè)
ADSP-BF537 Blackfin-SoP-SoP/SoP-Processor硬件參考
適用于ADSP-BF537 Blackfin處理器的EZ-KIT Lite
ADSP-BF537 EZ-KIT Lite電路板設(shè)計(jì)數(shù)據(jù)庫(kù)
EE-262:面向ADSP-BF533用戶的ADSP-BF537 Blackfin亮點(diǎn)

基于ADSP-BF537芯片為核心實(shí)現(xiàn)嵌入式智能相機(jī)的設(shè)計(jì)
評(píng)論