【毕业设计系列】基于NSCT和改进Canny的图像边缘检测matlab实现【2025最新】

Date: 2025.4.15


前言

在大学毕业设计的时候,实现了基于NSCT和改进Canny的图像边缘检测算法,采用Matlab语言实现,边缘提取效果不错,与经典的Canny和Sobel算子相比,可以在抑制噪声的同时提取有效边缘分量。

需要相关代码可以在关注博主和订阅本专栏后加文章最后的QQ名片咨询博主。

1、参考

基于NSCT及改进Canny的图像边缘检测

基于NSCT的含噪图像边缘检测

2、算法原理

(1)将原始图像进行NSCT变换,获得低频和高频分量信息;
(2)使用改进的Canny算子对低频子带信息进行提取低频轮廓边缘信息E1;
(3)使用sobel算子对高频子带信息中各尺度各方向上的系数进行调整,实现边缘增强和噪声抑制,得到高频轮廓边缘信息E2;
(4)最后 ,对E1和E2进行相加融合,得到完整的边缘图像E。

3、实现效果图

3.1、低频分量和canny边缘图

在这里插入图片描述

3.2、高频分量和边缘图

在这里插入图片描述

3.3、融合后的边缘图像

在这里插入图片描述

3.4、经过canny处理后的融合边缘图像

在这里插入图片描述

4、部分Matlab代码

%% 基于NSCT的边缘检测算法matlab实现
% created at 2022.5.13

%% 1.读取原始图像
srcImg = imread ('lena.bmp');
figure,
imshow(srcImg, []);title('原始图像');

[Ny,Nx] = size(srcImg);%求取输入图像的宽和高

%% 2.采用NSCT变换将原始图像分解为低频分量和高频分量
path(path,'nsct_toolbox');  % 加载matlab自带的nsct工具箱

Nsc = 3; %ceil(log2(min(Ny,Nx)) - 7);  % 分解尺度的数量 (自适应于图像尺寸)
Nor = 8;				           % 每级分解的方向数

%nlevels = [3, 3, 3] ;        % Decomposition level
nlevels=zeros(1,Nsc+1);
for i=1:Nsc+1
    nlevels(i)=log2(Nor); %初始化分解尺度
end

%初始化NSCT子带分解参数
pfilter = 'maxflat' ;   %金字塔滤波器
dfilter = 'dmaxflat7' ; %方向滤波器

%NSCT分解
coeffs_TV_int = nsctdec(srcImg, nlevels, dfilter, pfilter ); %nsct分解图像
%shownsct(coeffs_TV_int);

THE END!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔的鲲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值