数字图像处理:图像压缩1 基础无损压缩
• 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 数字图像处理概述及基础 书籍:<MATLAB图像处理 理论.算法与实例分析>;蔡利梅编著:清华大学出版社 个人学习笔记记录,欢迎交流批评. 1.1 图像与数字图像处理 1.图像:二维信 ...
- 数字图像处理之图像基础
最近在学数字图像处理,图像基础包括以下部分: 导入库 import numpy as np import matplotlib.pyplot as plt import cv2 as cv 图片展示函 ...
- 视频教程-数字图像处理实战-算法基础
数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...
- 实验1 数字图像处理的MATLAB基础,《数字图像处理(实验部分)》实验1_数字图像处理中MATLAB使用基础...
<数字图像处理(实验部分)>教案 实验一:数字图像处理中MATLAB使用基础实验 一. MATLAB软件安装 二. 进入MATLAB运行环境 三. MATLAB编程基础 3.1.变量 预定 ...
- MOOC网神经网络与深度学习TensorFlow实践3——数字图像处理、TensorFlow基础
数字图像处理 数字图像基本概念 pillow图像处理库 手写数字数据集MNIST TensorFlow基础 TensorFlow2.0特性 创建张量 维度变换 部分采样 张量运算
- 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等
目录 数字图像处理所有的基本数字工具介绍 算术运算 集合运算和逻辑运算 空间运算 向量与矩阵运算 图像变换 图像和随机变量 数字图像处理所有的基本数字工具介绍 算术运算 # 相加 img_ori = ...
- 数字图像处理-图像压缩
图像压缩介绍 概念 图像压缩是图像编码的一种典型用途.数据压缩的对象是数据,大的数据量并不代表含有大的信息量.图像压缩就是除去图像中多余的数据而对信息没有本质的影响. 目的 图像编码压缩的主要目的是用 ...
- 第10章 Python 数字图像处理(DIP) - 图像分割 基础知识 标准差分割法
This Chapter is all about image segmentation. I still not finished whole chapter, but here try to pu ...
- 第2章 Python 数字图像处理(DIP) --数字图像基础1 - 视觉感知要素 - 亮度适应与辨别
数字图像基础1 视觉感知要素 亮度适应与辨别 import sys import numpy as np import cv2 import matplotlib import matplotlib. ...
- 数字图像处理之图像显示基础
bmp文件 bmp(bitmap的缩写)文件格式是windows本身的位图文件格式,所谓本身是指windows内部存储位图即采用这种格式.一个.bmp格式的文件通常有.bmp的扩展名,但有一些是以.r ...
最新文章
- 应用函数修饰符@来改变AI Studio的输出信息
- 人脸识别屡遭非议,会成为“潘多拉魔盒”吗?
- Shell编程之case语句
- CSDN博客的安全性为什么一直如此薄弱?
- 控制器view及UIApplication的生命周期
- JS 打印 data数据_数据表格 Data Table - 复杂内容的15个设计点
- 软件设计师 --哈夫曼树的一个经典问题
- 插件安装失败_贴片保险丝额定电流应用电路为什么会安装失败?
- windows安装HTK3.4.1
- socket创建失败_python3从零学习-5.8.1、socket—底层网络接口
- linux ftw()函数使用方法 实例
- 图灵学院:淘宝大秒系统设计详解
- 视频工作室必备利器——群晖NAS
- matlab之计算排列组合
- 学习JQuery - 10
- CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散
- Socket和Websocket
- 中标麒麟6安装Qt 4.8.4+QtCreator 2.7.0 NeoKylin Linux Desktop Release 6+Qt4.8.4+QtCreator2.7.0
- java课程广告语_海同网校职坐标广告语、宣传语
- python实战课程--控制结构