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

ADSP-BF537 具備嵌入式網絡連接能力的Blackfin處理器

ADSP-BF534/ADSP-BF536/ADSP-BF537:Blackfin嵌入式處理器數據手冊

EE-262:ADSP-BF537 Blackfin?針對ADSP-BF533用戶的亮點

ADSP-BF537 Blackfin-SoP-SoP/SoP-Processor硬件參考

EE-262:面向ADSP-BF533用戶的ADSP-BF537 Blackfin亮點

評論