- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
DCT
DCT变换及整数DCT变换
为了给x264打好基础,x264用的是整数DCT变换,所以就先来说说DCT变换吧。
DCT(DiscreteCosineTransform),又叫离散余弦变换,它的第二种类型,经常用于信号和图像数据的压缩。经过DCT变换后的数据能量非常集中,一般只有左上角的数值是非零的,也就是能量都集中在离散余弦变换后的直流和低频部分,下面我会用matlab来演示整个过程。
一维DCT变换
我们首先来看看一维的DCT
我们首先来看看一维的DCT变换,这是二维的基础。一维的DCT变换共有8种,其中最
实用的是第二种形式,公式如下:
其中c(u)
是加上去一个系数,为了能使DCT变换矩阵成为正交矩阵,在后面二维变换将看到他的作
用。N是f(x)的总数。相比其他几种形式,他的运算还是比较简单的,因此也用的比较广。
二维DCT变换
二维DCT变换是在一维的基础上再进行一次
二维DCT变换是在一维的基础上再进行一次DCT变换,这个比较好理解,直接看公式:
这里我只讨论两个N相等的情况,也就是数据是方阵的形式,在实际应用中对不是方阵的
数据都是先补齐再进行变换的。为了matlab仿真方便点,写成矩阵形式:
下面就用matlab来模拟一下,使用随机生成的4x4矩阵
作为输入,程序如下:
1.
2.
3.
clear;
clc;
X=round(rand(4)*100);%随机生成的数据
6.7.
6.
7.
Y=
A=zeros(4);%变换矩阵
fori=0:3
forj=0:3
ifi==0
8. a=sqrt(1/4);
9. else
10. a=sqrt(2/4);
11. end
12. A(i+1,j+1)=a*cos(pi*(j+0.5)*i/4);
end
end
Y=A*X*A;%DCT变换
YY=dct2(X);%用matlab中的函数进行DCT变换
Y
Y是使用上面的公式进行变换,YY是用matlab自带的dct2函数变换,结果是是:
1. X=
2.
61
19
50
20
3.
82
26
61
45
4.
89
90
82
43
5.
93
59
53
97
8. 242.5000
32.1613
22.5000
33.2212
9. -61.8263
7.9246
-10.7344
30.6881
10. -16.5000
-14.7549
22.5000
-6.8770
11. 8.8322
16.6881
-35.0610
-6.9246
12.
13. YY=
14. 242.5000
32.1613
22.5000
33.2212
15. -61.8263
7.9246
-10.7344
30.6881
16. -16.5000
-14.7549
22.5000
-6.8770
17. 8.8322
16.6881
-35.0610
-6.9246
可以看出
可以看出Y和YY的结果是一样的,这也进一步验证了上面的公式是正确的。由于X是我随机生成的,相关性很小,变换后的结果比较乱;如果是信号或图像这样相关性比较大的数据的话,数值会集中在左上角,右下角一般都是零,再使用“之”字型扫描得到数据流会包含
很多连续的零,编码后数据量会非常小,这就是DCT变换带来的好处。
二维DCT反变换
DCT逆变换的公式如下:
DCT逆变换的公式如下:
矩阵形式可以
由正变换的公式直接推出来,因为在A中加了c(i)这个系数,使得A成为了正交矩阵,所以
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
forj=0:3
ifi==0
a=sqrt(1/4);
else
a=sqrt(2/4);
endA(i+1,j+1)=a*cos(pi*(j+0.5)*i/4);
end
end
Y=A*X*A;X1=A*Y*A;
我们就可以这样做:原来的数据:
1. clear;
在用matlab来验证是否能反变换出
2. clc;
3. X=[
4. 61 19
50
20
5. 82 26
61
45
6. 89 90
82
43
7. 93 59
A=zeros(4);
fori=0:3
53
97];
X
X使用的是上面正变换用的数据,运行后得到的X1为:
1. X1
=
2.
61.0000
19.0000
50.0000
20.0000
3.
82.0000
26.0000
61.0000
45.0000
4.
89.0000
90.0000
82.0000
43.0000
5.
93.0000
59.0000
53.000
您可能关注的文档
- 二年级语文上册第五单元测试.docx
- 二年级语文上册第一单元试卷.docx
- 二年级语文上册各单元看拼音写词语.docx
- 二年级语文上册基础知识专项练习题.docx
- 二年级语文上册教学工作总结.docx
- 二年级语文上册教学计划.docx
- 二年级语文上册句子练习题汇总共8页.docx
- 二年级语文上册看图写话练习题.docx
- 二年级语文上册量词期末复习资料.docx
- 二年级语文上册期末词义理解练习.docx
- 2024年中考地理真题完全解读(广东省卷) .pdf
- 2024年全国咨询工程师之工程项目组织与管理考试提优特训题(详细参考解析)x - 热门试题剖析与讲解 .pdf
- 2024年一级建造师《市政实务》考前10页纸 .pdf
- 2023年百色市西林县那佐苗族乡招聘考试真题 .pdf
- 2022年江苏公务员行测考试真题-C卷 .pdf
- 2023年中考数学天津市卷 .pdf
- 2024年中考化学真题完全解读试卷分析课件(苏州卷) .pdf
- 2024年全国投资项目管理师之宏观经济政策考试创新思维题(详细参考解析)101 .pdf
- 2024年信息技术科技知识操作及处理技能考试题库与答案 .docx
- 2023年甘肃兰州石化总医院招聘考试真题 .pdf
文档评论(0)