NI Vision for LabVIEW 基礎(二):準備測量圖像

本節介紹如何建立圖像系統,採集和顯示圖像,分析圖像,以及爲進一步處理準備圖像。
建立圖像系統
在開始獲取、分析、處理圖像之前,必須先建立圖像系統。建立圖像系統的方法取決於圖像環境以及分析和處理的需要。圖像系統應該產生足夠高的質量以能夠從圖像中獲取信息。
搭建圖像系統的完整步驟如下。
根據給定的顆粒限制以及被檢測物體的尺寸,確定設備類型。參考NI Vision概念手冊中第三章,系統設置與校準
確保相機傳感器足夠大以滿足對最低分辨率的要求。
確保鏡頭景深足夠高以保證焦點內的所有物體都不會因爲鏡頭而畸變。還要確保鏡頭的焦距滿足需要。
確保光照能夠提供被檢測物體與背景之間有足夠的對比度,一便從圖像中獲取信息。
將相機擺放在與被測物體垂直的位置。如果相機獲取的物體的圖像帶有角度,就會產生透視誤差。即便可以通過軟件補償這些誤差,National Instruments 還是建議採用垂直的角度以獲得最精確的結果。
選擇一個滿足需要的圖像採集設備。National Instruments 提供了許多圖像獲取設備,例如模擬的彩色和單色設備以及數字設備。更多有關NI圖像採集設備的詳細信息,請訪問:ni.com/vision 。
爲圖像採集設備配置驅動程序軟件。如果擁有一臺NI圖像採集設備,可以通過Measurement& Automation Explorer (MAX)配置NI-IMAQ 或NI-IMAQdx驅動程序。 在桌面上雙擊Measurement & Automation 圖標打開MAX 。詳細信息參見Measurement & Automation Explorer Help
校準圖像系統
建立圖像系統後,可以校準系統,爲像素座標指定實際的座標,補償圖像系統中固有的角度和非線性誤差。
像機與被測物體不垂直髮生透視誤差。非線性失真可能來自像機鏡頭畸變。透視誤差和鏡頭畸變導致出現扭曲的圖像。這種失真替代了圖像中的信息,但並不一定是破壞映像中的信息。
如果僅僅希望爲像素座標指定實際的座標使用簡單校準。如果需要補償透視誤差和非線性鏡頭扭曲使用透視和非線性扭曲校準。
創建圖像
使用IMAQ Create程序建立一個引用圖像。建立圖像時,要制訂下列圖像數據類型之一:
Grayscale (U8, default)—8-位無符號
Grayscale (U16)—16-位無符號
Grayscale (I16)—16-位有符號
Grayscale (SGL)—浮點
Complex (CSG)—64-位複數
RGB (U32)—32-位 RGB
HSL (U32)—32-位HSL
RGB (U64)—64-位RGB
如果需要可以多次執行IMAQ Create建立多個圖像,但所創建的每個圖像都需要唯一的名稱。通過分析預期的應用程序確定所需的圖像個數。依據是程序的不同的處理階段及是否需要爲每個處理階段後保持原始圖像。
說明 如果打算在圖像上使用濾波或顆粒分析程序,必須保證圖像有合適的邊沿尺寸。默認的邊沿尺寸爲三個像素。
當創建圖像時,NI Vision建立了一個內部的圖像結構以保存圖像的屬性,如名稱和邊沿尺寸。然而,此時沒有爲圖像像素分配內存。NI Vision程序在圖像尺寸修改時自動分配一定量的內存。例如,採集和重取樣程序改變圖像尺寸所以它們會爲圖像像素分配適當的內存。IMAQ Create的輸出是一個圖像結構的引用。 可將該引用作爲輸入提供給所有NI Vison函數的子程序。
開發期間,可能需要在運行時驗證圖像的內容。使用LabVIEW圖像探針可以在運行期間察看圖像的內容。要建立探針,右擊圖像連接線,選擇Probe即可。
許多屬於NI Vision庫的程序都需要一個或多個圖像引用。所需的圖像引用的數量取決圖像處理函數和希望使用圖像的類型。
分析圖象的NI Vision模塊不修改只需要一個圖像引用輸入的內容。處理圖像內容的模塊可能要求一個引用作爲源圖像和一個目標圖像,或者模塊有一個可選的目標圖像。如果不能提供源圖像,模塊會修改源圖像。
在應用程序的最後,利用IMAQ Dispose模塊釋放所創建的圖像。
輸入輸出合併
根據模塊完成的功能類型的不同,輸入輸出可能會產生不同的合併。可以利用這種靈活性決定要處理那個圖像以及在哪裏保存結果圖像。如果沒有膜表圖像連線,那麼使用源圖像並傳遞給目的輸出。
下面的圖描述了NI Vision中一些模塊的接線板。
圖象分析
下面的連線板僅用於分析圖像的模塊,所以既不改變圖像尺寸也不改變內容。 這種操作的例子包括顆粒分析和直方圖計算。
image
圖像遮罩
下面的連線板介紹了圖像遮罩。
image
Image Mask 輸入端表明處理和分析是依賴與另外一個圖像的內容:Image Mask。僅當Image Mask中對應的像素不爲空時Image中的像素才被處理。如果一個Image Mask的像素是0, 對應的Image 像素不會被改變。
說明 除了IMAQ定量模塊之外,所有的NI Vision程序的圖像遮罩都必須是8-bit的圖像,IMAQ定量模塊支持8-bit和16-bit的圖像遮罩。
如果要對整幅圖像進行處理或分析,就不要連接Image Mask輸入端。 將同一個圖象既連接到Image 的輸入也連接到Image Mask 的輸入,與將Image Mask 的輸入端開放不連的效果是一樣的,除非是Image 必須是一個8-bit的圖像情況下。
圖像填充
下面的連線板用於完成圖像填充的程序。
image
這類操作的例子包括讀取文件,從NI圖像採集設備採集圖像,或者將一個二維矩陣轉換成圖像。這類模塊可能修改圖像的尺寸。
圖像處理
下面的連線板用於處理圖像的模塊。
image
這種連接器是NI Vision中最常見的。Image Src輸入端接收要處理的圖像。Image Dst 輸入端可以接收另一個圖像或者是源圖象,取決於使用的目標。如果兩個不同的圖像連接到兩個輸入端,那麼源Image Src 圖像不被修改。如下圖所示,如果Image DstImage Src 輸入端接收同一個圖像,或者Image Dst不連接,處理過的圖像被放到源圖像,而原圖像數據丟失。
image
Image Dst 輸入端是接收處理結果的圖像。根據模塊功能的不同,即可能與源圖像相同,也可能不同。各個模塊的介紹都包括可以連接到Image 輸入端的圖像類型。連接到Image Dst 的圖像根據源圖像調整大小。
算術與邏輯運算
下面的連線板用於在兩個圖像間進行算術或邏輯運算的模塊。
image
目標圖像需要兩個源圖像存在。可以在兩個圖像A 和B之間完成一個運算,然後把結果存放到另一個圖像或者是Image Dst中,或者存放到兩個源圖像之一A 或B中。在後一種情況下,可以認爲源數據在處理髮生之後就沒用了。 下面的合併在這種接線板中是可能的。
image
左面的接線板中,三個圖像都不同。Image Src AImage Src B 在處理後原封不動,運算的結果存放到Image Dst中。
中間的連線板中,Image Src A 也接到了Image Dst, 所以接收到了運算的結果。在這種運算中,Image Src A 的原數據被覆蓋。
右邊的接線板中,Image Src B 接收運算的結果,其原數據被覆蓋。
許多兩個圖像之間的運算要求具有相同的類型和大小。然而,算術運算可以在兩個不同類型的圖像間進行。
採集或讀取圖像
  • 創建了圖像引用之後,可以通過三種途徑將圖像採集到圖像系統中。通過圖像採集系統中的相機採集圖像,從計算機中存儲的文件裝載圖像,或者將存放在二維矩陣中的數據轉換爲圖像。採集圖像、從文件裝載圖像或從二維矩陣轉換圖像的程序模塊自動地爲圖像數據分配適當的內存空間。
利用National Instruments 圖像採集設備可以採用以下方法之一採集圖像:
  • 1.使用IMAQ Snap(塊照) 程序採集單幅圖像。調用該程序時,將初始化圖像採集設備,並採集下一個視頻幀。該模塊用於單一的採集程序,主要是編程方便。
  • 2.通過抓拍連續採集圖像。抓拍功能實現了在一個緩衝區上連續循環採集。抓拍功能用於採集高速圖像。IMAQ Grab Setup用於啓動採集,IMAQ Grab Acquire用於返回當前圖像的一個拷貝,IMAQ Stop用於停止採集。
  • 3.IMAQ Sequence用於採集固定數量的圖像。IMAQ Sequence一張接一張的採集圖像直到達到要求的數量。 如果只採集某些特定的圖像,可以爲IMAQ Sequence提供一張表,描述在採集到每幀後跳過的幀數。
  • 說明 在完成圖像採集後,必須使用IMAQ Close 或者IMAQdx Close Camera 釋放分配給圖像採集設備的資源。
    IMAQ ReadFile用於打開並讀取計算機中存儲的文件數據到圖像引用中。 可以讀取以標準格式存儲的圖像,如BMP, TIFF, JPEG, JPEG2000, PNG, 和AIPD,或則制定的非標準格式。通常,軟件會自動將像素轉換成所傳遞的圖像類型。
    IMAQ Read Image and Vision Info用於打開圖像文件所包含的附加信息, 如校準信息,用於模式匹配的模板信息,或者蒙板信息。有關模式匹配模板和蒙板的內容,參見完成機器視覺任務
    也可以使用IMAQ GetFileInfo讀取圖像屬性-圖像尺寸,像素深度 ,推薦的圖像類型,以及校準單位,而不用實際讀取全部圖像數據。
    IMAQ AVI OpenIMAQ AVI Read Frame 用於打開和讀取存放在計算機中的AVI文件,並傳送到圖像引用中。NI Vision自動將像素轉換成所傳遞的圖像類型。
    說明 完成AVI讀操作後,必須使用IMAQ AVI Close 釋放分配給AVI文件的資源。
    IMAQ ArrayToImage 用於將二維矩陣轉換成圖像。也可以是用IMAQ ImageToArray 將圖像轉換成LabVIEW 的二維矩陣。
    顯示圖像
    LabVIEW 中有兩種顯示圖像的方法。可以利用外部現實函數模版中的外部顯示程序模塊在外部窗口中顯示圖像,也可以Vision控件模板中的Image Display 控件將圖像直接顯示在前面板上。
    外部窗口顯示
    在外部窗口顯示圖像示,使用IMAQ WindDraw 。最多可以在16個外部窗口中顯示圖像。IMAQ WindSetup 用於配置每個外部窗口的外觀。例如,可以決定窗口是否需要滾動條,是否可變化大小,或者是否有標題欄。也可以使用IMAQ WindMove 將尾部圖像窗口定位在監視器的一個特定位置。
    說明 外部圖像窗口不屬LabVIEW 面板。他們直接由NI Vision管理。
    通過將調色板應用給窗口,可以將調色板用於顯示灰度圖像。IMAQ GetPalette用於獲得預先定義的調色板 。例如,如果要顯示二值圖像(一種含有特殊像素值得圖像,內容像素值爲1,背景的像素值爲0),可以使用預先定義的二值模版。關於調色板的內容,參見NI視覺概念手冊。
    說明 在程序的最後,必須使用IMAQ WindClose關閉所有打開的外部窗口。
    圖像顯示控件
    Image Display 控件用於在LabVIEW前面板中顯示圖像。如下圖所示。在前面板上點右鍵並選擇Vision ,可以找到Image Display 控件。
    image
    1 顯示區域
    3 關注區工具選項板
    2 圖像信息顯示器
    4 滾動條
    要想顯示圖像,在後面板中將NI Vision模塊的圖像輸出連接好,如下圖所示。
    image
    Image Display控件包含以下元素:
    顯示區域—顯示圖像。
    圖像信息顯示器—顯示圖像的相關信息以及當前所畫的關注區的信息。
    關注區工具選項板—包括繪製關注區工具、移動、縮放工具。與外部顯示窗口不同,每個圖像顯示控件都有自己的工具集。
    滾動條—允許移動顯示區中的圖像。
    設計期間,可以重新安排控件元素的佈局可以定製控件的外觀,通過快捷菜單,或者選擇控件並點擊Edit?Customize Control 可以配置屬性。
    運行期間,可以通過屬性節點定製控件的許多部分。
    說明 不是所有的設計期間的功能都在運行時可用。
    要想建立屬性節點,在控件上右擊鼠標並選擇Create?Property Node。 單擊屬性節點就可以看到可以設置的屬性。圖像顯示控件特有的屬性出現在列表的尾部。
    下面的列表介紹部分圖像顯示控件可用的屬性:
    快照模式(Snapshot Mode)—決定控件建立一個圖像的拷貝還是使用圖像的引用。當允許快照模式時, 如果檢測圖像在應用程序中後來變化了,圖像顯示控件仍然顯示圖像顯示控件連接成功時所提供的圖像。
    允許快照模式可能會降低程序的運行速度,因爲控件要爲圖像產生拷貝。當需要每次都要顯示圖像的快照是,允許該屬性。 如果需要快速顯示結果時,禁用該屬性,例如在抓拍採集期間。快照模式屬性默認是禁止的。
    說明 爲了使圖像顯示控件直接刷新圖像,可以使用Refresh Image 方法。 要創建方法,右擊控件,並選擇 Create?Invoke Node 點擊Invoke Node可以看到可用的方法。 圖像顯示控件特殊的方法出現在快捷菜單的底部。
    調色板(Palette)—決定圖像顯示控件使用哪個調色板顯示圖像。可以爲控件配置預定義調色板或自定義調色板。使用User Palette屬性節點設置自定義調色板。 也可以在運行時右擊圖像控件改變控件的調色板或圖像探針。
    最大輪廓數(Maximum Contour Count)—設置圖像顯示控件上用戶可以繪製關注區輪廓的最大數目。
    圖像顯示控件還包括如下方法:
    Get Last Event—返回最後的用戶事件,從圖像控件上返回鼠標移動和點擊的結果。該方法與外部顯示窗口中的IMAQ WindLastEvent 作用相同。
    Clear ROI—清除圖像顯示控件中的關注區。
    Refresh Image—刷新顯示,以顯示最新的圖像。在禁用快照控件時使用該方法,但是圖像顯示控件只能顯示圖像的最後變化。
    加入校準信息
    如果期望將當前設置的校準信息賦給每個採集的圖像,使用IMAQ Set Calibration Info模塊。 該模塊接受帶有校準信息的源圖像和需要校準的目的圖像。輸出圖像是帶有附加了校準信息的檢測圖像。詳細內容參見校準圖像一節。
    說明 由於校準信息是圖像的一部分,它將被傳播到圖像的處理和分析中。更改圖像大小的函數,如幾何變換,使校準信息作廢。IMAQ Write File 2的實例IMAQ Write Image and Vision Info File 2 可以將圖像和所有附加的校準信息保存到文件中。
    分析圖像
    獲得並顯示圖像後,基於以下原因可能需要分析一下圖像的內容:
    1. 1.確定圖像質量是否足以達到檢測任務的要求
    2. 2. 獲得檢測處理期間需要使用的參數值
    直方圖和線框工具有助於分析圖像的質量。
    IMAQ HistographIMAQ Histogram 模塊用於分析圖像的整體灰度分佈。使用直方圖可以分析決定圖像質量的兩個重要指標,飽和度和對比度。如果在沒有充分照明的環境下采集的圖像曝光不足,那麼大多數像素的密度值低,表現爲峯值集中在直方圖左邊。如果在光照過強的環境下采集的圖像曝光過度,那麼大部分像素的密度值高,表現爲峯值集中在直方圖右邊。如果圖像具有合適的對比度,直方圖像素集中區域會分開。利用直方圖信息可以確定圖像質量是否足以能將關注物體從背景中分離出來。
    如果圖像質量滿足需要,可以使用直方圖確定圖像中與物體對應的像素範圍。 可以在處理函數中使用這個範圍,例如在顆粒分析中確定閾值範圍。
    如果圖像質量不滿足要求,應該嘗試改進圖像條件以獲得必要的圖像質量。需要重新評價及修改各項要素:照明設備與設置,鏡頭調節,相機工作模式,以及採集參數。如果各項設置都達到了最大可能的條件而圖像質量還是不能滿足要求,可以嘗試採用有下節中介紹的圖像處理技術來改善圖像質量。
    IMAQ LineProfile 模塊用於獲得圖像中沿着一條線的像素分佈, IMAQ ROIProfile模塊用於獲得圖像中沿着一個一維路徑的像素分佈。要使用線形輪廓分析圖像,在圖像中沿着物體的邊沿畫一條線,或指定一條線。 IMAQ LineProfile 用於檢測沿着這條線的像素值。觀察沿着這條線的像素分佈情況,可以判定圖像質量是否能在物體的外圍提供銳利的邊沿。同時可以確定圖像是否有噪聲,以及識別噪聲的特徵。
    如果圖像滿足要求,就可以使用像素分佈信息來確定一些檢測函數中需要用到的參數。例如,適用來自線形輪廓的信息來確定物體周圍的邊沿強度。可以講這個信息輸入到IMAQ Edge Tool 2 模塊中,以便查找沿着這條線的邊沿。
    改善圖像
    根據分析圖像收集到的信息,可能需要改善圖像的質量以便於檢測。可以通過查找表、濾波器、灰度幾何,以及快速弗裏埃變換改善圖像。
    查找表
    應用查找表(LUT)變換提高其它區域中損失了的包含重要信息區域的亮度。 查找表變換將源圖像中的輸入灰度值轉換成變換後圖像中的其它灰度值。NI Vision提供了四個模塊可以直接或間接的江查找表用於圖像。:
    1. 1、IMAQ MathLookup—用預定義的查找表替換圖像的像素值。NI Vision有七個基於算數變換的預定義查找表。有關這些查找表的詳細信息參見NI視覺概念手冊,第五章,圖像處理
    2. 2、IMAQ UserLookup—用自定義的查找表替換圖像的像素值。
    3. 3、IMAQ Equalize—將灰度值平坦的分佈在給定的灰度區間內。 IMAQ Equalize用於爲包含較少灰度值的圖像增強對比度。
    4. 4、IMAQ Inverse—反向圖像的像素密度,獲得圖像的負片。例如,如果背景像素比物體像素還亮得話,在爲圖像進行自動閾值處理之前適用IMAQ Inverse。
    濾波器
    濾波器用於改善圖像中過渡區域的銳度或者增強圖像的整體信噪比。 根據需要既可以選擇低通濾波,也可以選擇高通濾波。
    低通濾波器通過平滑圖像去掉不必要的細節,去掉銳利的細節,以及平滑物體與背景之間的邊沿。可以使用MAQ LowPass模塊,或者使用IMAQ ConvoluteIMAQ NthOrder定義自己的低通濾波器。
    高通濾波器強化細節,例如邊沿,物體邊緣,或裂縫。這些細節表現爲密度值的強烈過渡。使用IMAQ ConvoluteIMAQ NthOrder模塊可以定義自己的高通濾波器,或者使用IMAQ EdgeDetectionIMAQ CannyEdgeDetection 模塊。IMAQ EdgeDetection 使用預定義的邊沿檢測內核查找邊沿,例如Sobel, Prewitt, 和 Roberts內核。
    卷積濾波
    IMAQ Convolute模塊使用一個預定義的低通和高通濾波器集合。每個濾波器由係數的內核定義。IMAQ GetKernel 模塊用於提取預定義的內核。如果預定義的內核不能滿足需要,可以適用浮點數的LabVIEW二維矩陣定義自己得濾波器。
    N序濾波器
    IMAQ NthOrder 根據選擇的N的值,定義一個低通或高通濾波器。一個特定的N序濾波器,中值濾波器,可以濾除看起來像小黑點和白點的斑紋。詳見NI視覺概念手冊,第五章,圖像處理
    灰度幾何
    在需要濾掉圖像的灰度特徵是使用灰度幾何。灰度幾個有助於去掉或加強孤立特徵,例如黑色背景上的亮點。在準備進行顆粒分析分割圖象之前,在灰度圖象上使用這種變換以增強非離散性。
    灰度幾何變換將一個像素與它周圍的像素進行比較。這種變換在進行腐蝕運算時保留最小值,而在進行擴散運算時保留最大值。
    詳見NI視覺概念手冊,第五章,圖像處理
    IMAQ GrayMorphology 模塊用於實現以下七種變換:
    1. Erosion(侵蝕)—減少被低密度鄰居包圍的像素的亮度。鄰近像素是通過結構化元素定義的。詳見NI視覺概念手冊,第九章,二值幾何
    2. Dilation(擴散)—增加被高密度鄰居包圍的像素亮度。一個擴散必然有一個對應的侵蝕效果。
    3. Opening(開放)—去除暗區和光滑邊框中的孤立的亮點。
    4. Closing(閉合)—去除亮區和光滑邊框中的孤立的暗點。
    5. Proper-opening(適當開放)—去除暗區中的孤立亮點,平滑區域的邊緣。
    6. Proper-closing(適當閉合)—去除亮區中孤立的暗點,平滑區域邊緣。
    7. Auto-median(自動中值)—產生很少細節的簡單顆粒。
    快速傅里葉變換
    快速傅里葉變換(FFT)用於將圖象變換到複頻域。一幅圖像中,細節和銳利的邊沿是與顆粒頻率從中到高在很短的距離內明顯的導致灰度級別變化有關。緩慢變化的模式與較低的顆粒頻率有關。
    一幅圖像可能有外部噪聲,例如數值化過程中導致的週期性條紋。在複頻域,週期圖案被簡化成一個高顆粒頻率的有限集合。另外,圖象系統設置可能導致視場亮度的不均勻,會在要分析的信息上面產生輕微的漂移。在複頻域,這種輕微的漂移表現爲圖象平均密度旁邊的一個低頻有限集。成爲直流(DC)成分。
    利用工作在複頻域的算法可以從圖象中孤立或去除這些不期望的頻率。完成以下步驟,就可以獲得去掉不期望的圖案麼日保留整體特徵的圖像。
    1. 使用IMAQ FFT模塊將圖像從空域轉換到複頻域。該模塊計算圖像的FFT,結果形成了代表圖像的頻率信息的複數圖像。
    2. 使用低通或高通頻域濾波器在頻域改善圖像。IMAQ ComplexAttenuateIMAQ ComplexTruncateSpecify 用於指定使用哪種濾波器。低通濾波器平滑圖像中的噪聲、細節、紋理,以及銳利的邊沿。高通濾波器強化圖像中的細節、紋理和銳利的邊沿,但也強化噪聲。
    1. Lowpass attenuation(低通衰減)—衰減量是與頻率信息呈正比。在低頻段,只有很小的衰減,隨着頻率的增加,衰減也增加。該運算保留所有零頻率的信息。零頻率信息對應於圖像的直流成份或者說是空域圖像的平均密度。
    2. Highpass attenuation(高通衰減)—衰減量與頻率信息成反比。高頻段,只有很小的衰減,隨着頻率的降低,衰減增加。 零頻率成份被完全剔除。
    3. Lowpass truncation(低通截斷)—高於理想截止頻率的成份被去除,低於的保持不變。
    4. Highpass truncation(高通截斷)—高於理想截止頻率的成份保持不變,低於得被去除。
    要將圖像變換會空餘,使用IMAQ InverseFFT模塊。
    高級運算
    IMAQ ImageToComplexPlaneIMAQ ComplexPlaneToImage 模塊用於任意訪問、處理、以及更新振幅、相位、和複數圖像的虛部。也可以通過IMAQ ComplexImageToArray 將複數圖像變換爲矩陣,或者使用IMAQ ArrayToComplexImage 進行反變換。
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章