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

MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测主要完成了以下功能:1.调用不同的小波函数对图像进行小波分解;2.求解模极大值,实现固定阈值和自适应阈值的边缘提取;3.实现了全局自适应阈值的多尺度小波边缘检测;

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163780.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • python收集数据做主神_里纲_[综漫]收集数据做主神小说无防盗章节_作者忘却的悠_新书包网(www.51aslz.com)…[通俗易懂]

    python收集数据做主神_里纲_[综漫]收集数据做主神小说无防盗章节_作者忘却的悠_新书包网(www.51aslz.com)…[通俗易懂]“里包恩怎么了?”“没什么,只是在想,你做为里包恩的学生,能不能帮我个忙?”“帮忙?”纲不好意思的抓了抓头发,所有的心思都写在了脸上。什么我这么废柴能帮什么忙,虽然我很想帮忙,但是我真的什么都做不好。找里包恩本人更快吧,实在不行还有山本和狱寺他们。不过……库洛洛先生是黑手党吧?黑手党的事情,我们几个小孩子能帮什么忙呢?果然还是找里包恩比较好。能把心思在脸上表达的这么明明白白,你也算…

  • 深度学习之卷积神经网络CNN及tensorflow代码实现示例

    深度学习之卷积神经网络CNN及tensorflow代码实现示例一、CNN的引入在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连的。当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢,例如一张黑白的28×2828×28的手写数字图片,输入层的神经元就有784个,如下图所示:若在中间只使用一层隐藏层,参数ww就有784×15=11760784×15=11760多个;若输入的

  • java单例指令重排_java实现数组去重

    java单例指令重排_java实现数组去重java指令重排案例。

    2022年10月17日
  • mysql字符串截取指定字符串_sql查询截取字符串

    mysql字符串截取指定字符串_sql查询截取字符串Mysql字符串截取和截取字符进行查询一、MySQL中字符串的截取MySQL中有专门的字符串截取函数:其中常用的有两种:substring_index(str,delim,count)和concat1.substring_index(str,delim,count)函数的使用较为普遍。函数括号里面的依次为:要分隔截取的字符串(如:”aaa_bbb_

  • python中for循环的用法1+2+3…+50的和_python结束for循环

    python中for循环的用法1+2+3…+50的和_python结束for循环1.一般格式range(stop)#0~stop-1range(start,stop)#start~stop-1range(start,stop,step)#start~stop-1,step表示步长注:Python中break,continue的用法与C中一致2.在enumerate中的用法enumerate()(单词意思是枚举的意思)是python中的内置函数,enumera

  • Python贪吃蛇 (完整代码+详细注释+粘贴即食)

    Python贪吃蛇 (完整代码+详细注释+粘贴即食)代码#!/usr/bin/envpython#-*-coding:utf-8-*-#author:Wangdalitime:2021年1月24日16:08:44#python实现:贪吃蛇”’游戏玩法:回车开始游戏;空格暂停游戏/继续游戏;方向键/wsad控制小蛇走向”””思路:用列表存储蛇的身体;用浅色表示身体,深色背景将身体凸显出来;蛇的移动:仔细观察,是:身体除头和尾不动、尾部消失,头部增加,所以,新添加的元素放在列表头部、删除尾部元素;游戏结束判定策略:超出

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号