相關測速是以隨機過程的相關理論和信息理論為基礎發展起來的,它的應用始于上世紀40年代,首先應用于軍事上,然后逐漸轉移到科學研究和民用上,現在已經在各個領域內得到日益廣泛的應用。
盡管相關測速的運算量非常巨大,但是隨著EDA技術的高速發展,大規模可編程邏輯器件CPLD/FPGA的出現,集成電路做得比以前更快、規模更大。設計人員有很大的自由度去設計實現用途專一的集成化數字電路:在實驗室里,在電腦系統前,現場設計、現場編程、現場配置、現場修改和現場驗證,從而在現場實現數字系統的單片化設計和應用。這意味著無需更改電路,只要改寫FPGA內部功能,整個系統即可實現新功能,即一個最小的芯片方案可以轉換來執行多個功能,硬件的配置變得如同軟件一樣靈活方便,而其速度和集成度,也隨著VLS工藝的發展而迅速提高,這就為相關測速的實際應用提供了硬件平臺。只要找到合適的算法并建立相應的硬件處理系統,運算速度和精度就能達到預期的要求。
1 系統硬件及相關算法的確定
本文測速的原理是:以CCD攝像頭作為前端裝置,將CCD攝像頭所采集的圖像信息送到FPGA中,由FPGA對其進行處理,并給出當前運行的速度。在滿足速度上限的條件下,連續兩次采集的圖像必然有重疊的部分。對連續兩次的圖像進行相關處理,就可以得到它們之間的位置關系,再結合采樣間隔時間,從而可以得出速度。
由于圖像處理算法涉及的運算量比較大,對系統的快速處理能力和大數據量的吞吐能力有嚴格的要求,因此系統中的核心器件FPGA的選擇必須遵循以下原則:(1)調試使用方便;(2)適當的響應速度;(3)適當夠用的邏輯資源;(4)足夠的輸入輸出(I/O)端口。
根據系統要求,本文采用Altera公司的超大規模可編程邏輯器件Cyclone II。Cyclone II系列FPGA是繼Cyclone系列低成本FPGA在市場上取得成功之后,Altera公司推出的更低成本的FPGA。Altera采用相同的方法在盡可能小的裸片面積上構建了Cyclone II系列,擴展了低成本FPGA的密度,最多達68 416個邏輯單元(LE)和1.1 Mbit的嵌入式存儲器,從而可以在低成本的FPGA上實現復雜的數字系統。優異的性價比使CycloneII系列FPGA可以廣泛地應用于汽車電子、消費電子、音/視頻處理、通信以及測試測量等終端產品市場。
在測速系統的設計中,假設攝像頭采集到的原始圖大小為1 280×1 024,為了保證采集的圖像背景區域能夠有明顯的目標,比較理想的情況是將模板區域取得越大越好,將目標全部包括在內[5-6]。當搜索區域大小為m×m, 模板大小為n×n時,歸一化互相關算法所需的運算次數約為(5n2+9)×(m-n+1)2次,計算量巨大。如果采用512×512大小的搜索區域,模板采用32×32大小,運算乘加次數近12億次,硬件將無法提供足夠的乘加器。如果采用128×128的搜索區域和32×32的模板,圖像的檢索區域比較小,測速的范圍會比較低,精度也會下降。綜合考慮攝像頭采集圖像的范圍和精度,并且充分利用硬件所能提供的內部存儲單元,本文將搜索區域設定為256×256,模板大小設定為32×32,如圖1所示。
同時采用簡化的互相關算法來實現相關匹配,所以選擇差的絕對值和相關法SAD(Sum of Absolute Difference)作相關計算。
2 測速系統的構成及設計
根據所需的功能,將系統劃分為以下幾個模塊,分別加以實現。如圖2所示。
(1)CCD攝像頭數據采集模塊
攝像頭采集的數據需要有圖像幀和消隱幀。當前幀是圖像幀時,讀入圖像的行數據,讀入1 280×1 024個數據后,列計數X_Cont和行計數Y_Cont歸零。消隱幀時不輸出。
(2)Raw to RGB壓縮模塊
通過內部設置一個1 280×10 bit的FIFO,同時輸出兩行數據,通過輸入的行計數和列計數模塊的奇偶將原Byer格式的數據壓縮成RGB格式,4個點壓縮成一個點,圖像大小變成640×512。同時,通過內置的時鐘計數模塊將當前輸出的RGB所在的行列值輸出,范圍為640×512。
(3)處理流程1
M4K寫入控制器:CCD時鐘。通過當前輸入的行列坐標,確定觸發背景M4K內存模塊和模板M4K內存模塊的寫入使能。背景M4K大小設為256×256×4 bit,模板M4K大小設為32×32×4 bit。當該模塊工作時,相關模塊不工作,以防止未寫完數據就做相關處理。
M4K模塊:存放處理過的4 bit灰度數據,讀寫時鐘分開,有寫使能位。
(4)處理流程2
SdRam接口:提供兩個寫端口和兩個讀端口,可同時處理。內部連接了PLL倍頻器,將SDRam的處理速度倍增到100 MB,然后通過內部的讀寫和刷新狀態機控制讀寫。
VGA控制模塊:由I2C控制生成行同步信息,并將讀入的RGB數據通過系數處理送到解碼器輸出VGA圖像。
測速模塊:模板選擇的位置固定在圖像的正中,即第192行192列開始的32×32大小的數據,通過輸入的(X,Y)坐標和(192,192)的差值得到像素的偏移量。然后通過實際的圖像大小和距離的比例系數,乘以當前的處理頻率,得到當前的物體移動速度。
為了計算偏移量和相對位移,必須引入除法運算,而除法運算是通過許多移位寄存器和加法器構成的。運算極其耗時,且需要大量邏輯單元和查找表,對處理速度有很大影響。所以選取MegaWizard生成的除法器來減少所需的運算時間。
最后,由于實際的數據均為16進制,為了滿足顯示的10進制坐標換算的需要,設計了16進制到10進制LED顯示的轉換模塊,實現了速度的直觀顯示,如圖3所示。
綜上所述,通過模塊化設計和綜合設計,在FPGA上實現了測速需要的功能設計。
本文對攝像頭采集到的數據進行處理。選取圖像正中的256×256個像素位置作為背景區域,其中的32×32個像素作為模板選取區域,通過前后兩幀的相關得到模板在后一幀中的位移像素值。測速示意圖如圖4所示。
如果按照理想的相似三角形判斷,攝像頭可以測量的速度可以達到無限大。設背景區域長寬均為X cm,最大速度可以達到(X×(256-32)/256)/0.529 4=1.9×0.875X cm/s,測量精度為(X/256)/0.529 4=1.9×X/256。但是由于攝像頭對光強的敏感程度和目標的實際采樣灰度受噪聲的影響,以及受安裝位置和與被測物體距離的限制,實際測量速度范圍是有限的。在測試中采用的背景大小為20 cm×20 cm,離檢測面距離30 cm左右,100 MHz工作頻率,測速的最大值可達到(20×(256-32)/256)/0.529 4=33.056 cm/s。
整個測速系統可以根據實際應用情況設定參數來調整搜索區域,具有很寬的測速范圍。相對于傳統的接觸式測速系統,克服了物體運動異常時測量出現的原理性誤差;相對于非接觸的一維測速系統,克服了測速的單一性,可以測量物體在各種運動方向上移動的速度。如果使用高性能FPGA進行多路并行的相關運算,搭配高速高分辨率的攝像頭,完全可以解決全圖互相關算法處理的計算量巨大的問題,使測速的精度和速度得到進一步提高。這種測速方式具有的一系列優點,使其發展空間非常廣闊,可以廣泛應用到各個領域。
總之,本文研究的基于FPGA的相關測速系統,能夠實現非接觸式和高精度的測量。其中,融合了信號采集與處理、邏輯器件FPGA和互相關技術等,具有學科交叉融合的特點。在各種傳送帶、紙板、熱軋鋼板、汽車和列車等運動物體的非接觸測速上具有較大的實際應用價值,為解決非接觸式運動物體測速問題提供了技術手段。
評論
查看更多