✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
图像压缩是数字图像处理中的重要技术,它可以有效地减小图像文件的大小,从而节省存储空间和传输带宽。在图像压缩的过程中,离散余弦变换(DCT)是一种常用的方法,它可以将图像转换为频域表示,进而实现压缩。本文将介绍基于DCT的图像压缩方法,并探讨其压缩比和峰值信噪比(PNSR)的相关性。
首先,我们来了解一下离散余弦变换。DCT是一种广泛应用于信号处理和图像压缩中的变换方法,它将一个信号或图像分解为不同频率的成分。在DCT中,图像被分割成8x8的小块,每个小块都会进行DCT变换。通过DCT变换,图像中的能量集中在少量的频率分量上,这为压缩提供了可能。
基于DCT的图像压缩方法通常包括以下步骤:首先,将图像分割成8x8的小块;然后,对每个小块进行DCT变换;接着,利用量化表对DCT系数进行量化;最后,使用熵编码对量化后的系数进行编码。通过这些步骤,可以大大减小图像文件的大小,实现图像的压缩。
在图像压缩的过程中,压缩比和PNSR是两个重要的评价指标。压缩比指的是压缩前后图像文件大小的比值,它可以反映压缩效果的好坏。通常情况下,压缩比越大,表示压缩效果越好。而PNSR是衡量压缩后图像质量损失的指标,它可以通过计算原始图像和压缩后图像之间的均方误差来得到。一般来说,PNSR的数值越大,表示图像质量损失越小。
通过实验我们可以发现,压缩比和PNSR之间存在一定的关系。通常情况下,随着压缩比的增大,PNSR会逐渐减小,即图像的质量会逐渐下降。这是因为在压缩过程中,为了减小图像文件的大小,会对图像的信息进行丢失或者量化,从而导致图像质量的损失。因此,在实际应用中,需要根据具体的需求和场景来平衡压缩比和图像质量。
总之,基于离散余弦变换的图像压缩是一种常用的压缩方法,它可以有效地减小图像文件的大小,节省存储空间和传输带宽。在压缩过程中,压缩比和PNSR是两个重要的评价指标,它们之间存在一定的关系。在实际应用中,需要根据具体的需求来选择合适的压缩参数,以实现最佳的压缩效果。
📣 部分代码
%% 将图像sunflower.jpg划分为8×8块。 计算每个块的DCT。 保留每个块中最高DCT系数的前25%(相对于幅度最高),并将其他系数设置为零。 对每个块进行逆DCT,然后显示重建的图像。 计算重建误差。
clear all;
clc;
%%
%loading input image
img = imread('data\img (1).jpg');
img = rgb2gray(img);
[p,q]=size(img);
%computing dct for 8x8 blocks
for i=1:p/8
for j=1:q/8
coeffs = dct2(img(8*(i-1)+1:8*i,8*(j-1)+1:8*j));
%retaining only top 25% co-efficients by magnitude
coeffs_flatten = reshape(coeffs,[],1);
[val,ind]=sort(abs(coeffs_flatten),'descend');
coeffs(ind(17:end))=0;
%reconstructing image with most important information
reconstructed_img(8*(i-1)+1:8*i,8*(j-1)+1:8*j)=idct2(coeffs);
end
end
%plotting figures
figure()
imshow(img), title('原图');
reconstructed_img=uint8(reconstructed_img);
figure()
imshow(reconstructed_img), title('重建图像');
imwrite(reconstructed_img,'recontructed_dct.jpg');
figure()
%diff between reconstructed and original image
%the error image is scaled appropriately for proper visualization
err_img=(int8(reconstructed_img)-int8(img));
imshow(8*err_img)
%euclidean reconstruction error
err=norm(double(reconstructed_img-img))
⛳️ 运行结果
🔗 参考文献
本程序参考以下中文EI期刊,程序注释清晰,干货满满。
[1] 罗云,谢斌盛.基于MATLAB的无线传感器网络的低功耗仿真[J].信息系统工程, 2015(6):2.DOI:10.3969/j.issn.1001-2362.2015.06.012.
[2] 余秋菊.基于DCT变换的JPEG图像压缩及其MATLAB实现[J].科技信息:学术研究, 2008, 000(036):566-567.DOI:CNKI:SUN:KJXI.0.2008-36-467.