数字图像处理杂记

来源:互联网 发布:md5是哈希算法吗 编辑:程序博客网 时间:2024/06/02 02:07
 

量化表是控制 JPEG 压缩比的关键. 这个步骤除掉了一些高频量, 损失了很高细节. 但事实上人眼对高空间频率远没有低频敏感.所以处理后的视觉损失很小.另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程. 大量的图象信息被包含在低空间频率中. 经过量化处理后, 在高空间频率段, 将出现大量连续的零.

 

量化既是以有限个离散值来近似表示无限多个连续量,就一定产生误差,这就是所谓量化误差,由此产生的失真即量化失真或量化噪声,对均匀量化来讲,量化分层越多,量化误差越小,但编码时占用比特数就越多。在一定比特数下,为了减少量化误差,往往要用非均匀量化,如按图像灰度值出现的概率大小不同进行非均匀量化,即灰度值经常出现的区域细量化。反之进行粗量化。

 

最佳量化

  当量化器输入图像样本幅度在任意两个判决层 之间任何位置时,其量化器输出都是 ,这就必然引起量化器输出和输入之间的误差,也就构成了量化误差。使量化误差最小的量化方法称为最佳量化,误差的测度有绝对误差、均方误差等数种,我们选用均方误差测度来讨论最佳量化,这是由于这种误差测度易于分析处理,而且与主观评价标准最为接近。

  设: 分别代表输入图像样本幅度和该幅度的量化值。 为图像样本幅度概率密度函数; 的取值范围限定在 之间;量化总层数为   表示量化器输出、输入之间的均方误差。根据均方误差定义可以获得(4.3.1)式

   4.3.1

  当量化层数 很大时,每一个判决层内的概率密度 可以近似认为是均匀分布,即 为一个常数,因此

   4.3.2

  将(4.3.2)式分别对 求导,并令其为零 [4·4] 解得:

  

   4.3.3

   4.3.4

  

  由式(4.3.3)和式(4.3.4)可见,对最佳量化来讲,判决层 是位于相应的两个量化层 的中点,而量化层 是位于判决层 之间的那部分 的形心。如果 在整个图像幅度范围 内是均匀分布,即 为某个常数,则式(4.3.4)变为:

   4.3.5

  

  不难看出同时满足式(4.3.3)和(4.3.5),就是均匀量化为最佳。这种情况下的量化误差为

  一般情况下, 并不是均匀分布,可以由直方图近似求得。这时解公式 (4.3.3)和(4.3.4)就要采用反复迭代方法进行。Max[4.4]提出一种方法 。公式(4.3.3)和(4.3.4)中的 是已知的 ,计算时先假设一个 ,然后计算 ,再接着计算 。最后检验 是否是 之间 形心。如不是,调整 ,重复上述计算,直到 接近于 之间 形心为止。这样一种迭代过程是比较麻烦的。Max已针对不同分布的 ,算出了最佳量化和判决层位置。

  对非均匀分布概率密度函数 的另一种量化方法是压扩量化。所谓压扩量化方法即先将图像信号样本进行非线变换,使其 变为均匀分布,再采用均匀量化方法量化,然后再进行对应的非线性反变换.

 

 

傅立叶分析使用的是一种全局的变换,要么完全在时域,要么完全在频域,因此无法表述信号的时频局域性质,而这种性质恰恰是非平稳信号最根本和最关键的性质。

 

Huffman 编码 Huffman 编码构造二叉树的方法和 Shannon-Fano 正好相反,不是自上而下,而是从树叶到树根生成二叉树。现在,我们仍然使用上面的例子来学习 Huffman 编码方法。 1) 将各个符号及其出现频率分别作为不同的小二叉树(目前每棵树只有根节点)。 a(16) b(7) c(6) d(6) e(5)2) 1 中得到的树林里找出频率值最小的两棵树,将他们分别作为左、右子树连成一棵大一些的二叉树,该二叉树的频率值为两棵子树频率值之和。对上面的例子,我们得到一个新的树林: | (11) a(16) b(7) c(6) +---+---+ | | d e3) 对上面得到的树林重复 2 的做法,直到所有符号都连入树中为止。这一步完成后,我们有这样的二叉树: 根(root) 0 | 1 +------+----------------+ | 0 | 1 | +---------+-----------+ | 0 | 1 0 | 1 a +-------+------+ +-------+-------+ | | | | b c d e 由此,我们可以建立和 Shannon-Fano 编码略微不同的编码表: a - 0 b - 100 c - 101 d - 110 e - 111对例子中信息的编码为: cabcedeacacdeddaaabaababaaabbacdebaceada101 0 100 101 111 110 111 0 101 0 101 ......码长共 88 位。这比使用 Shannon-Fano 编码要更短一点。让我们回顾一下熵的知识,使用我们在第二章学到的计算方法,上面的例子中,每个字符的熵为:

Ea = - log2(16 / 40) = 1.322

Eb = - log2( 7 / 40) = 2.515

Ec = - log2( 6 / 40) = 2.737

Ed = - log2( 6 / 40) = 2.737

Ee = - log2( 5 / 40) = 3.000

 

信息的熵为:

 

E = Ea * 16 + Eb * 7 + Ec * 6 + Ed * 6 + Ee * 5 = 86.601

 

也就是说,表示该条信息最少需要 86.601 位。我们看到,Shannon-Fano 编码和 Huffman 编码都已经比较接近该信息的熵值了。同时,我们也看出,无论是 Shannon-Fano 还是 Huffman,都只能用近似的整数位来表示单个符号,而不是理想的小数位。我们可以将它们做一个对比:

符号 理想位数 S-F 编码 Huffman 编码 ( ) 需要位数 ----------------------------------------------------

a  1.322 2 1

b  2.515 2 3

c  2.737 2 3

d  2.737 3 3

e  3.000 3 3

---------------------------------------------------- 总 计 86601 91 88这就是象 Huffman 这样的整数位编码方式无法达到最理想的压缩效果的原因。

 

 

 

直方图均衡化

算法如下:

对于一个直方图

Pr(r)是原始图像直方图,Ps(s)是均衡化的直方图,

由于其是一个概率分布函数

所以有 Ps(s)ds=Pr(r)dr        (编辑关系,ds,dr是积分变量)

因为要进行均衡化,令 Ps(s)=1,

ds=Pr(r)dr/1

两边积分得 s=F Pr(r)dr          (因为编辑关系,左边F表示积分符号....-__-++)

数字图像是离散的,因此离散化上式得

sk=E{j=0,k}(nj/N)                   左式k,j是离散量下标,因为编辑关系,E{0,k}表示下标0k的连加符号,N是象素总数

由此得出每一象素的sk为均衡化后的正规化灰度(即灰度正规化到[0,1]),统计sk即可得出均衡化后的直方图。

在均衡化过程中可以对每一象素映射到新的实际灰度值sk*255,就实现了图像的变换

(严格理论中应该是灰度正规化到[0,1]区间,然后均衡化后的sk还要量化到原始的正规灰度以实现灰度合并,下面的BCB程序并没有量化,而且255是固定灰度级,因为256BMP的彩色表就是256个表项)