桂玲++王賾坤++黃梅志
摘 要圖像檢測在現(xiàn)實生活中應(yīng)用很廣泛,本項目設(shè)計一種基于PowerPC圖像檢測系統(tǒng),研究基于PowerPC嵌入式系統(tǒng)的硬件電路,利用圖像的算法和 OPENCV的開源代碼,完成圖像檢測中目標圖像數(shù)據(jù)的讀取。項目開發(fā)意義在于檢測圖像中目標物體的大小,提供依據(jù),廣泛應(yīng)用于醫(yī)療和公安等圖像檢測領(lǐng)域。
【關(guān)鍵詞】FPGA PowerPC 圖像檢測
Xilinx公司FPGA具有功能強大設(shè)計靈活的特點,被廣大設(shè)計人員開發(fā)和使用。隨著FPGA嵌入式技術(shù)的發(fā)展,在很多領(lǐng)域得到廣泛的應(yīng)用,比如圖像檢測運用于醫(yī)療診斷,刑偵破案,海關(guān)貨物圖像檢測等等。
1 理論
圖像檢測就是通過圖像對感興趣的特征區(qū)域(檢測目標)進行提取的過程,檢測目標需要事先進行圖像特征提取、歸納,最終通過相應(yīng)算法分離出來,可對圖像中的背景和目標進行有效的分離,檢測方法可分為單幀和多幀圖像檢測。單幀主要是利用圖像的灰度信息對目標進行分割,多幀通過序列圖像的變化特征實現(xiàn)對目標的提取,主要用于運動目標的檢測,大體包括:基于像素分析的方法、特征檢測的方法和基于變換的方法。以 m×m 像素圖像分辨率的檢測器為例,其內(nèi)部存在的滿足特定條件的所有矩形的總數(shù),求出每個待檢測子窗口中的特征個數(shù)。求出每個特征的特征值,利用積分圖計算特征值。
Adaboost算法在圖像檢索和人臉表情識別以及流行的觸屏手機上的手寫輸入識別等問題中都有普遍應(yīng)用。是一種迭代算法,而且比較重要且通用的用于特征分類的算法,其主要思想是針對相同的訓(xùn)練集用不同的分類器(弱分類器)去學(xué)習(xí),然后把這些弱分類器結(jié)合起來,以形成更強的最終分類器(強分類器)。
PowerPC具有運算速度快,設(shè)計靈活,功能強大的特點,PowerPC基本架構(gòu): PowerPC(PPC)硬核;PLB總線為高速片上總線;OPB總線為外圍設(shè)備低速總線;PLB BRAM、UART接口、網(wǎng)絡(luò)接口、外部存儲器等為外圍設(shè)備.
OPENCV是Intel 公司開發(fā)的計算機視覺庫, 其中包含大量的函數(shù)用來處理計算機視覺領(lǐng)域中常見的問題,例如圖像處理(去噪、邊緣檢測、角點檢測、采樣與插值、形態(tài)學(xué)處理),圖像數(shù)據(jù)的內(nèi)存分配與釋放,矩陣/向量數(shù)據(jù)操作及線性代數(shù)運算(矩陣乘積、矩陣方程求解、特征值),目標識別(特征方法、HMM模型),圖像標注,運動分析和跟蹤、3D重建和指紋識別等等
2 實驗
選用Xilinx Virtex-II 開發(fā)板。利用XILINX公司FPGA軟件平臺EDK。
2.1 先對硬件進行測試
對 PowerPC進行硬件配置,生成硬件網(wǎng)表,進入EDK,創(chuàng)建工程, PowerPC時鐘選擇 300MHz,參考時鐘與總線時鐘都設(shè)為 100MHz。Debug I/F設(shè)置 FPGA JTAG, On chip memory 中指令與數(shù)據(jù)部分各設(shè)置 16K,Cache setup 設(shè)置 Enable。Cache的大小為16K。外圍接口配置:選擇 RS232-Uart-1,波特率設(shè)置為115200、數(shù)據(jù)位為8、寄偶校驗為0、停止位為1,并且設(shè)置中斷,圖像檢測系統(tǒng)程序中使用串口進行調(diào)試,設(shè)置外圍存儲器擴展接口,為256M。點擊Generate 生成硬件平臺相關(guān)文件。進入硬件界面XPS,生成PowerPC的網(wǎng)表文件。把 Bitsream下載到開發(fā)板的過程中,系統(tǒng)會自動把外部存儲器的測試程序下載到片內(nèi)存儲器中并執(zhí)行,通過超級終端觀察測試結(jié)果。
2.2 編寫應(yīng)用程序
啟動應(yīng)用程序EDK當(dāng)中SDK,對工程進行配置,選擇 ppc405_0。雙擊photo_Detect.c 文件,找到 main 函數(shù).
……
#include “cv.h” //跟圖像有關(guān)的庫文件,核心函數(shù)庫
#include “highgui.h” //中包含圖像處理, 顯示等方面的函數(shù)。GUI函數(shù)庫
……
Cvhaarclassifiercascade* 用于對單幅圖片的檢測。在函數(shù)調(diào)用前首先利用 cvSetImagesForHaarClassifierCascade設(shè)定積分圖和合適的比例系數(shù) (=> 窗口尺寸)。當(dāng)分析的矩形框全部通過級聯(lián)分類器每一層的時返回正值(這是一個候選目標),否則返回0或負值。Detect_and_draw_objects()為核心函數(shù),括號內(nèi)的image為圖片信息指針,需要提取待檢測圖片中的灰度信息與檢測矩陣中的數(shù)據(jù)作比對,以確定圖片中是否存在目標圖像。
為了提高檢測速度,先通過cvCreateImage對原始檢測圖象進行尺寸縮小,之后通過cvHaarDetectObjects函數(shù)對待檢測圖像進行檢測窗口遍歷,設(shè)置檢測窗口放大系數(shù)。如果檢測結(jié)束存在目標區(qū)域,則通過cvRectangle函數(shù)在檢測圖片中標注出目標圖象的區(qū)域。應(yīng)用程序設(shè)置完成后,被自動編譯鏈接,如果正確無誤,SDK已經(jīng)生成photo. elf可執(zhí)行文件。
2.3 系統(tǒng)調(diào)試
先打開開發(fā)板的電源,檢查開發(fā)板的串口與電腦是否相連。在XPS界面下,點Debug 然后XMD, 下載待測圖片、分類矩陣dat文件與執(zhí)行文件elf至開發(fā)板,使用命令:
dow -data pic1.jpg.raw.big 0x0fe00000
dow -data standard.raw.big 0x0ff00000
dowphoto.elf
待檢測圖片大小350×300,超級終端上顯示目標對象數(shù)據(jù)坐標、高度和寬度。
3 結(jié)論
數(shù)字圖象在生活中的應(yīng)用也越來越廣泛,電子技術(shù)發(fā)展也不斷邁向高科技, 該項目是基于FPGA 的嵌入式系統(tǒng)設(shè)計,通過Adaboost算法,理解OPENCV開源代碼,完成了PowerPC嵌入式系統(tǒng)圖像檢測。
參考文獻
[1]田耘,徐文波著.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學(xué)出版社,2012.
[2]劉波文,張軍.FPGA嵌入式項目開發(fā)[M].北京:航空航天大學(xué)出版社,2012.
作者單位
武漢華夏理工學(xué)院 湖北省武漢市 430223