圖像濾波和形態學運算中矩形結構元素的運用


 

在圖像濾波和形態學運算中,我們用得最多的是圓形結構元素(circle)或者方形結構元素,例如:

① 圓形結構元素

opening_circle (Region, RegionOpening, 3.5)
erosion_circle (Region, RegionErosion, 3.5)

 

② 方形結構元素

mean_image (Image, ImageMean, 9, 9)

opening_rectangle1 (Region, RegionOpening, 5, 5)

 

其實方形結構元素也屬於矩形結構元素。但是由於通常圓形結構元素和方形結構元素的處理效果類似,所以我暫時把它們歸為同一類。

 

至於矩形結構元素,我這里特指結構元素的長、寬比例懸殊的。例如:

mean_image (Image, ImageMean, 200, 1)

opening_rectangle1 (Region, RegionOpening, 1, 50)

 

 

下面舉幾個例子說明一下矩形結構元素使用時的妙用。

 

 【例1】

要求:提取出下圖中的黑色橫線。

 

分析:如果直接用絕對閾值,或者動態閾值來分割的話,很難得到理想的效果。

 

算法如下:

 1 read_image (Image, 'C:/Users/02/Desktop/fabric.png')  2 
 3 *用(100, 1)的矩形結構元素濾波,使黑線更加明顯,並且模糊其他部分  4 mean_image (Image, ImageMean, 100, 1)  5 *用(1, 80)的矩形結構元素濾波,將黑線模糊掉  6 mean_image (ImageMean, ImageMean1, 1, 80)  7 
 8 dyn_threshold (ImageMean, ImageMean1, RegionDynThresh, 10, 'dark')  9 connection (RegionDynThresh, ConnectedRegions) 10 dev_display (Image) 11 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3000, 9999999)

 

黑線提取效果圖:

 

讀者朋友里面有會用Photoshop的嘛?我多引申一句。

 

模糊濾波算子mean_image的簽名是:

mean_image(Image : ImageMean : MaskWidth, MaskHeight : )

 

當MaskWidth和MaskHeight差異很大時,其實很像Photoshop里面的“動感模糊”濾鏡:

 

 

【例2】

要求:把下圖中黑色區域頂部不平整的地方去掉。這些部分一般是工件周邊的臟污或者毛刺干擾,需去掉。難點是既需要去掉這些不平整區域,又不能影響剩下的矩形區域的形狀。

 

嘗試了一下,opening_circle 算子肯定不行(opening_circle 會磨平矩形的棱角)。下面第5行中開運算矩形結構元素如果是(300, 300)的話,那么會把整個區域腐蝕掉,也是不行的。

具體實現代碼如下:

1 read_image (Image, 'C:/Users/02/Desktop/2c.png') 2 dev_set_draw ('margin') 3 dev_set_line_width (2) 4 threshold (Image, Region, 0, 20) 5 opening_rectangle1 (Region, RegionOpening, 300, 1) 6 dev_display (Image) 7 dev_display (RegionOpening)

 

效果圖如下:

 

在具體項目中,有時候設計合適的矩形結構元素,也許能達到意想不到的效果。、

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM