当前位置: 首页 > news >正文

图像压缩感知的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余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

在这里插入图片描述

相关文章:

  • 外包干了3个月,技术倒退1年。。。
  • 操作系统——处理机调度
  • 如何实现一个K8S DevicePlugin?
  • 韩国服务器托管的性能及成本情况
  • Nginx使用
  • 力扣用例题:2的幂
  • 【春运抢票攻略浅析】
  • 百度统计如何添加网站获得代码?百度统计代码加在哪里?
  • 事务的隔离级别(高频面试题)
  • 【Java程序设计】【C00282】基于Springboot的校园台球厅人员与设备管理系统(有论文)
  • 解决vulhub漏洞环境下载慢卡死问题即解决docker-valhub漏洞环境下载慢的问题
  • 新茶饮“卖水人”混战:徳馨、恒鑫,谁能“卷”出新故事?
  • 邀请函 | 2024年数据技术嘉年华集结号已吹响,期待您参会!
  • Linux命令行常用命令
  • 042 继承
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 【知识碎片】第三方登录弹窗效果
  • C++类的相互关联
  • DataBase in Android
  • IndexedDB
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript创建对象的四种方式
  • JavaScript中的对象个人分享
  • JS实现简单的MVC模式开发小游戏
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP CLI应用的调试原理
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 分享一份非常强势的Android面试题
  • 简析gRPC client 连接管理
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 入手阿里云新服务器的部署NODE
  • 为什么要用IPython/Jupyter?
  • 转载:[译] 内容加速黑科技趣谈
  • 国内开源镜像站点
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (poj1.2.1)1970(筛选法模拟)
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (规划)24届春招和25届暑假实习路线准备规划
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十六)串口UART
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • /usr/bin/env: node: No such file or directory
  • @RequestMapping-占位符映射
  • [].slice.call()将类数组转化为真正的数组