形态学图像处理和图像分割MATLAB实验

news/2024/10/31 9:29:25/

文章目录

      • 一、实验目的
      • 二、实验内容
        • 1. 开运算和闭运算实验。
        • 2. 用形态学处理提取边界。
        • 4. 全局阈值处理。

一、实验目的

  1. 理解腐蚀和膨胀的原理,掌握开运算、闭运算及形态学的边界提取。
  2. 掌握孤立点检测、线检测和边缘检测的方法。
  3. 掌握全局阈值处理的方法。

二、实验内容

1. 开运算和闭运算实验。

图1(a)显示了一幅被噪声图像污染的指纹图像,图1(b)给出了结构元,请自编程序,实现以下运算:

在这里插入图片描述

(1) 用图1(b)所示的结构元对图1(a)进行腐蚀。
(2) 对图1(a)进行开运算。
(3) 对开运算的结果进行膨胀处理。
(4) 对开运算的结果进行闭运算处理。
(5) 分析实验结果。

答:

%%
%对污染的指纹图像进行腐蚀运算
clear all;close all;clcf=imread('1.tif');%f 240x317
[M, N]=size(f);
f1=zeros(M,N);
figure;imshow(f)
se=ones(3); %结构元素为 3×3 时
[m, n]=size(se);
sx=floor(m/2); %取整
sy=floor(n/2);
f = padarray(f,[sx sy]); %对 f 进行零填充
[M, N]=size(f); %获取填充后 f 的大小for i=sx+1:M-sxfor j=sy+1:N-syfblock=f(i-sx:i+sx,j-sy:j+sy);andresult=se&fblock; %与运算if (andresult==se)f1(i-sx,j-sy)=1;elsef1(i-sx,j-sy)=0;endend
end
subplot(1,4,1); imshow(f1);title('腐蚀运算结果');%%
%%对污染的指纹图像进行开运算,即腐蚀之后进行膨胀运算f1 = padarray(f1,[sx sy]);
f2=zeros(238,315); %开运算的结果
for i=sx+1:M-sxfor j=sy+1:N-syfblock=f1(i-sx:i+sx,j-sy:j+sy);andresult=se&fblock;As=sum(sum(andresult));if As>0f2(i-sx,j-sy)=1;elsef2(i-sx,j-sy)=0;endend
endsubplot(1,4,2);imshow(f2);title('开运算结果');
%%
%对开运算的结果进行膨胀处理。
f2 = padarray(f2,[sx sy]);
f3=zeros(238,315); %开运算的结果继续膨胀
for i=sx+1:M-sxfor j=sy+1:N-syfblock=f2(i-sx:i+sx,j-sy:j+sy);andresult=se&fblock;As=sum(sum(andresult));if As>0f3(i-sx,j-sy)=1;elsef3(i-sx,j-sy)=0;endend
endsubplot(1,4,3); imshow(f3);title('开运算后膨胀结果');
%%
%对开运算的结果进行闭运算f3 = padarray(f3,[sx sy]);
f4=zeros(238,315); %存储开运算后闭运算结果
for i=sx+1:M-sxfor j=sy+1:N-syfblock=f3(i-sx:i+sx,j-sy:j+sy);andresult=se&fblock; %与运算if (andresult==se)f4(i-sx,j-sy)=1;elsef4(i-sx,j-sy)=0;endend
endsubplot(1,4,4); imshow(f4);title('开运算后闭运算结果');

在这里插入图片描述

2. 用形态学处理提取边界。

图2(a)给出了一幅简单的二值图像,图2(b)给出了结构元,请按照式(1),对图2(a)进行处理。

β ( A ) = A − ( A ⊖ B ) \beta (A)=A-(A\ominus B) β(A)=A(AB)

其中, B B B 是结构元。先通过 B B B A A A 腐蚀,再执行 A A A 和腐蚀结果之间的差,即可得到集合 A A A 的边界。

在这里插入图片描述
答:

close all; clear all; clc;
f=imread('2.tif');
%先腐蚀
se=ones(3);%结构元
[m, n]=size(se);
sx=floor(m/2); %取整
sy=floor(n/2);
f_padded = padarray(f,[sx sy]); %对 f 进行零填充
[M, N]=size(f_padded); %获取填充后 fp 的大小
for i=sx+1:M-sxfor j=sy+1:N-syfblock=f_padded(i-sx:i+sx,j-sy:j+sy);andresult=se&fblock; %与运算if (andresult==se)f1(i-sx,j-sy)=1;elsef1(i-sx,j-sy)=0;endend
end
%后做差
fe=f-f1;
figure,imshow(fe)

在这里插入图片描述

4. 全局阈值处理。

图6给出了一幅带噪声的指纹图像,请进行以下运算:
(1) 求图6的直方图。
(2) 用 T = m T=m T=m (平均图像灰度)开始,并令 Δ T = 0.01 \Delta T=0.01 ΔT=0.01,应用“实验讲义”中给出的迭代算法得到全局阈值。
(3) 用(2)中得到的全局阈值对图像进行分割。

答:

clear all;close all;clc
f=imread('4.tif');
imhist(f);f=im2double(f);
T=mean(f(:));%当前阈值
t=0;%下一次阈值while abs(T-t)>0.01%当T与t相差过大G1=f>T;%逻辑判断,f>T的部分为1,反之为0,注意G1会是logical类型的变量t=0.5*mean(f(G1))+0.5*mean(f(~G1));T=t;
end%显式的使用find% index=find(f>T);
% f(index)=1;
% index=find(f<T);
% f(index)=0;
% imshow(f);%使用逻辑索引来改善速度,不需要显式的使用find
f(f>T)=1;
f(f<=T)=0;
imshow(f);

在这里插入图片描述


http://www.ppmy.cn/news/78412.html

相关文章

Node.js--》深入理解 PM2:Node.js 应用部署和管理利器

目录 pm2&#xff1a;进程自动化管理工具 pm2的安装与使用 pm2&#xff1a;进程自动化管理工具 PM2&#xff1a;是一个流行的Node.js进程管理器&#xff0c;它可以帮助您在生产环境中管理和保持Node.js应用程序运行。PM2的功能包括监视您的应用程序、自动重启您的应用程序、…

【Java-Crawler】爬取动态页面(WebMagic、Selenium、ChromeDriver)

WebMagicSeleniumChromeDriverMaven 爬取动态页面 一、需要下载的资源和引入的依赖资源依赖 二、实战代码测试效果 在上一篇说WebMagic框架的时候&#xff08; 一文学会WebMagic爬虫框架&#xff09;&#xff0c;提到了WebMagic仅能解析静态页面&#xff0c;满足不了小编的爬虫…

HackTheBox-关卡Fawn

1. 连接靶场&#xff0c;打开FAWN实例场景&#xff0c;检查是否互通 TASK1 3 个字母的首字母缩写词 FTP 代表什么&#xff1f; 答案是&#xff1a;File Transfer Protocol TASK2 问题是&#xff1a;FTP服务通常监听哪个端口&#xff1f; FTP监听的TCP端口号为21,监听的数据端…

为什么我在领英上搜到的客户都是显示领英会员(Linkedin Member)?

LinkedIn领英上找客户&#xff0c;开发客户已经越来越成为主流&#xff0c;但是很多刚注册使用LinkedIn领英的人会摸不着头脑&#xff0c;束手无策。 因为他会发现自己搜索出来的结果&#xff0c;找出来的客户都是显示领英会员&#xff08;Linkedin Member&#xff09;&#x…

Spring Security入门

1. Spring Security 简介 Spring Security 是一个高度可定制的身份验证和访问控制框架&#xff0c;它基于 Spring 框架&#xff0c;并可与 Spring 全家桶无缝集成。该框架可以精确控制用户对应用程序的访问&#xff0c;控制用户的角色和权限等。 Spring Security 最早是由 Be…

锁 笔记

锁分类LockAQS同步器 锁分类 公平锁&#xff1a;按申请顺序获得锁。FIFO 非公平锁&#xff1a;不按申请顺序获得锁。优先级反转&#xff0c;饥饿现象&#xff0c;吞吐量大 一个线程请求锁时&#xff0c;只要获取同步状态则成功获取锁&#xff0c;在该前提下&#xff0c;刚释放…

Vicuna:斯坦福开源一个性能相当于90%ChatGPT的聊天机器人

自从Meta公司发布LLaMA以来&#xff0c;围绕它微调和开发的模型越来越多&#xff0c;这得益于它的性能和效果&#xff0c;2023年3月份发布的草泥马&#xff08;Alpaca&#xff09;是由Meta的LLaMA 7B微调而来的全新模型&#xff0c;仅用了52k数据&#xff0c;性能约等于GPT-3.5…

【HarmonyOS】元服务混淆打包以及反混淆mapping文件生成

大家所知的Android中的“混淆”可以分为两部分&#xff0c;一部分是 Java 代码的优化与混淆&#xff0c;依靠 proguard 混淆器来实现&#xff1b;另一部分是资源压缩&#xff0c;从而可以减少包体积。 一般应用release发布的时候都会选择开启混淆&#xff0c;防止应用被反编译…