[Halcon] [ImageProcess] Dilation / Erosion 膨脹與侵蝕

Dilation / Erosion 在我目前實作中,滿常使用到的。
因為取得的區域,並不是每塊區域都是完美無瑕,所以需要Dilation / Erosion的方式來做校正。

Dilation (膨脹): 可以用來讓區域邊緣變得較平滑,可濾掉較小的凹區域。因為區域膨脹的關係,整體的區域會變大。
dilation1(Region, StructElement : RegionDilation : Iterations : )
dilation_circle(Region : RegionDilation : Radius : )
dilation_rectangle1(Region : RegionDilation : Width, Height : )
上頭一些函式,主要是輸入圓半徑做膨脹、利用輸入方形長寬做膨脹、利用另一個區域來做膨脹等...

Erosion (侵蝕): 可以用來讓區域邊緣變得較平滑,可濾掉較小的凸區域。因為區域侵蝕的關係,整體的區域會變小。有時可能會將區域切割成許多小區域。
erosion1(Region, StructElement : RegionErosion : Iterations : )
erosion_circle(Region : RegionErosion : Radius : )
erosion_rectangle1(Region : RegionErosion : Width, Height : )
上頭一些函式,主要是輸入圓半徑做侵蝕、利用輸入方形長寬做侵蝕、利用另一個區域來做侵蝕等...
另外也有函式是將這兩種觀念組合起來應用:
Opening   : 先侵蝕、後膨脹
opening(Region, StructElement : RegionOpening : : ) 
opening_circle(Region : RegionOpening : Radius : )
opening_rectangle1(Region : RegionOpening : Width, Height : )

ex: opening_circle(Region : RegionOpening : Radius : ) = erosion_circle -> dilation_circle

Closing    : 先膨脹、後侵蝕
closing(Region, StructElement : RegionClosing : : )
closing_circle(Region : RegionClosing : Radius : )
closing_rectangle1(Region : RegionClosing : Width, Height : ) 

ex: closing_rectangle1(Region : RegionClosing : WidthHeight : )  = dilation_rectangle1 -> erosion_rectangle1

上述方法都可以讓區域邊緣變得較平滑,端看自己需要什麼樣的結果再作調整即可。

這個網誌中的熱門文章

[Tips] 設定桌面文字顏色

登入失敗: 使用者帳戶限制。可能原因為不允許空的密碼,登入時數限制,或強制的原則限制

[Win7] 電腦管理-損毀傾印