基于圖像傳感器的CPLD視覺(jué)系統設計

發(fā)布時(shí)間:2010-4-27 14:14    發(fā)布者:李寬
關(guān)鍵詞: CPLD , 視覺(jué) , 圖像傳感器 , 系統設計
目前,關(guān)于視覺(jué)系統的研究已經(jīng)成為熱點(diǎn),也有開(kāi)發(fā)出的系統可供參考。但這些系統大多是基于PC機的,由于算法和硬件結構的復雜性而使其在小型嵌入式系統中的應用受到了,限制。上述系統將圖像數據采集后,視覺(jué)處理算法是在PC機上實(shí)現的。隨著(zhù)嵌入式微處理器技術(shù)的進(jìn)步,32位ARM處理器系統擁有很高的運算速度和很強的信號處理能力,可以作為視覺(jué)系統的處理器,代替PC機來(lái)實(shí)現簡(jiǎn)單的視覺(jué)處理算法。下面介紹一種基于A(yíng)RM和CPLD的嵌入式視覺(jué)系統,希望能分享嵌入式視覺(jué)開(kāi)發(fā)過(guò)程中的一些經(jīng)驗。

1 系統方案與原理

在嵌入式視覺(jué)的設計中,目前主流的有以下2種方案:

方案1 圖像傳感器+微處理器(ARM或DSP)+SRAM

方案2圖像傳感器+CPLD/FPGA+微處理器+SRAM

方案1系統結構緊湊,功耗低。在圖像采集時(shí),圖像傳感器輸出的同步時(shí)序信號的識別需要借助ARM的中斷,而中斷處理時(shí),微處理器需要完成程序跳轉、保存上下文等工作,降低了圖像采集的速度,適合對采集速度要求不高、功耗低的場(chǎng)合。

方案2借助CPLD來(lái)識別圖像傳感器的同步時(shí)序信號,不必經(jīng)過(guò)微處理器的中斷,因而系統的采集速度提高,但CPLD的介入會(huì )使系統的功耗提高。

為了綜合以上2種方案的優(yōu)勢,在硬件上采用“ARM+CPLD+圖像傳感器+SRAM”。該方案充分利用了CPLD的可編程性,通過(guò)軟件編程來(lái)兼有方案1 的優(yōu)勢,具體體現在以下方面:

①功耗的高低可以控制。對于功耗有嚴格要求的場(chǎng)合,通過(guò)CPLD的可編程性將時(shí)序部分的接口與ARM的中斷端口相連,僅僅是組合邏輯的總線(xiàn)相連,可以降低 CPLD的功耗從而達到方案1的效果;對于采集速度要求高而功耗要求不高的情況,可以充分發(fā)揮CPLD的優(yōu)勢,利用組合與時(shí)序邏輯來(lái)實(shí)現圖像傳感器輸出同步信號的識別,并將圖像數據寫(xiě)入SRAM中。

②器件的選擇可以多樣。在硬件設計上,所有總線(xiàn)均與CPLD相連;在軟件設計上,不同的模塊單獨按功能封裝。這樣以CPLD為中心,系統的其他器件均可更換而無(wú)需對CPLD部分程序進(jìn)行改動(dòng),有利于系統的功能升級。作為本系統的一種應用,開(kāi)發(fā)了視覺(jué)跟蹤的程序,可以在目標和背景顏色對比強烈的情況下對物體進(jìn)行跟蹤。通過(guò)對CMOS攝像頭采集來(lái)的數據進(jìn)行實(shí)時(shí)處理,根據物體的顏色計算出被追蹤物體的質(zhì)心坐標。下面分別描述系統各部分的功能。

2 系統硬件

2.1 硬件組成及連接

系統的硬件主要有4部分:CMOS圖像傳感器OV6620、可編程器件CPLD、 512 KB的SRAM和32位微處理器LPC2214。

OV6620是美國OmniVision公司生產(chǎn)的CMOS圖像傳感器,以其高性能、低功耗適合應用在嵌入式圖像采集系統中,本系統圖像數據的輸入都是通過(guò)OV6620采集進(jìn)來(lái)的;可編程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件編程語(yǔ)言在QuartusII下編寫(xiě)程序;作為系統的數據緩沖,SRAM選用的是IS61LV5128,其隨機訪(fǎng)問(wèn)的特性為圖像處理程序提供了便利;而LPC2214在PLL(鎖相環(huán))的支持下最高可以運行在60 MHz的頻率下,為圖像的快速處理提供了硬件支持。

0V6620集成在一個(gè)板卡上,有獨立的17 MHz晶振。輸出3個(gè)圖像同步的時(shí)序信號:像素時(shí)鐘PCLK、幀同步VSYNC和行同步HREF。同時(shí),還可以通過(guò)8位或16位的數據總線(xiàn)輸出RGB或 YCrCb格式的圖像數據。

在硬件設計上,有2個(gè)問(wèn)題需要解決:

    ①圖像采集的嚴格時(shí)序同步;
    ②雙CPU共享SRAM的總線(xiàn)仲裁。

解決第一個(gè)問(wèn)題的關(guān)鍵在于如何實(shí)時(shí)、準確地讀取OV6620的時(shí)序輸出信號,據此將圖像數據寫(xiě)入SRAM中。這里采用的解決方案是用CPLD來(lái)實(shí)現時(shí)序信號的識別以及圖像數據的寫(xiě)入。CPLD在硬件上可以識別信號的邊沿,速度更快,通過(guò)Verilog語(yǔ)言編寫(xiě)Mealy狀態(tài)機來(lái)實(shí)現圖像數據的SRAM寫(xiě)入,更加穩定。

對于雙CPU共享SRAM,可以通過(guò)合理的連接方式來(lái)解決?紤]到CPLD的可編程性,將OV6620的數據總線(xiàn),LPC2214的地址、數據總線(xiàn)以及 SRAM的總線(xiàn)都連接到CPLD上。通過(guò)編程來(lái)控制總線(xiàn)之間的連接,只要在軟件上保證總線(xiàn)的互斥性,即在同一時(shí)刻有且僅有一個(gè)控制器(CPLD或者 LPC2214)來(lái)操作SRAM的總線(xiàn),就可以有效地避免總線(xiàn)沖突。這樣,硬件上的仲裁就可以通過(guò)軟件來(lái)保證,該過(guò)程可以通過(guò)在CPLD中編寫(xiě)多路數據選擇器來(lái)實(shí)現。

各器件之間的連接關(guān)系如圖1所示。



由圖1可見(jiàn),微處理器的總線(xiàn)接在CPLD上,在對功耗有嚴格要求的場(chǎng)合中,只需要在CPLD中,將OV6620的同步時(shí)序信號所對應的引腳與 LPC2214連接在CPLD上的中斷引腳相連,系統就可以轉換成方案1的形式。對CPLD而言,引腳相連的僅僅是組合邏輯,降低了功耗。方案1的具體工作過(guò)程可見(jiàn)參考文獻。而對于采集速度要求較高的場(chǎng)合,CPLD部分的程序源代碼見(jiàn)本刊網(wǎng)站www.mesnet.com.cn——編者注。下面重點(diǎn)介紹這種情況下的應用。

2.2 工作過(guò)程

系統上電后,首先由LPC2214通過(guò)I2C總線(xiàn)配置攝像頭的工作狀態(tài),需要配置的主要有輸出圖像的數據格式、速率、是否白平衡,以及自動(dòng)增益是否打開(kāi)。配置完成后,LPC2214發(fā)出圖像采集的信號給CPLD,此時(shí)CPlD操作SRAM的總線(xiàn),并通過(guò)對OV6620輸出時(shí)序的檢測將圖像數據寫(xiě)入 SRAM。當然,寫(xiě)入SRAM需要嚴格符合SRAM的操作時(shí)序。一幀圖像采集完成后,CPLD置位標志位來(lái)通知LPC2214,如果LPC2214處于空閑狀態(tài),則通知CPLD將總線(xiàn)使用權切換至LPC2214,由LPC2214讀取SRAM中的數據并進(jìn)行圖像處理。同時(shí),發(fā)送信號給CPLD進(jìn)行數據采集,圖像的采集和處理將并行執行,提高了系統的工作效率。當再次采集完一幀數據后,重復上述過(guò)程。

2.3 硬件方案的特點(diǎn)

LPC2214負責圖像處理,CPLD負責圖像數據的采集,很好地實(shí)現了功能上的封裝?梢钥吹,CPLD將與硬件時(shí)序相關(guān)的程序封裝,與外界的接口僅為標志狀態(tài)線(xiàn)以及數據采集總線(xiàn),極大地方便了系統的升級而無(wú)需改動(dòng)圖像采集部分的硬件和軟件。甚至更換為其他型號功能更為強大的微處理器,只要按照上述標志狀態(tài)線(xiàn)的約定來(lái)操作,系統仍然可以正常工作,增強了系統的兼容性和可移植性。

3 系統軟件

系統軟件主要由ARM微處理器和CPLD兩部分程序構成。ARM部分的代碼使用C語(yǔ)言在A(yíng)DSl.2環(huán)境下開(kāi)發(fā),而CPLD部分則使用Verilog硬件語(yǔ)言在QuartusII下開(kāi)發(fā)。

3.1 CPLD部分程序設計

CPLD的程序主要分為2部分:組合邏輯和時(shí)序邏輯。組合邏輯主要完成總線(xiàn)仲裁,程序并不依賴(lài)CPLD的全局時(shí)鐘;時(shí)序邏輯完成對信號的檢測,根據 SRAM的操作時(shí)序將圖像數據寫(xiě)入。

在總線(xiàn)仲裁部分,需要注意的是:對CPLD而言,不同的時(shí)刻同一總線(xiàn)的數據流人方向是不同的。因而在Verilog中,需要聲明總線(xiàn)為雙向端口。具體的總線(xiàn)仲裁程序如下:



對雙向端口的總線(xiàn)操作總結如下:

    ①需要控制信號指明端口在某一時(shí)刻的方向;
    ②輸出高阻即代表該雙向端口是輸入狀態(tài),此時(shí)可以作為普通的輸入端口來(lái)使用。

時(shí)序邏輯部分主要完成對圖像傳感器時(shí)序信號的識別。如圖2所示,CPLD需要首先檢測VSYNc的下降沿,接著(zhù)檢測HREF信號的上升沿,然后在PCLK 信號的上升沿將圖像數據讀入。



在Verilog語(yǔ)言中,對上升沿的檢測是通過(guò)always語(yǔ)句來(lái)實(shí)現的。例如檢測時(shí)鐘信號cam_pclk的上升沿:always@(posedge cam_pclk)。但從上面的分析中可以看出,需要檢測的信號沿有3個(gè),可以都用always來(lái)檢測,但在Verilog的語(yǔ)法中always語(yǔ)句是不可以嵌套的。為了解決這個(gè)問(wèn)題,本系統中采用了如下方式:整個(gè)模塊只有一個(gè)時(shí)序邏輯的always塊,其他的信號沿檢測用與al—ways等價(jià)的方式實(shí)現。例如對于cam_vsyn信號,設置2個(gè)臨時(shí)信號vsyn_0和vsyn_1,在每個(gè)時(shí)鐘信號的上升沿,進(jìn)行如下賦值:



這樣,當每個(gè)時(shí)鐘沿到來(lái)時(shí)都會(huì )更新vsyn_0和vsyn_1的值。當vsyn_O的值為O且vsyn_1的值為1時(shí),認為是上升沿到來(lái),同理也可以檢測下降沿。需要注意的是:這種方式下,時(shí)鐘信號的周期要遠遠小于被檢測信號的高電平和低電平的持續時(shí)間。如果信號脈沖過(guò)窄,在整個(gè)脈沖期間vsyn_O和 vsyn_l的值都沒(méi)有更新,就會(huì )丟失邊沿的檢測。

數據寫(xiě)入SRAM的過(guò)程是用Mealy狀態(tài)機來(lái)實(shí)現的,程序具有通用性。若使用其他型號的SRAM,只需要根據器件的讀寫(xiě)時(shí)序在相應的狀態(tài)中修改高低電平。狀態(tài)機使程序的結構清晰,調試方便。

3.2 ARM部分程序設計

目前,基于PC機的視覺(jué)處理算法有很多,但在基于微處理器的嵌入式視覺(jué)系統中,系統在硬件資源和處理速度上都無(wú)法與PC機相比。特別是在有實(shí)時(shí)性要求的情況下,需要編寫(xiě)適合嵌入式系統特點(diǎn)的快速有效的算法。下面編寫(xiě)的算法都是根據這個(gè)思想來(lái)編寫(xiě)的。

顏色跟蹤:顏色跟蹤的任務(wù)可以分解為顏色標定和顏色分割兩個(gè)步驟。顏色標定的任務(wù)是通過(guò)一個(gè)已知的顏色,找出其在顏色空間內與之對應的一個(gè)封閉區域。顏色分割則是通過(guò)比較器判斷圖像中像素點(diǎn)在顏色空間中是否落在標定的空間內,若在已標定的空間內,則認為其顏色與已標定的顏色一樣,這樣就可以根據標定的封閉區域識別出圖像中具有與標定顏色相同的物體。為了滿(mǎn)足不同情況下應用的需求,顏色跟蹤設置了2種模式。

(1)幀處理模式

該模式需要用戶(hù)輸入要跟蹤的R、G、B三個(gè)顏色邊界,構成一個(gè)RGB跟蹤的顏色空間。然后處理器從圖像的左上角開(kāi)始,順序逐行逐點(diǎn)的檢查每一個(gè)像素。如果被檢查的像素正好落入用戶(hù)定義的顏色范圍,就將這個(gè)像素標記為跟蹤的;同時(shí),需要記錄被跟蹤點(diǎn)中的最高點(diǎn)、最低點(diǎn)、最左點(diǎn)和最右點(diǎn)。如果檢測到的像素位置在當前跟蹤區域的標記框外,則需要增大標記框來(lái)包含該像素;同時(shí),需要記錄符合要求的像素的數量,當一幀圖像掃描完成后,可以分別用符合要求的點(diǎn)的橫縱坐標和除以符合要求的像素點(diǎn)數,得出被追蹤物體的中心坐標。

這樣在對一幀圖像的一次掃描后,就可以得到被跟蹤物體的中心坐標,同時(shí)處理器只需記錄較少的全局變量,在時(shí)間復雜度和空間復雜度上都適合嵌入式系統。

上述方法中,只有一個(gè)跟蹤點(diǎn)就可以改變標記框,因此如果在跟蹤過(guò)程中出現噪聲點(diǎn),就會(huì )對標記框產(chǎn)生影響。去噪的思想是:如果一個(gè)像素點(diǎn)周?chē)钠渌c(diǎn)也落在用戶(hù)輸入的RGB范圍內,那么這個(gè)點(diǎn)就被認為是符合要求的。

(2)行處理模式

與幀處理模式不同的是,行處理模式在掃描完一行數據后就記錄下所在行中符合要求的連續點(diǎn)的最左端坐標和最右端坐標,不妨分別記為(XnL,YnL)和 (XnR,YnR)。在一幀圖像處理完成后,會(huì )得到圖3所示的圖形。



根據得到的結果,可以計算出更多關(guān)于跟蹤物體的信息:

①計算區域面積。計算每條線(xiàn)段的長(cháng)度l(n),然后將l(n)進(jìn)行累積疊加,即可獲得跟蹤區域面積值S。



④識別物體的形狀。根據得到的每行跟蹤點(diǎn)的長(cháng)度,以及同一行中有幾段符合要求的連續跟蹤點(diǎn),可以得知物體從攝像頭角度看到的形狀。特別是在檢測平面上線(xiàn)條時(shí),可以識別是否有分支,這一點(diǎn)是幀處理模式無(wú)法做到的。

需要指出的是,行處理模式雖然會(huì )得到關(guān)于跟蹤目標的更多信息,但是每行處理的方式增大了處理器的負擔,處理速度也沒(méi)有幀處理快。



4 提高系統的工作速率

目前,系統工作在幀處理模式下的工作速率是25幀/s,作為系統功能的驗證,這里采用的算法是顏色跟蹤。如果僅做純粹的圖像采集,而不做圖像處理,那么系統可以達到OV6620的最高工作速率,即60幀/s。而在圖像處理方面,不同的圖像處理程序效率對系統的工作頻率有較大的影響。下面給出在通用ARM處理器下提高程序效率的幾個(gè)建議:

①內嵌(inline)可通過(guò)刪除子函數調用的開(kāi)銷(xiāo)來(lái)提高性能。如果函數在別的模塊中不被調用,一個(gè)好的建議是用static標識函數;否則,編譯器將在內嵌譯碼里把該函數編譯成非內嵌的。

②在A(yíng)RM系統中,函數調用過(guò)程中參數個(gè)數≤4時(shí),通過(guò)R0~R3傳遞;參數個(gè)數>4時(shí),通過(guò)壓棧方式傳遞(需要額外的指令和慢速的存儲器操作)。通常限制參數的個(gè)數,使它為4或更少。如果不可避免,則把常用的前4個(gè)參數放在R0~R3中。

第1種方式比較需要2條指令ADD和CMP,而第2種方式只需一條指令SUBS。

④ARM核不含除法硬件,除法通常用一個(gè)運行庫函數來(lái)實(shí)現,運行需要很多個(gè)周期。一些除法操作在編譯時(shí)作為特例來(lái)處理,例如除以2的操作用左移代替余數的操作符“%”,通常使用模算法。如果這個(gè)值的模不是2的n次冪,則將花費大量的時(shí)間和代碼空間避免這種情況的發(fā)生。具體辦法是使用if()作狀態(tài)檢查。

比如,count的范圍是0~59;

    count=(count+1)%60;

用下面語(yǔ)句代替:

    if(++count>=60)    count=0;

⑤避免使用大的局部結構體或數組,可以考慮用malloc/free代替。

⑥避免使用遞歸。


結語(yǔ)

本文介紹了一種基于A(yíng)RM和CPLD的嵌入式視覺(jué)系統,可以實(shí)現顏色跟蹤。在硬件設計上,圖像采集和圖像處理分離,更利于系統功能的升級。而視覺(jué)處理算法更注重處理的效率和實(shí)時(shí)性,同時(shí)根據不同的需要有兩種模式可供選擇。最后給出了提高程序效率的一些建議和方法。與基于PC機的視覺(jué)系統相比,該系統功耗低、體積小,適合應用于移動(dòng)機器人等領(lǐng)域。

參考文獻

   1. 任貴偉.張海 基于A(yíng)RM的緊湊型圖像采集系統 [期刊論文] -單片機與嵌入式系統應用2007(2)
   2. Omnivision Technologies Incorporated OV6620 Single-Chip CMOS CIF Color Digital Camera Technical Documentation
   3. Rowe Anthony.Rosenberg Charles.Noutbakhsh Illah A Low Cost Embedded Color Vision System 2002
   4. Bruce James.Balch Tucker.Veloso Manuela Fast and Cheap Color Image Segmentation for Interative Robots 2000

作者:北京航空航天大學(xué) 劉俊
來(lái)源:?jiǎn)纹瑱C與嵌入式系統應用 2009 (1)
本文地址:http://selenalain.com/thread-10851-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页