https://blog.csdn.net/alwaystry/article/details/52756051

图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波

2018年11月30日 01:49:25 芥末酱- 阅读数:720
 
 版权声明:不允许转载本博客文章,否则违版必究。 https://blog.csdn.net/weixin_42346564/article/details/84642513

matlab设计:

与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高

小波变换:

示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度与频率成反比。在时频两域都具有表征信号局部特征的能力,其在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,所以被誉为分析信号的数字显微镜。

小波变换与傅里叶变换对比的优点:短时傅立叶分析是把一个短时间的窗函数加在信号上,再对这一部分加窗的信号做傅立叶变换,当然,假定了在短时间内信号是平稳的。然后移动窗函数,对整个时间轴上的信号做短时傅立叶分析。但是,又有问题出现了,短时傅立叶分析一旦确定了窗函数,窗函数的形状便不再改变,于是短时傅立叶分析对于信号的时频分辨率也随之确定。

而我们希望稍微智能一点,即对于变化剧烈的信号,时间分辨率能高一点,频率分辨率可以降低,而对于变化平坦的信号,频率分辨率要高一些,时间分辨率可以低点。于是小波分析便产生了。

小波分析同样对信号在一短时间内做加窗(小波函数)分析,只是这个窗,即小波函数既可以在时间轴上移动,又可以伸缩,伸缩便意味着时频分辨率的改变。

小波变换的物理表现:分解的结果是产生长度减半的两个部分,一个是经低通滤波器产生的原始信号的平滑部分,另一个则是经高通滤波器产生的原始信号细节部分。

不同j所确定的频带是独立的,随j变化相互独立的频带覆盖了整个频率轴,分辨率j反应了频带的位置和带宽把信号分解到一系列相互独立的频带上分辨率j-1时的近似信号=f(x)在分辨率为j时的近似部分+细节部分

再对低频部分进行相似运算

3、小波变换在matlab中的使用

[C, S] = wavedec2(x, n, wname); % 对图像进行小波分解

小波变换的层数选择:通常分解层数过多,并且对所有的各层小波空间的系数都进行阈值处理会造成信号的信息丢失严重,去噪后的信噪比反而下降,同时导致运算量增大,使处理变慢.

分解层数过少则去噪效果不理想,信噪比提高不多,但不会出现信噪比下降的情况.

小波函数的选取:按常理选取了sym4

[C,S]的含义:C=[A(n)|H(n)|D(n)|………H(1)|V(1)|D(1)]

h ,v ,d 分别反映水平、垂直、对角线方向

S(1,:)=size of approximation coefficients(n)

部分程序运行:原始图像→加噪图像(同时加入高斯噪声和椒盐噪声)→小波分解后的图像显示

.M=imread('detfinger1.png');

%读取MATLAB中的名为detfinger的图像  分辨率:512×512

subplot(1,2,1)

imshow(M);           %显示原始图像

title('原始图像')

P1=imnoise(M,'gaussian',0.02);

%加入高斯躁声,方差为0.02的高斯噪声

P2=imnoise(P1,'salt &pepper',0.02);

%同时加入高斯噪声和椒盐躁声

subplot(1,2,2)

imshow(P2);%加入椒盐躁声后显示图像

title('加入高斯椒盐躁声后');

%%对加入高斯噪声的图像进行小波分解

P2=double(P2);

[CA,CH,CV,CD]= dwt2(P2,'db1 ');

y =[CA,CH;CV,CD];

y=uint8(y);

subplot(3,1,3);

imshow(y);

title('小波分解');

4、滤波器的特性

我的思路:先了解维纳滤波器的原理再进一步改进,理解自适应滤波器,进行自适应滤波器的设计,再进行自适应滤波器的组合设计,从而实现去噪功能

维纳滤波器:根据平稳随机信号的全部过去和当前的观察数据来估计信号的当前值,在最小均方误差的条件下得到系统的传递函数,参数是固定的,适用于平稳随机信号。

卡尔曼滤波器:根据当前时刻数据的观测值和前一时刻对该一时刻的预测值进行递推数据。它自动调节本身的冲击响应特性(自动调节数字滤波器的系数),以适应信号变化的特性,从而达到最优化滤波。它的参数是时变的,适用于非平稳随机信号。

这两种滤波器最优滤波的条件:噪声的统计特性先验已知

但实际应用中,常常无法得到这些统计特征的先验知识(统计特性是随时间变化的),因此实现不了最优滤波。

自适应滤波器:无法得到一些统计特性的先验知识(统计特性随时间变化)

而自适应滤波器在输入信号统计特性未知或者统计特性变化时,能够自动调节自身的参数,使其按照某种准则达到最优滤波。由于自适应滤波器具有这种特性,自提出以来,在实际工程中的众多领域得到了广泛应用。

5、如何设计和建立自适应滤波器

自适应滤波器工作原理是:系统能够按照某种算法自动调节权系数,使其实际输出和期望输出的均方误差达到最小值。

自适应滤波器的结构:有FIR和IIR两种。由于IIR滤波器存在稳定性的问题,因此一般采用FIR滤波器。由于FIR滤波器横向结构的算法具有容易实现和计算量少等优点,在对收敛速度不是很快的场合,多采用FIR作为自适应滤波器结构。


自适应滤波算法:

自适应滤波器的核心部分就是自适应滤波算法,基于不同的准则,最常用的自适应滤波算法是LMS算法和RLS算法,LMS算法以最小均方误差为准则,而RLS算法(递归最小二乘算法)以最小误差平方和为准则。

LMS算法由于其具有计算量小,稳定性好,易于实现等优点,被广泛使用。

LMS算法中均方误差表示为:

使均方误差达到最小值时,得到最佳权系数w*,应满足下列方程:在实际中,LMS 迭代算法是以最速下降法为原则进行的,用公式表示为:

式中,u 是自适应步长;   ( n) 为迭代的梯度。

这里来估计均方误差 MSE 的梯度,并以此梯度估计值代替最速下降法中理论情况下的梯度真值,LMS( 最小均方) 算法进行梯度估计的方法是以误差信号的每一次迭代的瞬间时平方值代替其均方值,并以此来估计梯度。

在自适应滤波器的设计过程中,滤波器阶数 N和步长μ 等参数的选取对仿真结果的影响总结如下.

(1)自适应算法中步长 μ 的选择:μ 的大小影响算法的收敛速度。  其中,为矩阵的最大特征值μ 取值小,收敛速度慢,计算工作量大,但滤波性能较好。μ 取值大,收敛速度快,计算工作量小,滤波性能较差。但 μ 大到一定值时,收敛速度变化不明显,且取值过大,会造成计算溢出.

(2)自适应滤波器阶数 N 的影响: N 不可以任意选取,需要根据经验加上实际仿真验证比较才能最终确定.。

当阶数 N 取值大时,迭代次数增加,收敛速度变快。但当阶数 N 大到一定程度,收敛速度变化不明显,且可能引起系数迭代过程不收敛.

自适应滤波器原理:

输入信号x(n)

、参考信号d(n)、误差信号e(n)

e(n)为y(n)与d(n)的误差信号,根据最小均方误差算法调节自适应滤波器算法的参数,来优化滤波器结构,从而实现尽可能地保留图像固有的信息。

LMS算法最核心的思想是用平方误差代替均方误差,基本的LMS算法为:

w(k,n+ 1)=w(k,n)+ 2μe(n)x(n-k)

其中,w(k,n)和w(k,n+ 1)分别为迭代前后的系数值;n和n+ 1为前后两个时刻;k= 0,1,

… ,N- 1,N为滤波器的阶数;μ为收敛因子;e(n)=d(n)-y(n)=d(n)-xT(n)w(n)=d(n)-wT(n)x(n)为误差信号;x(n-k)为输入信号;y(n)=xT(n)w(n)为输出信号。

6、matlab仿真

进行小波变换→  进行滤波后→  再进行图像重构→ 再小波反变换进行图像重构→先用维纳滤波器再用自适应滤波器替换

%%对加入高斯噪声的图像进行小波分解

J=double(J);

[CA,CH,CV,CD]= dwt2(J,'db1 ');

% [c,s]=wavedec2(j,1,'haar');

y =[CA,CH;CV,CD];

y=uint8(y);

subplot(2,2,3);

imshow(y);

title('小波分解');

%xx=wiener2(CA,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

yy=wiener2(CH,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

zz=wiener2(CV,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

qq=wiener2(CD,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

%%%图像重构

XX = idwt2(CA,yy,zz,qq,'db1');

XX=uint8(XX);

subplot(2,2,4);

imshow(XX);

title('重构以后的图像');

图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波的更多相关文章

  1. dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)

    dennis gabor 题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅 ...

  2. 小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现) ---转载

      1 Mallat算法 离散序列的Mallat算法分解公式如下: 其中,H(n).G(n)分别表示所选取的小波函数对应的低通和高通滤波器的抽头系数序列. 从Mallat算法的分解原理可知,分解后的序 ...

  3. gabor滤波器

    https://blog.csdn.net/u013709270/article/details/49642397 https://github.com/xuewenyuan/Gabor_Visual ...

  4. Gabor滤波器学习

    本文的目的是用C实现生成Gabor模版,并对图像卷积.并简单提一下,Gabor滤波器在纹理特征提取上的应用. 一.什么是Gabor函数(以下内容含部分翻译自维基百科) 在图像处理中,Gabor函数是一 ...

  5. python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码

    参考博客:https://blog.csdn.net/xue_wenyuan/article/details/51533953 https://blog.csdn.net/jinshengtao/ar ...

  6. Gabor变换、Gabor滤波器

    D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...

  7. matlab实现gabor滤波器的几种方式

    转自:http://blog.csdn.net/watkinsong/article/details/7882443 方式一: function result = gaborKernel2d( lam ...

  8. Gabor滤波器的理解

    搬以前写的博客[2014-02-28 20:03] 关于Gabor滤波器是如何提取出特征点,这个过程真是煎熬.看各种文章,结合百度.文章内部的分析才有一点点明白. Gabor滤波器究竟是什么?   很 ...

  9. 【图像算法】图像特征:GLCM灰度共生矩阵,纹理特征

    [图像算法]图像特征:GLCM SkySeraph Aug 27th 2011  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modifie ...

随机推荐

  1. 003-explode分割字符串

    <?php $str = "品牌电脑@品牌手机@高档男士衬衫@高档女士挎包"; //定义字符串常量 $str_arr = explode("@", $st ...

  2. js封装ajax

    //封装ajax function ajax(obj) { //创建xhr对象; var xhr = new XMLHttpRequest(); obj.method = obj.method.toU ...

  3. 阿里云安装配置nginx

    一.简介 Nginx是一款轻量级的网页服务器.反向代理服务器.相较于Apache.lighttpd具有占有内存少,稳定性高等优势.它最常的用途是提供反向代理服务. 二 .安装 1.准备工作 Nginx ...

  4. Git 的 4 个阶段的撤销更改

    虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握.以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完 ...

  5. Web基础之Spring MVC

    Spring MVC Spring MVC 说是框架,对Tomcat来说其实就是一个Servlet,关于如何从上古时期的Servlet演化到如今的SpringMVC的,可以看看这篇博文:Spring ...

  6. 官网英文版学习——RabbitMQ学习笔记(三)Hello World!

    参考http://www.rabbitmq.com/tutorials/tutorial-one-java.html,我们直接上代码,由于我们的RabbitMQ服务是安装在虚拟机上的,具体参考上一节. ...

  7. Docker Yearning + Inception SQL审核平台搭建

    [一]安装[1.1]系统环境系统环境:CentOS Linux release 7.6.1708 (Core)系统内存:4G系统内核:1Python:3.6.4关闭iptables and selin ...

  8. Maven的安装和创建项目的过程

    一.下载Maven包和配置环境变量 1.将下载好的maven包放到一个目录中:目录中不能有汉字和空格 2.配置环境变量 3.配置path路径 二.配置阿里云私服 1.找到setting目录,配置下载j ...

  9. Python MySQL 创建数据库

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  10. 【转】selenium技巧 - 通过js来控制滚动条,通过xpath定位最上层的div层

    http://blog.csdn.net/iceryan/article/details/8162703 业务流程:   1.打开此网页 http://nanjing.xiaomishu.com/sh ...