• NEFU数字图像处理(5)图像压缩编码


    一、概述

    1.1简介

    图像压缩编码的过程是在图像存储或传输之前进行,然后再由压缩后的图像数据(编码数据)恢复出原始图像或者是原始图像的近似图像·

    • 无损压缩:在压缩过程中没有信息损失,可由编码数据完全恢复出原始图像·
    • 有损压缩:在压缩过程中有信息损失,由编码数据恢复出的图像与原始图像之间有差别,即原始图像的近似图像。有损压缩能取得较高的压缩率(压缩比)

     

     1.2相关概念

    信息相关

    在绝大多数图像的像素之间,各像素行和帧之间存在着较强的相关性

    每个像素的灰度值(或颜色值)总是和其周围的其它像素的灰度值(或颜色值)存在某种关系,应用某种编码方法减少这些相关性就可实现图像压缩

     

    冗余类型

    从信息论的角度来看,压缩就是去掉信息中的冗余。即保留确定信息,去掉可推知的确定信息,用一种更接近信息本质的描述来代替原有的冗余描述。

    在数字图像压缩中,三种基本的数据冗余类型:

    • 编码冗余
    • 像素间冗余
    • 视觉冗余
    编码冗余
    像素间冗余
    视觉冗余

    视觉冗余:人的眼睛对某些图像特征不敏感,这些特征信息可以不在图像数据中出
    现。
    人眼的分辨能力一般约64个灰度等级,而图像的量化常采用256个灰度等级。

     

    视觉冗余的压缩是不可恢复的(不可逆),所以量化的结果导致了数据有损压缩

    信源编码

    图像压缩的目的是在满足一定的图像质量的条件下,用尽可能少的比特数来表示原图像,以减少图像的存储容量和提高图像的传输效率。

    在信息论中,把这种通过减少冗余数据来实现数据压缩的过程称为信源编码。
    根据解码后图像与原始图像的比较,图像编码的方法可以分成两大类:

    • 可逆编码
    • 不可逆编码

     

    图像保真度准则

    需要评价信息损失的测度,来描述由编码数据恢复出的图像相对于原始图像的偏离程度,这些测度称为图像保真度准则。
    两类准则:客观保真度准则、主观保真度准则

     客观保真度准则

    客观保真度准则通常是用原始图像与恢复出的图像之间的函数来表示信息的损失程度。

    常用的客观保真度准则:

    • 均方根误差
    • 均方根信噪比

     

     

    主观保真度准则

    图像压缩编码系统的基本组成

    编码效率

    对图像进行压缩编码时,编码效率可有以下表现形式:

    • 平均码字长度,简称平均码长(R)
    • 压缩比(Cr)
    • 图像熵与平均码长之比(η)

     

     

    压缩比越大,压缩效果越好

     举例

    二、相关编码算法

    无损压缩编码主要针对以下两种数据冗余:

    • 编码冗余
    • 像素间冗余

    2.1哈夫曼编码

    哈夫曼编码是一种变长编码(这种编码结构可以把最短的码字赋予出现概率最大的信源符号

     

    哈夫曼编码算法步骤:

    • 统计出各个信源符号出现的概率(比如,对一幅图像进行灰度级概率统计),并对信源符号出现的概率从大到小排列;
    • 合并概率最小的两个信源符号,形成一个新符号。新符号的概率是这两个信源符号的概率之和·
    • 新符号的概率与剩余符号的概率形成一个新的概率集合,然后再对新的概率集合重新排列(从大到小)
    • 重复执行第2、3步,直到最后两个信源符号的概率之和是1为止。

    举例

     

     

     

     结论

     

    2.2香农-范诺编码

    香农-范诺编码算法步骤:
     

     

    二分香农-范诺编码

    算法步骤

    • 首先统计出每个信源符号出现的概率,并将所有概率从大到小排序。
    • 从当前概率集合中选取某个位置将其分成两个子集合,尽量使两个子集的概率之和近似相等(即概率之和越接近越好),给前一个子集赋值为0,后一个子集赋值为1
    • 重复步骤2,直到各个子集中只剩下一个信源符号为止。
    • 每个信源符号所属的子集的值(0或1)依次串联起来,即可得到该信源符号的二分香农-范诺编码·

    举例 

     

    2.3算数编码

    算术编码分析:
    算术编码假设:对于一个独立信源来说,任一由信源符号组成的长度为N的序列的发生概率之和等于1。


    根据信源符号序列的概率,把0,1区间划分为互不重叠的子区间,子区间的宽度恰好等于各符
    号序列的概率,这样,、每个子区间内的任意一个实数都可以用来表示对应的符号。一串符号序列发生的概率越大,对应的子区间就越宽,,表达它所用的比特数就越少,因而相应的码字就越短。

     

    举例

     

    2.4行程编码

     利用空间冗余度压缩图像的方法,处理某些相同灰度级成片连续出现的图形
    应用:二值图像
    具有相同灰度级并且是连续的像素数目称为行程长度。

     

    举例 

    2.5LZW编码

    将原始数据中的重复字符串建立一个字典(也称编码本),然后用该重复字符串在字典中的索引代替原始数据,从而达到压缩目的。


    使用LZW压缩编码技术的文件格式包括有GIF、TIFF(标记图像文件格式)、PDF(可移植文件格式)等。

     

    举例

     

  • 相关阅读:
    JavaScript设计模式:享元模式
    Sentinel
    java基础3
    C++调用C#的动态库dll
    布隆过滤器简单实现添加和判断功能
    Dubbo环境搭建
    springboot配置打野sql语句,而不打印结果
    我认识Handler又多了一点点...
    向表中针对全部列插入数据
    基于springboot的支教系统-计算机毕业设计源码
  • 原文地址:https://blog.csdn.net/qq_62377885/article/details/134208811