图像压缩JPEG
JPEG图像压缩
一幅图像我们可以看是一个二维数组组成的,例如我们常见的1080p,它实际上是由1080 x 1920个像素点组成的。
- 1080:图像的高度
- 1920:图像的宽度
其中,每一个像素都是有固定的位数表示的,例如我们常见的彩色图片。每个颜色占八位(RGB),一共三个基色,所以一个像素点占24位。
这里为了方便讨论,我们讨论灰色的图片,也就是每个像素占8位。
在JOPGE中,我们会使用到离散余弦变换(DCT)来对图像进行压缩。
不难发现,由于有两个求和,所以DCT的计算量是O($n^2$),其中n是图像的像素个数。
如果要处理一个1080p的图像,那么计算量是($(1920 * 1080)^2$)
在JPEG中,我们使用了8x8的块来进行DCT,也就是说,我们将图像分成8x8的小块,然后对每个小块进行DCT。
举个例子,假设我们有一个1080p的图像,我们将其分成8x8的小块,那么我们每一列就有1920/8=240个小块 ,每一行就有1080/8=144个小块。
所以,DCT的计算量是O($(64)^2$) x 240 x 144 , 计算量少了很多
所以,对于JPEG里面的离散余弦变换。我们可以做一下简化:
- 首先,我们将图像分成8x8的小块,所以M = N = 8 。
$$\Rightarrow$$
- 然后,根据二阶DCT公式,我们可以得到:
$$
\begin{equation}
T(m,n) = 0.25 c(m)c(n) \sum_{x=0}^{7} \sum_{y=0}^{7} P(x,y) \cos\left[ \frac{(2x+1)m \pi}{16} \right] \cos\left[ \frac{(2y+1)n \pi}{16} \right]
\end{equation}
$$
- 同理,我们可以推出DCT-III公式:
$$
\begin{equation}
P(x,y) = \sum_{x=0}^{7} \sum_{y=0}^{7} P(x,y) 0.25 c(x)c(y) \cos\left[ \frac{(2m+1)x \pi}{16} \right] \cos\left[ \frac{(2n+1)y \pi}{16} \right]
\end{equation}
$$
本文章发布于 hjq.college,转载请注明出处。