天天看點

LabVIEW感興趣區域分析(實戰篇—1)

目錄

1、ROI定義及實作方法

2、基礎案例:圖像感興趣區域手動标記

3、進階案例:圖像顆粒自動标記

ROI(region of interest),感興趣區域。機器視覺、圖像進行中,從被處理的圖像以方框、圓、橢圓、不規則多邊形等方式勾勒出需要處理的區域,稱為感興趣區域,ROI。在Halcon、OpenCV、Matlab等機器視覺軟體上常用到各種算子(Operator)和函數來求得感興趣區域ROI,并進行圖像的下一步處理。為圖像處理設定ROI,可以将注意力集中在要解決問題的主要方面,減少要處理的資料量,提高系統的處理速度和實時性。

在機器視覺系統開發過程中,常見的ROI操作包括建構ROI、關聯ROI到圖像顯示視窗、從圖像顯示視窗中提取ROI以及清除圖像顯示視窗中的ROI等。圖像顯示視窗中的圖像不斷變化時,與之關聯的ROI可以保持不變。

ROI可通過各種标準幾何形狀或自由的封閉域來描述。從資料結構角度來看,ROI自身并不包括圖像資料,它隻是說明圖像中哪個區域的資料需要被重點關注。

Nl Vision使用ROl Descriptor資料結構描述ROI,下圖顯示了該資料結構及其圖解。

LabVIEW感興趣區域分析(實戰篇—1)

由圖可知,ROI可以由其矩形邊界(global rectangle)和一個或多個不同的輪廓(contours)共同定義。矩形邊界是指一個底邊與圖像底邊平行,且恰好包含整個ROI的矩形,該矩形左上和右下頂點的坐标儲存在ROI資料結構中的Global Rectangle數組中。ROI區域可以通過一個或多個幾何輪廓來限定,這些不同幾何輪廓所定義區域的交集構成了整個ROI。

用于限定ROI區域的輪廓也儲存在一個稱為Contours的數組中,數組的每個元素由特征ID、類型(type)和包含多個坐标值的數組Coordinates構成。特征ID用來說明該元素描述的輪廓是ROl的外邊沿(external)還是内邊沿(internal)。如果為外邊沿,則其内部的所有區域被看作是ROI區域的一部分;而如果為内邊沿,其外部所有部分均被當作是ROI區域的一部分。type值指定了元素所描述輪廓的幾何形狀。Coordinates數組中每兩個元素構成了輪廓中多個頂點的坐标。

由此可見,Contours數組中的元素定義的輪廓本質上用于描述圖像中某個區域,而單個或多個元素共同描述的輪廓所限定區域的交集就是最終希望得到的ROl。

在LabVIEW中使用Nl Vision定義ROl的方法大緻可分為互動式、程式代碼定義以及圖像遮罩轉換三大類,如下表所示。

LabVIEW感興趣區域分析(實戰篇—1)

互動方式定義ROl時,需要使用者使用各種ROI工具在圖像中指定ROI區域,采用互動方式定義ROI可以減少程式代碼的編寫量,但在程式運作過程中需要使用者參與。由于使用者的操作習慣和操作環境千差萬别,是以即使同一圖像同一使用者每次繪制的ROI也可能不同。如果要減少使用者參與,精确定義ROI,則可通過程式代碼來實作。相應地,開發人員也要花更多的精力研究如何在圖像中精準确定ROI位置,并編寫代碼。最後,ROI也可以與圖像遮罩互相轉換,是以使用圖像遮罩也可以定義ROI。

機器視覺系統開發過程中,常用到的幾何形狀有點、線段、矩形和環面。下表列出了幾何形狀簡易資料結構與ROl Descriptor之間互相轉換的VI:

LabVIEW感興趣區域分析(實戰篇—1)

除了以上介紹的ROI轉換VI,Nl Vision還提供了其他幾個與ROI操作相關的重要VI,包括圖像遮罩(lmage Mask)與ROI互相轉換的VI、ROI組合與拆分、ROI在不同坐标系之間的轉換以及将已标記的圖像(Label lmage)區域轉換為ROl的VI。這些VI可參考說明手冊了解:

LabVIEW感興趣區域分析(實戰篇—1)

檢視ROI轉換VI,在LabVIEW程式框圖中點選滑鼠右鍵,檢視視覺與運動相關函數,檢視Vision Utilities子產品中的Region of Interest,步驟如下所示:

LabVIEW感興趣區域分析(實戰篇—1)

Region of Interest包含VI如下所示:

LabVIEW感興趣區域分析(實戰篇—1)

使用者可結合說明手冊,使用相關的Region of Interest VI。

本案例使用ROI建構器以互動方式定義ROI的程式界面和程式代碼,如下所示:

LabVIEW感興趣區域分析(實戰篇—1)

案例功能描述如下所示:

程式開始先将圖像CSDN.png讀入記憶體等待進一步處理。

緊接着由While循環和事件結構組成的事件處理器待命,随時準備處理各種使用者界面事件。

當使用者單擊Display Image按鈕時,Showlmg Value Change事件分支中的IMAQ WindSetup和IMAQWind Draw就把記憶體中的圖像繪制在一個獨立的外部圖像顯示視窗中。

若使用者随後單擊ConstructROI按鈕,DefROl Value Change事件會被觸發,其對應事件分支中的IMAQConstructROI将建立ROI構造器。由于傳遞給它的視窗編号為0,與之前IMAQWind Draw繪制的外部圖像顯示視窗編号(預設值視窗編号為0)一緻,是以,IMAQConstructROl會将0号編号的圖像顯示視窗臨時變為模态視窗形式的ROI構造器并在其右側顯示ROI工具條。

當使用者在ROI構造器中定義好感興趣區域并确認後,程式就傳回所定義區域所對應的ROl Descriptor。

此時,若使用者再次單擊Display lmage按鈕,就會發現之前定義的ROl顯示在視窗中,說明它已經與該視窗關聯。

注意,在互動方式下,若構造器指定了視窗編号,則建立的ROI會自動與該視窗關聯。若要使用程式代碼将ROI Descriptor描述的ROI與圖像顯示視窗關聯,可以使用IMAQ WindSetROl。如果要清除圖像顯示視窗中的ROI,可以單擊Erase ROI按鈕,它将觸發EraseROl Value change事件,調用IMAQ WindEraseROI清除ROI。

最後,單擊Exit按鈕退出程式時,IMAQ WindClose和IMAQ Dispose會清理現場,結束程式。

項目示範效果如下所示:

LabVIEW感興趣區域分析(實戰篇—1)

項目程式下載下傳:

https://download.csdn.net/download/m0_38106923/16745449

圖像标記 (Label lmage)操作常用于顆粒(Particles)分析,它把二值圖像中互相連通的一組像素(稱為顆粒)全部更改為某一固定灰階值(用8位或16位表示)。可通過4連通或8連通原則來判斷像素是否屬于同一顆粒。圖像标記操作的輸入圖像為二值圖像,但其輸出卻是含有為每個顆粒都設定了灰階标記值的灰階圖像,其中灰階标記值的數量等于圖像中顆粒的數量再加上用于背景的灰階标記值0。如果圖像使用了調色闆,則被标記的多個顆粒有可能使用同一灰階标記值。

本案例是一幅圖像中顆粒進行标記的執行個體程式,如下所示:

LabVIEW感興趣區域分析(實戰篇—1)

程式代碼在将圖像Alu.png讀入記憶體後即進入圖像标記循環。

在循環中,若使用者沒有改變IMAQ Threshold使用的門檻值,則循環就不做任何處理,否則就會對圖像中的顆粒或區域進行标記。

标記的過程是先用IMAQ Threshold将圖像分割為二值圖像,再經形态學處理函數IMAQ Morphology對顆粒或區域的邊緣做平滑處理,随後才由IMAQ Label(位于LabVIEW的Vision andMotion→lmage Processing→Processing函數選闆中)将各區域内的像素修改為灰階标記值。

除了對圖像标記,程式還傳回已标記的顆粒數,并使用IMAQ Quantify傳回各标記區域的像素灰階統計資訊,IMAQ Quantify的Image Mask參數必須為标記圖像。

完成了圖像的标記,就可以設法将已标記圖像中的某一感興趣部分提取出來單獨分析。IMAQ LabelToROI可以把圖像中已标記區域轉換為ROI。如果某個标記值對應多個區域,則其傳回的ROlDescriptor将包含多個區域的輪廓。在使用它時還可以指定是否僅轉換ROI外部輪廓和ROI包含的最大像素個數,以進一步限制轉換結果。

LabVIEW感興趣區域分析(實戰篇—1)

案例:LabVIEW圖像顆粒自動标記

https://download.csdn.net/download/m0_38106923/16745885

繼續閱讀