• Fundamentals

压缩率:压缩前比上压缩后

相对数据冗余:压缩比越大,相对冗余越大


二维灰度阵列(理解为一个个像素)是人们观察和解释图像的首选格式,并且以它作为判定所有其他表示的标准,然而,当它变成紧凑的图像表示时,这些格式就远不是最佳格式了。通常用于人类观看和解释的2-D像素阵列必须转换为一种更有效(但通常是“非视觉”)的格式

  • –Pixel differences 像素差
  • –Run-lengths游程长度
  • –A set of transform coefficients一组变换系数
    •DFT, DCT, WT, …

二维灰度阵列的三种冗余类型:编码冗余、时间和空间冗余、不相关信息也叫感知冗余(精神视觉上的冗余,就是有些图片信息以人的视觉系统根本感知不到,所以可以去除)


评价信息图像信息保真的三个客观方面

均方误差:

加^的f为压缩后的图像

信噪比:

 信息/误差

信噪比的均方误差:


编码冗余

一张图片:M*N=n个像素

灰度范围:[0,L-1]; 灰度级数为L;rk为某一个灰度值∈[0,L-1];Pr(rk)为每个rk发生的概率

如果用于表示每个rk值的比特数为l(rk),则表示每个像素所需的平均比特数为

有时候像素的灰度信息不需要那么多比特数来支持,就会出现冗余,自然编码一般会比变长编码所用的bit数更多或相同

本章要求会计算一张图使用某种编码方式的平均比特数和比特数,以及压缩率和相对冗余

所以到底多少个bit编码会更加合适呢?

图像信息的度量

信息熵H:

假如一件事情发生的概率P(E),那么定义这件事情的信息为

I(E)=-log(P(E))——对数的底决定了度量信息所用的单位,比如是2的话,就是用二进制表示

也挺好理解的,比如说一件事情发生的概率P=0.5,并且我要用二进制表示,那么这件事情的信息就是I=1,也就是说用一个二进制数就可以表示整个事件的信息,事实也确实如此,因为该事件要么为0要么为1各占50%,所以一个二进制数就够了

那么图像的信息熵可以表示为

【这里该有一张图】

理论上不能用小于信息熵的编码平均长度来编码这个图像,不然会丢失信息

无损压缩中的编码平均长度不可能小于信息熵


• Image Compression Models图像压缩模型

图像压缩系统:编码器+解码器

一个器又包括两个:source和channel,前者处理图像冗余,后者加强传输抗噪性,目前只讲source的编码器和解码器


Mapper:将输入数据转换为(通常是非可视的)格式,以减少空间和时间冗余,刚才fundamental的第二部分介绍的就是转换的三种方式

Quantizer:降低制图者输出的准确性,以减少心理视觉冗余

Symbol coder:创建一个固定长度或可变长度的代码来表示量化器输出

• Error-Free Compression无损压缩

无损压缩就是把Quantizer部分去掉了,量化是不可逆的,量化是有损的根源,只做mapper不量化同样无损,但此时的mapper也没有意义。

所以无损压缩只能在编码方式上作文章了


会介绍到的编码方式

•Variable-Length Coding
        –Huffman coding
        –Other near optimal variable length codes
        –sua
•LZW Coding
•Bit-Plane Coding
•Lossless Predictive Coding


变长编码Variable-Length Coding

变长编码的思路就是给概率最大的情况赋予最短的码字,以此类推

但变长编码要求知道信源的概率分布


霍夫曼编码

由下至上构建哈夫曼树,然后左右树杈代表0,1由上至下编码。可以自行百度很好理解。

哈夫曼解码的时候相当于一个查表的过程

截断的霍夫曼编码&B-code&others

效果那肯定还是哈夫曼最好(见下面avg length),但为了减少计算的复杂性提高效率,截断就是说前面一些频率高的用哈夫曼编码,后面的就正常编码好了(或者参考后两行的方法直接加111or00),这张图的截断系数为12(见右侧)


算数编码Arithmetic coding

统计每个灰度的概率(probablility)同时在0~1中分配属于他们概率的区域,如下面图的第一列;当第一个数字为a1时,将a1部分的长度再次细分,同样按照每个灰度的概率进行分配,第二个数字是a2,于是将a2部分继续细分,一次类推,最后输出的是  “ 当前间隔  ” 的下边界,就是该给定事件序列的算术编码。比如下图给a1a2a3a3a4编码的输出是0.06752

 如何解码?

0.06752属于0~1的a1部分——解出a1

0.06752属于0~0.2的a2部分——解出a2

0.06752属于0.04~0.08的a3部分——解出a3

……

随着被编码序列长度的增加,所得到的算术编码接近无噪声编码理论所确定的界限(信息熵长度)

lA为平均编码长度,m随着编码序列长度的增加而增加,H是信息熵


字典编码LZW Coding

这个博主的编码和解码过程都写得很好看完这个之后,下面是几个要点

源符号的变长序列分配固定长度的码字,但不需要预先知道要编码的符号出现的概率;比如灰度为256,那就要预留0~255为原符号编码区域,其余部分用灰度级序列填充字典

然后现在试着还原一下下面的编码,看你能不能得到相同的Encoded Output

位平面编码Bit-Plane Coding

分别处理图像的位平面-将多层(单色或彩色)图像分解为一系列二值图像-通过几种著名的二值压缩方法之一对每个二值图像进行压缩

比如说灰度级为256的图像,是由8bit编码的,假如一个像素的编码值为10010110

位平面编码就是将这八个bit分为八张独立的二值图——那么上面这个像素在这八张二值图里面的值分别为1,0,0,1,0,1,1,0

然后再对这八张二值图使用二值图的压缩方法进行压缩(比如游程编码)

举个例子,将该图的每个bit抽出为二值图后

可以发现高阶位平面远没有低阶位平面复杂。但是大的黑白灰关系却是高阶位影响的。

下面是两种二值图常用的编码方式

constant area coding 

游程编码


预测编码Lossless Predictive Coding

因为相邻的像素之间一般不会突变,是有相似关系的,所以一个像素可以用其之前的像素,或者左上角的像素来进行预测。编码的是预测值减去实际值的误差。

感觉这个写的还不错其实也很好理解,下一篇有损压缩会更预测编码(maybe)

数字图像处理:图像压缩1 基础无损压缩相关推荐

  1. 数字图像处理概述及基础

    1 数字图像处理概述及基础 书籍:<MATLAB图像处理 理论.算法与实例分析>;蔡利梅编著:清华大学出版社 个人学习笔记记录,欢迎交流批评. 1.1 图像与数字图像处理 1.图像:二维信 ...

  2. 数字图像处理之图像基础

    最近在学数字图像处理,图像基础包括以下部分: 导入库 import numpy as np import matplotlib.pyplot as plt import cv2 as cv 图片展示函 ...

  3. 视频教程-数字图像处理实战-算法基础

    数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...

  4. 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...

    <数字图像处理(实验部分)>教案 实验一:数字图像处理中MATLAB使用基础实验 一. MATLAB软件安装 二. 进入MATLAB运行环境 三. MATLAB编程基础 3.1.变量 预定 ...

  5. MOOC网神经网络与深度学习TensorFlow实践3——数字图像处理、TensorFlow基础

    数字图像处理 数字图像基本概念 pillow图像处理库 手写数字数据集MNIST TensorFlow基础 TensorFlow2.0特性 创建张量 维度变换 部分采样 张量运算

  6. 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等

    目录 数字图像处理所有的基本数字工具介绍 算术运算 集合运算和逻辑运算 空间运算 向量与矩阵运算 图像变换 图像和随机变量 数字图像处理所有的基本数字工具介绍 算术运算 # 相加 img_ori = ...

  7. 数字图像处理-图像压缩

    图像压缩介绍 概念 图像压缩是图像编码的一种典型用途.数据压缩的对象是数据,大的数据量并不代表含有大的信息量.图像压缩就是除去图像中多余的数据而对信息没有本质的影响. 目的 图像编码压缩的主要目的是用 ...

  8. 第10章 Python 数字图像处理(DIP) - 图像分割 基础知识 标准差分割法

    This Chapter is all about image segmentation. I still not finished whole chapter, but here try to pu ...

  9. 第2章 Python 数字图像处理(DIP) --数字图像基础1 - 视觉感知要素 - 亮度适应与辨别

    数字图像基础1 视觉感知要素 亮度适应与辨别 import sys import numpy as np import cv2 import matplotlib import matplotlib. ...

  10. 数字图像处理之图像显示基础

    bmp文件 bmp(bitmap的缩写)文件格式是windows本身的位图文件格式,所谓本身是指windows内部存储位图即采用这种格式.一个.bmp格式的文件通常有.bmp的扩展名,但有一些是以.r ...

最新文章

  1. 应用函数修饰符@来改变AI Studio的输出信息
  2. 人脸识别屡遭非议,会成为“潘多拉魔盒”吗?
  3. Shell编程之case语句
  4. CSDN博客的安全性为什么一直如此薄弱?
  5. 控制器view及UIApplication的生命周期
  6. JS 打印 data数据_数据表格 Data Table - 复杂内容的15个设计点
  7. 软件设计师 --哈夫曼树的一个经典问题
  8. 插件安装失败_贴片保险丝额定电流应用电路为什么会安装失败?
  9. windows安装HTK3.4.1
  10. socket创建失败_python3从零学习-5.8.1、socket—底层网络接口
  11. linux ftw()函数使用方法 实例
  12. 图灵学院:淘宝大秒系统设计详解
  13. 视频工作室必备利器——群晖NAS
  14. matlab之计算排列组合
  15. 学习JQuery - 10
  16. CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散
  17. Socket和Websocket
  18. 中标麒麟6安装Qt 4.8.4+QtCreator 2.7.0 NeoKylin Linux Desktop Release 6+Qt4.8.4+QtCreator2.7.0
  19. java课程广告语_海同网校职坐标广告语、宣传语
  20. python实战课程--控制结构

热门文章

  1. 夜神模拟器SD卡文件存储位置
  2. unapp Error: Unbalanced delimiter found in string
  3. nginx的安装以及简单代理域名
  4. [Nginx] 配置Nginx绑定域名、代理端口
  5. ssh连接服务器超时解决方案
  6. EndNote简明教程(三分钟上手EndNote)
  7. fresco 显示缩略图,不直接使用setImageURI,防止卡顿和显示不全:纯黑色或纯白色
  8. FITC-LCA荧光素标记小扁豆凝集素(LCA)
  9. 基于美国人口数据分析
  10. qt删除键值_Qt QMap键值对基本用法(键值对)