边缘检测(一)-灰度图像边缘检测方法

      灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题,边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准,下面通过一个实例提供灰度图像边缘检测方法,该方法对其他图像检测也具有一定的参考价值。

     首先,读入一幅灰度图像,然后直接使用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检测通过

最后运行结果如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/719604.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国际期货常见技术面分析

技术分析方法:通过对市场行为本身的分析来预测价格的变动方向,及主要是对期货市场的日常交易状况,包括价格、交易量与持仓量等数据,按照时间顺序绘制成图形、图表/形成一定的指标系统。然而针对这些图形、图表/指标系统进行分析研…

【C++】类和对象的引入

文章目录 前言一、类的定义二、类的访问控制与封装三、类的作用域四、类的实例化五、类的存储方式及大小计算六、隐藏的this指针 前言 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的&…

一五三、MAC 安装MongoDB可视化工具连接

若没有安装brew包管理工具,在命令行输入安装命令 /bin/bash -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”上面步骤安装完成后,开始安装MongoDB,输入安装命令: brew tap mongodb/brewbrew u…

安装VS Code 提示This User Installer is not meant to be run as an Administrator问题

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 在vs code官网(https://code.visualstudio.com/)下载安装包,显示如下提示信息: This User Installer is not meant to be run as an Administrator.…

HTMLCSS详细总结(提高版)

HTML5的新特性 1. HTML5 新增的语义化标签 <div class“header”> </div> <div class“nav”> </div> <div class“content”> </div> <div class“footer”> </div> <header>&#xff1a;头部标签<nav>&#…

一款超好用的国产 Redis 可视化工具,真香!

哈喽&#xff0c;大家好&#xff0c;我是黑板报君&#xff0c;一个资深的软件开发工程师&#xff0c;致力于为大家分享各领域优质开源项目&#xff0c;开发前沿技术以及互联网技术圈动态。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 日常开发过程中…

微信能上网,但是浏览器不能上网,解决方法

问题&#xff1a;微信能上网&#xff0c;但是浏览器不能上网。更具体的是&#xff0c;连接无线wifi时&#xff0c;微信可以上网&#xff0c;但是浏览器不能上网&#xff1b;连接手机热点时&#xff0c;微信和浏览器均能上网。 解决&#xff1a;试了网上的诸多方法都不起作用&a…

C# OpenCvSharp 车牌颜色识别

C# OpenCvSharp 车牌颜色识别 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace OpenCvSharp_Demo { public partial class Form1 : Form { …

18.实战 LLaMA2-7B 指令微调

实战 LLaMA2-7B 指令微调 实战 LLaMA2-7B 指令微调大模型训练技术总结以模型训练阶段分类&#xff1a;Pre-Training vs Fine-Tuning以微调权重比例分类&#xff1a;FFT vs PEFT以模型训练方法分类&#xff1a;Fine-Tuning vs Instruction-Tuning以模型训练机制分类&#xff1a;…

帕金森患者在饮食上需要注意什么

帕金森病患者在饮食上应该遵循以下几个基本原则&#xff1a; 饮食清淡&#xff1a;应多吃新鲜的水果和蔬菜&#xff0c;如苹果、芹菜、菠菜等&#xff0c;以补充维生素和促进胃肠道蠕动。营养均衡&#xff1a;应多吃富含优质蛋白的食物&#xff0c;如鸡蛋、牛奶&#xff0c;以…

HACH哈希紫外可见光分光光度计维修DR6000

DR3900可见分光光度计内置准双光束光学系统&#xff0c;自动校准波长&#xff0c;该可见光分光光度计预置200多个用户程序&#xff0c;几乎覆盖常规水质参数&#xff0c;彩色触屏搭载中文操作界面&#xff0c;可自动分析检测并存储2000组实验数据&#xff0c;是一款测量准确的可…

高考之后,专业与学校如何选择?

随着2024年高考的结束&#xff0c;考生们面临着选择专业或学校的难题。选择专业意味着专注于一个特定领域&#xff0c;直接影响未来的职业发展和兴趣培养&#xff1b;而选择学校则提供了更优越的学术氛围和广泛的社交机会&#xff0c;对个人综合素质提升有重要作用。无论选择哪…

jdk下载安装及电脑上同时安装多个jdk

一、jdk的下载 官方地址: Java Software | Oracle 系统环境变量配置 1、首先新建JDK1.8和17的JAVA_HOME&#xff0c;他们的变量名区分开&#xff0c;分别为JAVA17_HOME&#xff0c;JAVA8_HOME。分别指向他们的安装地址。 2、新建配置他们可变的地址&#xff0c;这个环境变量的值…

Transformer革新:Infini-Transformer在长文本处理中的突破

在当今信息爆炸的时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在处理长文本数据方面的需求日益增长。无论是科学研究、法律分析还是医学诊断&#xff0c;长文本的处理能力都显得尤为重要。然而&#xff0c;现有的基于Transformer的模型在处理这类数据时遇到了重大…

力控算法每日一练:209. 长度最小的子数组(java)

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 class Solution {public int minSu…

【机器学习】机器学习重要分支——集成学习:理论、算法与实践

文章目录 引言第一章 集成学习的基本概念1.1 什么是集成学习1.2 集成学习的类型1.3 集成学习的优势 第二章 集成学习的核心算法2.1 Bagging方法2.2 Boosting方法2.3 Stacking方法 第三章 集成学习的应用实例3.1 图像分类3.2 文本分类 第四章 集成学习的未来发展与挑战4.1 模型多…

深度学习:从理论到应用的全面解析

引言 深度学习作为人工智能&#xff08;AI&#xff09;的核心技术之一&#xff0c;在过去的十年中取得了显著的进展&#xff0c;并在许多领域中展示了其强大的应用潜力。本文将从理论基础出发&#xff0c;探讨深度学习的最新进展及其在各领域的应用&#xff0c;旨在为读者提供全…

《C++ Primer》导学系列:第 5 章 - 语句

5.1 简单语句 5.1.1 基本概念 在C中&#xff0c;简单语句是构成程序的基本单元。每个简单语句以分号&#xff08;;&#xff09;结束&#xff0c;可以是表达式、声明或空语句。 5.1.2 表达式语句 表达式语句是由表达式构成的语句&#xff0c;通常用于计算、赋值和函数调用。 …

什么是小语言模型?

介绍 近年来&#xff0c;人工智能领域取得了重大进展&#xff0c;尤其是在自然语言处理领域。GPT-3 和 PaLM 等大型语言模型因其出色的能力而备受关注&#xff0c;新一波小型语言模型正在兴起&#xff0c;它们在性能和效率之间提供了有希望的平衡。 什么是小语言模型&#xf…

Eigne库安装及使用教程

文章目录 1.Eigne库介绍2.Eigne库安装3.Eigne库使用4.some examples5.参考文献 1.Eigne库介绍 Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C库&#xff0c;它里面包含了很多算法。它的License是MPL2。它支持多平台。 Eigen采用源码的方式提供给用户使用&#xff0c;在…