• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-01-08
  • 语言: Matlab
  • 标签: matlab  DCT  

资源简介

编写一个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

评论

共有 条评论