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

news2025/7/12 11:32:22

 👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

文献来源:

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

📚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 参考文献

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

[1]H. K. Aggarwal and A. Majumdar, "Hyperspectral Image Denoising Using Spatio-Spectral Total Variation," in IEEE Geoscience and Remote Sensing Letters, vol. 13, no. 3, pp. 442-446, March 2016, doi: 10.1109/LGRS.2016.2518218.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程的“打断”

【打断线程的三个方法】: //Thread.java public void interrupt() //t.interrupt() 打断t线程(设置t线程某给标志位ftrue,并不是打断线程的运行) public boolean isInterrupted() //t.isInterrupted() 查询打…

线程池源码解析 1.前导_FutureTask源码解析

线程池—FutureTask源码解析 简介 在学习线程池之前,需要先学习一下 FutureTask,因为线程池 submit 的结果就是 FutureTask。 那么什么是 FutureTask,其表示一个未来的任务。也就是说这个任务比较耗时,当前调用线程会阻塞拿到这…

某程序员发现 CSDN官方“漏洞”,立省¥10000+,抓紧薅吧

是一个省钱的组织!!!它叫做勤学会,CSDN 官方背书。 打开这篇博客,你首先就要面对一个问题。 勤学会到底是什么?活动?社区?还是一个名词。 今天这篇博客就从解释【勤学会】这三个字开…

【Wins+VSCode】配置C++开发环境

目录1、安装vscode2、安装中文包和c扩展包3、安装c编译工具:g4、运行代码测试5、lauch.json6、tasks.json7、问题7.1、找不到gcc任务Reference1、安装vscode 官网下载就可以了,免费的: https://code.visualstudio.com/ 2、安装中文包和c扩展…

【Java项目】讲讲我用Java爬虫获取LOL英雄数据与图片(附源码)

🚀用Java爬一下英雄联盟数据 📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 &…

【Asesprite】快速自制Tileset瓦片地图集(俯视角)

使用Aseprite软件完成一个Tileset素材的制作,用于2D游戏开发。 目录 一、基础配置 二、草地和泥土 三、导出为TileSet素材 一、基础配置 1.创建一个96x48的画布。 2.在菜单中选择View-》GridSettings。 3.设置网格宽高为16x16。 4.点击View-》Show-》Grid显…

IOS手机和车机互联自动化测试

在酷热的夏天,提前打开空调;在寒冷的冬天,提前加热座椅和方向盘。这些贴心的功能都是通过手机远程控制汽车实现的。随着汽车新四化的进程推进,类似手机和车机连接的功能必然越来越多。 作为汽车行业的工程师,我们都知道…

Jenkins 忘记登录密码解决办法

今天给大家分享下 jenkins 登录密码忘记的解决办法,方法不唯一,都能解决问题,按照自己的习惯来做更好。 1、先停止 jenkins 服务 systemctl stop jenkins 此步骤可以结合 ps -ef | grep jenkins 和 kill -9 jenkins进程号 一起解决2、找到…

简单实用的Python图像处理库Pillow

Pillow图像处理Pillow 库的安装图象处理基本知识图像的RGB 色彩模式像素阵列Image 模块打开和新建混合透明度混合处理遮罩混合处理复制和缩放复制图像缩放像素缩放图像粘贴和裁剪粘贴裁剪图像图像旋转格式转换covert()transpose()分离和合并分离合并滤镜其他内置函数ImageFilte…

A Blockchain-Driven IIoT Traffic Classification Service for Edge Computing 论文学习

A Blockchain-Driven IIoT Traffic Classification Service for Edge Computing IEEE INTERNET OF THINGS JOURNAL,2021 文章目录A Blockchain-Driven IIoT Traffic Classification Service for Edge ComputingSummaryResearch Objective(s)Background / Problem S…

用Canvas绘制一个数字键盘

Hello啊老铁们,这篇文章还是阐述自定义View相关的内容,用Canvas轻轻松松搞一个数字键盘,本身没什么难度,这种效果实现的方式也是多种多样,这篇只是其中的一种,要说本篇有什么特别之处,可能就是纯…

OpenGL 灰度图

目录 一.OpenGL 灰度图 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 灰度图 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 &…

振弦采集模块AABB 通讯协议

振弦采集模块AABB 通讯协议 AABB 通讯协议是一种非标准自定义协议, 相较于 MODBUS 通讯协议,结构更简单,指令生成方法更容易,便于进行快速测试。 AABB 通讯协议支持单寄存器读写两种指令。 ( 1) 读取单个寄…

《Care Bears 爱心熊》人物化身来到 The Sandbox 元宇宙!

无论你想要快乐、和谐、幸运还是温暖,都会有一个适合你的爱心熊人物化身!🐻 想成为一只爱心熊吗? 《爱心熊》作品集是由 3060 个独特的 The Sandbox 人物化身组成的作品集,可在欢快而多彩的元宇宙世界中玩耍。每个人物…

【Linux】软件包管理器yum和编辑器vim(内附动图)

大家好我是沐曦希💕 文章目录1.Linux 软件包管理器 yum1.1 什么是软件包1.2 第一个软件rzsz2.Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 命令模式2.3.1 光标定位2.3.2 文本复制2.4 插入模式2.5 底行模式2.5.1 调用和取消行号2.5.2 底行&#xff01…

Node.js | 详解 Cookie-Session登录验证 的工作原理

🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 🖥️ 本系列专栏:Node.js从入门到精通 👉 你的一键三连是我更新的最大动力❤️! 📢 欢迎私信博主加入前端交流群🌹 …

Maven版本3.6.1环境配置安装

官网下载安装包配置maven环境变量配置本地仓库以及阿里云镜像官网下载安装包 下载maven安装包官网地址,解压即可使用,推荐下载apache-maven-3.6.1-bin.zip 配置maven环境变量 找到此电脑右键-->点击属性-->选择高级系统设置-->点击环境变量--&g…

EPICS记录参考--计算输出记录(calcout)

计算输出或"Calcout"记录类似于Calc记录,其增加了能够输出的特性(一个"output link"和一个"output event"),根据计算结果条件地执行它们。这种特性允许在一个EPICS数据库内实现了条件分支(例如:只在Record_B有…

BERT预训练模型学习笔记

1.Transforme 1.1 要做一件什么事 基本组成依旧是机器翻译模型中常见的Seq2Seq网络输入输出都很直观,其核心架构就是中间的网络设计了MxN,输入M,输出N 1.2 传统的RNN网络有什么问题 传统RNN是一个时序模型,下一个RNN的输入依靠…

野火FPGA入门(4):时序逻辑电路

文章目录第11讲:寄存器第12讲:阻塞赋值与非阻塞赋值第13讲:计数器第14讲:分频器:偶分频第15讲:分频器:奇分频第16讲:按键消抖组合逻辑存在竞争冒险 第11讲:寄存器 寄存…