当前位置:网站首页>MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
2022-08-03 05:24:00 【zdlwhereyougo】
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('斜线细节分量');

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

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


参考资料:
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
基于小波变换的图像边缘检测_邢尚英;
小波变换的自适应阈值图像边缘检测方法_张宏群
基于小波变换模极大的多尺度…边缘检测在烟雾图像中的应用_王瑞
基于改进小波去噪的图像边缘检测算法_张鹏
二进小波变换的图像边缘检测_玛利亚木古丽·麦麦提
边栏推荐
- 自监督论文阅读笔记DisCo: Remedy Self-supervised Learning on Lightweight Models with Distilled Contrastive
- 中国柔性制造系统(FMS)市场发展动态及未来趋势预测报告2022~2028年
- enum和enum class的区别
- 二叉树常见的问题和解决思路
- Qemu 搭建Armv8 平台
- Oracle 日历表详解(含节假日)
- Invalid signature file digest for Manifest main attributes解决方法
- 自监督论文阅读笔记Index Your Position: A Novel Self-Supervised Learning Method for Remote Sensing Images Sema
- 自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
- memblock
猜你喜欢

神经网络基础

常见的电子元器件分类介绍-唯样商城

二叉树常见的问题和解决思路

A.1#【内存管理】——1.1.3 page: struct page

VCC(电源)和 GND(地)之间电容的作用

mysql 客户端SSL错误2026 (HY000)

2021-04-23

自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping

稳压二极管的工作原理及稳压二极管使用电路图

自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
随机推荐
Invalid signature file digest for Manifest main attributes解决方法
MySQL 安装报错的解决方法
opencv目标检测
enum和enum class的区别
二阶段提问总结
B.1#【编程语言】—1 arm 汇编指令
memblock
[XSS, file upload, file inclusion]
中国磷化铟晶圆行业发展前景与投资规划分析报告2022~2028年
常见的电子元器件分类介绍-唯样商城
浮点型数据在内存中存储的表示
中国认证认可服务行业“十四五”发展规划及经营模式分析报告2022~2028年
IO 复用
损失函数(第五周)
A.1#【内存管理】——1.1.2 zone: struct zone
寄存器常见指令
【IDEA】字体修改-护眼主题-文件注释头设置
自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning
003_旭日X3派初探:利用无线串口通信控制舵机
Kettle Spoon 安装配置详解