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


     

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

     

    效果图如下:

     

    在具体项目中,有时候设计合适的矩形结构元素,也许能达到意想不到的效果。、

     

  • 相关阅读:
    Python字符串的定义与常用操作
    Python中yield返回生成器的详细方法
    python中把列表中的字符串转成整型的3种方法
    python基础教程:修改Python列表中元素的几种方法
    极致性能设计——开篇
    MySQL设计与实现
    Java平台标准版工具参考
    为什么for循环中的a=a++,a总是0
    JVM 分析工具快速查询手册
    从现代计算机低层看待性能和并发
  • 原文地址:https://www.cnblogs.com/xh6300/p/11917295.html
Copyright © 2020-2023  润新知