目录
8.1基础知识
数据压缩是指减少表示给定信息量所需数据量的处理。相同数量的信息包含不相关或重复信息的表示称之为冗余数据。
b为信息中的比特数,则数据冗余R=1-1/C,C为压缩率:C=b/b*
8.1.1三种冗余
编码冗余:指的是在信息被转换成符号系统(比如字母、数字、或者比特)的过程中出现的一种“浪费”。每个信息或事件都会被分配一个特定的序列,也就是编码,这个序列的长度就是码字的长度。在二维灰度图像中,用来表示每个像素灰度的8比特编码,可能比实际需要的比特数多。这意味着一些信息被多余地编码了,增加了数据的大小。
空间和时间冗余:空间冗余发生在相邻像素之间,因为它们通常是相关的,这意味着一个像素的信息可能会部分或完全重复另一个像素的信息。在视频序列中,时间冗余发生在相邻帧中,因为相邻帧之间的像素信息也可能是相似或重复的。
不相关的信息:人类视觉系统并不重视或者与主要用途无关的信息。这些信息虽然存在于图像中,但在视觉处理中往往被忽略或者视为冗余的,因为它们没有被有效利用。
图8.1(a)到(c)中由计算机生成的图像显示了每一种基本冗余。
8.1.2图像信息的度量
信息论提供了一幅图像实际含有多少比特的数学框架。
一个具有概率P(E)的随机事件E可被说成是包含:单位的信息。
一个离散集合,其概率
则每个信源输出的平均信息称为该信源的熵为
山农第一定理:对于一个离散随机过程,如果要用一个符号串来表示其发生的所有可能事件,那么平均每个事件至少需要多少比特来表示,这个值是由该过程的信息熵决定的。信息熵反映了随机过程的不确定性或信息量的大小。对于一个离散的随机过程,无法压缩的信息量(即信息熵)决定了理论上最小的表示该过程所需的比特数。
8.1.3保真度准则
保真度准则是为了量化图像信息的丢失,分为:客观保真度准则和主观保真度准则。
客观保真度准则:信息应当客观、真实、准确,不带主观偏见或个人情感色彩。
主观保真度准则:信息应当忠实反映作者或说话者的真实意图、情感或态度,保持信息传递的完整性和真实性
8.1.4图像压缩模型
图像压缩系统是由两个不同的功能部分组成的:编码器和解码器。编码器执行压缩操作,解码器执行解压缩的互补操作。
下图为图像压缩的过程:
f(x,…)先经过映射器为设计来降低空间和时间冗余的形式,然后通过量化器根据预设的保真度准则来降低映射器输出的精度,最后再有符号编码器生成一个定长编码或变长编码,此编码可以经过符号解码器进行解码,最后将图像映射出来。
8.2基本的压缩方法
8.2.1霍夫曼编码
它通过使用不同长度的编码来表示不同符号,使得出现频率高的符号用较短的编码表示,频率低的符号用较长的编码表示,从而达到有效压缩数据的目的。
8.2.2Golomb编码
Golomb编码特别适用于非均匀分布的数据。它将整数值编码为两部分:商数部分和余数部分。商数部分使用固定位长度的二进制数表示,而余数部分则使用可变长度编码,通常采用类似于霍夫曼编码的方式来表示。这种编码方法在无损压缩中常用于编码非均匀分布的数据,能够有效地减少数据传输或存储的空间。
给定一个非负整数n和一个正整数除数m>0后,表示为Gm(n)的n关于m的Golomb编码是商[n/m]的一元编码和n mod m的二进制表示的一个合并。G.(n)的构建如下:
8.2.3算术编码
编码过程中,算术编码将每个符号(如字符或像素)映射到一个区间,该区间的长度与符号出现的概率成比例。经过多次迭代,最终将整个数据流映射到一个高度压缩的数值范围内。解码时,根据浮点数值和概率信息重新构建出原始数据流。
下图为编码过程:
8.2.4LZW编码
适用于文本和一般数据的压缩。它基于字典的方式工作,将输入的数据流分割为序列,并将序列映射到字典中的索引。初始时,字典包含所有可能的单个字符。随着输入数据的处理,LZW算法动态地更新字典,将新的序列添加到字典中,并用相应的索引来替代原始序列。
这种方式可以显著减少数据的大小,特别是对于具有重复模式或长序列的数据。
8.2.5行程编码
特别适合处理包含大量连续重复数据的情况。它的基本思想是用连续重复出现的数据项和它们的出现次数来代替原始数据,从而减少存储或传输的数据量。
具体来说,行程编码将连续相同的数据项(通常是字符或像素)替换为一个元组,包含该数据项和它们的重复次数。例如,一个序列 "AAAAABBBBCCCCDDDD" 可以被行程编码为 "5A4B4C4D"。这种方法特别适合于处理图像中大片相同颜色区域、文本中大段相同字符、或者其他类型的数据流中连续重复出现的情况。
8.2.6基于符号的编码
它将数据中的每个符号(通常是字符、像素或其他数据单位)映射到一个编码符号序列,以减少数据的存储或传输所需的空间。基本思想是通过建立符号与编码之间的映射关系,使得出现频率较高的符号可以用较短的编码来表示,而出现频率较低的符号则用更长的编码来表示。这种方式可以有效地减少数据流的长度,从而实现压缩效果。
比如说图像用一个三元组{(x,y,t),(x₂,y₂,t),…}的集合来编码,其中,每个(x,y)对规定了图像中一个符号的位置,从而压缩整个图像。
8.2.7比特平面编码
旨在通过分离和分层处理图像的不同比特位来实现压缩。
在比特平面编码中,图像被分解为多个比特平面,每个平面包含图像中特定比特位的信息。通常情况下,最高有效位(MSB)平面包含最重要的信息,而最低有效位(LSB)平面包含最不重要的信息。这种分层结构允许按照重要性逐步编码和传输图像数据,以便在低比特率下实现更好的压缩效果。
列如:一幅m比特单色图像的灰度可以用如下形式的基2的多项式来表示:
基于这种特性,将该图像分解为二值图像集的一种简单方法是把该多项式的m个系数分离为m个1比特的比特平面。
8.2.8块变换编码
该技术把图像分成大小相等(如8×8)且不重叠的小块,并使用二维变换单独地处理这些块。过程如下图所示:
比特分配:截取后的级数展开相关的重建误差,是被丢弃变换系数的数量、相对重要性及用于表示保留系数的精度的函数。
区域编码:基于最大方差选择系数。区域模板是在最大方差的位置上设为1,而在所有其他位置上置0。
阈值编码:将连续的数据根据设定的阈值分成两个类别:一类表示为0,另一类表示为1(或其他标志)。这样可以将连续的数据序列压缩为一个较短的二进制序列,从而减少存储或传输所需的数据量。
8.2.9预测编码
通过消除紧邻像素在空间和时间上的冗余来实现。
无损预测编码:通过分析数据中的预测模型或模式,预测下一个数据元素的值,并将实际值与预测值之间的差异(称为预测误差)编码和存储。如果预测模型足够准确,预测误差通常会相对较小,因此可以有效地压缩数据而不损失任何信息。
有损预测编码:利用数据中的统计特性和预测模型来预测下一个数据元素的值,然后将预测值与实际值之间的差异进行编码和存储。不同于无损预测编码,有损预测编码在预测过程中可能采用更简化的模型或减少精度,以减少数据的存储或传输成本。
8.2.10小波编码
利用小波变换将信号或图像分解为多个尺度和频率的小波系数。小波系数表示了信号在不同时间尺度和频率上的变化信息。接着,通过丢弃或量化较小幅度的小波系数,可以实现数据的压缩,而较大幅度的系数则保留用于重建原始信号。其编码过程如下:
8.3数字图像水印
数字图像中嵌入的一种隐藏信息的技术,目的是保护图像的版权、验证图像的真实性或提供额外的信息。基本原理是将一些特定的信息(如作者信息、所有权标识、日期时间等)嵌入到原始图像中,而这些信息对于普通用户来说通常是不可见的。
保护权益的方法包括:
1.版权识别。2.用户识别或指纹。3.著作权认定。4.自动监视。5.复制保护。
如下为水印添加实验:
from watermarker.marker import add_mark
add_mark(file="huanghun.jpg",#原图片
mark="宿舍黄昏",#水印文字
out="./shuiyinhou",#生成水印后图片位置
color='#00FFFF',#颜色
size=20,#字体大小
opacity=1,#透明度
angle=45,#旋转角度
space=50,#间隔大小
)