引言
目前,國內智能相機的開發(fā)還是處于起步階段,但是它卻在現(xiàn)實中擁有廣泛的應用。典型的機器視覺系統(tǒng)是一般由光源、CCD或CMOS相機、圖像采集卡、圖像處理軟件及一臺PC機構成。其中,圖像的采集功能由CCD/CMOS相機及圖像采集卡完成;圖像的處理則是在圖像采集/處理卡的支持下,由軟件在PC機上完成。由于基于PC機的機器視覺體積龐大、結構復雜,其應用系統(tǒng)的開發(fā)周期長、成本高,因此智能相機就應運而生。本文提出了一種基于ADSP-BF537嵌入式智能相機的設計方案,使它能夠達到機器視覺檢測低成本,高速率,高精度,易操作,小體積的目的。
1 硬件平臺設計
嵌入式智能相機是一個微小的視覺檢測系統(tǒng),包含圖像采集裝置、圖像處理算法、圖像處理軟件和通信控制裝置。圖像采集裝置主要是獲取圖像數(shù)據(jù),使用的是CCD/CMOS傳感器。圖像處理主要是在DSP中進行,是對圖像進行預處理,識別、檢測圖像特征,分割圖像特征,提取圖像特征,最后得到圖像處理結果。這主要是在數(shù)字信號處理器(DSP)中完成。圖像通信裝置主要是對圖像處理過程進行控制,并且實現(xiàn)圖像處理結果輸出。圖1為所設計智能相機的結構框圖。
在本設計中,相機采用了ADI公司的ADSP-BF537作為控制核心。ADSP-BF537是具有較高性能的系列成員,擁有容量更大的嵌入式存儲器,從而可滿足諸如視頻安全/監(jiān)控和基于工業(yè)環(huán)境的分布式控制/工廠自動化應用等嵌入式應用的較高吞吐量需求。ADSP-BF537提供了卓越的性能,并專為諸如遠程監(jiān)視設備、VoIP、銷售點終端以及生物特征識別/安全應用等低成本連接設備而設計。作為整個系統(tǒng)的核心,ADSP-BF537具有接口豐富,性能優(yōu)良,價格便宜的特點,并具有強大的多媒體數(shù)據(jù)處理能力。
在圖像采集模塊中,相機使用了CMOS圖像傳感器。與CCD圖像傳感器的高成本相比,CMOS圖像觸感器具有低功耗,低成本的優(yōu)勢。隨著CMOS傳感器制造工藝的發(fā)展,其性能將會越來越接近CCD傳感器。相機通過CMOS圖像傳感器采集圖像數(shù)據(jù),并且在DSP通過I2C的控制下,把數(shù)據(jù)傳入DSP。
在通信控制模塊中,相機通過以太網(wǎng)、串口RS 232,I/O端口與外部進行連接,從而實現(xiàn)相機的數(shù)據(jù)輸出與控制。以太網(wǎng)用以實現(xiàn)上位機與相機的通信與控制,而I/O端口用來外部觸發(fā)控制相機或者實現(xiàn)相機向外部輸出控制信號。串口RS 232主要是用來不通過仿真器來燒寫U_Boot引導程序和uClinux鏡像文件。
2 軟件設計
相機的軟件程序設計使用了一個Oscar(Open source camera)框架平臺和OpenCV視覺庫,從而使軟件設計更加的簡單、方便、快捷,圖2為Oscar框架與OpenCV的關系圖。Oscar為軟件的設計提供了簡易的應用方法模塊,并且隱藏了硬件接口的復雜性,從而使軟件設計者不需要關心底層硬件程序的設計。而OpenCV構建了一個簡單易用的計算機視覺框架,幫助并發(fā)人員更便捷地設計更復雜的計算機視覺相關的應用程序。
2.1 Oscar框架
Oscar軟件框架嘲是為硬件平臺的應用而抽取出來的。Oscar框架包含17個模塊,如表1所示,每個模塊都有相應的功能和所需的平臺支持。在程序的編譯過程中,應用程序只需要加載它需要的應用模塊,從而節(jié)省了程序空間,提高了運行效率。
下面主要介紹幾個重要的模塊:
Bitmap模塊提供從文件系統(tǒng)中讀?。瘜懭隻mp圖片的函數(shù),支持24位BGR和Greyscale圖片。
Cam模塊實現(xiàn)了與CMOS傳感器的交互。它包含了讀/寫相機寄存器和捕捉圖片的功能,同時也能夠對雙緩沖器和進行自動管理。在目標板上,Cam模塊直接與CMOS傳感器的幀捕捉設備驅動相連接。它把API方法傳輸?shù)絀OCTL。在主機上,這個模塊保存了傳感器的一個寄存器集,并且時刻讓它保持更新。由于必須從文件系統(tǒng)中加載,因此Cam模塊使用一個文件名來讀取得正確的圖像文件區(qū),并且通過Bitmap模塊來從文件系統(tǒng)中加載圖像。
Ipc模塊提供了一種在相同應用程序進程間做內部交互的簡單方法。這個交互是以客戶-服務機的方式進行的。交互通道一面是發(fā)送讀/寫請求到客戶端,然后服務端響應這些請求。這個通道使得低優(yōu)先權的服務端和客戶端的人機界面進程之間交互不會阻塞。兩個進程都需要在一系列的參數(shù)和大小上保持一致。通過參數(shù)識別,通信才會執(zhí)行。Ipc模塊在文件系統(tǒng)中通過AF_UNIX套接字發(fā)送請求和相應信息。每個這樣的套接字代表的是一個全雙工接口,被稱為一個Ipc通道。通過Ipc通道配置號的注冊,從而允許同時與多個進程的交互。圖3,圖4為Ipc模塊的讀與寫。
2.2 OpenCV
OpenCV(Open Source Computer Vision Library)是一個基于開源的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列C函數(shù)和少量C++類構成,同時提供了Python,Ruby,Matlab等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。OpenCV提供的視覺處理算法非常豐富,并且它部分以C語言編寫,加上其開源的特性,處理得當,不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,所以用它來做算法的移植很方便,OpenCV的代碼經(jīng)過適當改寫可以正常的運行在DSP系統(tǒng)和單片機系統(tǒng)中。OpenCV主體分為5個模塊,其中4個模塊如圖5所示。OpenCv的CV模塊包含基本的圖像處理函數(shù)和高級的計算機視覺算法。ML是機器學習庫,包含一些基于統(tǒng)計的分類和聚類工具。HighGUI包含圖像和視頻輸入/輸出的函數(shù)。CXCore包含OpenCV的一些基本數(shù)據(jù)結構和相關函數(shù)。
2.3 程序設計流程
相機通過RS 232串口把編譯好的U_Boot和μCLinux鏡像文件燒寫到里面的FLASH中,然后通過Eclipse集成開發(fā)環(huán)境進行應用軟件設計。本設計實現(xiàn)了一個簡單的應用,可以通過智能相機來檢測條形碼。流程圖如圖6所示。
在圖像處理模塊中,主要包含了圖像圖像預處理,分析條形碼黑白條寬度,判斷條形碼類別,最后識別出條形碼并且顯示條形碼數(shù)據(jù),流程框圖如圖7所示。
3 實驗結果及分析
下面4張圖為在四種不同的速度情況下檢測的條形碼樣本,它們是在相同的外界環(huán)境(光源、曝光時間等)下檢測。圖8是在單幀圖片下的檢測,圖9是在15f/s的速度下檢測,圖10則是在20f/s的速度下檢測。在三種情況下分別對100個條形碼進行檢測,圖11是在30f/s的速度下進行檢測。表2為檢測結果。
由表2可知,在低速(即在15f/s以下)時,相機能夠對條形碼進行正確的檢測,隨著速度的增加,檢測的合格率會逐漸的下降。
4 結語
此智能相機的設計是以ADSP-BF537為處理控制核心,結合Oscar框架和OpenCV視覺庫而實現(xiàn)的。通過一個簡單的檢測條形碼的應用程序可以看出,在檢測速度不高的情況下,此智能相機能夠準確地檢測產(chǎn)品,并且操作簡單,能夠廣泛地應用到生活和生產(chǎn)實踐中。
-
芯片
+關注
關注
456文章
51059瀏覽量
425673 -
嵌入式
+關注
關注
5088文章
19160瀏覽量
306556 -
機器視覺
+關注
關注
162文章
4400瀏覽量
120516
發(fā)布評論請先 登錄
相關推薦
評論