MATLAB形态学的基本运算膨胀和腐蚀(开、闭运算)

news2024/11/18 4:19:51

  形态学中两种基本的操作是膨胀和腐蚀,膨胀是指在图像中为其边界添加像素点,而腐蚀是其逆过程。对应的添加和移除像素点数依赖于处理图像结构元素矩阵的大小和形式。

一.膨胀处理

  膨胀的运算符为⊕, A用B来膨胀写作A⊕B,MATLAB中提供了预定义的形态函数bwmorph,imdilate函数用于实现膨胀处理。

1.利用预定义的形态函数bwmorph对二值图像进行膨胀处理

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
I=imread('4.jpg');                 %读取图像
subplot(1,3,1);
subimage(I);
title('原始图像');
J=im2bw(I);
BW1=bwmorph(J, 'dilate');         %对二值图像进行膨胀处理
subplot(1,3,2);
subimage(J);
title('二值处理的图像');
subplot(1,3,3);
subimage(BW1);
title('使用bwmorph函数膨胀')

在这里插入图片描述
2.对灰度图像进行膨胀处理。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
I=imread('4.jpg');                 %读取图像
i=rgb2gray(I);
se=strel('ball',6,6);
i2=imdilate(i, se);             %进行膨胀处理
subplot(1,2,1);
imshow(i);
title('原始图像') ;
subplot(1,2,2);
imshow(i2);
title('膨胀处理后的图像')

在这里插入图片描述

二、腐蚀处理

  腐蚀的运算符为Θ, A用B来腐蚀,写作AΘ B,imerode函数用于实现腐蚀处理。

1.对二值图像进行腐蚀处理。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
I=imread('4.jpg');                 %读取图像
i=im2bw(I);
se=strel('line',11,90);
bw=imerode(i, se);                %进行腐蚀处理
subplot(1,2,1);
imshow(i);
title('原始图像') ;
subplot(1,2,2);
imshow(bw);
title('二值图像腐蚀处理后') ;

在这里插入图片描述

2.对灰度图像进行腐蚀

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
I=imread('4.jpg');                 %读取图像
i=rgb2gray(I);
se=strel('ball',5,5);
i2=imerode(i, se);          %对灰度图像进行腐蚀
subplot(1,2,1);
imshow(i);
title('原始图像') ;
subplot(1,2,2);
imshow(i2);
title('灰度图像腐蚀处理') ;

在这里插入图片描述

三.膨胀和腐蚀组合

  膨胀和腐蚀是两种基本的形态运算,它们可以组合成复杂的形态运算,比如开启和闭合运算等。使用同一个结构元素对图像先进行腐蚀运算然后再进行膨胀的运算称为开启。先进行膨胀运算然后再进行腐蚀的运算称为闭合。

1.图像的开运算
  先腐蚀后膨胀的运算称为开运算。开启的运算符为“◦”, A 用 B 来开启记为 A◦B。imopen函数用于实现图像的开运算。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
I=imread('1.jpg');                 %读取图像
i=rgb2gray(I);
subplot(1,2,1);
imshow(i);
title('原始图像') ;
se=strel('disk',7);
i0=imopen(i, se);
subplot(1,2,2);
imshow(i0);                         %开运算
title('开运算') ;

在这里插入图片描述
在这里插入图片描述

2.图像的闭运算

  A被B闭运算就是A被B膨胀后的结果再被B腐蚀。设A是原始图像B是结构元素图像,则集合A被结构元素B作闭运算,记为A· B。imclose函数用于实现图像的闭运算。

clc;                %clc的作用就是清屏幕
clear;              %clear是删除所有的变量
close all;          %close all是将所有打开的图片关掉。
i=imread('1.jpg');                 %读取图像
subplot(1,2,1);
imshow(i);
title('原始图像') ;

se=strel('disk',10);
bw=imclose(i, se);              %闭运算
subplot(1,2,2);
imshow(bw);
title('闭运算') ;

在这里插入图片描述

在这里插入图片描述

3.将开启和闭合结合起来构成形态学噪声滤除器对图像进行除噪

        clc;                %clc的作用就是清屏幕
        clear;              %clear是删除所有的变量
        close all;          %close all是将所有打开的图片关掉。
        
        I1=imread('2.jpg');                 %读取图像

        I2=im2bw(I1);
        I2=double(I2);
        
        I3=imnoise(I2, 'salt & pepper');       %加入椒盐噪声
        I4=bwmorph(I3, 'open');              %开启操图像
        I5=bwmorph(I4, 'close');             %关闭操的图
        subplot(2,2,1);
        subimage(I2);
        title('二值处理的图像');
        subplot(2,2,2);
        subimage(I3);
        title('加入椒盐噪声的图像')
        subplot(2,2,3);
        subimage(I4);
        title('开启操图像');
        subplot(2,2,4);
        subimage(I5);
        title('关闭操的图像')

在这里插入图片描述
4.对图像分别进行膨胀和腐蚀处理、开闭运算

        clc;                %clc的作用就是清屏幕
        clear;              %clear是删除所有的变量
        close all;          %close all是将所有打开的图片关掉。
        I=imread('4.jpg');                 %读取图像

        level=graythresh(I);              %得到合适的阈值
     
        bw=im2bw(I, level);               %二值化
        
        SE=strel('square',3);             %设置膨胀结构元素
        BW1=imdilate(bw, SE);             %膨胀
        SE1=strel('arbitrary', eye(5));   %设置腐蚀结构元素
        BW2=imerode(bw, SE1);             %腐蚀
        BW3=bwmorph(bw, 'open');          %开运算
        BW4=bwmorph(bw, 'close');         %闭运算
        subplot(2,3,1);
        imshow(I);
        title('原始图像') ;
        subplot(2,3,2);
        imshow(bw);
        title('二值处理的图像');
        subplot(2,3,3);
        imshow(BW1);
        title('膨胀处理的图像');
        subplot(2,3,4);
        imshow(BW2);
        title('腐蚀处理的图像');
        subplot(2,3,5);
        imshow(BW3);
        title('开运算');
        subplot(2,3,6);
        imshow(BW4);
        title('闭运算');

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序-小程序框架

目录 一,框架简介 响应的数据绑定 二,视图层 View WXML (html) WXSS 样式 JS 逻辑交互 三,事件 什么是事件 事件的使用方式 四,逻辑层 APP service 1,生命周期 生命周期演示 页面路…

快速排序(Java分治法)

快速排序(Java分治法) 文章目录快速排序(Java分治法)0、 分治策略1、思路步骤2、代码3、复杂度分析3.1 最好情况3.2 最坏情况3.3 平均情况3.4 性能影响因素4、合并排序VS快速排序5、参考0、 分治策略 快速排序是对气泡排序的一种改…

minio下载、安装、Java集成应用

1.下载MinIO 下载链接:https://dl.min.io/server/minio/release/windows-amd64/minio.exe 网盘:https://pan.baidu.com/s/1uS2ii958tTjnb0KTpsKpCg 提取码:3nr9 2.安装启动 下载好的文件不要双击,自己定义一个文件夹放下载好的文件,本文指定的位置D:\minio,同时创建一…

淮北绿金通过港交所上市聆讯:净利润再度下滑,收入依赖股东

12月27日,港交所披露的信息显示,淮北绿金产业投资股份有限公司(下称“淮北绿金”)通过港交所上市聆讯并递交了聆讯后招股书,光大证券国际为其独家保荐人。据了解,淮北绿金曾于2021年12月递表,20…

【答学员问】网站换ip后遇到的问题排查思路

文章目录遇到问题先进行基本的问题排查1. 查看IP2. 是否能通网3. 关闭防火墙和selinux4. 使用windows的浏览器访问问题复现1. 安装好wordpress ,确保能够访问2. 修改IP,进行测试3. 访问测试:问题排查问题解决方案遇到问题 学员反馈在家访问网…

C++类和对象1:类是什么?对象是什么?

目录 类的引入 类的定义 类的定义规则 类域问题: 类的访问限定符及封装 访问限定符 封装 类的实例化 类对象的大小问题 this指针 This指针的一些特性: 类的引入 在学习C语言的时候,C语言是面向过程的,关注的是过程&#xff…

2023年5月北京老博会,医养家具展,护理床展,老年护理展

2023中国国际养老服务业博览会CISSE介绍: 2023中国国际养老服务业博览会(CISSE)将于5月5-7日在北京国家会议中心举行。大会以养老产业为主题,通过展贸平台为涉老企业抢占市场先机,对企业营销策略、宣传影响力、定位产品…

apt-fast 使用

apt-fast 使用1. 安装2. 使用默认的apt-get install,有时下载会非常的慢,尤其是安装的一些ppa包的时候。apt-fast 通过使用多线程来给apt提速,极大地提高了效率。 1. 安装 添加ppa仓库 sudo add-apt-repository ppa:apt-fast/stable 更新软…

CAPL学习之路-测试功能集函数(约束和条件)

在test module和test unit中,可以添加事件对象或事件文本作为条件或约束。当事件发生时,条件或约束受损,测试报告中输出“Fail”条目,同时测试用例判定为“Fail” 此类函数有: TestAddCondition/TestAddConstraint,添加事件对象或事件文本作为条件或约束。不管是作为条件…

傻白入门芯片设计,如何写一篇好文章(十八)

目录 一、标题Title 如何看浩如烟海的文献? 二、摘要Abstract 三、介绍Introduction (1)“六句扩展法” (2)常见的逻辑: (3)更好的逻辑: 四、相关工作Related wo…

《CSAPP》笔记——系统级IO、网络编程、并发编程

文章目录传送门系统级IOUnix输入和输出Unix文件Unix文件操作Unix管理打开文件打开文件流程文件共享重定向文件标准IO标准IO流标准IO的缓冲机制RIO(Robust IO)对比与总结网络编程历史从头构建互联网网络层次以太网段网桥连接的以太网段互联网网络协议互联…

远程代码执行渗透与攻防(一)

目录 前言 远程代码执行:Remote Code Execute 远程命令执行:Remote Command Execute 为什么要远程执行代码? 漏洞危害 近几年影响比较大的RCE漏洞 PHP RCE涉及函数 代码code注入: 命令command注入 : 靶场案…

Word控件Spire.Doc 【评论】教程(4):C#、VB.NET如何在Word的评论中插入图片

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

认真学习MySQL中锁机制(二)

接上文认真学习MySQL中锁机制(一)我们继续学习MySQL中的锁机制。 【5】按加锁的方式划分:显示锁、隐式锁 ① 隐式锁 一个事务在执行insert操作时,如果即将插入的间隙已经被其他事务加了gap锁,那么本次insert操作会阻…

分类算法KNN的python实现

作者:刘凡 KNN算法介绍 KNN算法是有监督学习中的分类算法,它是一种非参的,惰性的算法模型。非参的意思并不是说这个算法不需要参数,而是意味着这个模型不会对数据做出任何的假设,与之相对的是线性回归(我…

隐语任务调度

隐语目前暂定支持的设备列表: 一 PYU 数据所有者是SecretFlow中的PYU设备,明文并成为PYU Objects一个PYU object(明文)可以被转化为秘密分享,被叫做SPU Object。Python函数可以被发送至SPU设备执行,背后是…

人工智能:图像数字化相关的知识介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

只从 2022 年算起,谷歌就向社会输送了至少 26 位高端 AI 人才。

2022 年,人工智能在 AIGC、AI for science 等领域持续发展,一些工作也在知识型模型方面做出了探索。除了这些研究成果,我们还会发现这一年人工智能从业者的工作情况也有比较大的变化。 例如,Meta 等大型科技公司进行了大规模的裁…

【 shell 编程 】第1篇 变量

变量 文章目录变量一、前言二、变量1.变量的类型2.变量的运算一、前言 1.什么是 shell 简介: SHELL是UNIX系统的用户与操作系统之间的一种接口。它既是UNIX系统的命令解释程序,又是一种高级的命令程序设计语言。 作为命令解释程序,SHELL接收…

Windows/Mac/Ubuntu环境下安装Dokcer

前提概要: 注意:安装虚拟环境的步骤我放到另外一个文章里面啦,有需要的可以看看哦 Docker介绍:1、Docker 并⾮是⼀个通⽤的容器⼯具,它依赖于已存在并运⾏的 Linux 内核环境。2、Docker 实质上是在已经运⾏的 Linux 下…