视频压缩之冗余

2023-11-01

视频压缩之冗余

    对于数字视频信号,数据量很大,不管是存储还是传输的需要,做压缩处理是必须的,下面我们会做进一步阐述。

    以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz3.375MHz。以422的采样频率为例,Y信号采用13.5MHz,色度信号UV采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:

13.5*8 + 6.75*8 + 6.75*8=216Mbit/s

在数字视频标准ITU-R601标准中,PAL/NTSC制式的SDTV采用10bit量化时,亮度信号的码率为:

   取样频率量化比特数= 13.5MHz X 10bit = 135Mbps

  2个色差信号的码率为 2 X 6.75MHz X 10bit =135Mbps

  
SDTV
的总码率为13.5*10+ 6.75*10 + 6.75*10= 270Mbps

而对于高清晰度电视(HDTV),在SMPTE274M数字电视标准中,1080P
60Hz
的高清数字视频信号采用10bit量化时,

  
亮度信号的码率为:

取样频率量化比特数= 74.25MHz X 10bit = 742.5Mbps

 2个色差信号的码率为2 X 37.125MHz X 10bit = 742.5Mbps

HDTV的总码率为:

亮度信号码率 + 2个色差信号码率 = 742.5Mbps +742.5Mbps = 1485Mbps


 

那么对于现在逐渐普及的4K电视信号,数字化后的码率就更高了。如此可见,由于数字化后的视频数据量十分巨大,不便于传输和存储。单纯用扩大存储容量、增加通信信道带宽的办法是不现实的。而数据压缩是个行之有效的方法,通过数据压缩手段把信息的数据量压下来,以压缩编码的形式存储和传输,即紧缩节约了存储空间,又提高了通信信道的传输效率。

数字化后的视频信号能进行压缩主要依据两个基本条件:

  1. 数据冗余。例如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
  2. 视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。

数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。

        视频数据中存在着大量的冗余,即图像的各像素数据之间存在极强的相关性。利用这些相关性,一部分像素的数据可以由另一部分像素的数据推导出来,结果视频数据量能极大地压缩,有利于传输和存储。如上面所述,视频数据主要存在以下形式的冗余。

1. 空间冗余

       这是静态图像存在的最主要的一种数据冗余。一幅图像记录了画面上可见景物的颜色。同一景物表面上各采样点的颜色之间往往存在着空间连贯性,也就是说视频图像在水平方向相邻像素之间、垂直方向相邻像素之间的变化一般都很小,存在着极强的空间相关性。但是基于离散像素采样之后的数字视频来表示物体颜色的方式通常没有利用景物表面颜色的这种空间连贯性,特别是同一景物各点的灰度和颜色之间往往存在着的空间连贯性,从而产生了空间冗余。规则物体和规则背景的表面物理特性都具有相关性,也就是说某些区域中所有点的光强和色彩以及饱和度都是相同的,因此数据有很大的空间冗余。常称为帧内相关性。

2. 时间冗余

      这是一系列连续图像表示中经常包含的冗余。序列图像(如电视图像和运动图像)一般是位于时间轴区间内的一组连续画面,其中的相邻帧,或者相邻场的图像中,在对应位置的像素之间,亮度和色度信息存在着极强的相关性。当前帧的图像往往具有与前、后两帧图像相同的背景和运动物体,只不过移动物体所在的空间位置略有不同,所以后一帧的数据与前一帧的数据有许多共同的地方,对大多数像素来说,亮度和色度信息是基本相同的。而变化的只是其中某些地方,这就形成了时间冗余,这称为帧间相关性或时间相关性。

3. 符号冗余

       符号冗余也称编码表示冗余,又称信息熵冗余。信息熵指一组数据携带的平均信息量。这里的信息量是指从N个不相等可能事件中选出一个事件所需要的信息度量,即在N个事件中辨识一个特定事件的过程中需要提问的最少次数(=log2N比特)。将信息源所有可能事件的信息量进行平均,得到的信息平均量称为信息熵。

上述符号冗余、空间冗余和时间冗余,统称为统计冗余,因为它们都取决于图像数据的统计特性。

 4. 图像区域的相似性冗余

       在图像中的两个或多个区域所对应的所有像素值相同或相近,从而产生的数据重复性存储,这就是图像区域的相似性冗余。在这种情况下,记录了一个区域中各像素的颜色值,与其相同或相近的区域就不再记录各像素的值。矢量量化方法就是针对这种冗余图像的压缩方法。

 5. 结构冗余

        在有些图像的图案区域,图像的像素值存在着明显的分布模式。数字化图像中的物体表面纹理等结构往往存在着冗余,这种冗余称为结构冗余。例如,当一幅图有很强的结构特性,纹理和影像色调等与物体表面结构有一定的规则时,其结构冗余很大。这些图像的纹理区,像素值存在明显的分布模式,已知分布模式,可以通过某一过程生成图像。例如,方格状的地板图案等。

6. 纹理的统计冗余

       有些图像纹理尽管不严格服从某一分布规律,但是在统计的意义上服从该规律,利用这种性质也可以减少表示图像的数据量,称为纹理的统计冗余。

信号统计上的冗余度来源于被编码信号概率密度分布的不均匀预测编码:不直接传送图像信号,而传送图象信号之间的差值。这种差值呈拉普拉斯分布。

在预测编码系统中,需要编码传输的是预测误差信号,它是当前待传像素样值与它的预测值间的差分信号。预测值是通过在该像素之前已经传出的它的几个近邻像素值预测出来的。由于电视信号相邻像素间相关性很强,在大部分时间内预测都很准,预测误差很小。并且,预测误差高度集中在0附近,形成如上图所示的拉普拉斯分布。这种不均匀的概率分布对采用可变字长编码压缩码率极为有利。

预测编码时,对出现概率高的预测误差信号(0及小误差用短码,对概率低的大预测误差用长码,使总的平均码长要比用固定码长编码短很多。电视图像信号数据存在的信息冗余为视频压缩编码提供了可能。

7. 知识冗余

       有些图像与某些知识有相当大的相关性。由图像的记录方式与人对图像的知识差异所产生的冗余称为知识冗余。人对许多图像的理解与某些基础知识有很大的相关性。例如,人脸的图像有固定的结构,比如说嘴的上方有鼻子,鼻子的上方有眼睛等等,这类规律性的结构可由先验知识和背景知识得到。但计算机存储图像时还得把一个个像素信息存入,这就是知识冗余。根据已有知识,对某些图像中所包含的物体,可以构造其基本模型,并创建对应各种特征的图像库,进而图像的存储只需要保存一些特征参数,从而可以大大减少数据量。知识冗余是模型编码主要利用的特性。

8. 视觉冗余

        事实表明,人类的视觉系统对于图像的敏感性是非均匀和非线性的,它并不能感知图像的所有变化,对视觉不敏感的信息可以适当地舍弃。然而,在记录原始的图像数据时,通常假定视觉系统是线性的和均匀的,对视觉敏感和不敏感的部分同等对待,从而产生了比理想编码(即把视觉敏感和不敏感的部分区分开来编码)更多的数据,当某些变化不能被视觉所感知,则忽略这些变化,我们仍认为图像是完好的。人类视觉系统的一般分辨能力估计为26灰度等级,而一般图像的量化采用28灰度等级。这些对视觉不敏感的数据,并不能对增加图象相对于人眼清晰度作出贡献,而被认为是多余的数据,这就是视觉冗余度。

       通过对人类视觉进行大量实验,发现了以下的视觉非均匀特性:视觉系统对图像的亮度和色彩度的敏感性相差很大。随着亮度的增加,视觉系统对量化误差的敏感度降低。这是由于人眼的辨别能力与物体周围的背景亮度成反比。由此说明:在高亮度区,灰度值的量化可以更粗糙一些。人眼的视觉系统把图像的边缘和非边缘区域分开来处理,这是将图像分成非边缘区域和边缘区域分别进行编码的主要依据。人类的视觉系统总是把视网膜上的图像分解成若干个空间有向的频率通道后再进一步处理。

       同时人眼对低频信号比对高频信号敏感;对静止图象比对运动图象敏感;对图象中水平和垂直线条比对斜线条敏感。

        人眼对图像的细节分辨率、运动分辨率和对比度分辨率都有一定的限度。

       人眼对图像细节、幅度变化和图像的运动并非同时具有最高的分辨能力。图像信号在空间、时间以及在幅度方面进行数字化的精细程度只要达到了这个限度即可,超过是无意义的。从视觉心理学和生理学的研究表明,人眼对图像细节、运动和对比度三方面的分辨能力是互相制约的。观察景物时,并非对这三者同时都具备最高的分辨能力。

        同时,人眼视觉对图像的空间分解力和时间分解力的要求具有交换性,当对一方要求较高时,对另一方的要求就较低。根据这个特点,可以采用运动检测自适应技术。根据图像的每一局部的特点来决定对它的抽样频率和量化的精度,尽量地做到人眼的视觉特性相匹配,可做到在不损伤图像主观质量的条件下压缩码率。对静止图像或慢运动图像降低其时间轴抽样频率,例如每两帧传送一帧;对快速运动图像降低其空间抽样频率。例如,在预测编码中,利用受图像局部活动性影响的视觉掩盖效应设计的自适应主观优化量化器;在变换编码中,对不同空间频率的变换系数进行量化时采用视觉加权矩阵便是典型例子。

       另外,人眼视觉对图像的空间、时间分解力的要求与对幅度分解力的要求也具有交换性,对图像的幅度误差存在一个随图像内容而变的可觉察门限,低于门限的幅度误差不被察觉,在图像的空间边缘(轮廓)或时间边缘(景物突变瞬间)附近,可觉察门限比远离边缘处增大34倍,这就是视觉掩盖效应。

       根据这个特点,可以采用边缘检测自适应技术,对于图像的平缓区或正交变换后代表图像低频成分的系数细量化,对图像轮廓附近或正交变换后代表图像高频成分的系数粗量化;当由于景物的快速运动而使帧间预测编码码率高于正常值时进行粗量化,反之则进行细量化。在量化中,尽量使每种情况下所产生的幅度误差刚好处于可觉察门限之下,这样能实现较高的数据压缩率而主观评价不变。

               压缩视觉冗余度就是去掉那些相对人眼而言是看不到的或可有可无的图象数据,利用人眼的视觉特性进行压缩。

上述各种形式的冗余,是压缩图像与视频数据的出发点。图像与视频压缩编码方法就是要尽可能地去除这些冗余,以减少表示图像与视频所需的数据量。根据上述冗余的分类,图像压缩方法在广义上可以分成两类:

  • 一类是冗余度压缩技术,无损伤压缩技术,无失真,数学上可逆。即它是可还原的;又称为可逆编码(Reversible
    Coding)
  • 另一类是信息量压缩技术,有损伤压缩技术,有失真,数学上不可逆。即它是不可还原的;又称不可逆压缩(Non-Reversible
    Coding)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视频压缩之冗余 的相关文章

  • HTML5 视频结束倒计时

    我可以对 HTML5 视频的结束进行倒计时吗
  • 通过 iOS 应用程序在 Twitter 上分享视频

    是否可以使用 SLRequest 分享视频 我可以使用相同的方式共享图像 SLRequest postRequest SLRequest requestForServiceType SLServiceTypeTwitter requestM
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • 是否可以使用 S3 进行 Flash 伪流?

    我一直在使用 S3 来存储和提供 FLV 和 MP4 视频 它效果很好 但内容是渐进下载的 我想知道是否有可能让所谓的 伪流 与 S3 一起使用 伪流允许观看者在下载完整视频之前在视频中向前搜索 并仅将必要的位发送到 Flash 播放器 我
  • 流媒体视频文件?

    我需要流式传输 flv 文件 流媒体应该看起来像直播 我应该有一种方法可以更改目标文件 抱歉我的英语不好 如果 流式传输 的意思是 显示 Flash 视频剪辑 则 flv streaming 并不是真正的流式传输 而是正常的文件传输 即使文
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • Android - 如何合并两个视频

    基本上 我正在寻找一种将两个 mp4 视频文件 在 SD 卡上 组合在一起的方法 更像是在第一个视频的末尾附加第二个视频 我进行了很多搜索 但找不到合适的解决方案 好吧 我根本找不到任何解决方案 所以我的问题是 是否有一个库可以组合 并可能
  • 如何获取优酷access_token

    我在哪里可以找到access token refresh token在我的优酷账号里 我找到了如何使用外部脚本通过 API 将视频上传到 youku com 但我需要access token refresh token使用它 您需要对优酷应
  • Kivy 视频播放器无法在 Raspberry 3B+ 上运行

    我刚刚在我的电脑上安装了 Rasbian Stretch 和 KivyRPI3 我的应用程序工作正常 只是视频未播放 Rasbian kivy 和 gstreamer 都是最新的 我的应用程序和视频正在处理KivyPie 0 9b没有任何问
  • Android-全屏视频视图

    我正在尝试使此 VideoView 以全屏模式显示 public class ViewVideo extends Activity private String filename private static final int INSER
  • HTML5 视频:使用 Blob URL 流式传输视频

    我有一个 Blob 数组 实际上是二进制数据 我可以表达它 但是效率最高 我现在正在使用 Blob 但也许Uint8Array或者有什么会更好 每个 Blob 包含 1 秒的音频 视频数据 每秒都会生成一个新的 Blob 并将其附加到我的数
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • 在 Android 上提取/修改视频帧

    我有一个视频文件 我想获取视频的每一帧并对帧进行一些修改 例如在其中绘制另一个位图 放置一些文本等 Android 中是否有任何 API 框架可用于从视频中获取帧 我在 iOS 中使用他们的 AVFramework 做了类似的事情 如果可以
  • AVVideoComposition 应用过滤器处理程序不调用

    I want to add an overlay image into a video I use AVVideoComposition and CIFilter to do this but AVAsynchronousCIImageFi
  • 在 HTML5 中设置视频高度

    也许这是一个简单的问题 但它真的让我发疯 我只想设置 HTML5 视频的高度和宽度 我正在使用这段代码
  • 加载 HTML 格式的大型视频文件

    这是我的问题 我想播放存储在 S3 存储桶中的大型视频文件 3 6Gb 但该文件似乎太大 并且加载 30 秒后页面崩溃 这是我播放视频的代码 var video document getElementById video const med
  • FFmpeg av_read_frame 无法正确读取帧?

    好吧 我已经下载了一些 yuv 格式的原始 UHD 序列 并在 mp4 容器中使用 ffmpeg 对其进行编码 h264 4 4 4 100 质量 25fps 当我使用 ffprobe 找出编码了多少帧时 我得到 600 所以这是 24 秒
  • ffmpeg计算视频比特率

    我想知道如何计算该视频的比特率 http jell yfish us media jellyfish 30 mbps hd hevc mkv http jell yfish us media jellyfish 30 mbps hd hev
  • 运行时高压缩的 AS3 视频编码(H.264?)

    我需要在运行时将 AS3 中的视频图像数据 比如说显示对象 压缩为高压缩的字节数组 帧速率只需在 5 左右 但 1024x768 视频需要达到 使用 JPG 或 PNG 编码器可提供更高的 KB s 有没有开源方法可以在运行时对 as3 中

随机推荐

  • ASP.NET Core 中获取客户端(Client)IP的方法

    简介 本文主要介绍ASP NET Core中获取客户端 Client IP的方法代码 以及负载均衡的情况获取客户端IP 1 第一种方法 1 在Startup cs中ConfigureSerivces中配置 services Configur
  • 软件测试----性能测试

    性能测试 通过性能测试工具模拟正常状态 峰值状态及异常负载状态下对系统的各项性能指标进行测试的一系列活动验证软件系统是否达到了用户期望的性能需求 同时发现系统中可能存在的性能瓶颈及缺陷进而进行优化 性能测试的目的 1 验证系统性能是否满足预
  • C# 操作CAD报错【COMException (0x8001010A)消息筛选器显示应用程序正在使用中】的一种处理方式

    C 操作CAD报错 COMException 0x8001010A 消息筛选器显示应用程序正在使用中 使用了dynamic关键字依然无法解决 程序运行了5次可能出现3次此错误 网上搜索了很多方法都没有用 于是使用了do while循环解决此
  • 【小程序】报错:no such file or directory, access ‘wxfile://usr/miniprogramLog/log2‘

    出现场景 在微信小程序开发中 使用真机调试的时候 出现这个错误 解决方式 将真机调试由2 0切换到1 0 原因 开放社区中大佬的评论 真机调试一直报错 no such file or directory access 微信开放社区
  • BUUCTF-Misc部分

    二维码 附件压缩包下载下来是一个二维码图片 直接用工具查看 并没有直接给出flag 猜测是压缩包文件 使用winhex查看 明显的提示pk 压缩文件 可以用binwalk命令分离文件 也可以直接修改后缀 部分可能会存在损坏文件的问题 先复制
  • JAVA 获取实时汇率

    聚合数据中有很多我们会用到的数据 下面是获取实时汇率的方式 key值聚合数据注册后可获取 需要练习借用的 请评论回复 public void exchangeRate String urlIDR http op juhe cn onebox
  • 安装pip3

    安装pip3 yum install epel release yum install python36 y yum install python36 setuptools easy install 3 6 pip
  • uniapp之小程序setData迁移

    uniapp修改data中的值 第一次用uniapp 踩坑了 坑1 不能用this setData 得用this set 对象 属性名 值 坑2 data的属性得用this data做目标对象 贴上代码 export default dat
  • CCF-CSP真题《202303-1 田地丈量》思路+python,c++,java满分题解

    想查看其他题的真题及题解的同学可以前往查看 CCF CSP真题附题解大全 试题编号 202303 1 试题名称 田地丈量 时间限制 1 0s 内存限制 512 0MB 问题描述 问题描述 西西艾弗岛上散落着 n 块田地 每块田地可视为平面直
  • 华为校招机试题-查找充电设备组合-2023年

    题目描述 某个充电站 可提供n个充电设备 每个充电设备均有对应的输出功率 任意个充电设备组合的输出功率总和 均构成功率集合P的1个元素 功率集合P的最优元素 表示最接近充电站最大输出功率p max的元素 输入描述 输入为3行 第1行为充电设
  • C++中引用(&)的用法和应用实例

    对于习惯使用C进行开发的朋友们 在看到c 中出现的 符号 可能会犯迷糊 因为在C语言中这个符号表示了取地址符 但是在C 中它却有着不同的用途 掌握C 的 符号 是提高代码执行效率和增强代码质量的一个很好的办法 在 c 学习提高篇 3 隐式指
  • 代码审查审什么

    代码审查审什么 看着很多人做代码审查重点审格式和命名 制定的代码规范也主要偏重代码格式和命名 我真想骂一句操蛋 这真是浪费时间又解决不了问题 此篇文章就是骂完操蛋后奋笔快速敲下来的 有不妥之处请大家谅解 一 目的 为啥要花费时间要搞人工代码
  • 再学C语言(一)——关于ifndef

    关于ifndef的解释 ifndef 是 if not defined 的简写 是预处理功能 宏定义 文件包含 条件编译 当中的条件编译 可以根据是否已经定义了一个变量来进行分支选择 ifndef的作用 防止头文件的重复包含和编译 把头文件
  • LeetCode-1615. 最大网络秩

    1615 最大网络秩 题目说明 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络 每个 roads i ai bi 都表示在城市 ai 和 bi 之间有一条双向道路 两座不同城市构成的 城市对 的 网络秩 定义为 与
  • Windows中你用过的Git账户藏在哪里?

    最近换工作了 新公司也没有自己的Git服务器 所以还是选择了之前用过的Coding net 之前注册的账户用的是上一家公司的邮箱 为免出现不愉快的事情 重新注册了一个账户 顺顺利利地新建项目 clone push 晚上回到家 想clone一
  • mysql增量抽取方法_DataX增量抽取数据

    datax增量项目地址 datax作业配置文件 datax json job setting speed channel 16 content reader name mysqlreader parameter splitPk id use
  • 【数据结构】带头结点的单链表

    数据结构 带头结点的单链表 链表 逻辑连续 物理上不一定连续 带头结点的单链表 结构体 定义结构体 typedef int ELEM TYPE typedef struct Node ELEM TYPE mdata struct Node
  • 九、C++编译过程详解

    九 C 编译过程详解 1 什么是编译器 2 多文件编译与链接 3 为什么需要构建系统 Makefile 4 CMake CMakeLists txt 5 CMake中的静态库和动态库 1 什么是编译器 编译器是一个根据源代码生成机器码的程序
  • Windows获取密码及hash

    前言 在拿到一台 Windows 的管理员权限以后 可以通过多种方法获取 Windows 系统的明文密码或者 hash 值 这将有利于我们在内网中扩大渗透范围 0x01 Mimikatz Mimikat是一个法国人写的轻量级调试器 Mimi
  • 视频压缩之冗余

    视频压缩之冗余 对于数字视频信号 数据量很大 不管是存储还是传输的需要 做压缩处理是必须的 下面我们会做进一步阐述 以记录数字视频的YUV分量格式为例 YUV分别代表亮度与两个色差信号 例如对于现有的PAL制电视系统 其亮度信号采样频率为1