Halcon区域形状特征-area_center、area_holes、select_shape、inner_circle和smallest_rectangle2算子
提示:文章參考了網絡上其他作者的文章,以及相關書籍,如有侵權,請聯系作者。
前言
???????在場景中選擇物體的特征是圖像測量或者識別的重要基礎。區域的形狀特征是非常常用的特征,在模式匹配中,常使用形狀特征作為匹配的依據。下面就介紹幾種常用的與區域形狀特征相關的算子。
一、區域的面積和中心(area_center)
???????提到區域的特征,最常用的莫過于區域的面積和中心點坐標信息。實際工作中,經常會使用面積或中心點進行特征的選擇和定位。Halcon中的area_center算子就是用于實現這一功能的,該算子一次返回以下兩個結果。
???????1)、面積:指的是單個區域(輸入區域可能不止一個)中包含的灰度像素數量。
???????2)、中心:指的是幾何中心點坐標,即單個區域的中心點行坐標均值和列坐標均值。
???????以一個例子說明,下面左圖為輸入的圖像;中圖為閾值分割后的圖像,其中較亮部分為提取的區域,這些區域將作為area_center 算子的輸入;右圖為求面積與形狀中心坐標的結果。其中文字標注的是對應區域的面積,文字的位置為中心位置設置行方向偏移后的位置。
???????上面右圖中第三個孔的中心坐標在控制變量窗口中可以看到,把鼠標放在圓孔的中心,可以從界面右下角的鼠標位置看到鼠標坐標值與控制變量中的值一致。
???????上述過程的代碼如下:
???????該代碼實現了將輸入圖像中的較暗的孔洞區域提取出來,計算各個獨立區域的面積和中心坐標,并輸出各區域的面積。
二、封閉區域(孔洞)的面積(area_holes)
???????除了可以用area_center算子計算區域的面積以外,在Halcon中還可以使用area_holes算子計算圖像中封閉區域(孔洞)的面積。該面積指的是區域中孔洞部分包含的像素數。一個區域中可能不只包含一個孔洞區域,因此該算子將返回所有孔洞區域的面積之和。
???????下面左圖為輸入的灰度圖像,右圖為經閾值分割并輸出了孔洞面積的圖像,其中深色部分為提取的孔洞區域,紅色部分為包含孔洞的區域,也是area_holes算子的輸入。
???????上述過程的代碼如下:
???????該代碼實現了將輸入區域中的孔洞部分提取出來,并計算孔洞的面積之和。
三、根據特征值選擇區域(select_shape)
???????關于提取圖像的特征,比較常用的一個算子是select_shape算子,它能高效地根據特征提取出符合條件的區域。該算子的原型如下:
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )???????參數1和參數2分別表示輸入和輸出的區域,值得關注的是參數3 Features。這里提供了一個包括多種特征參數的列表,基本包括了區域的常用特征,使用者只需要選擇需要的特征,并設置篩選條件,就能得到需要的區域。
???????1)、area:輸入區域的面積。
???????2)、row:輸入區域中心點的行坐標。
???????3)、column:輸入區域中心點的列坐標。
???????4)、width:輸入區域的寬度。
???????5)、height:輸入區域的高度。
???????6)、circularity:輸入區域的圓度。
???????7)、compactness:輸入區域的緊密度。
???????8)、convexity:輸入區域的凸包性。
???????9)、 rectangularity:輸入區域的矩形度。
???????10)、outer_radius:輸入區域的最小外接圓的半徑。
???????11)、inner_radius:輸入區域的最大內接圓的半徑。
???????12)、inner_width:輸入區域的與坐標軸平行的最大內接矩形的寬度。
???????13)、inner_height:輸入區域的與坐標軸平行的最大內接矩形的高度。
???????14)、connect_num:輸入區域中非連通區域的數量。
???????15)、holes_num:輸入區域包含的孔洞數量。
???????16)、max_diameter:輸入區域的最大直徑。
???????在檢測中,常常使用某個特征值作為分割的依據,這時使用select_shape算子就非常高效,僅用簡潔的代碼就能將這些區域提取出來。例如,我們常利用面積特征來篩選出較大的前景目標,移除雜點和小區域。使用select_shape算子進行面積篩選,無須單獨計算每個區域的具體面積,代碼也非常簡潔。
???????這里有一個要注意的地方,就是算子中Operation的取值。如果你預先要同時檢測多個面積為[min,max]的目標,則在 select_shape語句中用’and’。 檢測結果如果沒有多個, SelectedRegions為空(要么取出兩個以上,不夠兩個就什么都不取----以標明有錯!)。
如果你預先不知道能有幾個面積為[min,max]的區域,用 select_shape時取‘or’ 合適,如果有多個就取多個,有一個就取一個(or —有幾個滿足的區域,就取幾個!)
???????下面是一個使用 select_shape 算子進行特征篩選的例子,如下圖所示。左圖為輸入的彩色圖像,圖中有若干個孔洞。為了將最大的孔洞從圖中提取出來,先使用閾值處理,從ROI中提取出較亮的區域;然后使用 select_shape 算子根據面積area篩選,將大部分雜點排除掉,得到中圖所示的形狀;接著再用一次select_shape算子,使用區域寬度width作為判斷條件,選擇出大的孔。右圖為使用select_shape 算子進行特征提取的圖像,經過第二次篩選,將包含較大孔洞的區域提取出來。
???????上述過程的代碼如下:
???????該段代碼中列舉了3種選擇最大目標的方法。方法一是直接根據面積的值設置選擇標準;方法二分為兩步操作,先計算面積,再選擇出面積最大的形狀;方法三是通過在select_shape_std算子中設置max_area,直接提取出面積最大的形狀。3種方法得到的結果相同。這樣即可將符合條件的區域提取出來。
???????注意:可以根據檢測需要組合使用多種選擇條件,多次使用select_shape算子,以篩選出合適的區域。
四、根據特征值創建區域
inner_circle算子
smallest_rectangle2算子
參考文獻
1、Halcon機器視覺算法原理與編程實戰/楊青編著.北京大學出版社
總結
以上是生活随笔為你收集整理的Halcon区域形状特征-area_center、area_holes、select_shape、inner_circle和smallest_rectangle2算子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么简单快速一个钟头入侵网站
- 下一篇: 【教学类-20-02】20221203《