zoukankan      html  css  js  c++  java
  • 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波

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

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

     版权声明:不允许转载本博客文章,否则违版必究。 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('重构以后的图像');

  • 相关阅读:
    微信小程序中的WXS语法
    小程序 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogramRoot` 目录内
    Linux 远程连接sftp与ftp
    MySQL使用方法
    Rsync+Inotify实时同步环境部署
    inotify+rsync实时同步
    rsync备份
    C# 基于ef的2种简单的仓储封装和工作单元 net core3.1 ---sqlserver 2019
    xshell个人免费版下载使用
    Git 命令之 git add、git commit
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/10897857.html
Copyright © 2011-2022 走看看