转自:Matlab DIP(瓦)ch9形态学图像处理

程序处理图片下载

博客Word版及其处理图片下载

1.形态学膨胀操作:

%膨胀 imdilate(dilate=膨胀/扩大)
clc
clear
A1=imread('C:\Users\Administrator\Pictures\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\Fig0907(a)(text_gaps_1_and_2_pixels).tif');
info=imfinfo('C:\Users\Administrator\Pictures\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\Fig0907(a)(text_gaps_1_and_2_pixels).tif');
B=[0 1 0
1 1 1
0 1 0];
A2=imdilate(A1,B);%图像A1被结构元素B膨胀
A3=imdilate(A2,B);
A4=imdilate(A3,B);
subplot(221),imshow(A1);
title('imdilate膨胀原始图像');
subplot(222),imshow(A2);
title('使用B后1次膨胀后的图像');
subplot(223),imshow(A3);
title('使用B后2次膨胀后的图像');
subplot(224),imshow(A4);
title('使用B后3次膨胀后的图像');

2.形态学腐蚀操作:

%腐蚀 imerode(erode=腐蚀、侵蚀)
clc
clear
A1=imread('C:\Users\Administrator\Desktop\形态学操作\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\Fig0905(a)(wirebond-mask).tif');subplot(221),imshow(A1);
title('腐蚀原始图像');
%strel函数的功能是运用各种形状和大小构造结构元素
se1=strel('disk',5);%这里是创建一个半径为5的平坦型圆盘结构元素
A2=imerode(A1,se1);
subplot(222),imshow(A2);
title('使用结构原始disk(5)腐蚀后的图像');
se2=strel('disk',10);
A3=imerode(A1,se2);
subplot(223),imshow(A3);
title('使用结构原始disk(10)腐蚀后的图像');
se3=strel('disk',20);
A4=imerode(A1,se3);
subplot(224),imshow(A4);
title('使用结构原始disk(20)腐蚀后的图像');

3.形态学开运算操作:

%开运算和闭运算
clc
clear
f=imread('C:\Users\Administrator\Desktop\形态学操作\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\FigP0917(noisy_rectangle).tif');
%se=strel('square',10');%方型结构元素
se=strel('disk',20');%圆盘型结构元素
imshow(f);%原图像
title('开闭运算原始图像');
%开运算数学上是先腐蚀后膨胀的结果 %开运算的物理结果为完全删除了不能包含结构元素的对象区域,平滑
%了对象的轮廓,断开了狭窄的连接,去掉了细小的突出部分
fo=imopen(f,se);%直接开运算
figure,subplot(221),imshow(fo);
title('直接开运算');
%闭运算在数学上是先膨胀再腐蚀的结果
%闭运算的物理结果也是会平滑对象的轮廓,但是与开运算不同的是,闭运算
%一般会将狭窄的缺口连接起来形成细长的弯口,并填充比结构元素小的洞
fc=imclose(f,se);%直接闭运算
subplot(222),imshow(fc);
title('直接闭运算');
foc=imclose(fo,se);%先开后闭运算
subplot(223),imshow(foc);
title('先开后闭运算');
fco=imopen(fc,se);%先闭后开运算
subplot(224),imshow(fco);
title('先闭后开运算');

4.形态学闭运算操作:

%腐蚀与开闭运算在指纹图像上的应用对比
clc
clear
f=imread('C:\Users\Administrator\Desktop\形态学操作\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\Fig0911(a)(noisy_fingerprint).tif');
se=strel('square',3);%边长为3的方形结构元素
subplot(121),imshow(f);
title('指纹原始图像');
A=imerode(f,se);%腐蚀
subplot(122),imshow(A);
title('腐蚀后的指纹原始图像');
fo=imopen(f,se); figure,subplot(221),imshow(fo);
title('使用square(3)开操作后的图像');
fc=imclose(f,se);
subplot(222),imshow(fc);
title('使用square闭操作后的图像');
foc=imclose(fo,se);
subplot(223),imshow(foc);
title('使用square(3)先开后闭操作后的图像')
fco=imopen(fc,se);
subplot(224),imshow(fco);
title('使用square(3)先闭后开操作后的图像');

5.形态学击中击不中操作:

%击中击不中变换
%其基本原理为:(集合X为原二值化图像的像素集合,对X取反求得~X(非X, Y表示), 选
%择的结构元为s1, 对结构元s1取反的结构元为s2)
%首先对用s1对X进行腐蚀得到A1,, 用s2对Y(即~X)进行腐蚀得到A2。
%最终结果C = A1 & A2。
clc
clear
f=imread('C:\Users\Administrator\Desktop\形态学操作\DIP3E_CH09_Original_Images\DIP3E_Original_Images_CH09\FigP0918(left).tif');
imshow(f);
title('击中或不击中原始图像');
B1=strel([0 0 0;0 1 1;0 1 0]);%击中:要求击中所有1的位置
B2=strel([1 1 1;1 0 0;1 0 0]);%击不中,要求击不中所有1的位置
B3=strel([0 1 0;1 1 1;0 1 0]);%击中
B4=strel([1 0 1;0 0 0;0 0 0]);%击不中
B5=strel([0 0 0;0 1 0;0 0 0]);%击中
B6=strel([1 1 1;1 0 0;1 0 0]);%击不中
g=imerode(f,B1)&imerode(~f,B2)%利用定义来实现击中或击不中
figure,subplot(221),imshow(g);
title('定义实现组1击中击不中图像');
g1=bwhitmiss(f,B1,B2);
subplot(222),imshow(g1);
title('结构数组1击中击不中后的图像');
g2=bwhitmiss(f,B3,B4);
subplot(223),imshow(g2);
title('结构数组2击中击不中的图像');
g3=bwhitmiss(f,B5,B6);
subplot(224),imshow(g3);
title('结构数组3击中击不中的图像');

【Matlab学习笔记】【数学形态学】膨胀、腐蚀、开运算、闭运算、击中击不中变换相关推荐

  1. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  2. opencvsharp图像处理_腐蚀与膨胀,击中击不中变换(3)

    膨胀:dilate为核B对核A做卷积时,核B覆盖区域的像素最大值提取 腐蚀:erode 为核B对核A做卷积时,核B覆盖区域的像素最小值提取 击中击不中变换:有两个不相交集合B={B1,B2},用B1去 ...

  3. Matlab学习笔记(1) - 符号变量及其运算

    符号变量及其运算 绪:什么是符号计算? 1.字符型数据变量的创建 2.符号型数据变量的创建 3.符号计算的运算符与函数 4.寻找符号变量 5.符号精度计算 6.显示符号表达式 7.合并符号表达式 8. ...

  4. C# EMGU 3.4.1学习笔记(三)综合示例:形态学滤波(腐蚀/膨胀、开运算/闭运算、顶帽运算/黑帽运算)

    以下是<OpenCV3编程入门>中6.4.9的示例程序的C# + EMGU 3.4.1版: 有任何问题或疑问,欢迎交流探讨. using System; using System.Coll ...

  5. Matlab学习笔记(3)—GUI程序设计与图像处理基本操作

    Matlab学习笔记(3)-GUI程序设计与图像处理基本操作 一.GUI程序设计 如果想要开始使用Matlab进行GUI编程,首先需要进入Matlab的GUI界面对GUI有一个基本的认识. 1.gui ...

  6. MATLAB学习笔记3:MATLAB编程基础(前半)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  7. B站台湾大学郭彦甫|MATLAB 学习笔记|09 图像处理II Image Processing

    MATLAB学习笔记(09 图像处理II Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 09 1. 提出问题 题目:如何找出图片中的米粒,并且确定他们的大小? 老师 ...

  8. MATLAB学习笔记0:学习须知

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  9. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  10. MATLAB学习笔记(一)

    MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...

最新文章

  1. 从cpan上安装perl模块
  2. Git操作手册|命令速查表
  3. 51nod1229-序列求和V2【数学,拉格朗日插值】
  4. 在Windows上面安装多个Memcached
  5. 主管问我:你以为单元测试,只是测试吗?
  6. Animator 设置动画效果
  7. 相同源代码的html文件在本地和服务器端被浏览器请求时,显示的效果不一样!!!...
  8. ES9218PC SABRE HiFi 移动 DAC 便携式耳放
  9. Vue.js 作者尤雨溪:直接学 Vue 3 吧
  10. 面试官最容易提出的20个问题
  11. dh算法 java_java密钥交换算法DH定义与应用实例分析
  12. 高德地图API的一些使用心得
  13. BigDecimal的round模式
  14. c++ 中字符串的字符数与字节数
  15. 谷歌搜索的灵魂!BERT模型的崛起与荣耀
  16. word如何设置上标形式_word怎样设置上标
  17. 创建56个民族的sql语句
  18. Mac用 AVC全能视频转换器免费版
  19. 机器学习训练秘籍_学习笔记
  20. Windows系统封装(一)制作ISO启动盘和BIOS设置。

热门文章

  1. linux之FTP服务器安装 一看就会!!!动手还是会!!!
  2. java web插件下载_javaweb开发1.环境配置(javaweb插件下载及tomact在eclips中配置)
  3. 选择排序及其不稳定性介绍
  4. linux断点续传程序,Linux下怎么实现断点续传
  5. EChart:EChart与NProgress结合异步加载数据
  6. 实战CSS:静态百度首页实现
  7. matlab船舶静水力曲线,静水力曲线图
  8. php 高德地图创建标注,高德地图 JS API的覆盖物—编辑矢量图形
  9. Java常用的工具类库介绍
  10. opencv图像分析与处理(5)- 取样和取样函数的傅立叶变换