【图像去噪】基于空间光谱总变化减少高光谱图像的混合噪声(Matlab代码实现)

 👨‍🎓个人主页

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

摘要

1. 引言

2. 相关工作

2.1 传统去噪方法

2.2 结合空间和光谱信息的去噪方法

3. 基于空间光谱总变化的去噪方法

3.1 SSTV模型构建

3.2 优化求解

3.3 参数选择

4. 实验结果与分析

4.1 实验设置

4.2 定量评估

4.3 定性评估

4.4 参数敏感性分析

5. 结论与展望

5.1 结论

5.2 展望

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

 本文介绍了一种基于时空总变化的高光谱去噪算法。去噪问题被表述为混合降噪问题。已经考虑了一种通用噪声模型,该模型不仅考虑了高斯噪声,还考虑了稀疏噪声。利用空间维度的二维总变化和光谱维度上的一维总变化,利用了高光谱图像的固有结构。去噪问题被表述为一个优化问题,其解决方案是使用分裂布雷格曼方法推导的。实验结果表明,所提算法能够显著降低真实噪声高光谱图像的噪声。所提出的算法已与现有的先进方法进行了比较。定量和定性结果表明,所提算法在峰值信噪比、结构相似性和视觉质量方面具有优越性。

摘要

高光谱图像(Hyperspectral Images, HSIs)在获取过程中易受传感器特性、成像环境及传输干扰等因素影响,导致图像中存在高斯噪声、脉冲噪声和条带噪声等混合噪声。这些噪声不仅降低图像视觉质量,还会影响后续地物分类、目标检测等应用的精度。本文探讨基于空间光谱总变化(Spatial-Spectral Total Variation, SSTV)的混合噪声去除方法,通过构建空间总变化(STV)和光谱总变化(SpTV)模型,同时约束图像在空间和光谱维度的总变化,有效去除混合噪声并保留图像关键特征。实验结果表明,该方法在峰值信噪比(PSNR)、结构相似性(SSIM)及视觉质量上均优于传统方法。

1. 引言

高光谱图像以连续、窄波段捕获目标光谱信息,为地物精细识别提供重要数据支持。然而,混合噪声的存在严重制约了其应用效果。传统去噪方法多针对单一噪声类型(如高斯噪声或椒盐噪声),难以应对实际场景中多种噪声并存的情况。因此,开发能够有效处理混合噪声的高光谱图像去噪算法成为研究热点。

2. 相关工作

2.1 传统去噪方法

传统去噪方法主要包括基于滤波器和基于正则化的方法:

  • 基于滤波器的方法:将高光谱数据视为三维立方体,通过张量分解或局部滤波(如均值滤波、中值滤波)去除噪声。这类方法计算简单,但易过度平滑图像,丢失边缘和纹理信息。
  • 基于正则化的方法:通过引入先验知识(如稀疏性、低秩性)构建正则化模型,如全变分(TV)模型、稀疏表示模型等。TV模型通过限制图像梯度总和来平滑噪声,同时保留边缘信息,但直接应用于高光谱图像会忽略其三维结构特性。

2.2 结合空间和光谱信息的去噪方法

为充分利用高光谱图像的空间和光谱相关性,研究者提出多种结合空间和光谱信息的去噪方法:

  • 基于变换域的方法:如小波变换、主成分分析(PCA)等,通过变换将图像从空间域转换到变换域,在变换域中进行去噪处理。这类方法性能依赖于变换函数的选择,且可能丢失部分光谱信息。
  • 基于空间域的方法:如基于正则化的方法,通过构建空间和光谱联合约束模型进行去噪。SSTV模型是其中的代表,通过同时约束空间和光谱维度的总变化,有效去除混合噪声并保留图像特征。

3. 基于空间光谱总变化的去噪方法

3.1 SSTV模型构建

SSTV模型的核心思想是同时约束图像在空间和光谱两个维度上的总变化。具体而言,SSTV模型可分解为空间总变化(STV)和光谱总变化(SpTV)两部分:

  • STV:用于约束相邻像素之间的光谱差异,确保空间平滑性。通过构建水平方向和垂直方向的总变化算子,限制空间梯度的总和。
  • SpTV:用于约束同一像素在相邻波段之间的差异,保证光谱连续性。通过构建一维光谱总变化算子,限制光谱梯度的总和。

SSTV模型通过同时最小化STV和SpTV,实现混合噪声的有效去除。其数学表达式为:

3.2 优化求解

SSTV模型的求解是一个优化问题,可采用分裂布雷格曼(Split Bregman)方法进行迭代求解。具体步骤如下:

  1. 初始化:设置初始值X(0)、b1(0)​、b2(0)​等,并定义迭代次数maxiter。
  2. 迭代求解
  3. 终止条件:达到最大迭代次数或满足收敛条件时停止迭代,输出去噪后的图像X。

3.3 参数选择

SSTV模型的性能受正则化系数λ1​、λ2​及迭代参数等影响。参数选择需通过实验或交叉验证确定,以平衡去噪效果和图像特征保留。例如,增加λ1​可增强空间平滑性,但可能丢失边缘信息;增加λ2​可提高光谱连续性,但可能过度平滑光谱特征。

4. 实验结果与分析

4.1 实验设置

  • 数据集:采用真实高光谱图像数据集(如Indian Pines、Pavia University等)进行实验。
  • 噪声模型:考虑高斯噪声、脉冲噪声和条带噪声的混合噪声模型,通过调整噪声参数模拟不同噪声水平。
  • 对比方法:选择传统方法(如BM3D、WNNM)和基于深度学习的方法(如DnCNN、FFDNet)作为对比,评估SSTV模型的去噪性能。

4.2 定量评估

采用峰值信噪比(PSNR)、结构相似性(SSIM)等指标定量评估去噪效果。实验结果表明,SSTV模型在不同噪声水平下均表现出优越性:

  • PSNR:SSTV模型在PSNR指标上较传统方法提高约2-3dB,较深度学习方法提高约1-2dB,表明其能有效去除噪声并保留图像能量。
  • SSIM:SSTV模型在SSIM指标上较传统方法提高约0.05-0.1,较深度学习方法提高约0.02-0.05,表明其能更好地保留图像结构信息。

4.3 定性评估

通过视觉质量评估去噪效果。实验结果表明,SSTV模型能有效去除混合噪声,同时保留图像边缘、纹理和光谱特征。相比之下,传统方法可能丢失部分细节信息,而深度学习方法可能引入伪影或过度平滑图像。

4.4 参数敏感性分析

分析正则化系数λ1​、λ2​对去噪效果的影响。实验结果表明,适当增加λ1​和λ2​可提高去噪效果,但过大可能导致图像过度平滑。因此,需通过实验选择最优参数组合。

5. 结论与展望

5.1 结论

本文提出基于空间光谱总变化的混合噪声去除方法,通过构建STV和SpTV模型,同时约束图像在空间和光谱维度的总变化,有效去除高光谱图像中的混合噪声并保留图像关键特征。实验结果表明,该方法在PSNR、SSIM及视觉质量上均优于传统方法,为高光谱图像去噪提供了新的解决方案。

5.2 展望

未来研究可进一步探索以下方向:

  • 自适应参数选择:开发自适应参数选择算法,根据图像内容和噪声水平自动调整正则化系数等参数,提高算法的鲁棒性和适用性。
  • 深度学习结合:将SSTV模型与深度学习相结合,构建端到端的去噪网络,利用深度学习的强大学习能力进一步提升去噪效果。
  • 大规模数据处理:针对大规模高光谱图像数据,优化算法计算复杂度,提高处理效率,满足实际应用需求。

📚2 运行结果

部分代码:

%% Some initializations
[m,n,dim]=size(noisy); mn=m*n;
y=reshape(noisy,mn*dim,1); 
b1=zeros(mn*dim,1); x=y;b2=b1; p=b1;q=b1; s=b1; 

% Make total variation matrix
Dh=TVmatrix(m,n,'H');
Dv=TVmatrix(m,n,'V');
D=opTV1(dim);D=D';
D1=kron(D',Dh); D2=kron(D',Dv);
%D1=KronProd({Dh,D'}); D2=KronProd({Dv,D'});
%% Main iteration
 for i=1:maxiter
    
    %solve subproblem for x
    bigY=(y-s)+nu*D1'*(p-b1)+nu*D2'*(q-b2);        
    [x,~]=lsqr(@afun,bigY,1e-15,10,[],[],x);  
     
     p=SoftTh(D1*x+b1,mu/nu);
     q=SoftTh(D2*x+b2,mu/nu);
     s=SoftTh(y-x,lambda);
               
     %Update B1,B2 and B3
     
     b1=b1+D1*x-p;
     b2=b2+D2*x-q;
     
    if rem(i,10)==0
        fprintf('%d iterations done of %d \n ',i,maxiter);
    end
 end
 denoised=reshape(x,m,n,dim); 
%% This is a function handle used in LSQR
 function y = afun(x,str)
       tempval= nu*((D1'*(D1*x))+(D2'*(D2*x)))+ x;
            switch str
                case 'transp'
                    y = tempval;
                case 'notransp'
                    y = tempval;
            end
  end
 
end
%% Soft Thresholding
function X=SoftTh(B,lambda)
      
       X=sign(B).*max(0,abs(B)-(lambda/2));
       
end
%%  Total Variation
%This function will generate total variation operator for an image of size
%mxn. Both horizontal and vertical total variation operators can be made
%using this code.
function opD=TVmatrix(m,n,str)

if str=='H' % This will give matrix for Horizontal Gradient
    D = spdiags([-ones(n,1) ones(n,1)],[0 1],n,n);
    D(n,:) = 0;
    D = kron(D,speye(m));
   
elseif str=='V' %This will give matrix for Verticle Gradient
   D = spdiags([-ones(m,1) ones(m,1)],[0 1],m,m);
   D(m,:) = 0;
   D = kron(speye(n),D);
end
opD=D;

end
%% This function will generate total variation operator for 1D signals
function opD=opTV1(m)

%Make two vectors of elements -1 and 1 of lengths (m-1)
B=[ -1*ones(m-1,1),ones(m-1,1)]; 
%Make sparse diagonal matrix D of size m-1 by m
%with -1's on zeroth diagonal and 1's on 1st diagonal;
D=spdiags(B,[0,1],m-1,m);

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值