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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)

一、 实验目的


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.


把图像分解成若干个8x8的子块;

对每个子块分别作DCT变换;

保留变换后的部分系数(如原点及周围的10个系数),其余系数全部清零;

需处理后的系数使用逆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],'P1x*P2’,T’,T);
imshow(I);title(‘原始图像’);
figure;
imshow(I2);title(‘压缩后的图像’);
D=I2-I;
MSE=sum(D(😃.D(😃)/numel(I); %均方误差
PSNR=10log10(255^2/MSE); %峰值信噪比


2.


把图像分解成若干个8x8的子块;

对每个子块分别作DCT变换;

保留变换后的直流分量,将交流分量全部清零;

使用逆DCT变换,得到新的图像,观察图片变化,并与1中的实验结果进行比较,给出结论。

因为2中的实验,只保留了直流分量,也即左上角的(1,1)那个信息值,其他的都被置位0,因此信息量保存的较少


3.


直接对整张原图像做DCT变换;

保留直流分量,交流分量全部清零;

再用逆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('压缩后的图像');


六、实验截图


0a2653c851af460fa595bd959398a8f1.png0eacb84100b54626af849e6b562bf92a.png2d65d23f6d4748949b924e4057485923.png2e9b90b2ca334476abebe75bafe6eeaa.png


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5天前
|
存储 算法 数据安全/隐私保护
基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证
本项目基于FPGA实现图像运动模糊算法,包含横向与纵向模糊处理流程。使用Vivado 2019.2与MATLAB 2022A,通过一维卷积模拟点扩散函数,完成图像退化处理,并可在MATLAB中预览效果。
|
28天前
基于MATLAB实现机器视觉中通过单幅图像实现测量长度面积
基于MATLAB实现机器视觉中通过单幅图像实现测量长度面积
80 1
|
1月前
|
算法 数据安全/隐私保护
基于混沌加密的遥感图像加密算法matlab仿真
本项目实现了一种基于混沌加密的遥感图像加密算法MATLAB仿真(测试版本:MATLAB2022A)。通过Logistic映射与Baker映射生成混沌序列,对遥感图像进行加密和解密处理。程序分析了加解密后图像的直方图、像素相关性、信息熵及解密图像质量等指标。结果显示,加密图像具有良好的随机性和安全性,能有效保护遥感图像中的敏感信息。该算法适用于军事、环境监测等领域,具备加密速度快、密钥空间大、安全性高的特点。
|
1月前
|
存储 算法 数据安全/隐私保护
基于DNA算法的遥感图像加解密matlab仿真
本程序基于DNA算法实现遥感图像加密与解密,利用DNA分子双螺旋结构和碱基配对规则完成信息编码。主要步骤包括图像预处理、DNA编码、DNA操作(杂交、酶切、连接)及密钥生成管理。通过直方图、相关性、熵和解密后图像质量分析验证效果。程序在MATLAB2022A版本运行,具有高效性和安全性,但需解决操作准确性与密钥管理复杂性等挑战。
|
3月前
|
算法 安全 数据安全/隐私保护
基于AES的遥感图像加密算法matlab仿真
本程序基于MATLAB 2022a实现,采用AES算法对遥感图像进行加密与解密。主要步骤包括:将彩色图像灰度化并重置大小为256×256像素,通过AES的字节替换、行移位、列混合及轮密钥加等操作完成加密,随后进行解密并验证图像质量(如PSNR值)。实验结果展示了原图、加密图和解密图,分析了图像直方图、相关性及熵的变化,确保加密安全性与解密后图像质量。该方法适用于保护遥感图像中的敏感信息,在军事、环境监测等领域具有重要应用价值。
149 35
|
1月前
|
算法 安全 数据安全/隐私保护
基于AES的图像加解密算法matlab仿真,带GUI界面
本程序基于AES算法实现图像的加解密功能,并提供MATLAB GUI界面操作,支持加密与解密。运行环境为MATLAB 2022A,测试结果无水印。核心代码通过按钮回调函数完成AES加密与解密流程,包括字节替换、行移位、列混淆及密钥加等步骤。解密过程为加密逆向操作,确保数据安全性与完整性。完整程序结合128位块加密与可选密钥长度,适用于图像信息安全场景。
|
2月前
|
机器学习/深度学习 数据采集 算法
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
|
3月前
|
算法 安全 数据安全/隐私保护
基于指纹图像的数据隐藏和提取matlab仿真
本内容介绍了一种基于指纹图像的数据隐藏算法,利用指纹的个体差异性和稳定性实现信息嵌入。完整程序运行无水印,基于Matlab2022a开发。指纹图像由脊线和谷线组成,其灰度特性及纹理复杂性为数据隐藏提供可能,但也受噪声影响。核心代码附详细中文注释与操作视频,适合研究数字版权保护、秘密通信等领域应用。
|
5月前
|
算法 数据安全/隐私保护
基于信息论的高动态范围图像评价算法matlab仿真
本项目基于信息论开发了一种高动态范围(HDR)图像评价算法,并通过MATLAB 2022A进行仿真。该算法利用自然图像的概率模型,研究图像熵与成像动态范围的关系,提出了理想成像动态范围的计算公式。核心程序实现了图像裁剪处理、熵计算等功能,展示了图像熵与动态范围之间的关系。测试结果显示,在[μ-3σ, μ+3σ]区间内图像熵趋于稳定,表明系统动态范围足以对景物成像。此外,还探讨了HDR图像亮度和对比度对图像质量的影响,为HDR图像评价提供了理论基础。
|
5月前
|
监控 算法 自动驾驶
基于图像形态学处理的移动物体目标跟踪和质心提取matlab仿真,带GUI界面
本项目展示了一种基于图像形态学处理的移动物体目标跟踪和质心提取算法。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释及操作视频。算法通过多帧图像像素值求平均、中值法或高斯混合模型估计背景,结合形态学处理(开闭运算、阈值处理)去除噪声并优化目标检测,提高准确性。颜色直方图匹配用于目标跟踪,结构元素膨胀操作扩大搜索范围,增强鲁棒性。

热门文章

最新文章