首页 > 编程语言 >基于DCT变换和ZigZag的图像压缩算法matlab性能仿真,仿真输出不同压缩率与图像质量的关系

基于DCT变换和ZigZag的图像压缩算法matlab性能仿真,仿真输出不同压缩率与图像质量的关系

时间:2023-06-22 23:00:45浏览次数:35  
标签:仿真 量化 压缩算法 图像 Cb Cr DCT 压缩率

1.算法仿真效果

matlab2022a仿真结果如下:

 

2.算法涉及理论知识概要

       图像压缩是一种广泛应用的技术,它能够在不影响图像质量的前提下,减少图像所占用的存储空间。本文将介绍一种基于离散余弦变换(Discrete Cosine Transform,简称DCT)和ZigZag扫描的图像压缩算法,并探讨不同压缩率与图像质量的关系。

 

离散余弦变换(DCT)

离散余弦变换(DCT)是一种线性变换,具有良好的能量聚集性能。在图像压缩领域,DCT用于将图像数据从空间域转换到频率域。具体来说,DCT将图像中每个像素的强度值转换为一组系数,这组系数表示图像的频率特征。

ZigZag扫描

     为了进一步压缩DCT变换后的系数,通常需要对系数进行量化。量化是一种有损压缩过程,它将连续的系数值映射到离散的集合中。在量化过程中,高频系数(表示图像细节信息)的精度通常会降低,而低频系数(表示图像大致结构)的精度保持相对较高。

 

      在量化之后,还需要对系数进行重新排列以提高压缩效果。ZigZag扫描是一种常用的重新排列方法,它按照对角线的顺序遍历DCT系数矩阵。ZigZag扫描的目的是将系数按照能量从高到低的顺序排列,以便后续的编码过程能够更好地利用系数之间的相关性。

 

压缩过程

基于DCT变换和ZigZag扫描的图像压缩算法可以分为以下几个步骤:

 

将输入图像分割成8x8的小块;

对每个8x8的小块应用离散余弦变换(DCT);

对DCT变换后的系数进行量化;

使用ZigZag扫描对量化后的系数进行重新排列;

应用熵编码(例如哈夫曼编码)对重新排列后的系数进行编码;

将编码后的数据存储为压缩文件。

不同压缩率与图像质量的关系

        在基于DCT变换和ZigZag扫描的图像压缩算法中,压缩率主要受量化过程的影响。量化表是量化过程中的关键参数,它定义了量化的精度。量化表中的每个元素对应于一个DCT系数,其值表示该系数的量化步长。通过调整量化表中的元素值,可以实现不同的压缩率。具体来说,增大量化表中的值将导致更高的压缩率,但同时也会降低图像质量;降低量化表中的值将导致更低的压缩率,但可以保持较高的图像质量。

 

      当压缩率较低时,量化过程对图像质量的影响较小,因此压缩后的图像与原始图像相似度较高。但随着压缩率的增加,量化过程对高频系数(表示图像细节信息)的损失会更加严重,导致图像质量下降。在极端情况下,高压缩率可能导致图像失去大部分细节信息,仅保留大致的结构。

 

       为了定量衡量压缩后的图像质量,可以使用诸如峰值信噪比(Peak Signal-to-Noise Ratio,简称PSNR)和结构相似性指数(Structural Similarity Index,简称SSIM)等指标。PSNR是一种基于像素值误差的指标,它衡量了压缩后的图像与原始图像之间的差异程度。SSIM则是一种基于图像结构的指标,它度量了压缩后的图像在结构、亮度和对比度等方面与原始图像的相似性。

 

      在实际应用中,不同压缩率与图像质量的权衡取决于具体的需求。例如,在对存储空间要求较高的场景下,可以接受较高的压缩率以节省存储空间;而在对图像质量要求较高的场景下,应选择较低的压缩率以保证图像质量。

 

3.MATLAB核心程序

 

函数[D_Y_mask,D_Cb_mask,D_Cr_mask,c1,RGB]=dct_global(I,D_Y,D_C)
 
%'区间[0,1]中图像的归一化
 
RGB=双(I)/255;
 
%颜色空间转换
 
YCbCr=rgb2ycbcr(RGB);
 
 
 
Y=YCbCr(:,:,1);
 
Cb=YCbCr(:,:,2);
 
Cr=YCbCr(:,:,3);
 
 
 
D_Y=dct2(Y);%DCT变换-Y通道
D_Cb=dct2(Cb);%DCT变换-Cb通道
D_Cr=dct2(Cr);%DCT变换-Cr通道
 
 
 
sc=0.5;%比例因子
D_Y_log=sc*log10(1+abs(D_Y));
[fx,fy]=频率空间(大小(D_Y));
 
 
 
 
sc=0.5;%比例因子
D_Cb_log=sc*log10(1+abs(D_Cb));
[fx,fy]=频率空间(大小(D_Cb));
%图(5),网格(fx,fy,D_Cb_log);
 
 
sc=0.5;%比例因子
D_Cr_log=sc*log10(1+abs(D_Cr));
[fx,fy]=频率空间(大小(D_Cr));
 
 
[r,c]=尺寸(Y);
rc=最小值(r,c);
m_Y=fliplr(triu(一个(r,c),圆(c-d_Y*rc));
 
 
D_Y_掩码=D_Y.*m_Y;
m_C=fliplr(triu(ones(r,C),round(C-d_C*rc));
 
D_Cb_mask=D_Cb.*m_C;%Cb通道上的掩模应用
D_Cr_mask=D_Cr.*m_C;%Cr通道上的掩模应用
a1(:,:,1)=D_Y_掩码;%在矩阵列中放置遮罩
a1(:,:,2)=D_Cb_mask;
a1(:,:,3)=D_Cr_mask;
c1=nnz(a1);

 

  

 

标签:仿真,量化,压缩算法,图像,Cb,Cr,DCT,压缩率
From: https://www.cnblogs.com/51matlab/p/17498524.html

相关文章

  • 基于PCA降维的交通标志训练和识别算法matlab仿真
    1.算法理论概述      交通标志识别一直是计算机视觉和机器学习领域的研究热点之一。PCA(PrincipalComponentAnalysis)降维算法是一种常用的特征提取方法,可以将高维数据降低到低维空间中。本文介绍一种基于PCA降维的交通标志训练和识别算法,该算法可以从交通标志图像中提取......
  • 【Ansys电磁仿真1】
    【1】参考来源:基础框架搭的很好的博主:https://space.bilibili.com/647209101【2】很简单但是第一次学千万不要跳过的部分认识界面:     几何(三维)建模基础:建立对象的层次关系:先选择后操作,实体面体线体各自能接受的操作不完全相同。(为求解域添加外部激励时选......
  • 对已有YOLO加速模块进行Layer0仿真
    对已有YOLO加速模块进行Layer0仿真#Layer0仿真模块##输入数据-从文本文件中读取-每个通道144个8位数据-文件名如下:-layer0_txt/r_data.txt-layer0_txt/g_data.txt-layer0_txt/b_data.txt-layer0_txt/layer0_leakyrelu.txt-layer0_txt/la......
  • 基于神经网络的大模型在图像识别中的应用
    目录1.引言2.技术原理及概念3.实现步骤与流程4.示例与应用5.优化与改进6.结论与展望随着深度学习技术的不断发展,特别是在计算机视觉领域,基于神经网络的大模型在图像识别中的应用越来越广泛。这些模型能够在处理大量图像数据的同时,准确地识别出各种物体和场景,取得了令人瞩目的......
  • 时间序列转图像:符号递归图(Symbolic recurrence plots)(matlab版复现)
    符号递归图(Symbolicrecurrenceplots):是一种以为时间序列转图像技术,可用于平稳和非平稳数据集;对噪声具有鲁棒性,在一定的数据变换条件下具有不变性。结合深度学习技术可以解决能源电力,水利,天气,生物医学,交通等领域的复杂模式识别和监测任务。链接:https://mbd.pub/o/bread/mbd-ZJqY......
  • 基于图像识别的虚拟现实技术:从概念到应用
    目录随着虚拟现实技术的快速发展,基于图像识别的虚拟现实技术也逐渐成为了人们关注的焦点。虚拟现实技术是一种将虚拟世界与现实世界相结合,让人们能够身临其境的体验的技术。而基于图像识别的虚拟现实技术则是通过识别图像中的特征,构建出一个虚拟世界,为用户提供更为真实的交互体验。......
  • 要将 shimgvw.dll 关联到图像文件的方式可以通过批处理来实现
    shimgvw.dll是一个系统文件,它为Windows提供了一个图像查看器程序。下面是如何使用shimgvw.dll打开图像的方法:打开运行对话框:按下Win+R组合键打开运行对话框。输入命令:在运行对话框中输入“rundll32.exeshimgvw.dll,ImageView_Fullscreen图片路径”,其中“图片路径”是要......
  • [Leetcode] 0733. 图像渲染
    733.图像渲染点击上方,跳转至leetcode题目描述有一幅以 mxn 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数sr, sc和newColor。你应该从像素 image[sr][sc] 开始对图像进行上色填充。为了完成上色工作,从......
  • Wokwi硬件在线仿真
    WokwiWoKwi是一个很酷的支持Arduino、ESP32、树莓派Pico在线仿真学习网站。尤其适合手上没有硬件的,可以用这个网站搭建电路进行仿真,接下来介绍一个Micropython+esp32+数码管的一个电路。官网,官方帮助文档支持大部分arduino框架的板子,以及micropython具体使用大家自己......
  • 深度学习助力版面分析技术,图像“还原”有方
    1.前言背景近期,2023年度视觉与学习青年学者研讨会(VisionAndLearningSEminar,VALSE)在无锡圆满落幕,此研讨会是图像视觉领域的重磅会议。作为智能文档处理领域代表的合合信息自然不会缺席,合合信息出席会议并进行智能文档处理技术研发与实践成果分享,重点介绍了其在版面分析与......