iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >玩转Python图像处理之二值图像腐蚀详解
  • 349
分享到

玩转Python图像处理之二值图像腐蚀详解

2024-04-02 19:04:59 349人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1 引言2 腐蚀概念3 举个栗子4 水平腐蚀4.1 理论基础4.2 代码实现5 垂直腐蚀5.1 理论基础5.2 代码实现6 全方向腐蚀6.1 理论基础6.2 代码实现7 总结1

1 引言

形态学运算是针对二值图像依据数学形态学集合论方法发展起来的图像处理的方法.其主要内容是设计一整套的变换概念和算法,用以描述图像的基本特征.

在图像处理中,形态学的应用主要有以下两点:利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的;描述和定义图像的各种几何参数和特征等.

2 腐蚀概念

数学形态学的运算以腐蚀和膨胀这两种基本运算为基础,腐蚀操作在数学形态学上的作用是消除物体的边界点,使边界向内部收缩的过程,主要用于将小于物体结构元素的物体去除.例如两个物体之间有细小的连通,可以通过腐蚀操作将两个物体分开.腐蚀的数学表达式为:

上述公式中:

  • S表示腐蚀后的二值图像
  • B表示用来进行腐蚀操作的结构元素,结构元素内每一个元素取值为0或1,它可以组成任何一种形状的图形;
  • X表示原图经过二值化后的像素集合.

此公式的含义是用B来腐蚀X得到的集合S,S是由B完全包括在X中时B的当前位置的集合.

3 举个栗子

只看上面公式,是不是有种云里雾里的感觉,那我们不妨来举个栗子说明一下,请看下图:

  • 左侧a为被处理的二值图像,白色部分表示背景,灰色部分表示目标X;
  • 中间为结构元素B,黑色点为结构元素的中心点,灰色的方格表示邻域;
  • 右侧c中黑色的部分表示腐蚀后的结果,灰色的部分表示目标图像被腐蚀掉的部分.

我们可以这样理解上述腐蚀过程,即用B的中心点和X上的点一个一个地对比,如果B上所有对应的点都在X的范围内,则该点保留;否则将该点去除;

通俗的讲就是将结构元素在图像中移动,如果结构元素完全包含在目标图像X中,则保留目标图像中对应于中心点的像素点,否则删除该像素点.

4 水平腐蚀

4.1 理论基础

图像腐蚀操作按照所采用的结构元素的类型,可以分为以下三类:水平腐蚀垂直腐蚀以及全方向腐蚀.其中水平腐蚀所采用的结构元素为[0,0,0], 其具体实现步骤如下:

  1. 根据原始图像的宽和高,初始化结果图为全白图(背景为白色)
  2. 由于我们采用的是横向腐蚀操作,结构元素为1X3,因此我们不处理最左边和最右边的两列像素,从第2行第2列开始,逐个遍历每行元素,判断该元素的前一个像素和后一个像素是否含有背景点,有则说明在结果图上该点需要被腐蚀掉,将该点像素点的灰度值赋值为255,否则保持不变
  3. 循环上述步骤,直至处理完原图所有像素点。

4.2 代码实现

使用python实现按上述过程,核心代码如下:


def horizon_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    for i in range(h):
        for j in range(1,w-1):
            out_img[i][j]=0
            for k in range(3):
                if bin_img[i][j+k-1] > 127:
                    out_img[i][j]=255
    return out_img

运行结果如下:

请添加图片描述

上图中,从左往右依次为彩色原图,二值化后的结果图,以及采用水平腐蚀后的效果图,可以看到腐蚀后的图相比二值图外围在纵向上被腐蚀掉一圈。

5 垂直腐蚀

5.1 理论基础

垂直腐蚀和水平腐蚀原理类似,只是所采用的结构元素不同,垂直腐蚀所使用的结构元素为 [ 0 , 0 , 0 ] T [0,0,0]^T [0,0,0]T,其详细的实现步骤如下:

  • 根据原始图像的宽和高,初始化结果图为全白图(背景为白色)
  • 由于我们采用的是垂直腐蚀操作,结构元素为3X1,因此我们不处理最上边和最下边的两行像素,从第2行第2列开始,逐个遍历每行元素,判断该元素的上一个像素和下一个像素是否含有背景点,有则说明在结果图上该点需要被腐蚀掉,将该点像素点的灰度值赋值为255,否则保持不变
  • 循环上述步骤,直至处理完原图所有像素点。

5.2 代码实现

使用Python实现按上述过程,核心代码如下:


def vertical_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    for i in range(1,h-1):
        for j in range(w):
            out_img[i][j]=0
            for k in range(3):
                if bin_img[i+k-1][j] > 127:
                    out_img[i][j]=255
    return out_img

运行结果如下:

请添加图片描述

上图中,从左往右依次为彩色原图,二值化后的结果图,以及采用垂直腐蚀后的效果图,可以看到腐蚀后的图相比二值图在横向上被腐蚀掉一圈。

6 全方向腐蚀

6.1 理论基础

全方向腐蚀综合了垂直腐蚀和水平腐蚀,所采用的结构元素为十字形,全向腐蚀的一般实现步骤如下:

  • 根据原始图像的宽和高,初始化结果图为全白图(背景为白色)
  • 全向腐蚀包含垂直腐蚀和水平腐蚀,这里我们采用3X3的结构元素,如下所示:

  • 为防止越界,我们不处理最上边、最右边、最下边和最左边共四边的元素,从第2行第2列开始,逐个遍历每个元素,判断该元素的上一个像素 下一个像素 前一个像素 以及后一个像素这四个位置(即数组中除中心点外,四个为0的位置)中是否含有背景点,有则说明在结果图上该点需要被腐蚀掉,将该点像素点的灰度值赋值为255,否则保持不变。当然也可以定义不同形状的结构元素B来进行不同的腐蚀效果,但处理方法都是检查B中所对应的像素点是否全部为物体,是则保留该点,否则置为255.
  • 循环上述步骤,直至处理完原图所有像素点。

6.2 代码实现

使用python实现按上述过程,核心代码如下:


def all_erode(bin_img):
    out_img = np.zeros(shape=bin_img.shape, dtype=np.uint8) + 255
    h = bin_img.shape[0]
    w = bin_img.shape[1]
    B=[1,0,1,0,0,0,1,0,1]
    for i in range(1,h-1):
        for j in range(1,w-1):
            out_img[i][j]=0
            for m in range(3):
                for n in range(3):
                    if B[m*3+n] == 1:
                        continue
                    if bin_img[i+m-1][j+n-1] > 127:
                        out_img[i][j]=255
    return out_img

运行结果如下:

请添加图片描述

上图中,从左往右依次为彩色原图,二值化后的结果图,以及采用垂直腐蚀后的效果图,可以看到腐蚀后的图相比二值图在横向和纵向上都被腐蚀掉一圈。

7 总结

通过上述简单步骤,我们实现了二值图像水平腐蚀垂直腐蚀以及全向腐蚀,并给出了完整代码实例。

您学废了吗?

到此这篇关于Python图像处理笔记之二值图像腐蚀的文章就介绍到这了,更多相关Python二值图像腐蚀内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 玩转Python图像处理之二值图像腐蚀详解

本文链接: https://www.lsjlt.com/news/136409.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 玩转Python图像处理之二值图像腐蚀详解
    目录1 引言2 腐蚀概念3 举个栗子4 水平腐蚀4.1 理论基础4.2 代码实现5 垂直腐蚀5.1 理论基础5.2 代码实现6 全方向腐蚀6.1 理论基础6.2 代码实现7 总结1 ...
    99+
    2024-04-02
  • OpenCV图像处理之实现图像膨胀腐蚀操作
    目录一.形态学操作概念二.形态学操作-膨胀膨胀函数API接口结构元素的API函数接口三.形态学操作—腐蚀腐蚀原理腐蚀函数API接口图像处理效果一.形态学操作概念 图像形态...
    99+
    2024-04-02
  • Python图像运算之腐蚀与膨胀详解
    目录前言一.形态学理论知识二.图像腐蚀三.图像膨胀四.总结前言 这篇文章将详细讲解开始图像形态学知识,主要介绍图像腐蚀处理和膨胀处理。数学形态学(Mathematical Morph...
    99+
    2024-04-02
  • C++ opencv图像处理实现图像腐蚀和膨胀示例
    目录1 概念2 膨胀3 腐蚀1 概念 1.1 腐蚀跟膨胀是最基本的形态学运算 1.2 腐蚀跟膨胀是对图像的白色的部分(亮光部分)进行操作 1.3 腐蚀是对亮光部分进行腐蚀 拥有比原图...
    99+
    2024-04-02
  • Python图像运算之图像阈值化处理详解
    目录一.图像阈值化二.固定阈值化处理1.二进制阈值化2.反二进制阈值化3.截断阈值化4.阈值化为05.反阈值化为0三.自适应阈值化处理四.总结一.图像阈值化 图像阈值化(Binari...
    99+
    2024-04-02
  • Python图像处理之图像量化处理详解
    目录一.图像量化处理原理二.图像量化实现三.图像量化等级对比四.K-Means聚类实现量化处理五.总结一.图像量化处理原理 量化(Quantization)旨在将图像像素点对应亮度的...
    99+
    2024-04-02
  • Python图像处理之图像金字塔详解
    目录一.图像金字塔原理二.图像向上取样三.图像向下取样四.总结一.图像金字塔原理 上一篇文章讲解的图像采样处理可以降低图像的大小,本文将补充图像金字塔知识,了解专门用于图像向上采样和...
    99+
    2024-04-02
  • Python图像处理之图像增广算法详解
    目录前言图像增广算法a.图像旋转b.图像亮度调整c.图像裁剪及拼接本章小结前言 图像增广算法在计算机视觉领域扮演着至关重要的角色。随着深度学习的兴起,大规模数据集的需求变得更加迫切,...
    99+
    2023-05-20
    Python图像增广算法 Python图像处理 Python 算法
  • OpenCV图像处理之图像拼接详解
    目录图像拼接技术一、需求分析二、具体步骤三、代码实现图像拼接技术 一、需求分析 将下面两张图像进行拼接 拼接得到一张完整的图像 二、具体步骤 1.选择特征点 //1、选...
    99+
    2022-11-13
    OpenCV 图像处理 图像拼接 OpenCV 图像拼接 OpenCV 图像处理
  • Python图像处理之图像拼接
    目录一、前言二、特征点匹配三、匹配错误的特征点干扰四、消除干扰五、RANSAC进行图像匹配六、总结一、前言 图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传...
    99+
    2024-04-02
  • PythonOpenCV图像处理之图像滤波特效详解
    目录1 分类2 邻域滤波2.1 线性滤波2.2 非线性滤波3 频域滤波3.1 低通滤波3.2 高通滤波1 分类 图像滤波按图像域可分为两种类型: 邻域滤波(Spatial Domai...
    99+
    2024-04-02
  • Python图像处理之图像算术与逻辑运算详解
    目录一.图像加法运算二.图像减法运算三.图像与运算四.图像或运算五.图像非运算六.图像异或运算七.总结一.图像加法运算 图像加法运算主要有两种方法。第一种是调用Numpy库实现,目标...
    99+
    2024-04-02
  • 详解Python+OpenCV实现图像二值化
    目录一、图像二值化1.效果2.源码二、图像二值化(调节阈值)1.源码一2.源码二一、图像二值化 1.效果 2.源码 import cv2 import numpy as np im...
    99+
    2024-04-02
  • educoder之Python数值计算库Numpy图像处理详解
    目录NumPy   Python数值计算重要库读取和显示图像图像的大小调整图像的翻转图像缩放和裁剪颜色通道处理图像滤波NumPy   Pyth...
    99+
    2023-05-17
    Python 数值计算库Numpy Python Numpy图像处理
  • Python图像处理之模糊图像判断
    目录上期回顾采用Laplace算子的原因实现的效果图片素材代码的展示与讲解效果展示项目资源上期回顾 上一次的图像清晰度评价没有成功,主要的原因是那几张图像清晰度评价函数都实际都采用了...
    99+
    2022-12-08
    Python模糊图像判断 Python模糊图像 Python模糊 判断
  • Python图像处理之图像融合与ROI区域绘制详解
    目录一.图像融合二.图像ROI区域定位三.图像属性(1)shape(2)size(3)dtype四.图像通道分离及合并(1)split()函数(2)merge()函数五.图像类型转换...
    99+
    2024-04-02
  • 怎么在python中处理图像二值化
    怎么在python中处理图像二值化?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫...
    99+
    2023-06-14
  • python数字图像处理图像的绘制详解
    目录正文一、用figure函数和subplot函数分别创建主窗口与子图二、用subplots来创建显示窗口与划分子图三、其它方法绘图并显示正文 实际上前面我们就已经用到了图像的绘制,...
    99+
    2024-04-02
  • Python实现图像压缩和图像处理详解
    目录入门了解1.颜色入门了解 2. 像素用Pillow处理图像1. 读取和显示图像2. 剪裁图像3. 生成缩略图4. 缩放和黏贴图像5. 旋转和翻转6. 操作像素7. 滤镜效果使用P...
    99+
    2024-04-02
  • python数字图像处理之图像的批量处理
    目录正文图片集合函数批量读取批量转换为灰度图批量保存正文 有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理。这时候,我们可以通过循环来执行处理,也可以调用程序自带的图片...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作