1.图像膨胀的Matlab实现:

可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。举个实例如下:

步骤1,首先创建一个包含矩形对象的二值图像矩阵。

>> BW=zeros(9,10);

>> BW(4:6,4:7) =1

BW =

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 1 1 1 1 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0

步骤2,使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。

>> SE=strel('square',3)

SE = 
Flat STREL object containing 9 neighbors.

Neighborhood: 
1 1 1 
1 1 1 
1 1 1

步骤3,将图像BW和结构元素SE传递给imdilate函数。

>> BW2=imdilate(BW,SE)

BW2 =

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 1 1 1 1 1 1 0 0 
0 0 1 1 1 1 1 1 0 0 
0 0 1 1 1 1 1 1 0 0 
0 0 1 1 1 1 1 1 0 0 
0 0 1 1 1 1 1 1 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0

步骤4,显示结果。

>> imshow(BW,'notruesize')

>> imshow(BW2,'notruesize')

2.图像腐蚀的Matlab实现:

可以使用imerode函数进行图像腐蚀。imerode函数需要两个基本输入参数:待处理的输入图像以及结构元素对象。此外,imerode函数还可以接受3个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。M——指定原始图像的行数。

以下程序示例说明了如何对某一副具体图像进行腐蚀操作,腐蚀前后的效果对比如图末。

步骤1,读取图像cameraman.tif (该图像是Matlab当前目录下自带的图片)

>> BW1=imread('cameraman.tif');

步骤2,创建一个任意形状的结构元素对象

>> SE=strel('arbitrary',eye(5));

步骤3,以图像BW1和结构元素SE为参数调用imerode函数进行腐蚀操作。

>> BW2=imerode(BW1,SE);

步骤4,显示操作结果

>> imshow(BW1) 
>> figure,imshow(BW2)

3.膨胀和腐蚀联合操作(图像开运算操作):

下面以图像开启为例,说明如何综合使用imdilate和imerode这两个函数,实现图像处理操作。

步骤1,创建结构元素:

>> clear;close all 
>> SE = strel('rectangle',[40 30]); %注意:结构元素必须具有适当的大小,既可以删电流线又可以删除矩形.

步骤2,使用结构元素腐蚀图像: %将会删除所有直线,但也会缩减矩形

>> BW1=imread('circbw.tif'); 
>> BW2=imerode(BW1,SE); 
>> imshow(BW2) 
>> figure,imshow(BW1)

步骤3,恢复矩形为原有大小,使用相同的结构元素对腐蚀过的图像进行膨胀.

>> BW3=imdilate(BW2,SE); 
>> figure,imshow(BW3)

4.基于膨胀与腐蚀的形态操作——骨架化和边缘检测

(1)骨架化:

某些应用中,针对一副图像,希望对图像中所有对象简化为线条,但不修改图像的基本结构,保留图像基本轮廓,这个过程就是所谓的骨架化。提供了专门的函数bwmorph,可以实现骨架化操作。

>> clear;close all 
>> BW1=imread('circbw.tif'); 
>> BW2=bwmorph(BW1,'skel',Inf); 
>> imshow(BW1) 
>> figure,imshow(BW2)

(2)边缘检测

对于一副灰度二进制图像,如果图像像素值为1,则该像素的状态为ON,如果其像素值为0,则该像素的状态为OFF。在一副图像中,如果图像某个像素满足以下两个条件:

1.该像素状态为ON,

2.该像素邻域中有一个或多个像素状态为OFF。

则认为该像素为边缘像素。

Matlab中提供了专门的函数bwperim,可以用于判断一副二进制图像中的哪些像素为边缘像素。

以下程序代码示例就是利用bwperim函数,对图像circbw.tif进行边缘检测,其边缘像素检测效果如尾图。

>> clear;close all 
>> BW1=imread('circbw.tif'); 
>> BW2=bwperim(BW1); 
>> imshow(BW1) 
>> figure,imshow(BW2)

基于腐蚀和膨胀的形态操作函数如下:

bwhitmiss 图像逻辑"与"操作,该函数使用一个结构元素对图像进行腐蚀操作后,再使用第二个结构元素对图像进行腐蚀操作

imbothat 从原始图像中减去经过形态关闭后的图像,该函数可用来寻找图像中的灰度槽

imclose 闭合操作.首先对图像进行膨胀,然后再对膨胀后的图像进行腐蚀,两个操作使用同样的结构元素

imopen 开启操作,首先对图像进行腐蚀,然后再对腐蚀后的图像进行膨胀,两个操作使用同样的结构元素

imtophat 从原始图像中减去形态开启后的图像,可以用来增强图像的对比度

matlab 图像的膨胀indilate和腐蚀imerode相关推荐

  1. 图像的膨胀(dilation)和腐蚀(erosion)

    晶晨半导体笔试时有道题是关于图像膨胀和腐蚀的,但没有具体看过,这里总结一下,唉嗐. 咳咳,今天的po小标题有些做作,请忽略. 不对,这是我的po我爱咋写咋爱,就要做作,love look don't ...

  2. matlab图像的腐蚀和膨胀_OpenCV图像处理系列八 --- 腐蚀与膨胀

    今天,我们一起来学习图像形态学操作中两种最基本的形态学操作,即腐蚀与膨胀. 一.理论 数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数 ...

  3. python基于水色图像的水质评价_基于Python和遥感图像的膨胀与腐蚀操作

    引言 膨胀与腐蚀是图像形态学中的基本操作,本文将从两个角度实现python的膨胀与腐蚀算法,分别是特征提取与分割后处理.目前,在RGB图像领域,这两种形态学算法经常用于分割结果的处理,例如连通区处理. ...

  4. 图像腐蚀 java_OpenCV3 图像膨胀 dilate、腐蚀 erode、提取图像中的条形码 JAVA 实现...

    关于 JAVA 学习 OpenCV 的内容,函数讲解,案例代码内容我均整理在 GitHub[OpenCV3-Study-JAVA ]上 下面代码中所需的项目结构,图片,请访问 GitHub 获取. 代 ...

  5. matlab 膨胀 结构元,图像形态学膨胀 结构元素

    宽度W,高度H 的图像,做膨胀操作,如果膨胀的结构元素structure element,大小为kw,kh,那么就需要做W*H*kw*kh次运算,运算量比较大. 根据图像形态学的理论,膨胀满足结合律, ...

  6. 图像的膨胀与腐蚀--确认这个大牛的才是正确的

    网上找到很多个版本,经过自己分析对比概念,发现有些说自己方法是正确的,但是我觉得这个大牛的分析才是正确的. 图像的膨胀与腐蚀.细化 原理:在特殊领域运算形式--结构元素(Sturcture Eleme ...

  7. 【Matlab 图像】开闭运算 imopen imclose

    原理如下 1. 膨胀 膨胀就是求局部最大值的操作. 2. 腐蚀 与膨胀相反,腐蚀就是求局部最小值的操作. 3. 开运算 imopen() 先腐蚀后膨胀称为开 (Open),即 OPEN(X) = D( ...

  8. matlab平面图形的几何变换,matlab图像的几何变换

    2. 了解平移.伸缩.对称.旋转等变换. 3. 学习掌握 MATLAB 软件有 实验报告 课程名称:数学实验 实验名称:平面图形的几何变换 指导教师: 实验目的.要求: 1. ...... Matla ...

  9. matlab图像融合评价,MATLAB 图像融合评估算法

    MATLAB 图像融合评价算法 function laplacian(ori_A,ori_B) path(path,'FusionEvaluation/') %Ori_A = imread('cloc ...

最新文章

  1. python课程将主要介绍哪些内容-Python课程详细介绍
  2. (18)打鸡儿教你Vue.js
  3. numpy.loadtxt()用法
  4. AI Boot Camp 分享之 ML.NET 机器学习指南
  5. 找第一个只出现一次的字符_leetcode哈希表之第一个只出现一次的字符
  6. mongodb备份和恢复:mongodump/mongorestore ( 二)
  7. 2019年创业融资去哪个平台好?创成汇
  8. win8计算机如何取消系统更新,Win7/Win8电脑如何去掉Win10升级提示
  9. Linux中sudo命令设置,Linux下sudo命令的配置与使用方法
  10. 手机蓝绿厂终于转正了,已有“名分”!
  11. 吴恩达深度学习5.1笔记_Sequence Models_循环序列模型
  12. laravel插入数据时报 502 Bad Gateway
  13. php微信分享 无图标,PHP+微信分享自定义小图标
  14. 都这麽大了还不快了解防病毒网关?
  15. 同济大学计算机专业考研的教材,同济大学电子信息(计算机与智能技术)专业考研参考书目-指定教材-辅导资料...
  16. ShadowGun Deadzone 放出 GM Kit Mod 包
  17. 《蜗居:心理健康枕边书》摘录
  18. 基于 STM32F412RE 的 Flappy bird 游戏机实现
  19. 安装和配置fedora19要做的那些事,超值经验
  20. Python全栈开发【基础-09】深浅拷贝+while循环

热门文章

  1. python代码示例-总算知道python入门代码示例
  2. 什么是pdi检测_汽车pdi检测是什么?如何知道新车做没做pdi
  3. qchart 坐标轴设置_「Qt」利用QChart实现实时动态的曲线数据展示
  4. 用户名、密码都有值激活提交按钮
  5. js的事件循环机制,同步和异步,以及宏任务与微任务的执行顺序
  6. LeetCode 116/117 填充每个节点下一个右侧指针
  7. JAVA编写的使用Socket模拟Http的GET操作
  8. this.getclass().getresource 空指针异常_NPE空指针异常总结
  9. python非法变量名_python – DatabaseError:ORA-01036:非法变量名称/编号
  10. java表达式7|3,Chapter3 Java运算符