数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)

news2024/11/25 14:36:37

文章目录

  • 一、 实验目的
  • 二、 实验原理
    • 1.图像压缩基本概念及原理
      • (1)无损压缩编码种类
      • (2)有损压缩编码种类
      • (3)混合编码
    • 2. JPEG压缩编码原理
      • (1)使用正向离散余弦变换(forward discrete cosine transform,FDCT)把空间域表示的图变换成频率域表示的图。
      • (2)使用加权函数对DCT系数进行量化,该加权函数使得压缩效果对于人的视觉系统最佳。
      • (3)使用霍夫曼可变字长编码器对量化系数进行编码。
    • 3.离散余弦变换(DCT)变换原理
    • 4.图象质量评价
  • 三、实验内容及步骤
    • 1.
    • 2.
    • 3.
    • 4.
  • 四、撰写实验报告填写:
  • 五、代码展示
  • 六、实验截图

一、 实验目的

1.了解有关数字图像压缩的基本概念,了解几种常用的图像压缩编码方式;
2.进一步熟悉JPEG编码与离散余弦变换(DCT)变换的原理及含义;
3.掌握编程实现离散余弦变换(DCT)变换及JPEG编码的方法;
4.对重建图像的质量进行评价。

二、 实验原理

1.图像压缩基本概念及原理

图像压缩主要目的是为了节省存储空间,增加传输速度。图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:

(1)无损压缩编码种类

哈夫曼(Huffman)编码,算术编码,行程(RLE)编码,Lempel zev编码。

(2)有损压缩编码种类

预测编码,DPCM,运动补偿;
频率域方法:正交变换编码(如DCT),子带编码;
空间域方法:统计分块编码;
模型方法:分形编码,模型基编码;
基于重要性:滤波,子采样,比特分配,向量量化;

(3)混合编码

JBIG,H.261,JPEG,MPEG等技术标准。

2. JPEG压缩编码原理

JPEG是一个应用广泛的静态图像数据压缩标准,其中包含两种压缩算法(DCT和DPCM),并考虑了人眼的视觉特性,在量化和无损压缩编码方面综合权衡,达到较大的压缩比(25:1以上)。JPEG既适用于灰度图像也适用于彩色图像。其中最常用的是基于DCT变换的顺序式模式,又称为基本系统。JPEG 的压缩编码大致分成三个步骤:

(1)使用正向离散余弦变换(forward discrete cosine transform,FDCT)把空间域表示的图变换成频率域表示的图。

(2)使用加权函数对DCT系数进行量化,该加权函数使得压缩效果对于人的视觉系统最佳。

(3)使用霍夫曼可变字长编码器对量化系数进行编码。

3.离散余弦变换(DCT)变换原理

离散余弦变换(DCT)是一种实数域变换,其变换核为实数余弦函数,图像处理运用的是二维离散余弦变换,对图像进行DCT,可以使得图像的重要可视信息都集中在DCT的一小部分系数中。 经DCT 变换之后,为变换矩阵。是直流分量,其他为交流分量。变换系数矩阵为正交阵。
这里我们只讨论两个N相等的情况,即图像为方形(行列数相等),在实际应用中对不是方阵的数据都应先补齐再进行变换的。

4.图象质量评价

保真度准则是压缩后图象质量评价的标准。
客观保真度准则:原图象和压缩图象之间的均方根误差或压缩后图象的均方根信噪比。
主观保真度准则:极好、良好、通过、勉强、低劣、不能用。
客观保真度准则:新旧图像的均方误差;峰值信噪比

三、实验内容及步骤

本实验主要采用MATLAB程序实现DCT变换及JPEG压缩编码。
读取一张大小为512x512(或256x256)的灰度图像(或彩色图像,并将其灰度化),分别按照以下要求进行完成实验内容。

1.

  1. 把图像分解成若干个8x8的子块;
  2. 对每个子块分别作DCT变换;
  3. 保留变换后的部分系数(如原点及周围的10个系数),其余系数全部清零;
  4. 需处理后的系数使用逆DCT变换,得到新的图像,观察图片变化。
    参考程序:
    I=imread(‘cameraman.tif’);
    I=im2double(I);
    T=dctmtx(8);
    B=blkproc(I,[8 8],‘P1xP2’,T,T’);
    mask=[1 1 1 1 0 0 0 0
    1 1 1 0 0 0 0 0
    1 1 0 0 0 0 0 0
    1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0];
    B2=blkproc(B,[8 8],‘P1.x’,mask);
    I2=blkproc(B2,[8 8],'P1
    x*P2’,T’,T);
    imshow(I);title(‘原始图像’);
    figure;
    imshow(I2);title(‘压缩后的图像’);
    D=I2-I;
    MSE=sum(D(😃.D(😃)/numel(I); %均方误差
    PSNR=10
    log10(255^2/MSE); %峰值信噪比

2.

  1. 把图像分解成若干个8x8的子块;
  2. 对每个子块分别作DCT变换;
  3. 保留变换后的直流分量,将交流分量全部清零;
  4. 使用逆DCT变换,得到新的图像,观察图片变化,并与1中的实验结果进行比较,给出结论。
    因为2中的实验,只保留了直流分量,也即左上角的(1,1)那个信息值,其他的都被置位0,因此信息量保存的较少

3.

  1. 直接对整张原图像做DCT变换;
  2. 保留直流分量,交流分量全部清零;
  3. 再用逆DCT变换,得到新的图像,观察图片变化,注意与2中的实验结果进行比较说明。
    由于3是对整个图像做离散余弦变换并只保留直流分量,导致整体的信息量呈现交叉,而2中是先分块再保留直流分量,一定程度上,对图像信息量保留的更多

4.

1)直接对整张原图像做DCT变换;
2)根据变换后的矩阵特征,自行选择保留有限个(例如前m行n列 )交流分量的个数;
3)直到逆DCT变换以后的图像可以达到可观察的效果,与3和1中的实验结果作比较说明。
与3比较而言,因为4保留了部分交流分量,信息量较多,因此在逆变换后,效果比3要好。
与1比较而言,因为4没有进行图像分割,所以看起来比1要更加光滑

四、撰写实验报告填写:

1.给出所有程序、处理后的图像以及评价指标数据(均方误差以及峰值信噪比)。
2.根据不同处理后的图像以及统计指标数值总结频谱系数的保留个数与压缩效果的关系。(同为分块处理,保留系数的多少与MSE和PSNR的关系;保留相同的系数个数,分块和不分块处理得到的图像有什么视觉上的区别。)
相同系数的情况下,不分块的图像比分块的图像从视觉上看起来更加光滑
3.总结本次实验中出现的问题及解决方案。

五、代码展示

%% 1
I=imread('cameraman.tif');
I=im2double(I);
T=dctmtx(8);
B=blkproc(I,[8 8],'P1*x*P2',T,T');
mask=[1 1 1 1 0 0 0 0
      1 1 1 0 0 0 0 0
      1 1 0 0 0 0 0 0
      1 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I);title('原始图像');
figure;
imshow(I2);title('压缩后的图像');
D=I2-I;
MSE=sum(D(:).*D(:))/numel(I);  %均方误差
PSNR=10*log10(255^2/MSE);   %峰值信噪比

%% 2
I=imread('cameraman.tif');
I=im2double(I);
T=dctmtx(8);
B=blkproc(I,[8 8],'P1*x*P2',T,T');
mask=[1 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I);title('原始图像');
figure;
imshow(I2);title('压缩后的图像');
D=I2-I;
MSE=sum(D(:).*D(:))/numel(I);  %均方误差
PSNR=10*log10(255^2/MSE);   %峰值信噪比

%% 3
I=imread('cameraman.tif');
I=im2double(I);
B = dct2(I)
B(2:256,2:256)=0;
I1 = idct2(B);
imshow(I);title('原始图像');
figure;
imshow(I1,[]);title('压缩后的图像');

%% 4

I=imread('cameraman.tif');
I=im2double(I);
B = dct2(I)
% for i=1:256
%     for j = 1:256
%         if i >= 4 && j >= 4
%             B(i,j) = 0;
%         end
%     end
% end
B(1,5:256)=0;
B(2,4:256)=0;
B(3,3:256)=0;
B(4,2:256)=0;
B(5:end,:)=0;
I1 = idct2(B);
imshow(I);title('原始图像');
figure;
imshow(I1,[]);title('压缩后的图像');

六、实验截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

压缩与打包

压缩文件 准备工作 命令:gzip -v anaconda-ks.cfg 压缩之后,原文件删除,只有压缩文件 解压文件 解压缩之后,压缩文件删除,生成原文件 tar命令 生成打包文件 清空/tmp/part1目录 将/etc目录拷贝到/tmp/part1…

展望未来 | Google Play 与时俱进,奔赴下一个十年

作者 / Google Play 产品总监 Alex Musil对于 Google Play 来说,今年是具有里程碑意义的重要年份。不久前,我们迎来了十周年纪念,而现在,我们将展望未来十年,思考我们的平台需要怎样发展完善,与时俱进。为此…

浏览器格式化文件代码以及浏览器调试小技巧

前端开发之浏览器格式化文件代码前言效果图1、在谷歌浏览器中查看源文件2、在谷歌浏览器中的源文件点击下面的{}就会生成相应的格式话文件3、中断调试:添加断点后,当JS代码运行到断点时会中断(对于添加了中断条件的断点在符合条件时中断&…

CSS媒体查询简介及案例

文章目录一、简介二、使用方式2.1 目标2.2 import2.3 link、source等2.4 media2.5 其他三、媒体类型(Media Types)3.1 简介3.2 常见的媒体类型值3.3 已废弃媒体类型四、媒体特性(Media Features)4.1 简介4.2 常见媒体特性简介五、媒体查询 - 逻辑操作符(Logical Operators)5.1 …

金色传说:SAP-QM-周期性检验:MSC1N/MSC2N/MSC3N下一次检验日期逻辑问题

文章目录前言一、实现方案二、收货测试1.建立生产订单2.触发周期检验前言 物料在存储过程中,通常会有定期检验,也叫周期性检验的需求,这里给大家分享下周期性检验的实现过程。 一、实现方案 1.首先要在TCode:MM02-质量管理视图中…

数据结构的起航,用C语言实现一个简约却不简单的顺序表!(零基础也能看懂)

目录 0.前言 1.线性表 2.顺序表 2.1什么是顺序表 2.2 顺序表结构体设计 2.3 顺序表的初始化 2.4 顺序表的销毁 2.5* 顺序表的尾插 2.6* 顺序表的尾删 2.7 顺序表的头插 2.8 顺序表的头删 2.9 顺序表的查找 2.10 顺序表的插入(任意位置) 2.11…

载药磷酸钙纳米粒子;载药阿奇霉素纳米粒子;载药酪蛋白纳米粒子

产品名称:载药磷酸钙纳米粒子;载药阿奇霉素纳米粒子;载药酪蛋白纳米粒子 英文名称:Drug loaded calcium phosphate nanoparticles; Azithromycin loaded nanoparticles; Drug loaded casein nanoparticles 描述: 磷…

C# --- 结构体

1.结构体与类的第一个区别是创建的时候使用的关键字不同 --- 结构体 struct ; 类是 class 2.结构体中不能够自定义无参构造函数,因为结构体中已经隐式包含了一个无参构造函数,这个不像类中自带无参构造函数可以被我们替代,它是无法替代的 3…

OSWE 考试总结

背景 今天,2022年12月6日,我收到了 OSWE 考试通过的邮件。至此,Offsensive Security 之旅告一段落。我拿到了 KLCP, OSCP, OSEP, OSED, OSWE, OSCE3。圆满完成三月份立下的 FLAG,没有打脸。 这里,小小总结一下 OSWE …

Apache服务深入学习篇(详细介绍)

什么是Apache? Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速…

汽车电子之功能安全介绍

功能安全介绍 1.什么是功能安全FS? 2.为什么需要功能安全? 3.认识标准《ISO26262》。 4.怎么评估ASIL 等级? 5.功能安全怎么做(措施)? 6.参考资料 1.什么是功能安全FS? (1)功能安全的发展过…

VM系列振弦采集模块频率计算与质量评定

VM系列振弦采集模块频率计算与质量评定 运用采集到的若干信号样本数据, 首先估算得到一个频率值,称为“ 伪频率值” ;然后在模块异常数据剔除算法模型中, 以寄存器 CAL_PAR1 的值作为主要判定参数, 每个采样值与伪频…

微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.3 精确查询

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构22 DSL 查询语法22.3 精确查询22.3.1 精确查询22.3.2 精确查询 - 语法22.3…

基于接口策略路由

1:ospf 配置略 设置策略路由PC1为工程部走R1-R2-PC4;PC2为财务部走R1-R3-PC4 一分类: [R1]acl 2006 [R1]rule permit source 1.1.1.2 0 [R1]acl 2007 [R1]rul permit source 1.1.1.3 0 [R1]traffic classifier caiwubu (定义组名为财务部) [R1] if-match acl…

华丰科技递交上会稿:应收账款超6亿 长虹集团与华为是股东

雷递网 雷建平 12月6日四川华丰科技股份有限公司(简称:“华丰科技”)日前递交上会稿,准备在科创板上市。华丰科技计划募资4.76亿元。其中,2.79亿元用于绵阳产业化基地扩建项目,9636.77万元用于研发创新中心…

GeoGebra 與數學探索 1 GeoGebra 入門到進階之整體介紹

Goal: GeoGebra 除了可以輕鬆的讓我們以即時動態反饋圖形的方式模擬探索幾何的問題, 或是幫我們驗證答案, 也可以進行數論、微積分、矩陣等等各方面的探索, 在問題尺度不大又需要即時以圖像視覺呈現探索過程的情況下, GeoGebra 其實優於以寫程式的方式進行探索. “Talk is che…

【Windows篇】Telnet指令介绍以及telnet测试端口连接示例

演示环境 1.VMware Workstation16虚拟机 2.windows10企业版镜像 前言 Telnet是Internet远程登录服务的标准协议和主要方式,最初由ARPANET开发,现在主要用于Internet会话,它的基本功能是允许用户登录进入远程主机系统。telnet程序是基于TELN…

CleanMyMac2023一键清除垃圾缓存和恶意广告插件 时刻保持Mac畅快运行

CleanMyMac 是一款功能强大的 Mac 清理程序、加速工具和健康护卫,旨在让您的 Mac 重新展现强劲性能。点按一下,即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下,即可运行所有任务,让您的 …

电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 ​ 📋📋📋本文目录如下:⛳️⛳️⛳️ ​ 目录 ​ 1 概述 2 电力系统潮流计…

HTML期末作业——基于html实现娱乐音乐资讯发布平台HTML模板(22页面)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…