本篇討論的是有關CPU(在Zynq SoC中是指ARM處理器核)和FPGA的可編程邏輯架構之間的機器視覺算法分割。
美國國家儀器公司(National Instruments)的Carlton Heard在新一期RTC雜志剛剛發(fā)表了一篇內容翔實的標題為《FPGA –將視覺技術提升至新高》的機器視覺處理方案文章,Heard寫道:
“視覺應用程序必須依靠其他解決方案,而不是簡單地依靠更快的處理器來提高速度。一種選擇是分割圖像處理算法,并行處理更多任務,在視覺應用程序當中使用的算法非常適合于這樣處理。如SSE 、超線程和多核技術可以用于在不增加原始時鐘速率的情況下并行處理、執(zhí)行多個任務。不過,選擇這種方法也需要處理多個問題。除非所使用的軟件包將復雜性進行抽象化,否則難以使用多線程編程軟件。必須在線程之間傳送數據,這樣會出現存儲器拷貝和同步抖動。此外,它通常是一個手動過程,以利用現有的單線程圖像處理算法,并兼容多內核。即使這樣,開銷問題往往禁止過多的并行處理,因為大多數系統(tǒng)設計人員無法為所創(chuàng)建的測試單元購買16內核服務器級計算機。”
“使用FPGA的好處在于,它基本上是由軟件定義的硬件。因此,系統(tǒng)設計人員可以在軟件芯片中編程,并且當該軟件下載到FPGA,代碼變成可根據需要重新編程的實際硬件。由于FPGA實際是并行設備,使用FPGA進行圖像處理特別有利??蓪⑺惴ǚ指钸\行數千種不同的通路,并能保持完全獨立。雖然FPGA本身是非常適合許多視覺應用程序的,但系統(tǒng)中還存在很多因素不適合在FPGA上運行。評估是否要使用FPGA進行圖像處理需要考慮多項因素。
“ FPGA處在處理圖像時具有令人難以置信的低延時(微秒數量級)...當使用具有高速相機總線的FPGA,如不緩沖的圖像數據的Camera Link,只要第一個像素自相機中發(fā)出,FPGA就可以處理圖像,而不要等到整個圖象讀出已經完成后再處理?!?/p>
“ FPGA可以幫助避免抖動。因為 FPGA不會因為其他線程、操作系統(tǒng)或中斷產生額外的開銷, FPGA具有很好的確定性。對于許多圖像處理算法來說,FPGA能夠將所確定的執(zhí)行時間精確到納秒?!?/p>
Heard的文章延續(xù)了系統(tǒng)級功耗限制的討論,這樣的討論有利于FPGA在視覺系統(tǒng)中的應用。
“一個FPGA可消耗1-10瓦的功率,而同樣性能的CPU會輕易消耗50-200瓦。功耗較大,就必須消散大量的熱量。在無風扇嵌入式應用程序中,這可能會造成更為復雜的大型機械設計。所以,在極端條件下如太空,空中和水下應用中,低功耗FPGA特別有用?!?/p>
Heard的文章列出了機器視覺的四個主要應用類別:
1、可視化
2、高速控制
3、圖像預處理
4、協處理
?“可視化”,從相機拍攝圖像并進行調整,以增強圖像顯示效果以適應人眼觀看。在這種情況下,FPGA從相機讀取圖像,執(zhí)行某些類型的并行處理,如突出顯示邊緣和關注功能或掩蔽功能。然后在FPGA直接輸出圖像至監(jiān)視器或將其發(fā)送到主機CPU進行顯示.....例如,使用醫(yī)療設備拍攝圖像,提取細胞圖像顯示在監(jiān)視器上供醫(yī)生檢查。FPGA可用于測量每個細胞的大小和顏色,并突出顯示醫(yī)生關注的特定細胞。
? 高速控制應用程序,采用已處理圖像控制輸出,以執(zhí)行控制執(zhí)行器等任務?!霸谶@些應用中,捕獲圖像和執(zhí)行操作之間的時間必須連續(xù)而且短暫,因此應優(yōu)先使用具有低延遲和低抖動功能的FPGA。FPGA與視覺和I / O緊密集成可啟用高級應用程序,如視覺伺服,視頻數據被用于定位直接反饋并控制伺服電機?!?/p>
Heard的文章清楚地說明在激光跟蹤中通過使用具有確定性的,低抖動的,基于FPGA視覺系統(tǒng)來顯著減少錯誤(而不是使用基于CPU系統(tǒng)):
“FPGA非常適用于做空氣成分分選,比如需要執(zhí)行成像、檢驗和對正在下降的空氣進行分選等。這類應用程序低抖動至關重要,因為必須要知道決策和I / O的時間間隔?!?/p>
“圖像預處理、協同處理幾乎相同,區(qū)別在于設備初始捕獲圖像......預處理圖像時,圖像數據遍歷FPGA ,被修改或增強,然后FPGA將圖像發(fā)送到主機以進行進一步處理和分析。協處理指圖像數據自CPU還不是自相機發(fā)送到FPGA 。一旦捕獲數據需要處理大量圖像時這種情況是最常見的”
Heard的文章清楚地說明了美國國家儀器公司使用LabVIEW FPGA擴展了LabVIEW 圖形開發(fā)平臺,可加速復雜視覺處理系統(tǒng)開發(fā):
“通常情況下,使用FPGA會增加設計的復雜度。硬件編程與傳統(tǒng)軟件編程的顯著差異是一條復雜而不平凡的學習曲線。然而,高層次綜合工具如LabVIEW FPGA的可用于將這些復雜度抽象化,設計師能夠充分利用FPGA技術,不需要對VHDL編程有深入的了解?!?/p>
如果設計團隊更熟悉其他類型的開發(fā)工具也可以采取其他方法。例如,如果開發(fā)團隊非常熟悉采用高級編程語言的C和C + +、Xilinx Vivado HLS (高層次綜合)編碼視覺系統(tǒng)可在 Xilinx 7 系列 All Programmable 器件 和 Zynq All Programmable SoC利用這些語言編譯將這些算法編寫成硬件描述。
許多視覺系統(tǒng)開發(fā)團隊所熟悉的其他種類的視覺專用開發(fā)工具,如MVTec的綜合開發(fā)軟件HALCON 和Silicon Software Visual Applets圖形設計工具。這些工具也可以針對Xilinx All Programmable器件,使用低功耗可編程硬件提高視覺性能,而無需學習新的設計風格。
-
FPGA
+關注
關注
1620文章
21510瀏覽量
599000 -
cpu
+關注
關注
68文章
10702瀏覽量
209419 -
機器視覺
+關注
關注
161文章
4266瀏覽量
119559
發(fā)布評論請先 登錄
相關推薦
評論