边缘检测(一)-灰度图像边缘检测方法
灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题,边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准,下面通过一个实例提供灰度图像边缘检测方法,该方法对其他图像检测也具有一定的参考价值。
首先,读入一幅灰度图像,然后直接使用Canny算子对其进行边缘检测,发现其检测效果不好,故改变思路,先将灰度图像转换为二值图像,然后通过数学形态学平滑边缘后再进行边缘检测。算法主要步骤:读入灰度图像,使用最大类间方差法对图像二值化,然后反色,并填充二值图像孔洞。然后,选取合适结构元素分别使用数学形态学开运算和闭运算对图像进行平滑,最后使用bwmorph对平滑后二值图像进行边缘提取,取得了较好的边缘检测效果。最后对原始灰度图像eight.tif边缘检测的主要图像处理过程进行显示。
详细代码如下:
clear all;close all;clc;
I=imread('eight.tif');
E1=edge(I,'canny');%采用canny算子对灰度图像直接进行边缘检测
figure,imshow(E1);%检测效果不好
bw=im2bw(I,graythresh(I));%使用最大类间方差法进行图像二值化
figure,imshow(bw);
bw=imcomplement(bw);%图像反色
figure,imshow(bw);
bw2=imfill(bw,'holes');%对二值图像填充孔洞
figure,imshow(bw2);
E2=bwmorph(bw2,'remove');
figure,imshow(E2);%边缘检测效果不理想--二值图像边界不平滑
Se=strel('disk',3);%对比使用不同类型和不同尺寸结构元素
bw3=imopen(bw2,Se);%图像开运算--对图像边界平滑
figure,imshow(bw3);
E3=bwmorph(bw3,'remove');
figure,imshow(E3);%边缘检测效果好
bw4=imclose(bw2,Se);%图像闭运算—对图像边界平滑
figure,imshow(bw4);
E4=bwmorph(bw4,'remove');
figure,imshow(E4);%边缘检测效果好
figure('Name','灰度图像边检检测','NumberTitle','off')
subplot(2,3,1),imshow(I),title('原始灰度图像');
subplot(2,3,3),imshow(bw2),title('二值图像');
subplot(2,3,2),imshow(E1),title('对灰度图像直接使用canny算子边缘检测');
subplot(2,3,4),imshow(E2),title('bwmorph边缘检测');
subplot(2,3,5),imshow(E3),title('bwmorph+imopen边缘检测');
subplot(2,3,6),imshow(E4),title('bwmorph+imclose边缘检测');
%本程序在MATLAB 2018b检测通过
最后运行结果如下图所示:

相关文章:
边缘检测(一)-灰度图像边缘检测方法
灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题,边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准,下面通过一个实例提供灰度图像边缘检测方法,该方法对其他图像检测也具有一定的参考价值。 首先,读入一幅…...
2025计算机毕业设计选题题目推荐-毕设题目汇总大全
选题在于精,以下是推荐的容易答辩的选题: SpringBoot Vue选题: 基于SpringBoot Vue家政服务系统 基于SpringBoot Vue非物质文化遗产数字化传承 基于SpringBoot Vue兽医站管理系统 基于SpringBoot Vue毕业设计选题管理系统 基于SpringBoot Vue灾害应急救援…...
简易版 | 代码生成器(包含插件)
一、代码生成器 先导入依赖 <!-- Mybatis-Plus --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version> </dependency><!-- 代码生成器 --…...
【Python】Redis数据库
Redis数据库 Unit01一、Redis1.1 概述1.2 安装1.3 Redis-cli1.4 数据类型1.5 字符处理1.6 键的命名规则 二、通用命令三、字符串(String)3.1 概述3.2 常用命令3.3 应用场景 四、列表(List)4.1 概述4.2 常用命令 五、集合(SET)5.1 概述5.3 常用命令 六、有序集合6.1 概述6.2 常用…...
理解并应用:JavaScript响应式编程与事件驱动编程的差异
背景介绍 在现代JavaScript开发中,响应式编程(Reactive Programming)和事件驱动编程(Event-Driven Programming)是两种非常重要且常用的编程范式。虽然它们都用于处理异步操作,但在理念和实现方式上存在显…...
第4天:用户认证系统实现
第4天:用户认证系统实现 目标 实现用户认证系统,包括用户注册、登录、登出和密码管理。 任务概览 使用Django内置的用户认证系统。创建用户注册和登录表单。实现用户登出和密码重置功能。 详细步骤 1. 使用Django内置的用户认证系统 Django提供了…...
PostgreSQL源码分析 —— FunctionScan
本文分析一下FunctionScan的源码,加深一下理解。以SELECT * FROM generate_series(2,4);为例进行分析。 postgrespostgres# SELECT * FROM generate_series(2,4);generate_series -----------------234 (3 rows)postgrespostgres# explain SELECT * FROM generate…...
数据结构-十大排序算法集合(四万字精讲集合)
前言 1,数据结构排序篇章是一个大的工程,这里是一个总结篇章,配备动图和过程详解,从难到易逐步解析。 2,这里我们详细分析几个具备教学意义和实际使用意义的排序: 冒泡排序,选择排序,…...
SpringBoot三层架构
目录 一、传统方式 二、三层架构 三、代码拆分 1、dao层 2、service层 3、control层 四、运行结果 一、传统方式 上述代码存在一定的弊端,在进行软件设计和软件开发中提倡单一责任原则,使代码的可读性更强,复杂性更低,可扩展性…...
uniapp微信小程序局部刷新,无感刷新,修改哪条数据刷新哪条
uniapp做微信小程序时,一个商品列表滑到几百条数据时,点进去详情跳转去编辑信息上下架等,修改完成回来商品列表就到第一条数据了,这样页面效果体验感不是很好,是因为我们把数据接口放在onshow中了,每次回来…...
golan的雪花id
今天记录一下 golang的雪花id golang的雪花id 还是比较简单的,其包含的含义以及组成我这就不讲了,好多大佬都有文章写过,我直接上怎么用 先 引入包 go get "github.com/bwmarrin/snowflake" 代码块 func main() {// 设置一个时…...
RK3568 CAN波特率500K接收数据导致CPU4满载
最近调试RK3568 CAN时发现,当CAN作为接收端,在快速接收数据时会导致cpu4满载。down掉can口或者断开外设时恢复正常。并且问题只是在部门CPU版本上出现。在CAN接收中断中打印log,能发现log是按照接收数据的时间打印的。 驱动(rockchip_canfd…...
AI实战 | 使用元器打造浪漫仪式小管家
浪漫仪式小管家 以前我们曾经打造过学习助手和待办助手,但这一次,我们决定创造一个与众不同的智能体,而浪漫将成为我们的主题。我们选择浪漫作为主题,是因为我们感到在之前的打造过程中缺乏了一些仪式感,无法给对方带来真正的惊喜。因此,这一次我们计划慢慢调试,将它发…...
什么是隐马尔可夫模型?
文章目录 一、说明二、玩具HMM:5′拼接位点识别三、那么,隐藏了什么?四、查找最佳状态路径五、超越最佳得分对齐六、制作更逼真的模型七、收获 关键词:hidden markov model 一、说明 被称为隐马尔可夫模型的统计模型是计算生物学…...
qt中使用qsqlite连接数据库,却没有在本地文件夹中生成db文件
exe运行起来之后,发现没有在exe文件夹下生成数据库文件,,之前可以,但中间莫名其妙不行了,代码如下 // 建立和SQlite数据库的连接database QSqlDatabase::addDatabase("QSQLITE");// 设置数据库文件的名字da…...
Django的‘通用视图TemplateView’
使用通用视图的好处是:如果有一个html需要展示,不需要写view视图函数,直接写好url即可。 使用通用视图的步骤如下: 1、编辑项目urls.py文件 from django.views.generic import TemplateView 在该文件的映射表中添加:…...
java功能实现在某个时间范围之内输出true,不在某个范围输出false,时间精确到分钟
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DateTimeChecker { private static final Logger log LoggerFactory.getLogger(DateTimeChecker.class); /** * 检查当前时间是否在指定的小时和分钟范围内。 * * param startHour 开…...
macbook屏幕录制技巧,这2个方法请你收好
在当今数字化时代,屏幕录制成为了一项不可或缺的技能,无论是教学演示、游戏直播,还是软件操作教程,屏幕录制都能帮助我们更直观地传达信息。MacBook作为苹果公司的标志性产品,其屏幕录制功能也备受用户关注。本文将详细…...
vue-loader
Vue Loader 是一个 webpack 的 loader,它允许你以一种名为单文件组件 (SFCs)的格式撰写 Vue 组件 起步 安装 npm install vue --save npm install webpack webpack-cli style-loader css-loader html-webpack-plugin vue-loader vue-template-compiler webpack…...
IO系列(十) -TCP 滑动窗口原理介绍(上)
一、摘要 之前在上分享网络编程知识文章的时候,有网友写下一条留言:“可以写写一篇关于 TCP 滑动窗口原理的文章吗?”。 当时没有立即回复,经过查询多方资料,发现这个 TCP 真的非常非常的复杂,就像一个清…...
航空装备制造数字孪生怎么做?为什么推荐用Catia+CIMPro孪大师?
今天,我们不谈虚头巴脑的概念,直接聚焦航空装备制造这个硬骨头,聊聊数字孪生到底该怎么做,以及为什么在当前的工具链中,“CatiaCIMPro孪大师”这对组合值得你特别关注。什么类型的行业模型,必须选择Catia&a…...
SCI期刊AI率要求越来越严:一二区5%以下该怎么降
SCI一二区期刊AI率卡到5%以下,我的论文差点废了——后来这么救回来的 2026年开年,身边三个同学的SCI投稿被拒,理由都一样:AI-generated content detected。不是内容不行,是AI率没过关。 我的判断很直接:S…...
Chainlit前端定制化|通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程
Chainlit前端定制化|通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程 你是不是已经体验过各种在线大模型,但总感觉有些限制?比如数据隐私的担忧、网络延迟的困扰,或者想打造一个完全属于自己的、界面更符合业务需求的AI助…...
HP-Socket创新项目原型迭代记录:变更、原因与效果
HP-Socket创新项目原型迭代记录:变更、原因与效果 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件,其…...
AI显微镜-Swin2SR基础教程:理解‘细节重构技术’对AI生成图的价值
AI显微镜-Swin2SR基础教程:理解‘细节重构技术’对AI生成图的价值 1. 从模糊到高清:AI超分的革命性突破 你是否曾经遇到过这样的情况:AI生成了一张很有创意的图片,但分辨率太低,放大后全是马赛克;或者找到…...
3步精通FanControl:从噪音难题到智能散热的技术蜕变
3步精通FanControl:从噪音难题到智能散热的技术蜕变 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...
无代码爬虫方案:OpenClaw调度Qwen3.5-9B解析动态网页数据
无代码爬虫方案:OpenClaw调度Qwen3.5-9B解析动态网页数据 1. 为什么需要无代码爬虫? 作为一个经常需要从网页抓取数据的技术博主,我经历过太多抓取数据的痛苦时刻。传统爬虫开发需要处理反爬机制、解析动态加载内容、维护复杂的XPath或CSS选…...
X-TRACK二次开发终极指南:如何基于开源框架快速扩展新功能
X-TRACK二次开发终极指南:如何基于开源框架快速扩展新功能 【免费下载链接】X-TRACK A GPS bicycle speedometer that supports offline maps and track recording 项目地址: https://gitcode.com/gh_mirrors/xt/X-TRACK X-TRACK是一款支持离线地图和轨迹记…...
遥感影像配准总对不齐?OpenCV+RST+PROJ4三重坐标系对齐实战(附WGS84→UTM→影像本地坐标的转换矩阵速查表)
第一章:Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统自动化任务的核心工具,以可执行文本文件形式存在,由Bash等shell解释器逐行解析运行。其语法简洁但严谨,对空格、分号、引号和换行符敏感,需严格遵循语法规则…...
海外项目实战:用uniapp+Google OAuth 2.0搞定H5/App的免后端登录(附完整源码)
海外项目实战:Uniapp与Google OAuth 2.0的无后端登录方案 在面向海外市场的移动应用开发中,用户登录体验直接影响产品的转化率和留存率。Google账号作为欧美地区最普及的数字身份凭证,其登录集成已成为出海应用的标配功能。本文将深入探讨如何…...
