MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测

MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测

1、比较不同的小波函数对边缘提取和噪声抑制的差异

小波函数有:haar小波函数、Daubechies小波函数、Biorthogo小波函数等,可以根据实际情况调用

clc;clear all;close all;

I0 = imread('lena.png');%读取照片
I0 = rgb2gray(I0);%转换为灰度图
figure,imshow(I0);title('原图');
I= imnoise(I0,'gaussian',0.01);%添加高斯噪声,密度0.01
figure,imshow(I);title('添加噪声的图');
[cA1,cH1,cV1,cD1]=dwt2(I,'haar');%使用haar小波函数进行小波变换
figure,suptitle('haar')
subplot(2,2,1),imshow(uint8(cA1)),title('低频分量');
subplot(2,2,2),imshow(uint8(cH1)),title('水平细节分量');
subplot(2,2,3),imshow(uint8(cV1)),title('垂直细节分量');
subplot(2,2,4),imshow(uint8(cD1)),title('斜线细节分量');

MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测_第1张图片

2、计算模极大值,对比并分析固定阈值和自适应阈值的结果差异

%不同的小波函数的影响
clc;clear all;close all;

I0 = imread('D:\desktop\图像处理大作业2022\图像处理大作业2022\data\project2\lena.png');%读取照片
I0 = rgb2gray(I0);%转换为灰度图
figure,imshow(I0);title('原图');
I=I0;

[cA1,cH1,cV1,cD1]=dwt2(I,'haar');%使用haar小波函数进行小波变换
figure,suptitle('haar')
subplot(2,2,1),imshow(uint8(cA1)),title('低频分量');
subplot(2,2,2),imshow(uint8(cH1)),title('水平细节分量');
subplot(2,2,3),imshow(uint8(cV1)),title('垂直细节分量');
subplot(2,2,4),imshow(uint8(cD1)),title('对角线细节分量');

%% 计算模极大值

M1=sqrt(cH1.^2+cV1.^2);

%区分象限https://wenku.baidu.com/view/f26f270b0b4c2e3f572763a8?aggId=2eb61e4487c24028915fc3b7
for i=1:size(cV1,1)
    for j=1:size(cV1,2)
        if cV1(i,j)>0&&cH1(i,j)>0%1象限
            A1(i,j)=atan(cV1(i,j)./cH1(i,j));
        end
        if cV1(i,j)<0&&cH1(i,j)>0%2象限
            A1(i,j)=atan(cV1(i,j)./cH1(i,j))-pi;
        end
        if cV1(i,j)<0&&cH1(i,j)<0%3象限
            A1(i,j)=atan(cV1(i,j)./cH1(i,j))+pi;
        end
        if cV1(i,j)>0&&cH1(i,j)<0%4象限
            A1(i,j)=atan(cV1(i,j)./cH1(i,j));
        end
    end
end
A1=A1*180/pi;
%如需后续代码请加qq有偿(¥10)获取2126705615

MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测_第2张图片

3、基于自适应阈值实现多尺度边缘检测

matlab自带的wavedec2函数可以实现多尺度边缘检测,如果边缘提取以后噪点比较多,可以使用形态学方式去除小连通域。

%多尺度,自适应阈值
clc,clear all,close all;
I0 = imread('lena.png');    %读取照片
I0 = rgb2gray(I0);%转换为灰度图
figure,imshow(I0);title('原图');
I= I0;
[c,s]=wavedec2(I,2,'db1');%进行2尺度二维离散小波分解。分解小波函数-db1
%detcoef2函数:用来提取二维信号小波分解的细节系数
[cH1,cV1,cD1]=detcoef2('all',c,s,1);%尺度1的所有方向的高频系数  得到垂直 水平 对角方向上的高频细节分量
[cH2,cV2,cD2]=detcoef2('all',c,s,2);%尺度2的所有方向的高频系数
%appcoef2函数:用来提取二维信号小波重构的近似系数
cA1=appcoef2(c,s,'db1',1);%尺度1的低频系数
cA2=appcoef2(c,s,'db1',2);%尺度2的低频系数

%% 初步展示小波变换之后的结果
figure,imshow(I);title('原图');
figure;
subplot(1,2,1),imshow(uint8(cA1));axis off;title('尺度1的低频系数图像');
subplot(1,2,2),imshow(uint8(cA2));axis off;title('尺度2的低频系数图像');
figure;
subplot(2,3,1),imshow(uint8(cH1));axis off;title('尺度1水平方向高频系数');
subplot(2,3,2),imshow(uint8(cV1));axis off;title('尺度1垂直方向高频系数');
subplot(2,3,3),imshow(uint8(cD1));axis off;title('尺度1对角方向高频系数');
subplot(2,3,4),imshow(uint8(cH2));axis off;title('尺度2水平方向高频系数');
subplot(2,3,5),imshow(uint8(cV2));axis off;title('尺度2垂直方向高频系数');
subplot(2,3,6),imshow(uint8(cD2));axis off;title('尺度2对角方向高频系数');


%% 尺度1的模极大值计算
M1=sqrt(cH1.^2+cV1.^2);%尺度1的模值
A1=MyAngle(cV1,cH1);%尺度1的角度
edge1=MyEdge(A1,M1,cV1);%尺度1的边缘
Max_e1=max(edge1(:));%最大值
edge1=edge1/Max_e1;%归一化
threshold1=THR(edge1);%计算阈值
edge1(edge1>threshold1)=1;%超过阈值归为1
edge1(edge1<1)=0;%其余归零
figure,imshow(edge1);title(['尺度1,自适应阈值=',num2str(threshold1)])

%% 尺度2的模极大值计算

M2=sqrt(cH2.^2+cV2.^2);%尺度2的模值
A2=MyAngle(cV2,cH2);%尺度2的角度
edge2=MyEdge(A2,M2,cV2);%尺度2的边缘
Max_e2=max(edge2(:));%最大值
edge2=edge2/Max_e2;%归一化
threshold2=THR(edge2);
edge2(edge2>threshold2)=1;%超过阈值归为1
edge2(edge2<1)=0;%其余归零
figure,imshow(edge2);title(['尺度2,自适应阈值=',num2str(threshold2)])

%如需后续代码请加qq有偿(¥20)获取2126705615

MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测_第3张图片
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测_第4张图片

参考资料:

https://wenku.baidu.com/view/2eb61e4487c24028915fc3b7.html?tdsourcetag=s_pctim_aiomsg&qq-pf-to=pcqq.c2c

https://wenku.baidu.com/view/f26f270b0b4c2e3f572763a8?aggId=2eb61e4487c24028915fc3b7

http://www.dwenzhao.cn/profession/language/matlabwavelet.html

https://blog.csdn.net/SmallerNovice/article/details/55803908

基于小波变换的图像边缘检测_邢尚英;

小波变换的自适应阈值图像边缘检测方法_张宏群

基于小波变换模极大的多尺度…边缘检测在烟雾图像中的应用_王瑞

基于改进小波去噪的图像边缘检测算法_张鹏

dn.net/SmallerNovice/article/details/55803908

基于小波变换的图像边缘检测_邢尚英;

小波变换的自适应阈值图像边缘检测方法_张宏群

基于小波变换模极大的多尺度…边缘检测在烟雾图像中的应用_王瑞

基于改进小波去噪的图像边缘检测算法_张鹏

二进小波变换的图像边缘检测_玛利亚木古丽·麦麦提

你可能感兴趣的:(嗑盐杂烩,matlab,图像处理,计算机视觉)