(数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG

文章目录

一:有损编码

(1)预测编码

A:概述

预测编码:是一种数据压缩技术,旨在通过利用数据中的统计规律来减少存储或传输所需的比特数。它基于预测模型,根据已经观察到的数据来预测未来的数据,并将预测误差编码和传输。预测编码的过程通常包括以下几个步骤

  • 模型训练:首先,根据已有的数据,建立一个预测模型。这可以是简单的算术模型,也可以是更复杂的统计模型,如线性回归、自回归模型等。
  • 预测:使用训练好的模型来预测下一个数据点的值。预测结果与实际观测值之间的差异称为预测误差。
  • 编码:将预测误差转换成二进制序列。较大的误差通常需要更多的比特表示,而较小的误差则需要较少的比特。
  • 传输/存储:将编码后的二进制序列进行传输或存储。由于预测误差经过编码后变得更紧凑,所以可以节省存储空间或减少传输带宽。

在解码时,接收端使用相同的预测模型和解码器来还原预测误差,并通过与先前的预测值相加来重建原始数据

B:DM编码

DM编码:也称为差分脉冲调制(Differential Manchester coding),是一种数字信号编码方法。它的主要特点是通过改变信号的边沿来传输信息,而不是依赖信号的电平。编码原理如下

  • 每个位周期被分成两个时间间隔,通常称为一个时钟周期
  • 逻辑值 1 被表示为从高电平到低电平或者从低电平到高电平的过
  • 逻辑值 0 被表示为在时钟周期中的每个中点处发生电平的变化
  • 在每个时钟周期开始时,信号的边沿都会发生变化,不管数据位的值如何,这样可以提供同步和时钟恢复的机制

DM编码优势如下

  • 抗干扰能力强:由于在每个时钟周期都有信号边沿的变化,DM编码在面对噪声和干扰时具有较好的抗干扰能力。
  • 同步性好:由于每个时钟周期开始时信号边沿都会变化,接收端可以利用这些边沿来进行时钟恢复和数据解码,保证了通信双方的同步性。
  • 错误检测能力强:由于每个位周期中的边沿变化是固定的,如果接收到的信号不符合DM编码规则,可以判断出错误发生

f ^ N ( x , y ) = a ⋅ f N ′ ( x , y ) e N ′ ( x , y ) = { + c if e N ( x , y ) > 0 − c if e N ( x , y ) ≤ 0 \begin{array}{l}\hat{f}{N}(x, y)=a \cdot f{N}^{\prime}(x, y) \\e_{N}^{\prime}(x, y)=\left\{\begin{array}{lll}+c & \text { if } & e_{N}(x, y)>0 \\-c & \text { if } & e_{N}(x, y) \leq 0\end{array}\right.\end{array} f^N(x,y)=a⋅fN′(x,y)eN′(x,y)={+c−c if if eN(x,y)>0eN(x,y)≤0

如下,假设输入序列如下,DM编码系统中的 a = 1 a=1 a=1和 c = 6 c=6 c=6

DM编码过程实现如下

C:最优预测器

最优预测器:是一种能够根据给定的数据和模型,对未来事件或现象进行准确预测的算法或系统。它能够通过分析历史数据、探索潜在模式和趋势,以及应用统计学和机器学习方法,对未知情况进行预测

  • 数据驱动:最优预测器通过利用可用的数据来进行预测,这些数据可以是过去的观测结果、实验数据、传感器数据等。它依赖于大量的数据,并利用这些数据中的模式和趋势来做出预测
  • 模型选择:最优预测器需要选择合适的模型来对数据进行建模。这些模型可以是统计模型、机器学习模型、时间序列模型等。选择合适的模型是提高预测准确性的重要因素之一
  • 特征工程:最优预测器通常需要对原始数据进行特征提取和特征工程,以便更好地表示数据的信息和特征。这可以包括对数据进行降维、标准化、归一化等操作,以及选择合适的特征子集
  • 参数调整:最优预测器可能有一些参数需要调整,以便使模型更好地适应数据和预测任务。这可以通过交叉验证、网格搜索等方法进行
  • 评估准则:最优预测器需要选择合适的评估准则来度量其预测性能。这可以是均方根误差(RMSE)、平均绝对百分比误差(MAPE)等。通过评估准则,可以比较不同模型或算法的性能,选择最优的预测器

求解最佳预测系数需要满足如下条件,这种限制是为了确保预测器的输出能落到灰度级的允许范围内,并减少传输噪声的影响,传输噪声的影响通常在重构图像中表现为水平的条纹

∑ i = 1 m a i ≤ 1 \sum_{i=1}^{m} a_{i} \leq 1 i=1∑mai≤1

如下是一个4阶的线性预测系统

(2)变换编码

A:概述

变换编码:是一种用于信号压缩的技术,它通过将信号转换到另一个表示域进行编码和压缩。在变换编码中,常用的变换方法包括傅里叶变换、离散余弦变换(DCT)、小波变换等

  • 信号分帧:将长时间的连续信号切分成若干个短时段的信号帧,通常每帧长度为2的幂次方
  • 变换:对每个信号帧应用某种变换方法,将信号从时域转换到频域或其他表示域。常用的变换方法有傅里叶变换、DCT、小波变换等
  • 量化:在变换领域中,对获得的转换系数进行量化,将其映射为离散的数值。通过量化可以减少表示数字的位数,从而实现数据压缩
  • 编码:对量化后的系数进行编码,将其转换为更紧凑的码字表示。常用的编码方法包括霍夫曼编码、熵编码等
  • 压缩:将编码后的数据进行存储或传输

在解码时,需要按照相反的步骤对压缩数据进行解码和恢复。即先进行解码,还原出量化系数,然后逆变换到原始的时域信号。变换编码的优势在于能够通过剔除冗余信息和利用信号的统计特性来实现高效的信号压缩。通过选择合适的变换方法和调整量化参数,可以实现在保持较高信号质量的前提下,显著减少数据的存储空间或传输带宽需求

下图是变换编码系统组成

B:实现变换编码的主要问题

问题一:子块尺寸选择:

  • 通常划分子块需要满足
    • 相邻子块间相关程度减到某个可接受水平
    • 子块的长和宽通常为2的整数次幂
  • 好处是
    • 使正交变换后能量更加集中
    • 大大降低计算复杂度
    • 一般典型的划分子块尺寸是8×8或16×16

问题二:正交变换:

  • K-L变换:很少使用。其严重依赖图像数据,每次都重新计算协方差矩阵,计算量大
  • DFT变换:块效应严重
  • DCT变换 :被认为是准最佳变换。被国际压缩标准采纳。优点是
    • 基本没有块效应
    • 信息封装能力强,把最多的信息封装在最少的系数中

问题三:比特分配:

  • 区域编码
    • 由于变换系数集中在低频区域,而低频区集中在变换域的左上角,可对该区域变换系数进行量化、编码、传输
    • 而右下角高频区既不编码又不传输,可达压缩目的。缺点为高频分量被丢弃,图像可视分辨率下降
  • 阈值编码:设定一门限值,只对变换系数幅值大于此阈值的编码,这样使低频成分不仅保留,而且某些高频成分也被选择编码。重建图像时,品质得到改善

二:JPEG

JPEG((Joint Photographic Experts Group)):是一种广泛应用于图像压缩的标准算法。它由国际电信联盟(ITU-T)和国际标准化组织(ISO)共同制定,旨在实现高效的图像压缩,以减小图像文件的大小并保持较好的视觉质量。JPEG压缩算法主要分为两个阶段

  • 离散余弦变换(DCT):JPEG将输入图像分成8x8的块,并对每个块应用离散余弦变换。这将图像从空域转换到频域,得到频域系数。DCT的作用是将图像中的能量集中在少数重要的低频系数上,而抑制高频细节
  • 量化:在DCT之后,JPEG使用量化表对频域系数进行量化。量化表中的元素决定了各个频域系数所保留的精度,即决定了压缩比。高频系数通常具有较低的量化值,因此会更加粗糙,而较低频的系数则可能获得较高的精度

通过DCT和量化过程,JPEG能够去除图像中的高频细节和冗余信息,实现图像压缩。压缩后的数据可以通过编码(如熵编码)进一步减小文件大小

下图是JPEG编码流程

相关推荐
hummhumm18 分钟前
Oracle 第23章:大数据与NoSQL集成
java·大数据·数据库·hive·python·oracle·nosql
软件算法开发19 分钟前
基于混沌加密的遥感图像加密算法matlab仿真
计算机视觉·matlab·混沌加密·遥感图像加密
小李子-_-27 分钟前
使用pycharm调试程序——完全显示张量的数值
ide·python·pycharm
哲伦贼稳妥1 小时前
什么是python爬虫?
python
不如语冰2 小时前
跟着问题学1——传统神经网络-线性回归及代码详解
人工智能·python·深度学习·神经网络·机器学习·语言模型·线性回归
叫我:松哥3 小时前
基于python的天气数据采集与可视化分析,对20个城市的天气适宜出行度分析
开发语言·爬虫·python·数据分析·matplotlib·数据可视化·天气
DK221513 小时前
计算机视觉系列----深入浅出了解计算机视觉
python·计算机视觉
极客代码3 小时前
【计算机视觉】深入浅出SLAM技术原理
人工智能·python·算法·计算机视觉·机器人·slam·地图构建
风清扬雨3 小时前
计算机视觉中的中值滤波:经典案例与Python代码解析
人工智能·python·计算机视觉
资深设备全生命周期管理6 小时前
标定之---EPSON机械手与第三方相机的校准功能设计By python
开发语言·python·数码相机