图像边缘检测示例(综合利用阈值分割、数学形态学和边缘检测算子)

news/2024/12/12 22:53:41/

一、问题

       读入一副灰度图像(如果是彩色图像,可以先将其转化为灰度图像),然后提取比较理想的灰度图像边缘。这里以moon.tif为例。

二、算法

     大家一开始容易想到直接利用MATLAB的内置函数edge并采用不同边缘提取算子进行边缘提取,但效果不理想,该部分内容已在“图像边缘检测原理和常用检测算子及MATLAB实现”中讲过,这里就不赘述,感兴趣的同学可以阅读。本文提出一种边缘检测新思路,主要算法步骤如下:

1.读入图像  2.图像二值化  3.去除小目标  4.填充图像 5.图像边界平滑 6.边缘提取

三、程序代码

clear all;
close all;
clc;
gray_img = imread('moon.tif'); % 读取图像
%bw=imbinarize(gray_img);%阈值分割
bw=im2bw(gray_img,graythresh(gray_img));%阈值分割
bw2=bwareaopen(bw,100);%去除小区域
figure,imshow(bw2);
bw2_fill=imfill(bw2,'holes');
SE=strel('disk',2);%定义结构元素
%SE=strel('disk',3);%定义结构元素
bw2_fill_open=imopen(bw2_fill,SE);%数学形态学开运算
edge_bw=edge(bw2_fill_open);%对二值图像提取边缘
figure,imshow(edge_bw),title('月亮边缘检测结果');
figure('Name','使用阈值分割和数学形态学运算提取边缘','NumberTitle','off');
subplot(2,3,1),imshow(gray_img),title('原始灰度图像');
subplot(2,3,2),imshow(bw),title('最大类间方差法阈值分割');
subplot(2,3,3),imshow(bw2),title('去除小区域');
subplot(2,3,4),imshow(bw2_fill),title('填充孔洞');
subplot(2,3,5),imshow(bw2_fill_open),title('使用开运算平滑边缘');
subplot(2,3,6),imshow(edge_bw),title('月亮边缘检测结果');

四、主要运行结果

5541e1e0716b44499d88f21433da716d.png

0c26c1333c66413191faa2ccf619ca41.png

五、结果与讨论

        由上面运行结果可以看出,采用上述的算法对边缘检测可以得到比较理想的结果。

       如果大家觉得本文对大家学习和研究有所帮助,请点赞、关注和收藏,欢迎转发!谢谢大家!


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

相关文章

如何选择安全、可验证的技术?

澳大利亚信号局的澳大利亚网络安全中心 (ASD 的 ACSC) 发布了一份指导文件,题为《选择安全和可验证的技术》,旨在帮助组织在采购软件(专有或开源)、硬件(例如物联网设备)和云服务(SaaS、MSP 服务…

/usr/local/go/bin/go: cannot execute binary file: Exec format error

现象:ubuntu中安装go软件环境,报上述错误 原因:系统与软件不适配 解决:查看本系统的版本 找到x86-64对应的go版本即可

数据结构--链表和单链表详解及实现

一.前言 数据结构思维导图如下,灰色标记的是之前讲过的,本文将带你走近单链表(红色标记部分),希望大家有所收获🌹🌹 二.链表的定义和概念 在讲单链表之前,我们先学习一下链表 2.1 链表的定义 链表是一种…

[免费]SpringBoot+Vue毕业设计论文管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue毕业设计论文管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue毕业设计论文管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 现代经济快节奏发展以及不断完善升级的信…

Ubuntu nginx E 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

这个问题通常发生在尝试安装一个软件包时,该软件包依赖于一个与系统中已安装版本不兼容的版本。以下是一些可能的解决方案: 这是一个依赖问题,其中 nginx 软件包依赖于 nginx-core 、 nginx-full 、 nginx-light 或 nginx-extras 的…

K8S存储实战案例:NFS+StorageClass+PV/PVC+Deployment

本篇文章分享一下在 Kubernetes (K8s) 中搭建 NFS 存储,并实现 PersistentVolume (PV)、PersistentVolumeClaim (PVC)、动态存储卷StorageClass,以及通过 Deployment 使用这些存储卷的完整流程,可以按照以下步骤进行。 实验步骤:…

网络安全协议

1. 概述 1.1 网络安全需求 五种需求: 机密性:防止数据未授权公开,让消息对无关听众保密 完整性:防止数据被篡改 可控性:限制对网络资源(硬件和软件)和数据(存储和通信&#xff0…

第二篇:脚手架搭建 — React 和 Express 的搭建

目录 1 React搭建2 Express搭建总结 第一篇我们介绍了开发环境的搭建过程,介绍了vscode、git、nodejs和mongodb的安装过程。有了基础的开发环境就需要搭建我们的前后端脚手架了。 1 React搭建 前端我们选用React框架解决界面的渲染和用户交互的问题,Rea…