博客專欄

EEPW首頁 > 博客 > LabVIEW感興趣區(qū)域分析(實(shí)戰(zhàn)篇—1)

LabVIEW感興趣區(qū)域分析(實(shí)戰(zhàn)篇—1)

發(fā)布人:美男子玩編程 時(shí)間:2022-06-22 來源:工程師 發(fā)布文章

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


在機(jī)器視覺系統(tǒng)開發(fā)過程中,常見的ROI操作包括構(gòu)建ROI、關(guān)聯(lián)ROI到圖像顯示窗口、從圖像顯示窗口中提取ROI以及清除圖像顯示窗口中的ROI等。圖像顯示窗口中的圖像不斷變化時(shí),與之關(guān)聯(lián)的ROI可以保持不變。


ROI可通過各種標(biāo)準(zhǔn)幾何形狀或自由的封閉域來描述。從數(shù)據(jù)結(jié)構(gòu)角度來看,ROI自身并不包括圖像數(shù)據(jù),它只是說明圖像中哪個(gè)區(qū)域的數(shù)據(jù)需要被重點(diǎn)關(guān)注。



1


ROI定義及實(shí)現(xiàn)方法



Nl Vision使用ROl Descriptor數(shù)據(jù)結(jié)構(gòu)描述ROI,下圖顯示了該數(shù)據(jù)結(jié)構(gòu)及其圖解。


圖片

圖片


由圖可知,ROI可以由其矩形邊界(global rectangle)和一個(gè)或多個(gè)不同的輪廓(contours)共同定義。矩形邊界是指一個(gè)底邊與圖像底邊平行,且恰好包含整個(gè)ROI的矩形,該矩形左上和右下頂點(diǎn)的坐標(biāo)保存在ROI數(shù)據(jù)結(jié)構(gòu)中的Global Rectangle數(shù)組中。ROI區(qū)域可以通過一個(gè)或多個(gè)幾何輪廓來限定,這些不同幾何輪廓所定義區(qū)域的交集構(gòu)成了整個(gè)ROI。


用于限定ROI區(qū)域的輪廓也保存在一個(gè)稱為Contours的數(shù)組中,數(shù)組的每個(gè)元素由特征ID、類型(type)和包含多個(gè)坐標(biāo)值的數(shù)組Coordinates構(gòu)成。特征ID用來說明該元素描述的輪廓是ROl的外邊沿(external)還是內(nèi)邊沿(internal)。如果為外邊沿,則其內(nèi)部的所有區(qū)域被看作是ROI區(qū)域的一部分;而如果為內(nèi)邊沿,其外部所有部分均被當(dāng)作是ROI區(qū)域的一部分。type值指定了元素所描述輪廓的幾何形狀。Coordinates數(shù)組中每兩個(gè)元素構(gòu)成了輪廓中多個(gè)頂點(diǎn)的坐標(biāo)。


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

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


圖片


交互方式定義ROl時(shí),需要用戶使用各種ROI工具在圖像中指定ROI區(qū)域,采用交互方式定義ROI可以減少程序代碼的編寫量,但在程序運(yùn)行過程中需要用戶參與。由于用戶的操作習(xí)慣和操作環(huán)境千差萬別,因此即使同一圖像同一用戶每次繪制的ROI也可能不同。如果要減少用戶參與,精確定義ROI,則可通過程序代碼來實(shí)現(xiàn)。相應(yīng)地,開發(fā)人員也要花更多的精力研究如何在圖像中精準(zhǔn)確定ROI位置,并編寫代碼。最后,ROI也可以與圖像遮罩相互轉(zhuǎn)換,因此使用圖像遮罩也可以定義ROI。


機(jī)器視覺系統(tǒng)開發(fā)過程中,常用到的幾何形狀有點(diǎn)、線段、矩形和環(huán)面。下表列出了幾何形狀簡易數(shù)據(jù)結(jié)構(gòu)與ROl Descriptor之間相互轉(zhuǎn)換的VI:


圖片


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


圖片


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


圖片


Region of Interest包含VI如下所示:


圖片

用戶可結(jié)合說明手冊,使用相關(guān)的Region of Interest VI。



2


基礎(chǔ)案例:圖像感興趣區(qū)域手動(dòng)標(biāo)記



本案例使用ROI構(gòu)建器以交互方式定義ROI的程序界面和程序代碼,如下所示:


圖片


案例功能描述如下所示:

  • 程序開始先將圖像CSDN.png讀入內(nèi)存等待進(jìn)一步處理。

  • 緊接著由While循環(huán)和事件結(jié)構(gòu)組成的事件處理器待命,隨時(shí)準(zhǔn)備處理各種用戶界面事件。

  • 當(dāng)用戶單擊Display Image按鈕時(shí),Showlmg Value Change事件分支中的IMAQ WindSetup和IMAQWind Draw就把內(nèi)存中的圖像繪制在一個(gè)獨(dú)立的外部圖像顯示窗口中。

  • 若用戶隨后單擊ConstructROI按鈕,DefROl Value Change事件會被觸發(fā),其對應(yīng)事件分支中的IMAQConstructROI將創(chuàng)建ROI構(gòu)造器。

    由于傳遞給它的窗口編號為0,與之前IMAQWind Draw繪制的外部圖像顯示窗口編號(默認(rèn)值窗口編號為0)一致,因此,IMAQConstructROl會將0號編號的圖像顯示窗口臨時(shí)變?yōu)槟B(tài)窗口形式的ROI構(gòu)造器并在其右側(cè)顯示ROI工具條。

  • 當(dāng)用戶在ROI構(gòu)造器中定義好感興趣區(qū)域并確認(rèn)后,程序就返回所定義區(qū)域所對應(yīng)的ROl Descriptor。

  • 此時(shí),若用戶再次單擊Display lmage按鈕,就會發(fā)現(xiàn)之前定義的ROl顯示在窗口中,說明它已經(jīng)與該窗口關(guān)聯(lián)。

  • 注意,在交互方式下,若構(gòu)造器指定了窗口編號,則創(chuàng)建的ROI會自動(dòng)與該窗口關(guān)聯(lián)。

    若要使用程序代碼將ROI Descriptor描述的ROI與圖像顯示窗口關(guān)聯(lián),可以使用IMAQ WindSetROl。

    如果要清除圖像顯示窗口中的ROI,可以單擊Erase ROI按鈕,它將觸發(fā)EraseROl Value change事件,調(diào)用IMAQ WindEraseROI清除ROI。

  • 最后,單擊Exit按鈕退出程序時(shí),IMAQ WindClose和IMAQ Dispose會清理現(xiàn)場,結(jié)束程序。


項(xiàng)目演示效果如下所示:


圖片



3


進(jìn)階案例:圖像顆粒自動(dòng)標(biāo)記



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


本案例是一幅圖像中顆粒進(jìn)行標(biāo)記的實(shí)例程序,如下所示:


圖片


案例功能描述如下所示:

  • 程序代碼在將圖像Alu.png讀入內(nèi)存后即進(jìn)入圖像標(biāo)記循環(huán)。

  • 在循環(huán)中,若用戶沒有改變IMAQ Threshold使用的閾值,則循環(huán)就不做任何處理,否則就會對圖像中的顆?;騾^(qū)域進(jìn)行標(biāo)記。

  • 標(biāo)記的過程是先用IMAQ Threshold將圖像分割為二值圖像,再經(jīng)形態(tài)學(xué)處理函數(shù)IMAQ Morphology對顆粒或區(qū)域的邊緣做平滑處理,隨后才由IMAQ Label(位于LabVIEW的Vision andMotion→lmage Processing→Processing函數(shù)選板中)將各區(qū)域內(nèi)的像素修改為灰度標(biāo)記值。

  • 除了對圖像標(biāo)記,程序還返回已標(biāo)記的顆粒數(shù),并使用IMAQ Quantify返回各標(biāo)記區(qū)域的像素灰度統(tǒng)計(jì)信息,IMAQ Quantify的Image Mask參數(shù)必須為標(biāo)記圖像。

  • 完成了圖像的標(biāo)記,就可以設(shè)法將已標(biāo)記圖像中的某一感興趣部分提取出來單獨(dú)分析。

    IMAQ LabelToROI可以把圖像中已標(biāo)記區(qū)域轉(zhuǎn)換為ROI。

    如果某個(gè)標(biāo)記值對應(yīng)多個(gè)區(qū)域,則其返回的ROlDescriptor將包含多個(gè)區(qū)域的輪廓。

    在使用它時(shí)還可以指定是否僅轉(zhuǎn)換ROI外部輪廓和ROI包含的最大像素個(gè)數(shù),以進(jìn)一步約束轉(zhuǎn)換結(jié)果。


項(xiàng)目演示效果如下所示:


圖片


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



關(guān)鍵詞: LabVIEW

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉