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

文章目录

  • 一:有损编码
    • (1)预测编码
      • A:概述
      • B:DM编码
      • C:最优预测器
    • (2)变换编码
      • A:概述
      • B:实现变换编码的主要问题
  • 二: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)=afN(x,y)eN(x,y)={+cc 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=1mai1
如下是一个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编码流程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/124993.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

README

一、Markdown 简介 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 应用 当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、简书、知乎等 编辑器 推荐使用Typora,官…

使用Akka的Actor模拟Spark的Master和Worker工作机制

使用Akka的Actor模拟Spark的Master和Worker工作机制 Spark的Master和Worker协调工作原理 在 Apache Spark 中,Master 和 Worker 之间通过心跳机制进行通信和保持活动状态。下面是 Master 和 Worker 之间心跳机制的工作流程: Worker 启动后&#xff0c…

Redis 7 第九讲 微服务集成Redis 应用篇

Jedis 理论 Jedis是redis的java版本的客户端实现,使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式;并且,使用Jedis提供的对Redis的支持也最为灵活、全面;不足之处,就是编码复杂度较高。 …

如何选择合适的HTTP代理服务器

HTTP代理服务器是一种常见的网络代理方式,它可以帮助用户隐藏自己的IP地址,保护个人隐私和安全。然而,选择合适的HTTP代理服务器并不容易,需要考虑多个因素。本文将介绍如何选择合适的HTTP代理服务器。 了解代理服务器的类型 HTT…

中使用pack局管理器:管理器布置小部件

一、说明 在本教程中,我们将了解如何制作登录 UI。今天的教程将重点介绍如何使用 Tkinter 的pack布局管理器。 二、设计用户界面 什么是布局管理器?创建图形界面时,窗口中的小部件必须具有相对于彼此排列的方式。例如,可以使用微件…

Vue + Element UI 前端篇(十一):第三方图标库

Vue Element UI 实现权限管理系统 前端篇(十一):第三方图标库 使用第三方图标库 用过Elment的同鞋都知道,Element UI提供的字体图符少之又少,实在是不够用啊,幸好现在有不少丰富的第三方图标库可用&…

Python 网页爬虫原理及代理 IP 使用

目录 前言 一、Python 网页爬虫原理 二、Python 网页爬虫案例 步骤1:分析网页 步骤2:提取数据 步骤3:存储数据 三、使用代理 IP 四、总结 前言 随着互联网的发展,网络上的信息量变得越来越庞大。对于数据分析人员和研究人…

【多思路附源码】2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策

赛题介绍 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬…

【容器vs虚拟机】

容器vs虚拟机 为什么用虚拟机什么是容器容器vs虚拟机 Docker被称为是轻量级的虚拟化。 首先,一般开发所需要的都是Linux环境,但我们大多数人的电脑都是Windows系统。所以要安装虚拟机,目的是为了在我们当前所使用的Windows上面安装上Linux环境…

conda创建python虚拟环境

1.查看当前存在那些虚拟环境 conda env list conda info -e 2.conda安装虚拟环境 conda create -n my_env_name python3.6 2.1在anaconda下改变python版本 当前3.7 安装3.7 conda create -n py37 python3.7 conda activate py37 conda create -n py37 python3.7conda a…

R语言入门——line和lines的区别

目录 0 引言一、 line()二、 lines() 0 引言 首先,从直观上看,lines比line多了一个s,但它们还是有很大的区别的,下面将具体解释这个两个函数的区别。 一、 line() 从R语言的帮助文档中找到,line()的使用&#xff0c…

微服务架构基础--第4章Spring Boot核心功能2

第4章Spring Boot核心功能2 一.预习笔记 1.静态资源访问 1-1:resource下的static文件夹会被视为默认的根目录(默认静态资源文件夹) 1-2:index.html是SpringBoot的默认首页(默认配置了的) 1-3:修改网页logo&#xf…

Golang RSA 生成密钥、加密、解密、签名与验签

文章目录 1.RSA2.Golang 实现 RSA生成密钥加密解密签名验签 3.dablelv/cyan参考文献 1.RSA RSA 是最常用的非对称加密算法,由 Ron Rivest、Adi Shamir、Leonard Adleman 于1977 年在麻省理工学院工作时提出,RSA 是三者姓氏首字母的拼接。 它的基本原理…

微服务01-基本介绍+注册中心EureKa

基本介绍 服务集群:一个请求由多个服务完成,服务接口暴露,以便于相互调用; 注册中心:每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务; 配置中心:这些…

失效的访问控制漏洞复现(dvwa)

文章目录 失效访问控制是什么?dvwa漏洞复现用未授权访问获取shell 代码审计 失效访问控制是什么? 由于缺乏自动化的检测和应用程序开发人员缺乏有效 的功能测试,因而访问控制缺陷很常见。导致攻击者可以冒充用户、管理员或拥有特权的用户&…

Android 10.0 禁用adb shell input输入功能

1.前言 在10.0的产品开发中,在进行一些定制开发中,对于一些adb shell功能需要通过属性来控制禁止使用input 等输入功能,比如adb shell input keyevent 响应输入事件等,所以就需要 熟悉adb shell input的输入事件流程,然后来禁用adb shell input的输入事件功能,接下来分…

GPT-人工智能如何改变我们的编码方式

在本文中,您将找到我对人工智能和工作的最新研究的总结(探索人工智能对生产力的影响,同时开启对长期影响的讨论),一个准实验方法的示例(通过 ChatGPT 和 Stack Overflow 进行说明,了解如何使用简…

python in excel 如何尝鲜 有手就行

众所周知,微软在8月下旬放出消息python已入驻excel,可到底怎么实现呢。 今天我就将发布python in excel的保姆级教程,开始吧! 获取office 365 账号 首先我们要有微软office365 这时候需要再万能的某宝去找一个账号,…

已经2023年了,你还不会手撕轮播图?

目录 一、前言二、动画基础1. 定时器2. left与offsetLeft3. 封装函数3.1 物体3.2 目标点3.3 回调函数 4.封装 三、基础结构3.1 焦点图3.2 按钮3.3 小圆点3.4 总结 四、按钮显示五、圆点5.1 生成5.2 属性5.3 移动 六、按钮6.1 准备6.2 出错6.2.1 小圆点跟随6.2.2 图片返回 6.3 b…

云端AI:释放企业创新力,打造智慧企业

文章目录 1. 云端AI的基本概念1.1 云计算1.2 人工智能1.3 云端AI 2. 云端AI的重要性2.1 成本效益2.2 弹性扩展2.3 无缝整合2.4 实时更新 3. 云端AI的应用领域3.1 智能客服3.2 预测分析3.3 自动化生产 4. 云端AI的未来趋势4.1 边缘计算与云端AI的融合4.2 可解释性AI4.3 隐私和安…