JPEG基本系统

  JPEG标准主要采用了基于块的DCT变换编码,同时综合应用了游程编码和霍夫曼编码等。其有损压缩算法编码的大致流程如下:第一步,对图像块(把整个图像分成多个 \( 8 \times 8 \) 子块)进行DCT变换,得到DCT系数;第二步,根据量化表对DCT系数进行量化;第三步,对DCT系数中的直流(DC)系数进行差分预测,对交流(AC)系数按Zig-Zig顺序重新排序;第四步,对第三步得到的系数进行霍夫曼编码。

图1  JPEG基本系统框图

  1. FDCT和IDCT:JPEG基本系统以DCT变换为基础,采用固定的 \( 8 \times 8 \) 子块。其表达式如下:

\begin{equation}
F(u,v)=C(u)C(v)\sum_{i=0}^{7}\sum_{j=0}^{7}f(i,j)
\cos{\left [ \frac{(2i+1)u\pi }{16} \right ] }
\cos{\left [ \frac{(2j+1)v\pi }{16} \right ] }
\end{equation}

\begin{equation}
f(i,j)=\sum_{i=0}^{7}\sum_{j=0}^{7}F(u,v)C(u)C(v)
\cos{\left [ \frac{(2i+1)u\pi }{16} \right ] }
\cos{\left [ \frac{(2j+1)v\pi }{16} \right ] }
\end{equation}

\begin{equation}
C(u),C(v)=\left\{\begin{matrix}
1/ \sqrt{2} & u,v=0 \\
1 & other
\end{matrix}\right.
\end{equation}

  在JPEG基本系统中,\( f(x,y) \) 为8bit 像素,即取值范围为 \( 0\sim 255 \) ,由DCT变换可求得DC系数 \( F(0,0) \) 的取值范围为 \( 0 \sim 2040 \) ,实际上,同样可以求出 \( F(0,0) \) 是图像均值的8倍,除   \( F(0,0) \) 外的其他系数为AC系数。

  2. 量化与逆量化:对低频系数缩小,对高频系数放大,是大部分幅值较小的系数在量化后变为0,然后只剩下一小部分系数需要存储,从而大大压缩了数据量。量化的过程就是每个DCT系数除以各自的量化步长并取整,然后得到量化后的系数:

\begin{equation}
\tilde{F}(u,v)=INT\left [ \frac{F(u,v)}{S(u,v)} \pm 0.5 \right ]
\end{equation}

  人眼视觉系统的频率频率响应,随着空间频率的增加而下降,且对于色度分量的下降比亮度分量要快。为此,JPEG为亮度分量和色度分量分别推荐了量化表如下:

  亮度量化表:

16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99

  色度量化表

 17 18 24 47  99  99  99  99 
18  21  26  66  99  99   99 99 
24  26  56  99  99  99  99  99 
47  66  99  99  99  99  99  99 
99  99  99  99  99  99  99  99 
99  99  99  99  99  99  99  99 
99  99  99  99  99  99  99  99 
99  99  99  99  99  99  99  99 
\begin{tabular}{|c|c|c|c|c|c|c|}

    \hline

    \multirow{2}{*}{Method}&

    \multicolumn{3}{c|}{C}&\multicolumn{3}{c|}{ D}\cr\cline{2-7}

    &Precision&Recall&F1-Measure&Precision&Recall&F1-Measure\cr

    \hline

    \hline

    A&0.7324&0.7388&0.7301&0.6371&0.6462&0.6568\cr\hline

   B&0.7321&0.7385&0.7323&0.6363&0.6462&0.6559\cr\hline

    C&0.7321&0.7222&0.7311&0.6243&0.6227&0.6570\cr\hline

    D&0.7654&0.7716&0.7699&0.6695&0.6684&0.6642\cr\hline

    E&0.7435&0.7317&0.7343&0.6386&0.6488&0.6435\cr\hline

    F&0.7667&0.7644&0.7646&0.6609&0.6687&0.6574\cr\hline

    G&{\bf 0.8189}&{\bf 0.8139}&{\bf 0.8146}&{\bf 0.6971}&{\bf 0.6904}&{\bf 0.6935}\cr

    \hline

    \end{tabular}
表格latex

  3. 对量化系数编码:对于由量化器输出的量化系数,JPEG采用定长和变长相结合的编码方法,具体如下:

  (1)直流(DC)系数,由于图像中相邻的两个图像块的DC系数一般很接近,所以JPEG对量化后的系数采用无失真DPCM编码,即对当前块的DC系数 \( F_i(0,0) \) 和已编码的相邻块DC系数\( F_{i-1}(0,0) \) 的差值进行编码。

\begin{equation}
\Delta F(0,0)=F_i(0,0)-F_{i-1}(0,0)
\end{equation}

  按照其取值范围,JPEG将差值分为12类。编码时,将DC系数差值表示为“符号1 符号2”的形式,其中符号1为从表中查得的类别,实际上就是用自然二进制码表示DC系数差值所需的最少比特数,符号2为实际的差值。对符号1,即DC系数差值的类别,采用霍夫曼编码。由于亮度和色度分量的DC系数差值统计特性差别较大,所以JPEG为两者分别推荐了霍夫曼表。对符号2,采用二进制码,负数用整数的反码表示。例如:差值为2,用于“10”表示;差值为-2,用“01”表示。

类别 取值 类别 取值
0 0 6 -63~-32,32~63
1 -1,1 7 -127~-64,64~127
2 -3,-2,2,3 8 -255~-128,128~255
3 -7~-4,4~7 9 -511~-256,256~511
4 -15~-8,8~15 10 -1023~-512,512~1023
5 -31~-16,16~31 11 -2047~-1024,1024~2047

   2.交流(AC)系数:Z型扫描(系数的重新排列):因为经过量化以后,AC系数中出现较多的0,所以JPEG采用对0系数的游程长度编码,即将所有AC系数表示为 \( 00\cdots 0X,00\cdots 0X,\cdots ,00\cdots 0X,\cdots  \),其中,X表示非0值。若干个0和一个非0值X组成一个编码的基本单位,连续零的个数越多,编码效率就越高。因此,根据DCT系数量化后的分布特点,对DCT系数采取如图所示的Z型扫描方式,以使大多数出现在右下角的0能够连起来,出现更多的连0。熵编码:对于连0,可以用其游程即个数表示。同DC系数差值编码类似JPEG

 

  1.  
posted @ 2020-11-05 19:28  望星草  阅读(581)  评论(0编辑  收藏  举报