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

一、问题

读入一副灰度图像(如果是彩色图像,可以先将其转化为灰度图像),然后提取比较理想的灰度图像边缘。这里以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('月亮边缘检测结果');

四、主要运行结果

五、结果与讨论

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

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

相关推荐
小王毕业啦3 分钟前
2000-2023年 上市公司-企业组织惯性数据
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据
咚咚王者5 分钟前
人工智能之核心基础 机器学习 第四章 决策树与集成学习基础
人工智能·决策树·机器学习
迈火8 分钟前
ComfyUI - ELLA:解锁ComfyUI图像生成新境界的神奇插件
人工智能·gpt·stable diffusion·aigc·音视频·midjourney·llama
sandwu8 分钟前
AI Agent——可观测性链路集成&评测体系搭建(Langfuse)
人工智能·python·langchain·langfuse
未来之窗软件服务15 分钟前
幽冥大陆(八十四)Python 水果识别PTH 转 ONNX 脚本新 —东方仙盟练气期
人工智能·python·深度学习·仙盟创梦ide·东方仙盟·阿雪技术观
AI科技星27 分钟前
时空的固有脉动:波动方程 ∇²L = (1/c²) ∂²L/∂t² 的第一性原理推导、诠释与验证
数据结构·人工智能·算法·机器学习·重构
金井PRATHAMA28 分钟前
格雷马斯语义方阵对人工智能自然语言处理深层语义分析的影响与启示研究
人工智能·自然语言处理
Coder个人博客38 分钟前
Transformers推理管道系统深度分析
人工智能·自动驾驶·transformer
nwsuaf_huasir40 分钟前
采用梯度下降法优化波形的自相关特性
人工智能·计算机视觉·目标跟踪
长河_讲_ITIL41 小时前
在硅基的倒影中寻找自我:写在AI智能体元年的一场思想突围
运维·人工智能·itss·itil·itil认证·itil培训