研究图像压缩技术也差不多有一个星期了
今天先做一个小结吧
算是读书笔记
要总结图片压缩知识
先回顾一下当中用到的一些支撑的基础知识
一.色彩空间
颜色可用色彩空间来进行数学模拟,通过色彩空间我们能形象化的表示和产生我们需要的色彩,任何两种色彩空间能通过矩阵变换变形换算
RGB色彩空间 |
计算机和彩色电视都是通过发射3种不同强度的电子束,使屏幕内侧的R/G/B荧光材料发光而产生颜色的,3种颜色相加可以混合出其他颜色
|
任何一种光都能通过R/G/B三色不同分量相加混合而得到 F=r[R]+g[G]+b[B] |
HSI颜色空间 |
它比RGB更符合人的视觉特性 (对亮度敏感远强于对色度的敏感),又因为HSI空间各个分量可以相互独立分开处,因此在图像处理中运行HIS可以简化大量工作量 |
HIS反映的是人的视觉系统观察颜色的模式,与RGB换算公式 F=(2R-G-B)/(G-B) I=(R+G+B)/3 S=1-[min(R,G,B)/I] H=………… |
YUV颜色空间 |
电视信号彩色坐标空间 彩色摄像机得到彩色信号---分色---放大校正得到RGB-----矩阵变换—得到YUV 由亮度信号Y和两个色差信号R-Y/B-Y组成,亮度信号和色差信号是可以分离的
|
Y亮度 UV色差信号 彩色电视采用YUV解决了向黑白电视兼容问题 Y=0.3R+0.59G+0.11B U=-0.15R-0.29G+0.44B V=0.61R-0.52G-0.096B |
CMYK颜色空间 |
计算机屏幕用RGB颜色空间表示是因为有发光体 而打印和印刷时,纸张是不能发光的 通过CMY颜色空间,利用CMY颜色空间利用能吸收特定的光波而反射其他光波的颜色组合就能显示我们想要的颜色了
|
Cyan青 Megenta品红 Yellow黄
|
然后我们需要知道将一幅图片数字化的过程
采样-------------------------------- 量化-----------------------编码 |
图像各基本属性
1.分辨率---区别图片分辨率和显示分辨率
2.图像深度和颜色类型
颜色类型----1.真彩色----RGB直接决定
2.伪彩色----索引
3.直接色----RGB索引
图像深度和显示深度区别
信息熵的概念
在信息论中,熵是不确定性的量度,看以下示例
信息量:一个事件集合X1,X2,…………Xn处于一个基本的概率空间,其相应的概率为P1,P2…………Pn,且事件集的概率和为1。则每个信息的信息量为:I(Xk)=-loga(pk)
定义在一个概率空间中每一事件的概率不相等的平均信息量为信息熵,则信息熵为:H=E{I(XK)}
熵是编码所需比特数的下限,即编码所需最少的比特。编码时,要完全保持原图信息,则一定要用不比熵少的比特数来编码。
图像压缩必要性:图片数据的信息量非常大,为了存储方便和在网络上传输方便
可行性:图像的各像素间,无论是在行方向还是在列方向都存在着一定的相关性。相关性,即冗余度。我们只需要应用某处编码方法提取出或者减少这种冗余度,就可达到数据压缩的目的。
列出几种常见冗余
1. 空间冗余------
我们压缩的主要冗余,一副图片存储的同一景物表面上各采样点的颜色之间一般存在着空间连贯性,从而产生了空间冗余。我们可以通过改变物体表面颜色存储的方式来利用空间连贯性,从而减少数据量
2. 时间冗余
3. 结构冗余
4. 知识冗余
5. 视觉冗余
研究表面,人类的视觉系统对图像场的敏感性是非均匀和非线性的。(前面已经说过,对亮度的敏感远强于对色差敏感)然而我们在记录数据的时候,通常是按均匀和线性的方式存储的。利用视觉冗余可以在适当降低图片质量的情况下极大提升压缩比。
一个压缩系统由编码器和解码器两块内容组成,工作模式大概如下
信源输入f(x,y)----------转换----------------量化---------------符号编码器---------信道传输--------符号解码器----------反向转换
转换是将输入数据转换为可以减少输入图像中像素冗余的数据的集合
量化器通过对转换的图像进行量化,使输出精度与预设的保真度相一致,减少视觉冗余------------如果丢弃部分信息后找出的失真是可以容忍的,则压缩比的增加是有效的-----量化过程是不可逆的,有损主要多此一步
符号编码器是找一种近于熵,又方便计算机处理的编码方式进行编码,生成定长或不定长的编码,用于表示量化器的输出
常见各种编码方法
|
(用VISIO做的图,BLOG不支持)
在一个图片中
低频分量决定图像的主要轮廓,高频分量决定细节
图像信号的主要能量集中在低频区域,它反映图片的平均亮度,而细节和边缘信息则集中在高频区域
图像数据经常正交变换后,空域(空间域)中的总能量在变换域中得到保持,但像素之间的相关性下降,能量将会重新分布,并集中在变换域中少数的变换系数上,因此,选择少数的F(U,V)来重建图像f(x,y)就可以达到压缩数据的目的,并将重建图像f(x,y)仅引入较小误差
DCT变换的本质是将数据从时域转换为频域,以便根据人眼对不同频率的敏感程度进行分类---------------色空间转换原理同此(利用人眼对亮度和色度敏感度区别进行分类)
好了
会用到的基础知识也讲了这么多了
下面来看看JPEG压缩图像的流程和方法是怎么样的
JPEG定义了基本系统(每个编码器都必须实现一个基本顺序编码器的必备系统),拓展系统,特殊无损功能三个层次。
拓展系统包括了各种编码方式,所有这些编码的方法都是基本顺序的拓展。
下面仅讨论用的比较多的基于DCT的顺序模式,其基本流程如下
对源图像进行8X8像素块划分--------(色彩空间转换)--------FDCT计算------------依据量化表量化-----------Z排序--------------熵编码(LRE--------Huffman)
关于色彩空间转换,不记得在那篇论文里面看到了,先将RGB转为HSI再利用人眼对色差敏感度的差异HS进行量化(个人觉得很有用,压缩效果(4+1+1)/(4+4+4))
DCT变换其实就是将信号从时域转换为频域信号(关于时域与频域信号不了解,参加《信号与系》),DCT为可逆变换--------- 时域与频域能相互转换
通过FDCT将矩阵转换为频域矩阵后,我们利用JPEG推荐的标准量化表对矩阵进行量化,然后进行Z排序
(推荐量化表根据心理视觉实验得来,接近DC,为低频分量,对于整个图像的作用更明显,因此量化系数值越小,越能保留原理,同理,原理DC,高频--------),因此理解为何进行Z排序-----------Z排序得到XY据00距离相同
如果我们实现通过使用不同的量化表来达到不同的压缩效果
量化间隔随频率增加比标准量化表快,为了突出低频数据,适用于突出轮廓的图片,适应于细节越来越少的图象。
量化间隔随频率增加比标准量化表慢,突出高频数据,为了突出图片的细节。适应于细节越来越多的图象。
进一步,在JAVA中,我们设置图片压缩质量来进行压缩时,其实只是通过传入的参数quality来重新运算得到量化表,因此,当质量变低,越到后面,对图片大小的影响越小(熵编码等等步骤都未变,后期量化表可变性已很小)
因此在理论上否定了通过一直降低图片质量来降低图片大小的可能
又,如果自己重新设计量化表,则必须研究图像特定,研究量化表特点等等。
收获与不足
1.通过这次图像压缩方面的研究,认真的看了大一以为是废课的《多媒体技术应用》看了觉得没用的《级数》,明白了其实很多程序、功能那些神奇的东西都是来自于我们书上最朴素最枯燥的东西。 不是学的没有用,是我们自己不会用。
2.Google了无数次,百度了无数次,看了无数论文(其实也就10来篇啦),算是给自己查资料的方式又上了一课吧。
3.对图像知识算是有了个全方位的认识
不足,因为时间、能力(很多东西还是没学)、精力等原因,最后还是没能自己写出一个图像压缩软件出来
而且,也没能找到很好的方法解决自己最初的问题(如何在适当保留图片质量情况下随意压缩照片-----特指自己的远程控制技术中的实现)