资源简介
编写一个Matlab程序,实现基于DCT的图像变换编码。
编码过程:将原始图像划分成8×8的图像块,采用离散余弦变换(DCT)对图像块进行变换。
解码过程:对于每个图像块,使用一定比例的最低频DCT系数(被舍弃的高频DCT系数设为0)做逆离散余弦变换(IDCT),得到重构的图像块。最后,将所有重构的图像块按顺序拼接成完整的解码图像。
分别取32、16、8个最低频DCT系数(如图1所示)进行反变换得到重构的图像,比较图像的质量,计算这三种情况下的峰值信噪比。
峰值信噪比的计算公式:PSNR = 10 log10 (2552/ MSE)
其中,MSE(Mean Squared Error)指原始图
代码片段和文件信息
%程序思路:
%对图像进行DCT变化有2个函数,dct()和dctmtx()
%为了对图像分块处理,使用dctmtx函数产生一个8*8的DCT变换矩阵T
%分块处理使用blkproc函数,利用T*x*T‘对每个8*8图像块x分别进行DCT变换,T‘*x*T进行IDCT变换
%进行离散余弦逆变换时,分别取32、16、8个最低频DCT系数矩阵MASK1MASK2MASK3
%使用blkpro函数分块舍弃高频DCT系数,利用M.*x
I=imread(‘lena.jpg‘‘jpg‘);%读入图片
I_double=im2double(I);%将图像转换为双精度格式
T=dctmtx(8);%生成一个8×8的DCT变换矩阵T
I_dct=blkproc(I_double[88]‘P1*x*P2‘TT‘);%对每个图像块分别进行DCT变换
MASK1=[ 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
1 1 1 1 1 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];
MASK2=[ 1 1 1 1 1 1 0 0
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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2521 2018-06-21 09:26 code.m
相关资源
- HMMforspeechrecogntion 一个可执行的HMM语音
- popular-UCI-datasets 一些非常有用的数据
- GAPSO 这个算法是遗传算法和粒子群优
- synchronization 利用matlab仿真实现载波的
- Gabor Gabor小波变换的matlab实现
- 4 matlab区域填充的具体算法及演示
- MATLAB_image_process_with_PDE 运用偏微分方
- gabijiao 该程序通过实例(函数)
- SIFT2844912
- gbvs 二维图像视觉显著性检测
- wenli 分析了纹理特征提取方法
- EELM
- barcode 基于图像的条形码识别程序(识
-
myaudiopla
yer 使用Matlab GUI实现的音频 - B-spline-surface 在MATLAB-2008a环境下编写的
- NURBS-surface 在MATLAB-2008a环境下编写的
- ACO 用MATLAB编写的蚁群算法最短路径寻
- wavplay 基于matlab GUI界面的播放器
- allfns 是由牛津大学VGG开发的三维重建
- spectrogram_fft
- adaboost 基于adaboost的人脸识别程序
- 2 2课程报告要求:按照讲课内容
- gps GPS信号的捕获、处理程序
- fuzzynetme 模糊神经网络的MATLAB程序
- naive_bayes_numeric 利用matlab实现的朴素贝
- MFandMPF 计算肌电信号积分肌电值
- BM3D BM3D去噪算法的实现和相关文档
- BarrelDistortion 两个matlab程序
- Kalman 用卡尔曼滤波跟踪目标实例
- WSN-matlab-simulation
评论
共有 条评论