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

news2024/11/16 9:51:13

前面实现了

压缩感知的图像仿真(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:width
    column_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)/4

n=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 == 1
        Aug_t=T_Mat(:,pos);
    else
        Aug_t=[Aug_t,T_Mat(:,pos)];
    end
    T_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.coloradmin.cn/o/1467691.html

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

相关文章

MySQL——基础内容

目录 第01章_数据库概述 关系型数据库(RDBMS)——表、关系模型 非关系型数据库(非RDBMS) 表、记录、字段 表的关联关系 一对一关联 一对多关系 多对多 自我引用 第02章_MySQL环境搭建 登录命令 常用命令 show databases; create database use 数据库名 show tables 第03章…

2023最新简绘AI开源版支持MJ绘画,AI问答

应用介绍 本文来自:2023最新简绘AI开源版支持MJ绘画,AI问答 - 源码1688 简介: 简绘AI开源版,从闲鱼上买的,搭建教程如下 测试环境:NginxPHP7.4MySQL5.6 图片:

CentOS 中 RSYNC 同步分发脚本一键部署

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

ChatGpt的初步认知(认知搬运工)

前言 ChatGpt火了有一段时间了,对各行各业也有了一定的渗透,当然发展过程中也做了一些安全约束,今天主要是来跟大家分享下关于chatGpt的初步认知。 一、chatGpt是什么? ChatGPT,全称聊天生成预训练转换器(英…

如何利用AI产品写作高质量SEO文章

在搜索引擎优化(SEO)的过程中,我们的目标非常明确,即增加网站的流量并实现有效的转化。那么,如何才能吸引更多的用户访问网站呢?这时候,文章就成为了一个非常好的工具。用户可以通过阅读文章来了…

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x Projectpom.xmlOpenAPIConfigFileUploadControllerapplication.yaml Project pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

【科普知识】什么是电机的开环和闭环

电机是现代工业和生活中不可或缺的一部分&#xff0c;无论是电动工具、电动汽车还是工业机器人&#xff0c;都离不开电机的驱动。电机的控制系统根据有无反馈信号可以分为开环和闭环两种类型&#xff0c;这两种系统各有其特点和应用场景。 01.开环控制系统 开环控制系统是电机控…

AP引擎助力加速生产SQL运行

Rapid存储引擎简介 从GreatSQL 8.0.32-25版本开始&#xff0c;新增Rapid存储引擎&#xff0c;该引擎使得GreatSQL能满足联机分析&#xff08;OLAP&#xff09;查询请求。 Rapid引擎采用插件&#xff08;Plugin&#xff09;方式嵌入GreatSQL中&#xff0c;可以在线动态安装或卸…

(九)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - maven构建ant-framework核心代码Base封装

今天重点讲解的是ant-framework核心代码Base封装过程。 因为涉及到springmvc、mybatis的集成&#xff0c;为了使项目编码更简洁易用&#xff0c;这边将基础的BASE进行封装&#xff0c;其中包括&#xff1a;BaseBean、BaseDao、BaseService、CRUD的基础封装、分页组件的封装、m…

OSCP靶场--Nickel

OSCP靶场–Nickel 考点(1.POST方法请求信息 2.ftp&#xff0c;ssh密码复用 3.pdf文件密码爆破) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.237.99 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-22 04:06 EST Nm…

22款奔驰C260L升级小柏林音响 无损音质效果

奔驰新款C级号称奔驰轿车的小“S”&#xff0c;在配置方面上肯定也不能低的&#xff0c;提了一台低配的车型&#xff0c;通过后期升级加装件配置提升更高档次&#xff0c;打造独一无二的奔驰C级&#xff0c;此次来安排一套小柏林之声音响&#xff0c;效果怎么样&#xff0c;我们…

maven3旧版本的下载地址(含新版本)

因为现有的3.8版本与IDEA不兼容&#xff0c;我需要下载3.6版本&#xff0c;但是官网的位置非常隐蔽&#xff0c;找了很多资料才看到。故记录一下。 第一步 进入网址&#xff0c;选择需要的版本 Index of /dist/maven/maven-3 第二步 选择binaries 第三步 选择zip文件下载就可…

Nacos配置中心实战

目录 配置中心 什么是Nacos配置中心&#xff1f; SpringCloud整合Nacos配置中心 nacos server配置中心中准备配置数据 微服务接入配置中心 Config相关配置 RefreshScope实现动态感知 配置中心 在微服务架构中&#xff0c;当系统从一个单体应用&#xff0c;被拆分成分布式…

Qt应用-音乐播放器实例

本文讲解Qt音乐播放器应用实例。 实现主要功能 声音播放、暂停,拖动控制、声音大小调节; 播放列表控制; 歌词显示; 界面设计 pro文件中添加 # 播放媒体 QT += multimedia 头文件 #ifndef FRMMUSICPLAYER_H #define FRMMUSICPLAYER_H#include <QWidget> #include…

陆毅小女油画惊艳,11岁已超越王诗龄。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 陆毅假期宅家享天伦之乐&#xff0c;晒出二女儿小叶子的画作&…

wordpress免费主题模板

免费大图wordpress主题 首页是一张大图的免费wordpress主题模板。简洁实用&#xff0c;易上手。 https://www.jianzhanpress.com/?p5857 wordpress免费模板 动态效果的wordpress免费模板&#xff0c;banner是动态图片效果&#xff0c;视觉效果不错。 https://www.jianzhan…

Beyond Compare4破解方法

方式一 第一种办法&#xff08;也是最有效的&#xff09; 删除C:\Users\用户名\AppData\Roaming\Scooter Software\Beyond Compare 4下的所有文件&#xff0c;重启Beyond Compare 4即可&#xff08;注意&#xff1a;用户名下的AppData文件夹有可能会被隐藏起来) 方式二 删…

第2讲-Memory

存储系统概述 存储单元电路

万字干货-京东零售数据资产能力升级与实践

开篇 京东自营和商家自运营模式&#xff0c;以及伴随的多种运营视角、多种组合计算、多种销售属性等数据维度&#xff0c;相较于行业同等量级&#xff0c;数据处理的难度与复杂度都显著增加。如何从海量的数据模型与数据指标中提升检索数据的效率&#xff0c;降低数据存算的成…

论文阅读——SimpleClick

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