SoC 內的可編程邏輯架構本身具有可重編程性,這意味著該器件能支持任意連接。同時處理系統內的多路復用 IO(MIO)提供通過多種常用協議(從 SPI、I2C 和串行到千兆以太網、CAN 和 USB)連接的能力,擁有極為靈活的從該設備輸入/輸出數據的方式。
Zynq 同時接口和處理多個攝像頭輸入的實例
對使用的圖像傳感器來說,可編程邏輯架構還能夠支持最適合于目前應用的特定傳感器。與限制傳感器接口和圖像處理流水線的一些標準解決方案不同。
這種高度的靈活性能夠打造出面向未來的設計方案。目前它可以先實例化一個接口,然后隨著新標準的出現,重新編程已經部署的系統以支持新標準。可編程邏輯的靈活性還體現在能從一個標準轉換到另一個標準。
在同構和異構傳感器融合方面,這個最大的 SoC 產品系列提供充足的可編程邏輯架構,能實現 20 個以上的視覺通道并讓每一個通道并行運行。
因為這些通道實現在可編程邏輯架構內,設計工程人員不受定義的圖像處理路徑制約,相反他們有能力為目前的應用實現所需的特定圖像處理流水線。
就生成圖像處理流水線而言,和普通的想法不同的是我們不必使用 HDL 重新生成一切。在標準 Vivado? IP 庫內提供了一些圖像處理內核,使用 AXI Streaming 接口就能夠連接。使用 AXI Streaming 接口便于把靈活、可擴展的圖像處理流水線創建成標準接口,用在所有的 IP 模塊上。這種標準化能縮短初始開發時間,便于隨著產品規劃圖的延伸更容易地升級和復用。
當然許多圖像處理算法相當復雜,需要先在 OpenCV 或 MATLAB 等應用中建模。OpenCV 能與 Vivado? 高層次綜合視頻庫結合,即 OpenCV 庫的可綜合版本,極為簡便地為我們的流水線實現圖像處理算法。隨后這些算法能拉回到 Vivado 內的圖像處理流水線中,縮短開發和驗證時間。
另外,還可以實現基于 MathWorks MATLAB 流程的模型設計流程。它能夠先在模型層面定義整個圖像處理流水線,然后在定義底層的代碼。
不過大多數現代應用都必須考慮安全性,以防范對系統、系統數據的無授權改動或訪問,或是防范惡意黑客攻擊。開發安全設計必須從系統層面自上而下考慮。不過使用 All Programmable SoC 能提供一系列器件級和系統級安全功能,讓實現工作變得簡便易行。Zynq SoC 能夠對導向與配置流程進行加密和認證。也可使用 Trust Zone 技術創建正交環境,限制軟件借助管理程序訪問底層硬件。同時,內置的 XADC 能用于監測器件電壓和溫度以及外部參數,提供防篡改方法。還有一些功能能實現在設計中,進一步增強安全性。
All Programmable SoC 能實現多個并行圖像處理流水線以及同構/異構傳感器融合,然后實時執行視覺分析和決策,而且提供對電池供電系統非常關鍵的極高效的單位功耗性能。借助內在的靈活性,All Programmable SoC 能提供真正的差異化因素,值得在設計中考慮使用,尤其是在需要考慮單位功耗像素數量的時候。
結論
隨著使用視覺導向發機器人和無人機應用的快速發展,視覺導向的機器人和無人機本身也正在飛速發展。要開發出擁有理想單位功耗性能的高精度視覺系統,最好是使用 All Programmable SoC。All Programmable SoC 能實現大量并行處理鏈,在邊緣完成傳感器融合和實時分析,同時提供高能效、高靈活度和高安全性的系統。
二、賽靈思 All Programmable SoC
視覺導向的的機器人和無人機高度依賴前面介紹的嵌入式視覺應用來成功完成自己的使命。支持視覺導向的的機器人和無人機的這些嵌入式視覺應用的實現就是賽靈思 All Programmable SoC。賽靈思 All Programmable SoC在單個器件中實現處理系統與可編程邏輯的強大組合,支持硬件加速計算。
在這些應用中通常實現的算法有多種,最常見的三種是:
1、環視系統 – 這些系統用于生成車輛周邊環境的三維可視化,實現對環境的進一步了解。典型的環視系統使用球面攝像頭。環視往往用于需要同步定位與地圖構建(SLAM)和光流的應用中。
2、全景攝像頭 – 這些攝像頭為周邊環境提供360度視野,用于監控應用和車輛可視化。
3、異構傳感器融合 – 融合來自電磁頻譜不同組成部分的圖像,例如紅外成像,以增強低光/夜視性能。
實現這些算法會帶來幾個必須解決的共同挑戰,例如:透鏡校正、消除透鏡失真、視角轉換、使用并行表面進行視頻紋理填充。
結合電磁頻譜中可視部分和紅外部分的傳感器融合實例
另一個是如何呈現最終圖像。這就帶來了多通道處理和多通道同步的難題,但這是保證所有攝像頭都顯示相同幀所需要的。
當然多通道處理和同步問題并不只局限于視覺導向的的機器人和無人機應用,這是許多嵌入式視覺應用的通病。視覺導向的的機器人和無人機也是檢測和分類對象,實現自動和半自動操作所需要的。
運用IP
在工程項目中實現這些復雜的圖像處理算法堪稱一項壯舉。它需要具有專家級技能水平的工程師正確地在 SoC 內實現算法。這些工程師能夠針對目標架構開發和優化特定問題。取得這樣的技能需要企業聘用一個長期工程師或分包工程師。除了需要取得專家級技能,由于需要全新開發這些功能,還會延長產品上市時間。
使用專業提供商開發的 IP,無需尋找專家級工程師,同時還能夠縮短開發時間,從而加速產品上市進程。它還能夠讓開發企業集中精力實現產品增值,確保嵌入式視覺產品在市場上占據有力地位。
使用現有的、基于成熟技術的 IP 模塊還降低了項目的總體風險。在項目上使用商用 IP 核,還能與輔助合同一起提供,讓內核能無縫集成到您的應用中。
有數個 IP 模塊作為 Vivado? Design Suite 標配提供,其它用于嵌入式解決方案的高級商用 IP 由多家第三方供應商提供。
其中一個這樣的圖像處理庫組合就是 Xylon 在他們的 LogicBRICKS IP 庫中提供的。該庫專門為在 Vivado Design Suite 中使用進行了優化。一旦這些 IP 模塊運用到 Vivado 設計中,它們就能夠根據應用的要求加以定制。
在 logicBRICKS IP 庫內有數個對開發視覺導向的的機器人和無人機應用有重要意義的 IP 模塊。
在嵌入式視覺應用中往往使用基于梯度方向直方圖(HOG)分類器來檢測和跟蹤對象。HOG分類器使用屬于機器學習一部分的支持向量機(SVM)。在 logicBRICK 庫內有一個以 LogiHOG 形式提供的 HOG 分類器,能夠檢測多達四個不同的 SVM 分類器,從而并行檢測多個對象。這些 SVM 經訓練和更新后能適應天氣和燈光等多種不同條件。
工作中的 LogiHOG 分類器
LogicBRICKS 庫中有多種其他常用的 IP 核,可用于簡化開發工作。另外還有幾種圖像信號處理流水線可供設計人員實現在自己的設計中。這些圖像處理內核提供完整解決方案,支持創建高達 4K2K P60 的流水線。這些流水線在 SoC 內與攝像頭界面接口,因此能夠支持多種不同的攝像頭技術。
開發流程遵循傳統 SoC 開發,根據運行要求配置 SoC。LogicBRICKS 庫中的 IP 核隨后插入到可編程邏輯架構中,以構成具備所需功能的圖像處理流水線。然后用運行在 ARM? A9 內核上的應用軟件提供的 API 調用按要求實時地精調算法。
許多應用使用的是高動態范圍攝像頭。動態范圍代表的是傳感器捕獲擁有寬范照度強度的圖像的能力,一般使用 dB 或比率來表達。這意味著同一幅圖像中可以同時有高照度區域和黑暗區域。通過增強圖像的照度和圖像局部區域的亮度,logiHDR 內核提供與這些攝像頭接口并從圖像中提取最大細節的能力。
為專門應用加速
在使用免費或商用 IP 實現大部分圖像處理流水線后,要讓應用功能完整,還有需要實現的其余功能。使用 SoC 就能在處理器中或是在可編程邏輯中完成這一步。使用 SDSoC? 開發工具,我們能無縫地在這兩者間移植功能,加快首先用高級語言開發的應用的設計速度。
要發揮 SDSoC 的功能,我們可以使用 IP 核定義一個包含底層圖像處理流水線的新平臺。SDSoC 隨后就能夠使用可用的邏輯和互聯資源加速設計。
在 SDSoC 內有多個庫可供設計人員開發能在可編程邏輯內加速的應用。具體到圖像處理,主要有兩個支持 HLS 的庫:
1、HLS_video – 該庫提供嵌入式視覺功能和數據結構。這些元素可綜合在一起。
2、HLS_OpenCV – 該庫提供預先編譯的 OpenCV 功能,以及與 IP 模塊接口所需的專門支持功能。該庫目的是供測試臺使用,因此不可綜合。
許多算法將使用 OpenCV 等開源圖像處理框架開發。因此,在使用 SDSoC 開發以加速為目的的系統時,設計人員希望使用熟悉的框架。這就是 HLS_OpenCV 庫配合 SDSoC 開發工具發揮作用的地方。它提供與加速功能接口所需的功能。
OpenCV 組元中最基本的是 cv::mat 類,用于定義以 X 軸和 Y 軸表示的圖像大小以及像素信息。例如每個像素內的位數、有符號還是無符號、多少個通道構成一個像素。這個類是我們使用 OpenCV 時如何存儲和操作圖像的基礎。
在 HLS 庫中有一個類似的結構,即 hls::mat。鑒于 HLS 流是創建圖像處理流水線的標準接口,該庫還提供一些讓我們能把 hls::mat 類轉化為 HLS 流或把 HLS 流轉化為 hls::mat 類的功能。cv::mat 類和 hls::mat 類之間的主要區別在于 hls::mat 類被定義為適用可編程邏輯架構的像素流,這與屬于內存映射的 cv::mat 類不同。流實現和內存映射實現之間的這種差別意味著我們使用 hls::mat 類時不必隨即訪問像素。
這樣就能夠使用處理器內的雙 ARM A9 內核完成應用的初步開發,確保算法的功能。在需要該功能時,可編程邏輯中的算法就能被加速。設計人員可使用追蹤和 AXI 性能監測等 SDSoC 功能優化加速性能。
結論
視覺導向的的機器人和無人機技術在開發嵌入式視覺算法的過程中面臨一系列的難題,但這些算法可幫助視覺導向的的機器人和無人機了解所處環境并根據得到的信息做出決策。為協助這些圖像處理系統的開發工作,設計人員可使用 IP 核提供的功能,并運用 SDSoC 等系統級開發工具,生成所需的最終硬件加速功能。
評論
查看更多