LabVIEW感興趣區域分析(實(shí)戰篇—1)
ROI(region of interest),感興趣區域。機器視覺(jué)、圖像處理中,從被處理的圖像以方框、圓、橢圓、不規則多邊形等方式勾勒出需要處理的區域,稱(chēng)為感興趣區域,ROI。在Halcon、OpenCV、Matlab等機器視覺(jué)軟件上常用到各種算子(Operator)和函數來(lái)求得感興趣區域ROI,并進(jìn)行圖像的下一步處理。為圖像處理設定ROI,可以將注意力集中在要解決問(wèn)題的主要方面,減少要處理的數據量,提高系統的處理速度和實(shí)時(shí)性。
在機器視覺(jué)系統開(kāi)發(fā)過(guò)程中,常見(jiàn)的ROI操作包括構建ROI、關(guān)聯(lián)ROI到圖像顯示窗口、從圖像顯示窗口中提取ROI以及清除圖像顯示窗口中的ROI等。圖像顯示窗口中的圖像不斷變化時(shí),與之關(guān)聯(lián)的ROI可以保持不變。
ROI可通過(guò)各種標準幾何形狀或自由的封閉域來(lái)描述。從數據結構角度來(lái)看,ROI自身并不包括圖像數據,它只是說(shuō)明圖像中哪個(gè)區域的數據需要被重點(diǎn)關(guān)注。
1
ROI定義及實(shí)現方法
Nl Vision使用ROl Descriptor數據結構描述ROI,下圖顯示了該數據結構及其圖解。

由圖可知,ROI可以由其矩形邊界(global rectangle)和一個(gè)或多個(gè)不同的輪廓(contours)共同定義。矩形邊界是指一個(gè)底邊與圖像底邊平行,且恰好包含整個(gè)ROI的矩形,該矩形左上和右下頂點(diǎn)的坐標保存在ROI數據結構中的Global Rectangle數組中。ROI區域可以通過(guò)一個(gè)或多個(gè)幾何輪廓來(lái)限定,這些不同幾何輪廓所定義區域的交集構成了整個(gè)ROI。
用于限定ROI區域的輪廓也保存在一個(gè)稱(chēng)為Contours的數組中,數組的每個(gè)元素由特征ID、類(lèi)型(type)和包含多個(gè)坐標值的數組Coordinates構成。特征ID用來(lái)說(shuō)明該元素描述的輪廓是ROl的外邊沿(external)還是內邊沿(internal)。如果為外邊沿,則其內部的所有區域被看作是ROI區域的一部分;而如果為內邊沿,其外部所有部分均被當作是ROI區域的一部分。type值指定了元素所描述輪廓的幾何形狀。Coordinates數組中每?jì)蓚€(gè)元素構成了輪廓中多個(gè)頂點(diǎn)的坐標。
由此可見(jiàn),Contours數組中的元素定義的輪廓本質(zhì)上用于描述圖像中某個(gè)區域,而單個(gè)或多個(gè)元素共同描述的輪廓所限定區域的交集就是最終希望得到的ROl。
在LabVIEW中使用Nl Vision定義ROl的方法大致可分為交互式、程序代碼定義以及圖像遮罩轉換三大類(lèi),如下表所示。

交互方式定義ROl時(shí),需要用戶(hù)使用各種ROI工具在圖像中指定ROI區域,采用交互方式定義ROI可以減少程序代碼的編寫(xiě)量,但在程序運行過(guò)程中需要用戶(hù)參與。由于用戶(hù)的操作習慣和操作環(huán)境千差萬(wàn)別,因此即使同一圖像同一用戶(hù)每次繪制的ROI也可能不同。如果要減少用戶(hù)參與,精確定義ROI,則可通過(guò)程序代碼來(lái)實(shí)現。相應地,開(kāi)發(fā)人員也要花更多的精力研究如何在圖像中精準確定ROI位置,并編寫(xiě)代碼。最后,ROI也可以與圖像遮罩相互轉換,因此使用圖像遮罩也可以定義ROI。
機器視覺(jué)系統開(kāi)發(fā)過(guò)程中,常用到的幾何形狀有點(diǎn)、線(xiàn)段、矩形和環(huán)面。下表列出了幾何形狀簡(jiǎn)易數據結構與ROl Descriptor之間相互轉換的VI:

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

查看ROI轉換VI,在LabVIEW程序框圖中點(diǎn)擊鼠標右鍵,查看視覺(jué)與運動(dòng)相關(guān)函數,查看Vision Utilities模塊中的Region of Interest,步驟如下所示:

Region of Interest包含VI如下所示:

用戶(hù)可結合說(shuō)明手冊,使用相關(guān)的Region of Interest VI。
2
基礎案例:圖像感興趣區域手動(dòng)標記
本案例使用ROI構建器以交互方式定義ROI的程序界面和程序代碼,如下所示:

案例功能描述如下所示:
程序開(kāi)始先將圖像CSDN.png讀入內存等待進(jìn)一步處理。
緊接著(zhù)由While循環(huán)和事件結構組成的事件處理器待命,隨時(shí)準備處理各種用戶(hù)界面事件。
當用戶(hù)單擊Display Image按鈕時(shí),Showlmg Value Change事件分支中的IMAQ WindSetup和IMAQWind Draw就把內存中的圖像繪制在一個(gè)獨立的外部圖像顯示窗口中。
若用戶(hù)隨后單擊ConstructROI按鈕,DefROl Value Change事件會(huì )被觸發(fā),其對應事件分支中的IMAQConstructROI將創(chuàng )建ROI構造器。
由于傳遞給它的窗口編號為0,與之前IMAQWind Draw繪制的外部圖像顯示窗口編號(默認值窗口編號為0)一致,因此,IMAQConstructROl會(huì )將0號編號的圖像顯示窗口臨時(shí)變?yōu)槟B(tài)窗口形式的ROI構造器并在其右側顯示ROI工具條。
當用戶(hù)在ROI構造器中定義好感興趣區域并確認后,程序就返回所定義區域所對應的ROl Descriptor。
此時(shí),若用戶(hù)再次單擊Display lmage按鈕,就會(huì )發(fā)現之前定義的ROl顯示在窗口中,說(shuō)明它已經(jīng)與該窗口關(guān)聯(lián)。
注意,在交互方式下,若構造器指定了窗口編號,則創(chuàng )建的ROI會(huì )自動(dòng)與該窗口關(guān)聯(lián)。
若要使用程序代碼將ROI Descriptor描述的ROI與圖像顯示窗口關(guān)聯(lián),可以使用IMAQ WindSetROl。
如果要清除圖像顯示窗口中的ROI,可以單擊Erase ROI按鈕,它將觸發(fā)EraseROl Value change事件,調用IMAQ WindEraseROI清除ROI。
最后,單擊Exit按鈕退出程序時(shí),IMAQ WindClose和IMAQ Dispose會(huì )清理現場(chǎng),結束程序。
項目演示效果如下所示:

3
進(jìn)階案例:圖像顆粒自動(dòng)標記
圖像標記 (Label lmage)操作常用于顆粒(Particles)分析,它把二值圖像中相互連通的一組像素(稱(chēng)為顆粒)全部更改為某一固定灰度值(用8位或16位表示)??赏ㄟ^(guò)4連通或8連通原則來(lái)判斷像素是否屬于同一顆粒。圖像標記操作的輸入圖像為二值圖像,但其輸出卻是含有為每個(gè)顆粒都設置了灰度標記值的灰度圖像,其中灰度標記值的數量等于圖像中顆粒的數量再加上用于背景的灰度標記值0。如果圖像使用了調色板,則被標記的多個(gè)顆粒有可能使用同一灰度標記值。
本案例是一幅圖像中顆粒進(jìn)行標記的實(shí)例程序,如下所示:

案例功能描述如下所示:
程序代碼在將圖像Alu.png讀入內存后即進(jìn)入圖像標記循環(huán)。
在循環(huán)中,若用戶(hù)沒(méi)有改變IMAQ Threshold使用的閾值,則循環(huán)就不做任何處理,否則就會(huì )對圖像中的顆?;騾^域進(jìn)行標記。
標記的過(guò)程是先用IMAQ Threshold將圖像分割為二值圖像,再經(jīng)形態(tài)學(xué)處理函數IMAQ Morphology對顆?;騾^域的邊緣做平滑處理,隨后才由IMAQ Label(位于LabVIEW的Vision andMotion→lmage Processing→Processing函數選板中)將各區域內的像素修改為灰度標記值。
除了對圖像標記,程序還返回已標記的顆粒數,并使用IMAQ Quantify返回各標記區域的像素灰度統計信息,IMAQ Quantify的Image Mask參數必須為標記圖像。
完成了圖像的標記,就可以設法將已標記圖像中的某一感興趣部分提取出來(lái)單獨分析。
IMAQ LabelToROI可以把圖像中已標記區域轉換為ROI。
如果某個(gè)標記值對應多個(gè)區域,則其返回的ROlDescriptor將包含多個(gè)區域的輪廓。
在使用它時(shí)還可以指定是否僅轉換ROI外部輪廓和ROI包含的最大像素個(gè)數,以進(jìn)一步約束轉換結果。
項目演示效果如下所示:

*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。