Matlab DCT详解

DCT变换

DCT又称离散余弦变换,是一种块变换方式,只使用余弦函数来表达信号,与傅里叶变换紧密相关。常用于图像数据的压缩,通过将图像分成大小相等(一般为8*8)的块,利用DCT对其进行变换,得到更加简洁的数据。因为图像像素间存在较大的空间相关性,DCT可以大大减小这些相关性,使图像能量集中在左上角区域,从而利于数据压缩。变换后得到的数据称为DCT系数。这一过程是无损的。

二维DCT变换

这里来看看二维DCT变换的公式:

这里写图片描述

c(u)和c(v)为添加的系数,主要作用为使DCT变换矩阵为正交矩阵。F(u,v)即为DCT变换系数,可以通过矩阵形式来表示:

这里写图片描述

A即为正交矩阵,通过F和A逆变换即可恢复图像数据。

下面通过一个例子来说明:

clear;
clc;
I = [12,23,53,16;42,16,68,45;34,62,73,26;72,15,34,28];  %数据块
A = zeros(4);   %变换矩阵A,也可以通过函数dctmtx(n)求得
for i = 0:3
    for j = 0:3
        if i == 0
            a = sqrt(1/4);
        else
            a = sqrt(2/4);
        end
        A(i+1,j+1) = a*cos((j+0.5)*pi*i/4)
    end
end
D = A*I*A';     %DCT变换
D1 = dct2(I);   %matlab DCT函数进行DCT变换
D2 = A'*D*A;    %DCT逆变换

这里写图片描述

由结果可以看出,D,D1方式得到的DCT系数相同,说明矩阵形式的DCT变换公式是正确的&#

  • 74
    点赞
  • 278
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值