图像滤波和形态学运算中矩形结构元素的运用


 

在图像滤波和形态学运算中,我们用得最多的是圆形结构元素(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