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

news/2024/4/19 1:21:02

文章目录

  • 一:有损编码
    • (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.ppmy.cn/news/1096962.html

相关文章

qt作业day2

//widget.cpp#include "widget.h" #include "ui_widget.h"void Widget::usr_login() {if("admin" this->edit_acc->text()){if("123456" this->edit_psd->text()){speech->say("登录成功");emit jump_sig1…

8月AI实战:工业视觉缺陷检测

8月AI实战:工业视觉缺陷检测 –基于tflite的yolov8模型优化和推理 操作视频见B站连接:aidlux模型优化工业缺陷检测~~完美用我的华为手机实现缺陷检测的推理bilibiliaidlux模型优化工业缺陷检测~~完美用我…

【漏洞库】Fastjson_1.2.47_rce

文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- 利用工具- 漏洞环境- 漏洞扫描- 漏洞验证- 深度利用- GetShell- EXP 编写 漏洞挖掘- 寻找入口点- 指纹信息 修复建议- 漏洞修复 漏洞原理 漏洞描述 Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越&am…

报考浙江工业大学MBA项目如何选择合适的辅导班?

浙江工业大学MBA项目每年有数百人报考,在浙江省内除了浙大以外算是人数比较多的一个项目。2023级的招生中第一志愿也通过复试刷掉了百来人,在省内其实作为第一志愿报考的风险在逐渐增大,考生们如果坚持报考,则在针对联考初试的备考…

ROS可视化工具——Webviz和Foxglove

ROS1工具: ROS1而言,rqt和plotjuggler是我们最常用的工具,这两个工具:rqt中嵌入了很多有用的小工具,但是它需要播放离线包,没有办法对离线包进行实时的分析。而plotjuggler支持对离线bag包进行分析&#x…

JVM | 垃圾回收器(GC)- Java内存管理的守护者

引言 在编程世界中,有效的内存管理是至关重要的。这不仅确保了应用程序的稳定运行,还可以大大提高性能和响应速度。作为世界上最受欢迎的编程语言之一,通过Java虚拟机内部的垃圾回收器组件来自动管理内存,是成为之一的其中一项必…

数据分类分级流程

随着互联网的快速发展和大数据时代的到来,数据分类和分级成为了数据管理中的重要环节。数据分类分级的目的是为了让数据更加有序、易于管理和利用。本文将从数据分类分级的概念、流程和方法等方面进行介绍。 一、数据分类分级的概念 数据分类分级是指将数据按照一定…

Python+selenium自动化测试

批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。 unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一、导入HTML…

CSS整理

目录 CSS中的& 弹性(display:flex)布局 属性 justify-content align-items 遇到的css CSS中的& CSS中的&代表的什么 如源码: ul{ margin-bottom: 20px; &>li { margin-bottom: 0;} } &表示嵌套的上一级 这是sass的…

Yolov8-pose关键点检测:模型轻量化创新 | ScConv结合c2f | CVPR2023

💡💡💡本文解决什么问题:ScConv(空间和通道重建卷积),一个即插即用的架构单元,可以可以直接用来替代各种卷积神经网络中的标准卷积。 ScConv | GFLOPs从9.6降低至9,参数量从6482kb降低至6479kb Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_637742…

IIS短文件名泄露漏洞复现

IIS短文件名泄露漏洞复现 前言一、漏洞描述二、漏洞原理1.什么是短文件2.短文件特征 三、漏洞验证三、漏洞防御总结 前言 IIS短文件名泄露漏洞比较老了,而且只适合于windowsiisasp的网络结构,所有如下的复现步骤看下就行了,关键是要弄懂原理…

pip安装提示socket.timeout: The read operation timed out【已解决】

报错信息 下面有四种报错信息,都是pycharm安装第三方库和 pip 更新的提示 1、安装第三方库报错 安装第三方库时提示如下 要更新pip版本 [notice] A new release of pip available: 22.1.2 -> 22.2.2 [notice] To update, run: python.exe -m pip install --up…

【计组】3.5高速缓冲存储器

一、cache基本概念 二、cache—主存 映射方式 全相联映射(随即放) 主存块号、块内地址(即记录cache块大小贮存块大小) 有效位(记录该cache块内是否转入主存信息)、标记(采用主存块号进行标记…

斯坦福小镇升级版——AI-Town搭建指南

导语: 8月份斯坦福AI小镇开源之后,引起了 AIGC 领域的强烈反响,但8月份还有另一个同样非常有意义的 AI-Agent 的项目开源,a16z主导的 AI-Town 本篇文章主要讲解如何搭建该项目,如有英文基础或者对这套技术栈熟悉&#…

WPF基础入门-Class9-动画基础

WPF基础入门 Class9-动画基础 好了&#xff0c;后续可以开始尝试winform转wpf&#xff0c;开始用wpf做项目了 参考&#xff1a;WPF项目实战合集(2022终结版) 1、创建一个Button <Grid><Button x:Name"btn" Width"100" Height"40" C…

科技云报道:生成式AI已成为企业新兴风险,但我们不应该因噎废食

科技云报道原创。 2023年&#xff0c;生成式AI技术破茧成蝶&#xff0c;引发了一场全球范围的数字革命。 从最初的聊天、下棋开始&#xff0c;到医疗、金融、制造、教育、科研等&#xff0c;生成式AI表现出了强大的创造力和无限潜力。据不完全统计&#xff0c;截至今年8月底&…

C++信息学奥赛1190:上台阶

#include <iostream> using namespace std;long long arr[80]; // 用于存储斐波那契数列的数组int main() {int n;arr[1]1; // 初始化斐波那契数列的前三个元素arr[2]2;arr[3]4;for(int i4;i<71;i) { // 计算斐波那契数列的第4到第71个元素arr[i]arr[i-1]arr[i-2]…

【赠书活动】AI 时代,程序员无需焦虑

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前&#xff0c;先了解一下显示屏的分类&#xff0c;按照目前市场上存在的各种屏幕材质&#xff0c;主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏&#xff0c;在F429的开发板上&#xff0c;…

AList dokcer安装及百度网盘挂载

AList是开源的网盘管理工具。本文介绍如何通过docker安装AList并挂载百度网盘 1、AList安装 1.1、系统安装 通过docker命令进行安装&#xff0c;命令如下: docker run -d --restartalways -v /etc/alist:/opt/alist/data -p 5244:5244 --name"alist" xhofe/alist:…