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. 查看 Secret【转】

    可以通过 kubectl get secret 查看存在的 secret. 显示有两个数据条目,kubectl describe secret 查看条目的 Key: 如果还想查看 Value,可以用  ...

  2. redis cluster 添加/删除节点操作

    RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...

  3. Java并发——volatile的原理

    111 Java并发——volatile的原理

  4. python 聚类分析 k均值算法

    dataSet = [ #数据集 # 1 [0.697, 0.460], # 2 [0.774, 0.376], # 3 [0.634, 0.264], # 4 [0.608, 0.318], # 5 ...

  5. Flask—核心对象app初步理解

    前言 flask的核心对象是Flask,它定义了flask框架对于http请求的整个处理逻辑.随着服务器被启动,app被创建并初始化,那么具体的过程是这样的呢? flask的核心程序就两个: 1.we ...

  6. eshop7-mysql

    1. Mysql 安装 执行 yum -y install mysql-server 注意:(1)是否使用sudo 权限执行请根据您具体环境来决定 (2)检查是否已经安装mysql-server rp ...

  7. PHP: isset与empty的区别

    PHP的isset()函数 一般用来检测变量是否设置 功能:检测变量是否设置 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返 ...

  8. Oracle--sqlplus--常用命令

    登陆:win+R输入sqlplus即可 如果前期没有用户可以输入sqlplus /nolog  记得sqlplus后有一个空格 --格式化命令 进行数据查询时,默认的方式排版会很乱,如果我们要解决这个 ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-stop

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. POJ 3393:Lucky and Good Months by Gregorian Calendar 年+星期 模拟

    Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...