python数字图像处理笔记17 形态学

膨胀

效果:扩大图像中的物体

定义:设 A 为原始二值图像,B 是结构元素,则 A 被 B 膨胀定义为:
在这里插入图片描述在这里插入图片描述

def Morphology_Dilate(img, Dil_time=1):
    H, W = img.shape

    # kernel
    MF = np.array(((0, 1, 0),
                   (1, 0, 1),
                   (0, 1, 0)), dtype=np.int)

    # each dilate time
    out = img.copy()
    for i in range(Dil_time):
        tmp = np.pad(out, (1, 1), 'edge')
        for y in range(1, H + 1):
            for x in range(1, W + 1):
                if np.sum(MF * tmp[y - 1:y + 2, x - 1:x + 2]) >= 255:
                    out[y - 1, x - 1] = 255

    return out

即,A 被 B 膨胀的结果是满足上式的所有位移 z 的点(前景像素点)的集合
在这里插入图片描述

腐蚀

效果:缩小图像中的物体

定义:设 A 为原始二值图像,B 是结构元素,则 A 被 B 腐蚀定义为:
在这里插入图片描述
即,将结构元素 B 相对于集合 A 进行平移, 只要平移后结构元素都包含在集合 A 中, 则这些位移Z 的点(前景像素点)的集合即为腐蚀结果。

def Morphology_Erode(img, Erode_time=1):
    H, W = img.shape
    out = img.copy()

    # kernel
    MF = np.array(((0, 1, 0),
                (1, 0, 1),
                (0, 1, 0)), dtype=np.int)

    # each erode
    for i in range(Erode_time):
        tmp = np.pad(out, (1, 1), 'edge')
        # erode
        for y in range(1, H+1):
            for x in range(1, W+1):
                if np.sum(MF * tmp[y-1:y+2, x-1:x+2]) < 255*4:
                    out[y-1, x-1] = 0

    return out

在这里插入图片描述

开运算

效果:断开较窄的狭颈、消除细的突出物,使图像的轮廓变得光滑

定义:设 A 为原始二值图像,B 是结构元素,则 使用结构元素 B 对集合 A 进行开启操作,定义为:
在这里插入图片描述 即,先用 B 对 A 腐蚀,然后用 B 对腐蚀结果进行膨胀。

def Morphology_Opening(img, time=1):
    out = Morphology_Erode(img, Erode_time=time)
    out = Morphology_Dilate(out, Dil_time=time)

在这里插入图片描述

闭运算

效果:填补狭窄的间断、小的孔洞,使图像的轮廓变得光滑

定义:设 A 为原始二值图像,B 是结构元素,则使用结构元素 B 对集合 A 进行闭合操作,定义为:
在这里插入图片描述
即,先用 B 对 A 膨胀,然后用 B 对结果进行腐蚀

def Morphology_Closing(img, time=1):
    out = Morphology_Dilate(img, Dil_time=time)
    out = Morphology_Erode(out, Erode_time=time)

    return out

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值