数字图像处理-9-图像的腐蚀和膨胀

图像处理进阶(一)——图像的腐蚀膨胀 图像的腐蚀膨胀 作者:Cabin_V 作为学习图像处理的学生,需要不断学习相关知识,我在课余时间将一些分析总结和学习的笔记写成博客来记录自己的学习过程,也希望能与大家一起交流。 关于图像处理入门和进阶分类问题,我根据《数字图像处理》这本书(本科期间上课使用),将出现的内容划分为入门,其他常用的知识划分为进阶。 转载务必说明出处! 文章目录图像的腐蚀膨胀图像腐蚀与膨胀区别作用API说明get... 阅读详情

1.图像腐蚀(Erosion)

注意:以下图像处理都是二值图像,所以在进行处理之前需要先将图像进行二值化.

1.1 垂直腐蚀

  • 算法原理:在前景=0、背景=255 的二值图上,用结构元素扫描每个像素。
    若结构元素覆盖窗口内存在任意背景像素,输出为背景(255);
    只有窗口全部为前景时,输出才为前景(0)。
    等价于最小值滤波:output = MIN(window)

如下对应的结构元素为3x1,在遍历每个元素时,会检测它的上,中,下三个像素存不存背景色,如果存在背景色,则把当前像素置为背景色(白色)
在这里插入图片描述

  • python代码
    如下代码代码使用的3x1的窗口,说白了就是把垂直方向上,上下边界各腐蚀3各像素点
def erode_vertical(pixels, width, height):
    """
    垂直腐蚀:结构元素为 3×1 竖条 [1,1,1]^T
    对每个像素,检查上、中、下三个位置:
      若有任意背景像素(>128),输出为背景;否则为前景。
    跳过顶行和底行。
    """
    # 初始化目标缓冲区
    dst = bytearray(width * height)

    for y in range(1, height - 1):
        for x in range(width):
            # 先置前景,若 3x1 窗口内有背景则改为背景
            out = 0  # 前景
            for dy in (-1, 0, 1):
                if pixels[(y + dy) * width + x] > 128:
                    out = 255  # 背景
                    break
       

    return dst
  • 效果图:
    垂直方向上,上下边界各腐蚀3各像素在这里插入图片描述

1.2 水平腐蚀

  • 检测原理: 结构元素为 1×3 横条 [1,1,1] 对每个像素,检查左、中、右三个位置。跳过最左列和最右列。
  • python代码
    说白了就是水平方向上,前景的左右边界各腐蚀3各像素
def erode_horizontal(pixels, width, height):
	# pixels:是二值图像的数据
	# 初始化目标缓冲区
    dst = bytearray(width * height)

    for y in range(height):
        for x in range(1, width - 1):
            out = 0
            for dx in (-1, 0, 1):
                if pixels[y * width + (x + dx)] > 128:
                    out = 255
                    break
            dst[y * width + x] = out

    return dst
  • 效果图
    说白了就是水平方向上,前景的左右边界各腐蚀3各像素
    在这里插入图片描述

1.3 全方向腐蚀

这里它的原理和垂直腐蚀,水平腐蚀有些不同,这里检测区域变为分别检测当前元素的上,下,左,右,右下的像素有没有存在背景颜色的,如果存在,则把当前元素置白.
如下图所示,黑色为当前像素,四周粉色高亮的为要检测的像素,如果周围存在背景色,则把当前像素置白(背景色)
在这里插入图片描述

  • python代码
def erode_full(pixels, width, height):
    """
    全方向腐蚀:使用 3×3 结构元素-这个区域可自定义,在实际使用中,腐蚀效果,用户可自定义。
    这里我们使用如下5各偏移的像素
    # 5 个检查偏移 (dy, dx), 注意这里前面是y轴偏移,后面是x轴偏移
    (+1, 0), (0, -1), (0, +1), (-1, 0), (-1, +1)
    """
    dst = bytearray(width * height)
    # 5 个检查偏移 (dy, dx)
    offsets = [(+1, 0), (0, -1), (0, +1), (-1, 0), (-1, +1)]

    for y in range(1, height - 1):
        for x in range(1, width - 1):
            out = 0
            for dy, dx in offsets:
                if pixels[(y + dy) * width + (x + dx)] > 128: # 存在背景色(白)
                    out = 255
                    break
            dst[y * width + x] = out

    return dst
  • 效果图
    在这里插入图片描述

2. 图像的膨胀

2.1 垂直膨胀

  • 检测原理:
    与腐蚀对偶。若结构元素覆盖窗口内存在任意前景像素,输出为前景(0);否则为背景(255)。
    等价于最大值滤波(在前景=0 约定下为最小值)。

  • python代码
    代码比较简单,说白了,就是垂直方向上,上下各边界往外面外扩3个元素.这个用户实际使用时,可自定义.

def dilate_vertical(pixels, width, height):
    """
    垂直膨胀:3×1 结构元素。
    窗口内有任意前景像素(<128),输出为前景。
    """
    dst = bytearray(b'\xff' * width * height)  # 初始化为背景

    for y in range(1, height - 1):
        for x in range(width):
            out = 255  # 背景
            for dy in (-1, 0, 1):
                if pixels[(y + dy) * width + x] < 128:
                    out = 0  # 前景
                    break
            dst[y * width + x] = out

    return dst

  • 效果图
    如下"日"字的上下变粗了.
    在这里插入图片描述

2.2 水平膨胀

  • 检测原理:
    在水平方向上,检测当前元素的在x轴分别偏移(-1, 0, 1)的三个元素是否存在前景像素(0), 如果存在,则把当前像素置为前景0.

  • python代码
    说白了,就是水平方向上,左右边界各扩大3个像素,在实际使用时,用户可自定义窗口大小.

def dilate_horizontal(pixels, width, height):
    """
    水平膨胀:1×3 结构元素。
    """
    dst = bytearray(b'\xff' * width * height)

    for y in range(height):
        for x in range(1, width - 1):
            out = 255
            for dx in (-1, 0, 1):
                if pixels[y * width + (x + dx)] < 128:
                    out = 0
                    break
            dst[y * width + x] = out

    return dst
  • 效果图
    原理就是左右边界各增大3个像素, 如下"日"字的的左右边变宽了.
    在这里插入图片描述

2.3 全方向膨胀

  • 检测原理:
    全方向膨胀:与 “全方向腐蚀” 具有相同的结构元素,窗口内有前景,则把当前像素输出前景。 这里的窗口实际使用时,是可以随参传入的,不一定是这几个.
  • python代码
    代码简单,如果窗口内存在前景像素,则 当前像素置为前景(黑色0)

def dilate_full(pixels, width, height):
    dst = bytearray(b'\xff' * width * height)
    offsets = [(+1, 0), (0, -1), (0, +1), (-1, 0), (-1, +1)]

    for y in range(1, height - 1):
        for x in range(1, width - 1):
            out = 255
            for dy, dx in offsets:
                if pixels[(y + dy) * width + (x + dx)] < 128:
                    out = 0
                    break
            dst[y * width + x] = out

    return dst
  • 效果图
    在这里插入图片描述
数字图像处理(十)腐蚀和膨胀 数字图像处理,腐蚀和膨胀 阅读详情

相关推荐

图像腐蚀(Erosion)和膨胀(Dilation)

膨胀操作的主要作用是 “扩大” 前景区域,它会填补小的黑色空洞,使物体边缘 膨胀,通常用于 加强目标区域、修复断裂的部分 等。• 如果 结构元素覆盖的区域中至少有一个前景像素(白色,值为1),那么该像素就会 变为白色。• 开运算(Opening) = 先腐蚀后膨胀,用于去除 小的噪声,同时保持整体形状不变。• 闭运算(Closing) = 先膨胀后腐蚀,用于 填补小孔洞,连接断开的部分。• 结果图像的像素值由 ( B ) 与 ( A ) 的交集是否为空 决定。• 结构元素的大小 决定了膨胀的程度。

杨善锦技术专栏 1488

图像的腐蚀与膨胀

图像腐蚀与膨胀 结构元素 设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。 腐蚀 把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果。如下图所示。 其中X是被处理的对象,B是结构元素...

张齐贤的博客 5万+

【数字图像处理】图像的膨胀与腐蚀,开运算与闭运算

图像膨胀与腐蚀 作用区域:腐蚀与膨胀是对白色部分(高亮部分)而言,不是黑色部分。膨胀类似于“领域扩张”,腐蚀类似于“领域被蚕食”。 元素:设X是一个图像,B是一个矩阵。X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。 基础关系: 1.B击中X 若存在这样一个点,它即...

qq_41323793的博客 6789

图像处理腐蚀与膨胀

图像的腐蚀(erosion)和膨胀(dilation)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域. 腐蚀(erosion):   腐蚀类似 '领域被蚕食' ,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小 形态学转换主要针对的是二值图像(0或1)。图像腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。其主要包括两个输入对象: (1)二值图像 (2)卷积核 图示: 说明:左边是图像X(二.

Persist_bcl的博客 9109

图像腐蚀、膨胀、基本原理和程序实现

图像的腐蚀与膨胀 一、原理: ⑴ 图像形态学处理的概念         数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。 ⑵ 二值图像的逻辑运算         逻辑运算尽管本质上很简单,但对于实现以形态学为基础

五仁月饼哭了的博客 2万+

数字图像处理-数学形态学运算(腐蚀与膨胀)

数学形态学腐蚀与膨胀1.数学定义2. 代码3.效果4.总结 腐蚀与膨胀 数学形态学运算包括两种算子:腐蚀(erosion)算子和膨胀算子(dilation)。 腐蚀运算的原理是对数据集中的每个元素在自定义的结构元素(窗口)内寻求最小值来替代中心元素的值。腐蚀运算的物理意义是具有腐蚀数据集合边缘的功能并迫使集合向内收缩,如果窗口足够的大,就能移除那些面积较小、作用不大的物体。 膨胀运算与腐蚀运算的...

Cooper的博客 6758

传统图像处理之膨胀腐蚀

从上述实验对比可知,腐蚀操作会减少图像信息,可以达到去噪的效果。具体表现为:字母周围的斜线变得很浅,字母大小变细,经过多次腐蚀之后,字母四周的斜线消失。

IT菜鸟 5181

数字图像处理——形态学操作(二值图像篇)

形态学操作内容简介 内容简介   本篇博客介绍的形态学图像处理操作。

Lavendelion的博客 9874

数字图像处理(12): 形态学处理——图像腐蚀与图像膨胀

目录 1 形态学操作 2 图像腐蚀 3 图像膨胀 参考资料 1 形态学操作 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。这里,我们使用同一词语表示数学形态学的内容,将数学形态学作为工具从图像中提取表达和描绘区域形状的有用图像分量,如边界、骨架和凸壳等。 形态学处理主要针对的是二值图像(0或1)。 形态学通常使用图像腐蚀和图像膨胀...

TechArtisan6的博客 3万+

图像形态学处理(膨胀腐蚀开闭运算)——数字图像处理学习八(C++版)

一、基本概念 1)形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。 2)图像的形态学处理是对二值图像进行处理,所以在形态学处理前需要将图像二值化 3)结构元可以是任意形状,结构元有一个锚点,如下结构元,中间红色则为锚点 二、膨胀 可以知道,二值图像就是由黑色和白色组成,那么膨胀简单来说就是将图像的白色部分变大。 膨胀的原理就是结构元在图像上滑动,当锚点对应的像素为白色时,那么结构元对应为1的元素点也变为白色。 举个栗子: .

weixin_43897847的博客 2393

VoLTE吞字断续优化方案

网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。

m0_73503557的博客 1512

matlab对图像进行膨胀和腐蚀,matlab数字图像处理 膨胀和腐蚀.doc

matlab数字图像处理 膨胀和腐蚀.doc基于Matlab腐蚀和膨胀的边缘检测Matlab软件对灰度与二值图像的膨胀与腐蚀的处理方法。二、实验环境(软件条件):Windws2000/XP MATLAB 7.x三、实验内容:1、图像膨胀的Matlab实现膨胀:给图像中的对象边界添加像素。在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在膨胀操作...

weixin_30131977的博客 2914

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 392

【数字图像处理】图像形态学算法C语言实现(图像卷积,膨胀,腐蚀,开运算,闭运算,顶帽,黑帽,雕版,锐化)

文章目录(一)图像卷积1. 图像卷积2. 数字信号处理中的卷积3 数字图像处理中的卷积(二)图像卷积实现各种形态学运算腐蚀膨胀形态学梯度开运算闭运算顶帽黑帽雕版锐化li_conv.cmain.c(三)效果展示原图腐蚀膨胀形态学梯度开运算闭运算顶帽黑帽雕版锐化 (一)图像卷积 1. 图像卷积 图像卷积是进行空间域滤波与梯度运算的基础。首先我们需要理解卷积的运算方式从而可以编程实现。 2. 数字信号处理中的卷积 卷积一词最开始出现在信号与线性系统中,信号与线性系统中讨论的就是信号经过一个线性系统以后发生的变化。

yy197696的博客 3754

Python新手必看:5分钟搞定睿尔曼机械臂基础控制(附代码示例)

本文为Python新手提供了快速上手睿尔曼机械臂基础控制的实战指南。通过详细的步骤讲解和代码示例,介绍了从环境搭建、网络配置、SDK安装到建立连接、执行关节运动(movej)、直线运动(movel)等核心控制指令的全过程,帮助零基础开发者快速实现机械臂的基础操控。

hp777的博客 328

关于 MCU 芯片外围电路的快速入门介绍

MCU 外围电路的核心是“围绕 MCU 需求,搭建稳定、匹配的外部支撑”,入门阶段无需掌握复杂设计,只需先吃透供电、复位、时钟、IO 驱动、基础通信这五大模块,再逐步扩展存储、显示、传感器等进阶功能。实践中多调试、多参考成熟方案,是快速掌握外围电路设计的关键。码字不易,若觉得本文对你有用,欢迎,相关技术热点时时看🔥🔥🔥​​​…

JiaWen的博客 1643

【数字图像处理】Morphological and Other Set Operations

实验要求: (1.a) 编写一个用 3 x 3 结构元进行二值膨胀和腐蚀的函数,要求结构元素的系数作为程序的输入参数。 (1.b) 编写一个计算两个图像集合的交、差和补的计算机函数。 (1.c) 利用上述函数实现公式(9.5-1)所示的形态学边界抽取算法。 (1.d) 对图 9.20(left)进行特征边界抽取。 (2.a) 编写一个用 3 x 3 结构元进行灰度图像膨胀和腐蚀的函数,要求结构元...

baidu_37973494的博客 728

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

9.图像中值腐蚀膨胀滤波的实现

在3X3的卷积模板中,找出中值共需要经历七次排序。1.前三次排序分别对3X3模板的三行进行排序,得到min、mid、max。2.后三次排序在三个最小值中找出一个最大值,三个中值中找出一个中值,三个最大值中找出一个最小值。3.在步骤二找出的三个值中找出中值,这个值即为最终需要赋值的像数值。

q1594的博客 1397

Python爬虫实战:高效爬取CNKI知网文献数据的技术解析

本文将详细介绍如何使用Python最新技术构建一个高效的CNKI知网文献爬虫系统。我们将从爬虫基础知识讲起,逐步深入到高级反反爬技术、分布式爬取、智能解析等前沿内容。文章包含完整的代码实现,涵盖请求模拟、数据解析、持久化存储等关键环节,并特别针对CNKI的反爬机制提供解决方案。通过本文,读者将掌握构建专业级学术文献爬虫的全套技术栈。关键词:Python爬虫、CNKI爬取、反反爬技术、文献数据挖掘、Scrapy框架本文详细介绍了如何使用Python最新技术构建CNKI知网文献爬虫。

2201_76125261的博客 2075

【YOLO】YOLOV5-Seg的Segment模块解析

Segment模块同时输出检测结果和分割掩模,通过轻量级分割头实现实时实例分割

浩瀚之水的专栏 598

数字图像处理:形态学操作、腐蚀、膨胀、开运算、闭运算

在图像处理技术中,有一些的操作会对图像的形态发生改变,这些操作一般称之为形态学操作(phology)。数学形态学是基于集合论的图像处理方法,最早出现在生物学的形态与结构中,图像处理中的形态学操作用于图像与处理操作(去噪,形状简化)图像增强(骨架提取,细化,凸包及物体标记)、物体背景分割及物体形态量化等场景中,形态学操作的对象是二值化图像。 有名的形态学操作中包括腐蚀,膨胀,开操作,闭操作等。其中腐蚀,膨胀是许多形态学操作的基础。   腐蚀操作:  顾名思义,是将物体的边缘加以腐蚀。具体的操作方法是拿一个宽

qingfengxd1的博客 2938

把 SAP Workflow 的 Task 搞懂:从 TS 到 WS 的建模、触发与排错全景

摘要:SAP Business Workflow中的Task是工作流设计的核心单元,分为single-step(独立执行)和multistep(流程编排)两种类型。Task设计直接影响流程的可复用性、扩展性和可排错性。系统将Task分为5类(TS/T/WS/WF/TG),运行时通过事件触发、Linkage匹配、Work Item执行的链路完成流程驱动。关键事务码包括PFTC_INS(创建Task)、SWE2(事件配置)等。正确设计Task边界并遵循"先业务提交后事件触发"原则,是构建稳定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

数字图像处理——第九章 形态学图像处理

数字图像处理——第9章 形态学图像处理 文章目录数字图像处理——第9章 形态学图像处理1 基础知识1.1 形态学图像1.2 二值图像2 腐蚀和膨胀2.1 腐蚀2.2 膨胀3 开操作与闭操作3.1 开操作3.2 闭操作3.3 实验对比4 一些基本的形态学算法4.1 边界提取4.2 空洞填充4.3 凸壳 1 基础知识 1.1 形态学图像 形态学通常指的是生物学的某个分支,常用来处理动物和植物的形状和结构。现在,我们也将这个词用于图像处理中。形态学图像处理就是使用数学形态学的基本运算,由计算机对图像进行分析,以达

Jmuyjl 5059

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[matlab数字图像处理9]对一副二值图像进行膨胀、腐蚀、开、闭操作,提取边缘

数字图像处理9

qq_46535765的博客 4817

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【数字图像处理学习笔记之四】图像腐蚀、膨胀

背景知识 结构元素:二维结构元素可以理解成一个二维矩阵,矩阵元素的值为0或者1;通常结构元素要小于待处理的图像。 腐蚀与膨胀基本原理:就是用一个特定的结构元素来与待处理图像按像素做逻辑操作;可以理解成拿一个带孔的网格板(结构元素矩阵中元素为1的为孔)盖住图像的某一部分,然后按照各种不同的观察方式来确定操作类型。 比如:腐蚀操作就是拿这个结构元素的中心位置(假设参与逻辑计算的元素对应与二维矩阵

zhougynui的博客 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 数字图像处理-8-图像的阈值分割,连通区域标记,周长,面积计算(像素数量)
下一篇: 数字图像处理-10-图像的细化(Zhang-Suen ),粗化以及骨架变换
armwind
博客等级 码龄12年 406粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值