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