改进格式

This commit is contained in:
2025-02-23 19:35:07 +08:00
parent 26244880ee
commit 2bf0000c22
6 changed files with 44 additions and 32 deletions
+20 -11
View File
@@ -72,8 +72,9 @@ u,v &=0,1,2,\ldots,7\\
\end{aligned}}\tag{2.4}
$$
DCT的威力究竟有多大,我们可以做一个实际的测试,比如一个所有数值都一样的矩阵,经过DCT转换后,将所有级数组合成一个新的矩阵
$$
\small{\begin{bmatrix}
$$\begin{aligned}
&\begin{bmatrix}
100&100&100&100&100&100&100&100\\
100&100&100&100&100&100&100&100\\
100&100&100&100&100&100&100&100\\
@@ -82,8 +83,11 @@ $$
100&100&100&100&100&100&100&100\\
100&100&100&100&100&100&100&100\\
100&100&100&100&100&100&100&100
\end{bmatrix}\overset{\text{DCT}}{\Longrightarrow}
\begin{bmatrix}
\end{bmatrix}\\
\\
&\large{\Downarrow} \text{DCT} \\
\\
&\begin{bmatrix}
800&0&0&0&0&0&0&0\\
0&0&0&0&0&0&0&0\\
0&0&0&0&0&0&0&0\\
@@ -93,12 +97,14 @@ $$
0&0&0&0&0&0&0&0\\
0&0&0&0&0&0&0&0
\end{bmatrix}
}
\end{aligned}
$$
可以看到,经过DCT转换,矩阵的“能量”被全部集中在左上角上的直流分量F(0,0)上,其他位置都变成了0。
在实际的JPEG压缩过程中,由于图像本身的连贯性,一个8X8的图像中的数值一般不会出现大的跳跃,经过DCT转换会有类似的效果,左上角的直流分量保存了一个大的数值,其他分量都接近于0,我们以Lenna左上角第一块图像的Y分量为例,经过变换的矩阵为
$$
\small{\begin{bmatrix}
$$\begin{aligned}
&\begin{bmatrix}
34&34&34&33&34&28&35&32\\
34&34&34&33&34&28&35&32\\
34&34&34&33&34&28&35&32\\
@@ -107,8 +113,11 @@ $$
36&36&29&27&33&31&30&31\\
32&32&35&30&32&33&31&27\\
30&30&27&28&30&30&28&29\\
\end{bmatrix}\overset{\text{DCT}}{\Longrightarrow}
\begin{bmatrix}
\end{bmatrix}\\
\\
&\large{\Downarrow} \text{DCT} \\
\\
&\small{\begin{bmatrix}
257.1&6.4&2.5&-0.3&0.4&0.1&-6.0&6.9\\
8.4&0.0&0.5&-0.5&1.9&3.4&-4.2&3.3\\
-5.3&-1.0&-1.4&1.3&-0.7&-0.5&2.1&-1.7\\
@@ -117,8 +126,8 @@ $$
1.4&0.9&-1.9&-0.1&-2.0&0.9&1.5&0.7\\
-2.0&-0.1&3.1&2.0&1.8&-2.7&-0.9&-1.3\\
1.5&-0.2&-2.3&-1.9&-1.0&2.3&0.3&1.1\\
\end{bmatrix}
}
\end{bmatrix}}
\end{aligned}
$$
可以看到,数据经过DCT变化后,被明显分成了直流分量和交流分量两部分,为后面的进一步压缩起到了充分的铺垫作用,可以说是整个JPEG中最重要的一步,后面我们会介绍数据量化。