图像编码(二)
来源:互联网 发布:郑钧 私奔知乎 编辑:程序博客网 时间:2024/06/03 21:50
统计编码
统计编码也称为熵编码,假设图像中灰度级别X(i)出现的概率为P(i)。
1.哈弗曼编码
依据变长最佳编码定理,应用Huffman算法而成。编码步骤如下:
1)将灰度级别x(i)按照其对应的概率按照降序排列;
2)将两个最小概率的灰度级别组合相加,始终将较大的概率分值放在上部分,并重复次步骤;
3)对每个组合,上面的一个级别设为1,下面一个级别设为0;
4)画出每个级别到概率1的路径,并将所有的0和1按照顺序组合;
5)对每个级别写出的二进制序列,从右到左则可得非等长的哈弗曼编码;
优缺点:
1)编码不唯一,首先上下部的01编码是可以选择的,其次对于同概率的的级别选择也可能会有变化;
2)各级别码长不一样,虽说高效,但是硬件实施困难;
3)Huffman编码只能近似的用整数而不是小数,这就使得无法达到更高的精确度。
2.香农编码
香农(shannon-Fano)编码和哈弗曼编码类似,只不过采用的是从上至下的方式。
依据变长最佳编码定理,编码步骤如下:
1)对灰度级别按概率大小进行降序排列;
2)将灰度级别分为两大部分,使得两部分的概率和尽可能的相等,重复此步骤,使得整个‘’分’布‘’呈树状结构,最后一层上的‘’叶子‘’全是单个灰度级别;
3)从左到右以此标记上下两部分为0或者1;
4)从左至右按照路径记录串联所有的二进制数得到该灰度级别的编码。
3.算术编码
算术编码不是将单个灰度级别映射成一个码字,而是把整个灰度级别映射到一个[0 1]的区间上,其长度等于对应的概率。然后在这个区间内选择一个合适的小数转化为二进制来作为编码。
4.行程编码
行程编码(Run Length Encoding)是一种利用空间冗余度压缩图像的方法。对某些相同灰度级别成片连续出现的图像,行程编码能够进行有效的压缩。设(x1,x2,x3...xn)为图像中的某一行像素,每一行像素都是由K个长度为L(k),灰度值为g(i)的片段组成。那么该行像素可以表示为{(g1,l1),(g2,l2),(g3,l3)...(gk,lk)},其中,每一个偶对(g(i),l(i))称为灰度行程。其中二值图像甚至在编码是只用一组l(i)的序列表示。
预测编码
预测编码建立在信号数据的相关性上,根据某一模型利用以往的样本值对新样本进行预测,减少数据在时间和空间上的相关性,以达到压缩数据的目的。但实际情况中,并不是利用数据源所建立的某个特定的模型,而是基于估计理论、统计学理论来设计预测器。预测器对样本的预测,通常采用样值的线性或者非线性函数关系来预测显示的系统输出。常见的预测编码方法是DCPM法。
变换编码
图像数据一般具有较强的相关性,若所选用的正交矢量空间的基矢量与图像本身的主要特征相近,那么在该正交矢量空间中图像的表示将会变得非常的简单。对图像进行正交变换,把图像映射到新的坐标系下使得图像的数据更加集中。对于大多数的图像,大量交换系数很少,只要删除接近0的系数,并对小的系数进行粗量化,从而保留图像的主要信息的系数(稀疏化?),之后就可以对其进行压缩编码。值得注意的是,变换并不会产生压缩,所以需要结合其他编码方式来对变换后的图像进行压缩。常用的变化有傅里叶变换、哈达玛变换等。
0 0
- 图像编码(二)
- 图像编码(1)
- 图像编码(一)
- 二值形态学操作、图像的边缘检测、图像编码
- 【图像配准】基于灰度的模板匹配算法(二):局部灰度值编码
- 图像增强(二)
- 图像变形(二)
- 图像处理(二)
- 图像相关(二)
- 图像编码
- 利用游程编码实现二值图像压缩
- 安全编码(二)
- 编码规范 (二)
- 稀疏编码(二)
- 数据库编码(二)
- 【OpenCV】图像处理(二)图像形态学
- 图像处理(二):图像滤波
- TensorFlow 图像预处理(二) 图像翻转,图像色彩调整
- neutron firewall as a sevice
- Android JNI编程(四)——C语言多级指针、数组取值、从控制台输入数组
- JSP页面用EL表达式取值取到/u123形式的中文乱码
- UVa 10900 So you want to be a 2n-aire?
- 遍历Map的四大方法记录
- 图像编码(二)
- WIN10 + VS2015 + WDK10 + SDK10 + VM虚拟机驱动开发调试环境搭建
- 一些面试用到的编程
- android studio 无法关联源代码
- 打jar包时将log4j配置文件放在jar包外的方法
- 如何看Extjs API手册
- Pearls poj1260 (DP)
- 欢迎使用CSDN-markdown编辑器
- Android的lowmemorykiller演变分析