图像压缩感知的MATLAB实现(OMP)

前面实现了

压缩感知的图像仿真(MATLAB源代码)

效果还不错,缺点是速度慢如牛。
下面我们采用OMP对其进行优化,提升速度。具体代码如下:

仿真

构建了一个MATLAB文件,所有代码都在一个源文件里面:

MATLAB实现


clc
clearvars;%------------ 读取图像 --------------
img=imread('lenagray.bmp'); % 测试图像
% img=rgb2gray(img); % 如果是彩色图像,将其转换为灰度图
img=imresize(img,[256,256]); % 调整图像大小
% img = imnoise(img, 'gaussian', noi); % 在这里添加噪声到图像中
img=double(img);
[height,width]=size(img);%------------ 形成测量矩阵和基矩阵 ---------------
Phi=randn(floor(height/3),width);  % 仅保留原始数据的三分之一
Phi = Phi * diag(1./sqrt(sum(Phi.^2, 1))); % 归一化每一列
disp(size(Phi));
mat_dct_1d=dct(eye(256,256));  % 利用内置DCT函数构建DCT基%--------- 投影 ---------
img_cs_1d=Phi*img; % 将每一列视作独立的信号处理%-------- 使用OMP恢复 ------------
sparse_rec_1d=zeros(height,width);            
Theta_1d=Phi*mat_dct_1d;
for i=1:widthcolumn_rec=cs_omp(img_cs_1d(:,i),Theta_1d,height);sparse_rec_1d(:,i)=column_rec';           % 稀疏表示
end
img_rec_1d=mat_dct_1d*sparse_rec_1d;          % 反变换恢复图像%------------ 展示结果 --------------------figure(1)
subplot(2,2,1),imshow(uint8(img)),title('原始图像')
subplot(2,2,2),imagesc(Phi),title('测量矩阵')
subplot(2,2,3),imagesc(mat_dct_1d),title('一维DCT基矩阵')
psnr = 20*log10(255/sqrt(mean((img(:)-img_rec_1d(:)).^2)))
subplot(2,2,4),imshow(uint8(img_rec_1d)),title(['一维恢复图像 PSNR:',num2str(psnr),'dB'])function hat_x=cs_omp(y,T_Mat,m)
% 用OMP算法解决 y=T_Mat*x问题,T_Mat是测量矩阵与稀疏表示基的组合
% y - 测量值
% T_Mat - 随机矩阵和稀疏表征基的组合
% m - 原始信号的大小
% 稀疏度是length(y)/4n=length(y);
s=floor(n/4);
hat_x=zeros(1,m);
Aug_t=[];
r_n=y;for times=1:s;product=abs(T_Mat'*r_n);[~,pos]=max(product);if times == 1Aug_t=T_Mat(:,pos);elseAug_t=[Aug_t,T_Mat(:,pos)];endT_Mat(:,pos)=0;aug_x=(Aug_t'*Aug_t)\(Aug_t'*y);r_n=y-Aug_t*aug_x;pos_array(times)=pos;end
hat_x(pos_array)=aug_x;
end

仿真结果

速度非常快,但是效果稍差,总体还可以。

在这里插入图片描述

参考资料

https://github.com/rasikraj01/CompressiveSensing

压缩感知基础

引言:

近年来,随着数字图像和视频应用的广泛普及,对高清图像和视频的存储和传输需求也日益增长。然而,尺寸庞大的图像和视频数据给存储和传输带来了巨大的挑战。为了解决这一问题,压缩感知(Compressed Sensing,简称CS)应运而生。压缩感知是一种基于采样和重建的新颖信号处理理论,能够用更少的采样数据还原原始信号,使图像和视频的压缩和传输变得更加高效和便捷。本文将介绍压缩感知的原理、应用以及未来发展方向。

压缩感知原理的基础:

  1. 信号稀疏性:压缩感知的原理基于信号在某个合适的域中是稀疏的,即信号可以由少量的非零系数表示。这个基于稀疏性的假设是压缩感知的关键。

  2. 随机测量矩阵:为了采样信号,压缩感知使用随机测量矩阵来获取信号的线性投影。这种投影可以通过稀疏表示的技术进行解码,从而重建原始信号。

  3. 重建算法:压缩感知中常用的重建算法有基于凸编程的优化算法、迭代阈值算法以及基于字典的算法等。这些算法通过信号的稀疏表示,使用较少的测量数据进行信号的恢复。

压缩感知在图像压缩中的应用:

  1. 图像压缩:传统的图像压缩方法使用基于采样定理的方法,需要进行大量的数据采样和重构。而压缩感知则采用随机测量,能够更有效地获取信号信息。因此,压缩感知在图像压缩中应用广泛,能够实现更高效的图像压缩和传输。

  2. 图像恢复:压缩感知不仅可以对稀疏的信号进行压缩,还可以对非稀疏信号进行重建。在图像恢复方面,它能够从极少量的采样数据中恢复出较为清晰的图像,极大地节省了图像采集和传输的成本。

压缩感知在视频压缩中的应用:

  1. 视频压缩:与图像压缩类似,压缩感知对视频压缩也具有显著的优势。传统的视频压缩方法在对每一帧进行采样和压缩时,需要大量的存储和传输带宽。而压缩感知通过对视频的时空采样,能够实现更高效的视频压缩和传输。

  2. 视频恢复:在视频传输中,由于网络带宽的限制或传输中的错误,视频信号可能会受到损坏或丢失。压缩感知技术能够在保证图像质量的同时,通过解码、重建和补偿的方法,实现对视频信号的恢复,提高了视频传输的稳定性和可靠性。

未来展望与应用挑战:

尽管压缩感知已经在图像和视频压缩领域取得了显著的成果,但仍然存在一些挑战需要克服。其中包括对不同场景和应用领域的适应性、对信号重构误差的控制、算法的实时性等问题。未来的研究方向包括进一步优化压缩感知算法、探索多模态数据的压缩感知方法以及与人工智能、机器学习等领域的结合,推动压缩感知的应用更加深入。

结论:

压缩感知作为一种新兴的信号处理理论和技术,为图像和视频的压缩和传输提供了一种全新的思路和方法。其基于信号稀疏性和随机测量矩阵的原理,使得压缩感知能够用更少的采样数据还原原始信号。在图像和视频压缩领域,压缩感知已经展现出了巨大的潜力和广阔的应用前景。然而,还需要进一步的研究和努力,以克服现有的挑战,推动压缩感知的不断发展和创新。

相关博文

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

OpenCV识别人脸案例实战

入门OpenCV:图像阈值处理

我的图书

下面两本书欢迎大家参考学习。

OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。

在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。

本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。
在这里插入图片描述

计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器,通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件,推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

政安晨:【示例演绎机器学习】(四)—— 神经网络的标量回归问题示例 (价格预测)

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正,让小伙伴们一起学习、交流进步,不论是学业还是工…

X-Rhodamine maleimide ,ROX 马来酰亚胺,实验室常用的荧光染料

您好,欢迎来到新研之家 文章关键词:X-Rhodamine maleimide ,X-Rhodamine mal,ROX-maleimide,ROX 马来酰亚胺 一、基本信息 【产品简介】:ROX, also known as Rhodamine 101, is a product whose active …

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试(1)添加相关依赖(2)新建包并在报下创建测试类(3)亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现,同时使用了数据库来…

数据结构二叉树顺序结构——堆的实现

二叉树顺序结构——堆的实现 结构体的创建以及接口函数结构体的创建堆的初始化交换函数堆的插入向上调整删除向下调整返回堆的个数返回堆顶数据判断堆是否为空 该文章以大堆作为研究对象 结构体的创建以及接口函数 typedef int HPDateType;//定义动态数组的数据类型 typedef s…

关于uniapp H5应用无法在触摸屏正常显示的处理办法

关于uniapp H5应用无法在触摸屏正常显示的处理办法 1、问题2、处理3、建议 1、问题 前几天, 客户反馈在安卓触摸大屏上无法正确打开web系统(uni-app vue3开发的h5 应用),有些页面显示不出内容。该应用在 pc 端和手机端都可以正常…

UnityWebGL 设置全屏

这是Unity导出Web默认打开的页面尺寸 修改后效果 修改 index.html 文件 1.div元素的id属性值为"unity-container",宽度和高度都设置为100%,意味着该div元素将占据整个父容器的空间。canvas元素的id属性值为"unity-canvas"&#xff…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…

Atcoder ABC340 A-D题解

比赛链接:ABC340 话不多说&#xff0c;看题。 Problem A: 签到。 #include <bits/stdc.h> using namespace std; int main(){int a,b,d;cin>>a>>b>>d;for(int ia;i<b;id)cout<<i<<endl;return 0; } Problem B: 还是签到题。一个v…

python 层次分析(AHP)

文章目录 一、算法原理二、案例分析2.1 构建指标层判断矩阵2.2 求各指标权重2.2.1 算术平均法&#xff08;和积法&#xff09;2.2.2 几何平均法&#xff08;方根法&#xff09; 2.3 一致性检验2.3.1 求解最大特征根值2.3.2 求解CI、RI、CR值2.3.3 一致性判断 2.4 分别求解方案层…

如何连接ACL认证的Redis

点击上方蓝字关注我 应用程序连接开启了ACL认证的Redis时与原先的方式有差别&#xff0c;本文介绍几种连接开启ACL认证的Redis的Redis的方法。 对于RedisACL认证相关内容&#xff0c;可以参考历史文章&#xff1a; Redis权限管理体系(一&#xff09;&#xff1a;客户端名及用户…

论文阅读——SimpleClick

SimpleClick: Interactive Image Segmentation with Simple Vision Transformers 模型直接在VIT上增加交互是分割 用VIT MAE方法训练的预训练权重 用交互式分割方法微调&#xff0c;微调流程&#xff1a; 1、在当前分割自动模拟点击&#xff0c;没有人为提供的点击 受到RITM启发…