图像腐蚀与图像膨胀(Python篇)

        在大学期间积累过一定的图像处理经验,OCR技术在我的日常工作中偶尔会用到,还是比较重要的。本文介绍图像的膨胀和腐蚀的基本概念及其各自的代码实现。

        1.膨胀和腐蚀的基本概念

        图像的膨胀(Dilation)和腐蚀(Erosion)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。其中膨胀类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大;腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

        1.1图像膨胀

膨胀的运算符是”⊕”,其定义如下:

                                          Python图像处理:图像腐蚀与图像膨胀!

         该公式表示用B来对图像A进行膨胀处理,其中B是一个卷积模板或卷积核,其形状可以为正方形或圆形,通过模板B与图像A进行卷积计算,扫描图像中的每一个像素点,用模板元素与二值图像元素做“与”运算,如果都为0,那么目标像素点为0,否则为1。从而计算B覆盖区域的像素点最大值,并用该值替换参考点的像素值实现膨胀。下图是将左边的原始图像A膨胀处理为右边的效果图A⊕B。

        1.2图像腐蚀

腐蚀的运算符是“-”,其定义如下:

                                               Python图像处理:图像腐蚀与图像膨胀!

        该公式表示图像A用卷积模板B来进行腐蚀处理,通过模板B与图像A进行卷积计算,得出B覆盖区域的像素点最小值,并用这个最小值来替代参考点的像素值。如图所示,将左边的原始图像A腐蚀处理为右边的效果图A-B。

        2.实现过程

        2.1图像腐蚀

图像腐蚀的过程:

       a.图像二值化,将图像的灰度值根据阈值进行0,1处理得到的图像;

       b.卷积核,对应信号处理中的高低频滤波器。常用numpy去设置,np.ones((m,n), np.uint8) 表示指定m*n的卷积核;

       c.图像的腐蚀,cv2.erode(二值化图像, 卷积核, 迭代次数)

代码处理过程:

import cv2
import numpy as np

## 测试图片,为反斜杠
pic = 'C:/1.jpg'

## a.图像的二值化 ,这里没有做阈值处理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)


## b.设置卷积核5*5
kernel = np.ones((5,5),np.uint8)

## c.图像的腐蚀,默认迭代次数
erosion = cv2.erode(src,kernel)

## 效果展示
cv2.imshow('origin',src)

## 腐蚀后
cv2.imshow('after erosion',erosion)

图片处理效果对比:

        2.2图像膨胀

图像膨胀时腐蚀的逆过程,往往先通过腐蚀使图片线条变窄,然后腐蚀可以去除噪声。图像膨胀的处理过程:

a.图像二值化,将图像的灰度值根据阈值进行0,1处理得到的图像;

b.卷积核,对应信号处理中的高低频滤波器。常用numpy去设置,np.ones((m,n), np.uint8) 表示指定m*n的卷积核;

c.图像的腐蚀,cv2.dilate(二值化图像, 卷积核, 迭代次数)

代码处理过程:

import cv2
import numpy as np

## 测试图片,为反斜杠
pic = 'C:/1.jpg'

## a.图像的二值化 ,这里没有做阈值处理
src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)


## b.设置卷积核5*5
kernel = np.ones((5,5),np.uint8)

## c.图像的腐蚀,默认迭代次数
erosion = cv2.erode(src,kernel)

## 图像的膨胀
dst = cv2.dilate(erosion,kernel)

## 效果展示
cv2.imshow('origin',src)

## 腐蚀后
cv2.imshow('after erosion',erosion)

## 膨胀后
cv2.imshow('after dilate',dst)

图片效果对比:

  • 21
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值