⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mulscale_edge.asv

📁 本程序利用matlab来实现基于小波变换的多尺度图像边缘检测。
💻 ASV
字号:
%小波多尺度边缘检测主程序
close all
clc
I = imread('cameraman.tif');
[row,col]=size(I);

%使用的小波函数
wname='bior4.4';

% 显示原图
subplot(2,3,1);
imshow(I);
title('原图');

%canny算法
bw= edge(I,'canny');
subplot(2,3,2);
imshow(bw);
title('Canny法');

I = double(I);

% 对图像进行三层小波变换
[ca1,ch1,cv1,cd1] = dwt2(I,wname);
[ca2,ch2,cv2,cd2] = dwt2(ca1,wname);
[ca3,ch3,cv3,cd3] = dwt2(ca2,wname);

% 各层小波系数求极值点及极值点的梯度值(角度);
thr=4;a0=1;n=7;
[edge_mf1,grads1] = local_max_mode(cv1,ch1,thr,a0,n);

thr=15;a0=1;n=5;
[edge_mf2,grads2] = local_max_mode(cv2,ch2,thr,a0,n);

thr=30;a0=1;n=3;
[edge_mf3,grads3] = local_max_mode(cv3,ch3,thr,a0,n);

% 对极值点矩阵归一化
edge_mf1=guiyi(edge_mf1);
edge_mf2=guiyi(edge_mf2);
edge_mf3=guiyi(edge_mf3);

% 把三层小波分解的结果合并

ca3=wthresh(ca3,'h',3000000);
ca2=wthresh(ca2,'h',3000000);

ca2_ca3=idwt2(ca3,edge_mf3,edge_mf3,edge_mf3,wname,size(ca2));
com_2=abs(com_2);
com_2=guiyi(com_2);
com_2=mul_c(ca2_ca3,edge_mf2);

ca1_ca3=idwt2(ca2,com_2,com_2,com_2,wname,size(ca1));
ca1_ca3=guiyi(abs(ca1_ca3));

ca1_ca2=idwt2(ca2,edge_mf2,edge_mf2,cd2,wname,size(ca1));
ca1_ca2=guiyi(abs(ca1_ca2));

com_2=mul_c(ca1_ca3,ca1_ca2);
com_1=mul_c(com_2,edge_mf1);
com_1=ada_thr(com_1,n,a0);
com_1=wthresh(com_2,'h',0.14);
% com_1=guiyi(com_1);

com_1=dayu_c(com_1,0);


subplot(2,3,3);
imshow(com_1*255);
title('多尺度');

subplot(2,3,4);
imshow(edge_mf3*255);
title('2层');

subplot(2,3,5);
imshow(edge_mf2*255);
title('1层');

subplot(2,3,6);
imshow(edge_mf1*255);
title('0层');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -