通信原理板块——图像压缩编码

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
1、图像压缩编码
图像压缩编码可以分为有损压缩和无损压缩
图像分为静止图像和(图片)动态图像,因此有可以划分为静止图像压缩和动态图像压缩
2、静止图像压缩编码
(1)基本概念
静止数字图像信号是由二维的许多像素(piexl)构成的。在各邻近像素(上下左右)之间都有相关性。可以采用差分编码(DPCM)或其他预测方法,仅传输预测误差从而压缩数据率
在图像压缩编码中,常在变换域中进行有损压缩,即对时域中的数字图像信号进行某种变换,然后在变换域中进行压缩。通常采用的变换有离散傅里叶变化(DFT)、离散余弦变化(DCT)、沃尔什变换(WT)、小波变换等
(2)JPEG
最广泛应用的静止图像压缩标准是ISO/JPEG国际标准10918-1或ITU-T建议的T.81,即JPEG。
在JPEG标准中,对彩色原始图像像素的亮度分量Y和色差分量(U与V)按照2:1比例抽样,使图像的数据量压缩为原来的一半。
然后进行二维8×8像素块的DCT。由于DCT的左上角元素(直流分量)值在相邻子块间通常差别不大,所以单独对其作DPCM编码。其他DCT系数另进行量化,使之得到压缩。
量化后的信号在进行编码,编码分两步。
第一步是对0值像素进行游程长度编码(RLE)。RLE是一种用两个字节的编码方法,第一个字节是用于表示相同像素重复的次数,第二个字节是具体像素的值。在JPEG中,按照“Z”形次序发送时,若在8×8子块的DCT矩阵右下半区域中有8个连“0”,则RLE的第一个字节表示“8”,第二个字节表示“0”。
第二步是进行无损哈夫曼(Huffman)编码
在JPEG标准基础上,ISO制定了改进的标准JPEG2000,采用小波变换代替DCT。不仅仅在压缩特性上有了改进,同时提高了码流的灵活性,比如可以通过随意截短码流来降低分辨率。
3、动态图像压缩编码
(1)基本概念
动态数字图像是由许多帧静止图像构成的,即三维的图像,在邻近帧的像素之间有相关性。
动态图像的压缩是在静止图像压缩(JPEG压缩)基础上再设法减小邻近帧之间的相关性
ISO制定的动态图像压缩国际标准称为MPEG。是一系列标准,包括MPEG-1,MPEG-2,MPEG-4,MPEG-7.
由ITU-T制定的动态图像压缩标准称为H.261,H.262,H.263和H.264.
(2)基本压缩原理
以MPEG-2为例,MPEG-2将若干帧动态图像分为一组,在每组中的帧分为三类:I-帧,P-帧和B-帧
I-帧采用帧内编码,P-帧采用预测编码,B-帧采用双向预测编码
P-帧和B-帧位于两个I-帧之间,构成一图片组(GOP)
注意:在一组中,P-帧和B-帧的数目可多可少,也可以没有,但是I-帧必须有
在这里插入图片描述
I-帧的压缩采用标准的JPEG算法,被当作静止图像帧处理,压缩算法与前后邻帧无关。两个I-帧的时间间隔是可以调节的,最小间隔为1帧,两个I-帧是相邻的,最大间隔取决于存储器的容量。动态图像的剪辑只能在I-帧处进行。执行剪辑的时间通常不允许超过0.5s,故两个I-帧的间隔限制在不超过12帧-15帧。
P-帧利用和参考帧(前一个I-帧或P-帧)的相关性可得到更大的压缩。在当前带压缩的P-帧分为16×16像素的宏块。对每个宏块,在参考帧中寻找与其最匹配的宏块。将两者的偏移量编码为“动态矢量”
B-帧的处理,利用了前后两个图片作为参考帧,B-帧可获得更大的压缩
注意:
I-帧只利用减小图像的空间相关性进行压缩
P-帧和B-帧利用了图像的空间和时间相关性进行压缩

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter 基本使用以及性能测试基本流程使用总结

使用场景 需要对一部分接口做性能测试,并检验修改后的效果下载安装 搜索 Apache JMeter - Download Apache JMeter 或直接到官网 https://jmeter.apache.org/download_jmeter.cgi?cm_mc_uid15063477198714828218851&cm_mc_sid_502000001483277541下载 选择 zi…

2023年11月数据库流行度最新排名

点击查看最新数据库流行度最新排名(每月更新) 2023年11月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

Linux系统环境变量

Linux系统环境变量 1. 环境变量1.1 定义环境变量1.2 使用环境变量 2. 环境变量作用2.1 PATH 3. 设置环境变量3.1 设置系统级环境变量3.2 设置用户级环境变量3.3 设置临时环境变量 1. 环境变量 在Linux系统中,常用的关键信息以键值对(KeyValue&#xff09…

用C++编写动画+音频版极乐净土

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<graphics.h> #include<Windows.h> #include<MMSystem.h>//播放音乐所需要的头文件 #pragma comment(lib,"winmm.lib")//告诉编译器&#xff0c;加载winmm.lib库文件 #define C…

[OS]11.9.2023 中断

中断向量表 CPU的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系&#xff0c;使得CPU根据中断信息可以找到要执行的处理程序。 中断信息中包含有标识中断源的类型码。根据CPU的设计&#xff0c;中断类型码的作用就是用来定位中断处理程序。 比如CPU 根据中断类型…

【数据结构】 二叉树理论概念!一文了解二叉树!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 数据结构解析 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️树的概念☁️树的结构☁️树的小知识☁️树的表示与运用 &#x1f324…

python定时任务scheduler根据参数执行

python执行定时任务请参考&#xff1a;python使用apscheduler每隔一段时间自动化运行程序 传入参数时&#xff1a; 使用add_job函数中添加参数&#xff1a;args[参数1, 参数2]....传入参数顺序与对应位置一致 示例程序 import datetime from apscheduler.schedulers.backg…

一键批量删除文件名中的空格,高效整理您的文件

你是否曾经因为文件名中多余的空格而烦恼&#xff1f;这些空格不仅影响了文件的美观&#xff0c;还可能导致一些不必要的错误。现在&#xff0c;我们向您介绍一款全新的工具&#xff0c;它可以帮助您一键批量删除文件名中的空格&#xff0c;让您的文件整理更加轻松、高效&#…

【Java笔试强训】Day9(CM72 另类加法、HJ91 走方格的方案数)

CM72 另类加法 链接&#xff1a;另类加法 题目&#xff1a; 给定两个int A和B。编写一个函数返回AB的值&#xff0c;但不得使用或其他算数运算符。 题目分析&#xff1a; 代码实现&#xff1a; package Day9;public class Day9_1 {public int addAB(int A, int B) {// wr…

软件测评中心▏软件功能测试和非功能测试的区别和联系简析

在软件开发的过程中&#xff0c;功能测试和非功能测试是两个重要的环节。功能测试是指对软件的各项功能进行验证和确认&#xff0c;关注软件是否按照需求规格说明书进行了实现&#xff0c;是否满足了用户的功能需求。而非功能测试是指对软件的性能、可靠性、安全性等方面进行测…

异地传输大文件最快且安全稳定的办法

无论是企业还是个人&#xff0c;都会有传输大文件的需求&#xff0c;特别是在异地时&#xff0c;工作中最典型的就是项目资料、合同文档、视频素材等都是有一定的及时性的&#xff0c;那么在传输过程中&#xff0c;没有好的传输方式会间接性的影响到整体工作的进行&#xff0c;…

vue项目electron打包

1.设置国内镜像 npm config edit 命令行输入后会弹出npm的配置文档&#xff0c;需要文档末尾加入 electron_mirrorhttps://npm.taobao.org/mirrors/electron/ electron-builder-binaries_mirrorhttps://npm.taobao.org/mirrors/electron-builder-binaries/ 2.全局安装electron …

linux基础指令上篇

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 01. ls 指令2. pwd命…

目标检测算法 - YOLOv1

文章目录 1. 作者简介2. 目标检测综述3. YOLOv1算法3.1 预测阶段3.2 预测阶段后处理3.3 训练阶段 YOLO的全称是you only look once&#xff0c;指只需要浏览一次就可以识别出图中的物体的类别和位置。 YOLO是目标检测模型。目标检测是计算机视觉中比较简单的任务&#xff0c;用…

【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV1)模型算法详解

【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV1)模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV1)模型算法详解前言GoogLeNet讲解Inception结构InceptionV1结构1x1卷积的作用 GoogLeNet模型结构GoogLeNet Pytorch代码完整…

Maven-构建生命周期与插件

一、概念和基础 Maven针对项目的构建和发布定义了一系列明确的步骤&#xff0c;根据作用不同这些步骤分属于不同的生命周期。Maven针对每个步骤都有对应的默认插件&#xff0c;Maven在构建过程中是通过调用这些插件完成整个过程的。开发者只需要通过简单的命令就可以驱动maven…

Microsoft SDKs 有文件重定义导致编译失败的处理

一个32位的mfc项目&#xff0c;之前采用vs2019编译&#xff0c;现在换了电脑(系统是win10)&#xff0c;采用vs2022编译时&#xff0c;提示如下错误&#xff1a; 1>------ 已启动生成: 项目: aAnsys, 配置: Debug Win32 ------ 1>cl : 命令行 warning D9035: “Gm”选项…

Luckysheet 实现excel多人在线协同编辑

前言 前些天看到Luckysheet支持协同编辑Excel&#xff0c;正符合我们协同项目的一部分&#xff0c;故而想进一步完善协同文章&#xff0c;但是遇到了一下困难&#xff0c;特此做声明哈&#xff0c;若侵权&#xff0c;请联系我删除文章&#xff01; 若侵犯版权、个人隐私&#x…

图及谱聚类商圈聚类中的应用

背景 在O2O业务场景中&#xff0c;有商圈的概念&#xff0c;商圈是业务运营的单元&#xff0c;有对应的商户BD负责人以及配送运力负责任。这些商圈通常是一定地理围栏构成的区域&#xff0c;区域内包括商户和用户&#xff0c;商圈和商圈之间就通常以道路、河流等围栏进行分隔。…

酷开科技持续推动智能投影行业创新发展

近年来&#xff0c;投影仪逐渐成为年轻人追捧的家居时尚单品。据国际数据公司&#xff08;IDC&#xff09;报告显示&#xff0c;2022年中国投影机市场总出货量505万台&#xff0c;超80%为家用投影仪。相比于电视&#xff0c;投影仪外观小巧、屏幕大小可调节&#xff0c;无论是卧…