借助FPGA技術和NI視覺開發模塊,您可以對從相機采集的圖像進行高速現場可編程門陣列(FPGA)處理。 FPGA處理尤其適用于要求圖像采集和處理之間具有低延遲的應用。 本文概述了如何在FPGA上進行圖像處理,包括典型的應用案例。
?
1. FPGA編程介紹
NI LabVIEW FPGA模塊是LabVIEW圖形化編程環境的自然擴展。 您可以使用VHDL等底層語言進行復雜的FPGA編程。 但是如果您熟悉LabVIEW,您將可快速學會使用LabVIEW FPGA。 這可大幅縮短FPGA編程應用的開發時間,避免進行自定義硬件設計。 與使用HDL進行編程不同,您可以在LabVIEW程序框圖界面上開發應用,LabVIEW FPGA會合成圖形化代碼并將其部署到FPGA硬件上。
2. FPGA圖像處理
許多圖形處理算法具有內在并行性,因此適用于使用FPGA。 這些包含感興趣像素、行和區域運算的算法不需要圖案(pattern)等高級圖像信息。 您可以同時對多個小區域位或圖像的多個區域執行這些函數。 圖像數據也可以并行傳輸到FPGA并同時進行處理,這是因為數據的處理不需要使用中央處理器。 NI視覺開發模塊包含了50多個圖像處理函數,可結合NI LabVIEW FPGA模塊在FPGA上處理圖像。 以下列出了幾個視覺開發模塊可以用于FPGA的圖像處理函數示例:
預處理?
圖像變換
圖像算子
陰影校正
拜爾解碼
色彩空間轉換
一維和二維快速傅里葉變換
濾波(平滑/銳化)
二值形態學
特征抽取
邊緣、線和棱角
二進制對象
顏色
測量
質心
面積測算
?
3. 視覺開發模塊FPGA功能概述
視覺開發模塊與NI LabVIEW FPGA模塊一起安裝后,“視覺”選板就會包含用于FPGA圖像處理的函數。
圖1. 視覺選板包含了多個用于FPGA圖像處理的函數。
視覺選板包含了圖像變換VI,可用于FPGA和CPU之間的圖像傳輸。 第二部分——FPGA視覺應用案例探討了不同的應用場景以及為什么FPGA和CPU之間傳輸圖像時有時需要轉換圖像。
NI視覺開發模塊包含了Vision Assistant Express VI,該VI可通過握手和同步自動生成LabVIEW FPGA圖像處理代碼,無需編寫底層同步代碼。 您可以通過LabVIEW程序框圖打開Vision Assistant,也可以將其作為一個獨立的程序打開來創建針對特定NI硬件的LabVIEW項目。
圖2. Vision Assistant可作為一個獨立的程序打開來生成針對特定硬件的代碼。
選擇好硬件之后,Vision Assistant可以估算出圖像處理腳本所需的FPGA資源。 然后生成一個包含一個主機VI和FPGA VI的LabVIEW項目來進行圖像處理和轉換。
圖3. 創建圖像處理腳本之后,Vision Assistant將自動生成一個包含硬件終端、主機VI(如果規定的話)和FPGA VI的LabVIEW項目來進行圖像處理和轉換。
4. FPGA視覺應用案例
應用場景1: 僅FPGA的處理,用于高速控制
FPGA圖像處理可降低圖像分析所需的計算資源。 由于FPGA是一個硬件資源,因而可將CPU資源釋放出來來執行其他運算。 執行分析時不需要CPU的干預,因此大大降低了圖像處理到控制信號輸出之間的延遲。 圖4顯示的例子可幫助您了解如何使用FPGA來釋放CPU資源。 在本例中,FPGA執行所有的圖像處理并生成輸出信號。 這使得系統延遲降到最低,從而能夠快速生成控制信號。
圖4. 所有處理任務均在終端的FPGA上執行。 這使得CPU能夠執行其他任務,從而最大程度降低系統延遲。
應用場景案例包括高速分類、眼球追蹤、激光準直;僅FPGA處理可在幀接收器上實現,只需在圖像數據輸入路徑上直接放置一個FPGA即可。 兩個典型的產品是NI PCIe-1473R Camera Link幀接收器和NI 1483R Camera Link適配器模塊。
圖5. NI PCIe-1473R和NI 1483R均在圖像路徑上放置了一個FPGA,用于板載預處理和高速控制應用。
應用場景2: FPGA預處理
您還可使用基于FPGA的視覺系統處理器來執行更多處理任務。 . 圖6介紹了如何使用FPGA來進行預處理,與此同時,CPU可以執行更高級的處理算法。 在本例中,FPGA執行的是位處理,比如濾波或邊沿檢測。 經預處理的圖像發送至CPU進行圖像級處理,比如圖案識別。 在本例中系統延遲仍然非常低,因為CPU執行的函數數量比傳統視覺系統要少得多。
圖6. 圖像采集和預處理在FPGA上執行,然后圖像數據被傳遞到CPU。 CPU執行更復雜的圖像分析,例如圖案匹配和分類。
FPGA圖像處理尤其適用于需要高速位級處理的應用。 FPGA接收圖像數據后使用并高速板載時鐘(時鐘速率高達100 MHz)處理每個位。 您可在單個時鐘周期內同時執行數據傳輸和使用硬件進行數據處理。 多個視覺算法可以分為多個迭代任務,然后在FPGA上并行執行。
此類架構的應用包括表面和幅材檢測和光學相干斷層掃描(OCT)。 圖5顯示了兩個能夠實現FPGA預處理的幀接收器。
應用場景3: FPGA協處理
在一些情況下,圖像處理算法可能包含了多個步驟。 某些步驟,如閾值處理,可以在FPGA中實現。 其它步驟,如圖案匹配,可能更適合在CPU上執行。 在這種情況下,您可以將任務從處理器轉移到FPGA。 如圖7所示,所采集的圖像發送到CPU后,便逐個象素傳輸到FPGA進行位級運算。 像素在FPGA上處理后可發送回CPU進行其他處理。
如果算法可以完全在FPGA上執行,則象素不需要發送回CPU。 在這種情況下,您可以使用FPGA來生成基于圖像處理算法結果的輸出,或發送處理結果回CPU以便系統的其他部分使用。 結果數據可以是距離測量值、顆粒計數或圖像處理步驟的任何其他結果。 FPGA協處理通過最小化CPU執行的函數數量來減少系統延遲。
圖7. 圖像采集和預處理都在FPGA上進行。 然后圖像數據被傳遞到CPU。 CPU執行更復雜的圖像分析,例如圖案匹配和分類。
FPGA協處理可以在NI工業控制器和CompactRIO以及在NI PCIe-1473R和NI1483R上實現。
圖8. NI工業控制器和NI CompactRIO控制器支持視覺應用所需的FPGA協處理。
FPGA協處理的一個應用是質量檢驗時的顆粒計數。 在該應用中,顆粒計數可以在FPGA上運行以確定顆粒的數目及大小。 然后這個信息可以與處理器共享,以便顯示給操作員或用作其他進程的輸入。
5. 總結
總之,FPGA的高速運算和并行特性可減少圖像處理時間,從而降低系統延遲和增加吞吐量。 此外,FPGA圖像處理可以允許高速分揀機等系統的控制器更快速地基于所采集的圖像作出決策。
6. 相關鏈接
FPGA視覺產品:
NI工業控制器
NI Compact視覺系統
NI CompactRIO
NI PCIe-1473R – 具有FPGA圖像處理功能的Camera Link幀接收器
NI 1483?- 用于FPGA圖像處理的FlexRIO Camera Link模塊
NI 1483 Camera Link NI FlexRIO適配器模塊入門介紹
FPGA軟件
NI視覺開發模塊 - 適用于處理器和FPGA的可編程視覺函數
NI LabVIEW FPGA
IPNet - LabVIEW FPGA函數: 圖像處理范例IP
FPGA技術
FPGA技術介紹: 5大優勢
評論