数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)

article/2025/5/15 8:36:29

文章目录

  • 一、实验目的
  • 二、实验仪器
  • 三、实验原理
    • 1. 结构元素:
    • 2. 腐蚀运算:
    • 3. 膨胀运算:
    • 4. 开运算:
    • 5. 闭运算:
  • 四、实验内容:
    • 1. 形态学图像处理用于图像边界提取
    • 2.数学形态学用于图像的噪点去除
      • (1) 从腐蚀和膨胀的原理解释为什么可以去除黑白噪点。
      • (2) 对处理后的四幅图像进行对比,对四种运算的功能分别进行总结说明,尝试解释腐蚀和开运算处理效果的不同、膨胀和闭运算处理效果的不同分别是如何造成的。
  • 五、撰写实验报告
  • 六、结论
  • 七、实验代码
  • 八、实验截图
  • 九、项目-----汉字视力表
  • 十、总结

一、实验目的

1 了解数学形态学的基本思想和方法;
2 掌握形态学基本运算
3 通过对图像的腐蚀和膨胀效果加深理解两种形态学处理方法的功能及应用。

二、实验仪器

安装有MATLAB软件的计算机

三、实验原理

数学形态学是根据形态学概念发展而来具有严格数学理论基础的科学。最基本的形态学运算有:膨胀、腐蚀、开、闭。

1. 结构元素:

指有一定形状的比较小的图像块。在二值形态学中,其像素值为1,且要指定坐标原点。
生成函数:se=strel(shape, parameter)
SE = strel(‘arbitrary’,NHOOD)
SE = strel(‘ball’,R,H) 椭球型
SE = strel(‘diamond’,R) 菱形(钻石型)
SE = strel(‘disk’,R) 圆形
SE = strel(‘line’,LEN,DEG) 线型
SE = strel(‘octagon’,R) 八边形
SE = strel(‘rectangle’,[M N]) 矩形
SE = strel(‘square’,W) 方型
常用举例:
se_disk =strel(‘disk’,5,4) ; %创建一个指定半径5的平面圆盘形的结构元素。这里R必须是非负整数。
se_diamond =strel(‘diamond’,4); % 创建一个菱形的结构元素,4是从结构化元素原点到四个顶点的距离,必须为非负整数。
se_octagon=strel(‘octagon’,3); % 创建一个八边形的结构元素,参数为3的倍数
se=strel(‘rectangle’,[2 5]); % 创建一个25的矩形结构元素
se1 =strel(‘square’,11); % 创建一个长度为11
11的方形结构元素
se_line =strel(‘line’,6,45) ; % 为构造的线性结构元素,6为长度(size),45为角度
SE =strel(‘ball’,R,H,N); % 创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。R必须为非负整数,H是一个实数。N必须为一个非负偶数,当N>0时此球形结构元素由一系列空间线段结构元素来近似;当N=0时不需要近似,结构化元素的成员由所有中心距圆点>R的元素组成,相应的高度值可由R/H指定的椭球中提取。如果N未指定,缺省值8。
SE =strel(‘arbitrary’,NHOOD) :
创建一个指定领域的平面结构化元素。NHOOD是一个包含1/0的矩阵;1的位置定义了领域的形态学操作。NHOOD的中心就是它的中心元素,位置在FLOOR((SIZE(NHOOD) + 1)/2)。你也可以忽略参数串’arbitrary’而只使用strel(NHOOD)。
例如:nhood=[1 0;1 1]; A=strel(nhood);

2. 腐蚀运算:

设A为原图像,B为结构元素,则原图像A被结构元素B腐蚀可定义为:
在这里插入图片描述

腐蚀运算的结果不仅与结构元素的形状(矩形、圆形、菱形等)选取有关,而且还与原点位置的选取有关。
函数:A2=imerode(A, B)
说明:B是结构元(由0和1组成的矩阵)。

3. 膨胀运算:

设A为原图像,B为结构元素,则原图像A被结构元素B膨胀可定义为:
在这里插入图片描述

当原图像不变,但所给的结构元素的形状改变时;或结构元素的形状不变,而其原点位置改变时,膨胀运算的结果会发生改变。
函数:A2=imdilate(A, B)
说明:B是结构元(由0和1组成的矩阵)。
腐蚀和膨胀的对偶性:
对目标图像的膨胀运算,相当于对图像背景的腐蚀运算操作;对目标图像的腐蚀运算,相当于对图像背景的膨胀运算操作。

4. 开运算:

使用同一个结构元素对目标图像先进行腐蚀运算,然后再进行膨胀运算称为开运算。
结构元素B对目标图像A的开运算定义为:
在这里插入图片描述

函数:C = imopen(A, B);

5. 闭运算:

使用同一个结构元素对目标图像先进行膨胀运算,然后再进行腐蚀运算称为闭运算。
结构元素B对目标图像A的闭运算定义为:
在这里插入图片描述

函数:C = imclose(A,B)

四、实验内容:

1. 形态学图像处理用于图像边界提取

测试图像:circles.png
读取文件‘circles.png’,分别用半径为1和半径为4的圆盘形状的结构元素对其进行腐蚀和膨胀运算,然后用膨胀图像减去腐蚀图像,得到新图像。编写程序并运行。
问题:观察、对比两个半径的运行效果图,总结“膨胀图像减去腐蚀图像”的功能,并解释半径为1和半径为4处理的最终图像效果有何不同,尝试解释其原因。
半径为4的图像边界比半径为1的图像边界要粗一些。原因:当半径为1的进行处理时,白色的膨胀范围较小,并且白色的腐蚀程度也较小,因此,两者相减得到的结果的白色边界不会差距太大。而半径为4的膨胀范围较大,腐蚀程度也较大,因此两者相减之后,白色边界会很粗。

2.数学形态学用于图像的噪点去除

测试图像:saturn.png
对‘satrun.png’图像加入椒盐噪声(imnoise函数),分别用腐蚀、膨胀、开运算、闭运算对其进行处理并显示处理后图像。编写程序并运行。
问题:

(1) 从腐蚀和膨胀的原理解释为什么可以去除黑白噪点。

腐蚀是对1的数量减少,而1在二值图中呈现白色,因此腐蚀后,球外的白点都去了,但是星球上的点反而更加密集,而膨胀是把1的数量变多,因此膨胀后球外点变多,而球内点变少。

(2) 对处理后的四幅图像进行对比,对四种运算的功能分别进行总结说明,尝试解释腐蚀和开运算处理效果的不同、膨胀和闭运算处理效果的不同分别是如何造成的。

膨胀,1的数量变多;腐蚀1的数量变少;开运算1的数量先减少再变多;闭运算1的的数量先减少再变多。开运算比腐蚀多一个膨胀步骤,因此将那些腐蚀后将残留的1进行膨胀,从而白点变多,白色范围加大。闭运算比膨胀多一个腐蚀步骤,因此将那些膨胀后将多余的1进行腐蚀,从而白点变少,白色范围缩小。

五、撰写实验报告

对每个实验内容获得相应的实验结果并给出相应分析和评价。

六、结论

可以是对某些MATLAB函数如何使用的认识,也可以是实验中遇到的问题的分析和总结。

七、实验代码

%%
I = imread('circles.png');
I = im2double(I);
thresh = graythresh(I);
I2 = im2bw(I,thresh);%生成1和4为半径的圆盘结构
SE_1 = strel('disk',1);
SE_4 = strel('disk',4);% 腐蚀与膨胀
E_1 = imerode(I2,SE_1);
E_4 = imerode(I2,SE_4);
D_1 = imdilate(I2,SE_1);
D_4 = imdilate(I2,SE_4);% 膨胀 - 腐蚀
A_1 = D_1 - E_1;
A_4 = D_4 - E_4;subplot(131);imshow(I2);title('原二值图');
subplot(132);imshow(A_1);title('半径为1');
subplot(133);imshow(A_4);title('半径为4');%% 
I = imread('saturn.png');
I = im2double(I);
thresh = graythresh(I);
I2 = im2bw(I,thresh);
I2 = im2double(I2);
S = imnoise(I2,'salt & pepper',0.005);% 腐蚀、膨胀、开运算、闭运算
SE_4 = strel('disk',4);
E = imerode(S,SE_4);
D = imdilate(S,SE_4);
O = imopen(S,SE_4);
C = imclose(S,SE_4);subplot(131);imshow(S);title('原图像');
subplot(243);imshow(E);title('腐蚀');
subplot(244);imshow(D);title('膨胀');
subplot(247);imshow(O);title('开运算');
subplot(248);imshow(C);title('闭运算');

八、实验截图

在这里插入图片描述

在这里插入图片描述

九、项目-----汉字视力表

本项目是大一参加数学建模时,在暑假集训时候写的。
内容介绍,给你汉字库,进行汉字相似度的匹配,比如在一堆里面找一个
该项目我上传到github上了,需要的自取
链接:汉字视力表

十、总结

对于大三上的一个数字图像处理的实验我也就到这里结束了,在这里非常感谢张艳华张老师的教导,让我受益匪浅,其实本人对于数字图像处理时自从
大一吧,首先通过数模集训让我对matlab的掌握有了一个熟练的掌握,之后就是大一暑假集训时做过的这个项目让我对用matlab作图像处理有了一个更加深刻更加形象的认识。再之后就是陈奎陈老师,一直是喜欢用labview作图像处理方面,让我对图像处理也有一个理解,再到后来就是大三上的这门数字图像处理的这门课程,让我系统的入门了图像处理。
老师教的很好,也为我解答很清晰的数字图像处理的相关知识,比如什么振铃现象,等等诸如此来,不厌其烦的教导我,所以很感谢。
在此帖出来,望各位读者能从中有所收益

MATLAB 之 App designer


http://chatgpt.dhexx.cn/article/0FyfWTGV.shtml

相关文章

【2】MATLAB中strel('disk',r)的C实现

strel 是MATLAB中常用的类型,即是structuring element,用来构建结构元素。opencv中与其相似的函数是getStructuringElement()这个函数。 这里仅仅说是相似主要是因为两者还是有很多区别的。 getStructuringElement()可以获取常用的结构元素的形状&…

matlab strel详解,【2】MATLAB中strel('disk',r)的C實現

strel 是MATLAB中常用的類型,即是structuring element,用來構建結構元素。opencv中與其相似的函數是getStructuringElement()這個函數。 這里僅僅說是相似主要是因為兩者還是有很多區別的。 getStructuringElement()可以獲取常用的結構元素的形狀&#x…

matlab strel结构元素,【matlab】Strel函数--结构元素

###Date:2018.3.28 =========================================================================== Strel函数 主要用来构建形态学运算中的结构元素,使用的语法为strel(shape,parameters)。shape为形状参数,即设置什么样的结构元素;parameters为控制形状参数大小方向的参数…

Strel函数--结构元素

Strel函数 主要用来构建形态学运算中的结构元素,使用的语法为strel(shape,parameters)。shape为形状参数,即设置什么样的结构元素;parameters为控制形状参数大小方向的参数。 例: 建立一个负向45,长度为6的结构元素…

strel

文章目录 SyntaxDescriptionExamplesAlgorithms 形态结构要素 strel代表平坦的形态构造元素,这是形态扩张和侵蚀操作的重要组成部分。 平面结构元素是二维或二维的二进制值邻域,其中在形态计算中包含真实像素,而不包含错误像素。 结构元素的中…

图像处理函数——strel、roipoly、roifilt2、roifill

文章目录 1.strel2.roipoly3.roifilt24.roifill 1.strel 功能: 形态学结构元素,strel 对象表示一个平面形态学结构元素,该元素是形态学膨胀和腐蚀运算的重要部分。 语法: SE strel(shape, parameters) 创建一个结构元素对象SE。…

nginx日志配置,以及日志轮询

一、为nginx配置错误日志 Nginx错误日志是调试nginx的重要手段,属于核心功能模块的参数(ngx_core_module)该参数名字为err_log,是放在Main区块中全局配置 err_log的语法格式以及参数语法说明如下 err_log file lev…

nginx配置日志记录问题

去掉nginx.conf文件里面的llog_format main注释并修改为如下 log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"|&quo…

nginx服务器网站日志,nginx网站日志配置

nginx网站日志配置 [2020-09-10 10:47:43] 简介: 建站服务器 1、日志介绍nginx有两种日志,一种是访问日志,一种是错误日志。访问日志中记录的是客户端对服务器的所有请求。错误日志中记录的 建站服务器 ELK系统在安装完成后需要处理相关的日志文件&…

Linux Nginx日志——Nginx日志配置 access_log error_log rewrite_log 日志轮转

1、Nginx 日志介绍 Nginx 每个级别的配置都可以有独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是有利的。 nginx 日志相关的配置包括 access_log、rewrite_log、error_log# 设置访…

【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】

文章目录 Nginx 日志配置log_format 指令中常用的一些变量:访问日志 案例可以配置段:http, stream, server, location作用域。error_log 指令 错误访问日志 级别rewrite_log 指令 用户跳转日志 一般不用配置流量控制相关功能配置日志记录 Nginx 日志配置…

关于nginx日志配置指令介绍

本文主要介绍了nginx日志配置指令详解,nginx有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志,需要的朋友可以参考下 日志对于统计排错来说非常有利的。本文总结了nginx日志相关的配置如access_log、log_format、open_log_file_cache、log_not_found、lo…

宝塔自定义nginx访问日志配置

nginx日志自定义配置 问题 有时nginx默认的日志满足不了需求,比如网站绑定了多个域名,想知道用于访问的是具体域名,这时候就需要自定义nginx日志了。 nginx 中access log 记录了用户访问的页面以及用户浏览器、ip和其他的访问信息 log_for…

Nginx日志配置、错误界面配置、流量控制 第九天

目录 nginx日志配置 nginx日志介绍 access.log error.log open_log_file_cache rewrite.log nginx的日志轮转 nginx错误界面配置 nginx流量控制 nginx如何限流 配置基本限流 nginx流量限制(高级) 流量控制相关功能 nginx日志配置 nginx日志…

运维配置:Nginx日志配置详解

Nginx日志配置详解 前言 Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息&…

nginx日志[配置解释]

经常使用nginx,但是对nginx中的日志配置了解的不多,最近简单的学习了一下,在此简略的记录下。 nginx基础配置如下: user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/ngi…

后端实践:Nginx日志配置(超详细)

前言 Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我…

Linux下玩转nginx系列(三)---nginx日志配置文件说明

nginx日志共三个参数。 access_log: 定义日志的路径及格式。 log_format: 定义日志的模板。 open_log_file_cache: 定义日志文件缓存。 nginx access日志配置 access_log日志配置 access_log用来定义日志级别,日志位置。语法如下: 日志级别&#x…

Linux中级实战专题篇三:nginx服务(日志介绍,作用域,格式定义,流量控制,访问控制模块,用户信任登录)

Nginx 日志配置 1、Nginx 日志介绍 Nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是非常有利的,下面总结…

英媒:知名色情网站约80万名用户账号遭曝光

英媒称,色情网站Brazzers约80万登记用户的资料遭曝光。黑客从与网站有关的论坛中窃取这些数据。 英国广播公司网站9月7日报道,Brazzersforum是给Brazzers用户讨论影片内容和演员的论坛,很多人看来在两个网站上使用相同的登录名称和密码&#…