摘要

第一章 绪论

正文

1、一般而言,视频信号信息量大,传输网络所需要的带宽相对较宽。例如,一路可视电话或会议电视信号,由于其活动内容较少,所需带宽较窄,但要达到良好质量,不压缩约需若干 Mbps,压缩后需要 384Kbps;又如,一路高清晰度电视信号( HDTV),由于其信息量相当巨大,不压缩需 1Gbps,利用 MPEG-2 压缩后,尚需 20Mbps。

2、视频压缩编码目标

视频信号由于信息量大,传输网络带宽要求高,就像一辆庞大的货车只有在宽阔的
马路上才能行驶一样。于是出现一个问题:能否将视频信号在传送前先进行压缩编码,即进行视频源压缩编码,然后在网络上进行传送,以便节省传送带宽和存储空间。这里有两个要求:
    1) 必须压缩在一定的带宽内,即视频编码器应具有足够的压缩比;
    2) 视频信号压缩之后,应保持一定的视频质量。这个视频质量有两个标准:一个为主观质量,
由人从视觉上进行评定;一个为客观质量,通常用信噪比( S/N)表示。如果不问质量,一味地压缩,虽然压缩比很高,但压缩后严重失真,显然达不到要求;反之,如只讲质量,压缩比太小,也不符合要求。

3、帧内预测编码

众所周知,一幅图像由许多个所谓像素的点组成,如图 1.2 中的“O”表示一个像素,大量的统计表明,同一幅图像中像素之间具有较强的相关性,两个像素之间的距离越短,则其相关性越强,通俗地讲,即两个像素的值越接近。换言之,两个相邻像素的值发生突变的概率极小, “相等、相似或缓变”的概率则极大。

于是,人们可利用这种像素间的相关性进行压缩编码。例如当前像素 X(设为立即传送的像素)可用前一个像素 a 或 b、 c,或三者的线性加权来预测。这些 a, b, c 被称为参考像素。在实际传送时,把实际像素 X(当前值)和参考像素(预测值)相减,简单起见传送 X-a,到了接收端再把( X-a)+a=X,由于 a 是已传送的(在接收端被存储),于是得到当前值。由于 X 与 a 相似,( X-a)值很小,视频信号被压缩,这种压缩方式称为帧内预测编码。
    不仅如此,还可利用图 1.3 所示的帧间相关性进行压缩编码。由于邻近帧之间的相关性一般比帧内像素间的相关性更强,压缩比也更大。
    由此可见,利用像素之间(帧内)的相关性和帧间的相关性,即找到相应的参考像素或参考帧作为预测值,可以实现视频压缩编码。

4、变换编码

5、视频编码系统的基本结构

由图 1.5 可见,视频编码方法与可采用的信源模型有关。如果采用“一幅图像由许多像素构成” 的信源模型,这种信源模型的参数就是每个像素的亮度和色度的幅度值。对这些参数进行压缩编码技术称为基于波形的编码。如果采用一个分量有几个物体构成的信源模型,这种信源模型的参数就是各个物体的形状、纹理和运动。对这些参数进行压缩编码的技术被称为基于内容的编码

由此可见,根据采用信源模型,视频编码可以分为两大类,基于波形的编码和基于内容的编码。它们利用不同的压缩编码方法,得到相应的量化前的参数;再对这些参数进行量化,用二进制码表示其量化值;最后,进行无损熵编码进一步提高码率。解码则为编码的逆过程。

6、基于块的混合编码法

基于波形的编码采用了把预测编码和变换编码组合起来的基于块的混合编码方法。

为了减少编码的复杂性,使视频编码操作易于执行,采用混合编码方法时,首先把一幅图像分成固定大小的块,例如块 8×8(即每块 8 行,每行 8 个像素)、块 16×16(每块 16 行,每行 16 个像素)等等,然后对块进行压缩编码处理。

H.264/H.261/H.263/MPEG-1/2/4 都采用了基于块的混合编码法,都属于基于波形的编码。

《新一代视频压缩码标准-H.264_AVC》读书笔记1的更多相关文章

  1. 《Linux/Unix系统编程手册》读书笔记 目录

    <Linux/Unix系统编程手册>读书笔记1  (创建于4月3日,最后更新4月7日) <Linux/Unix系统编程手册>读书笔记2  (创建于4月9日,最后更新4月10日) ...

  2. 《Linux/Unix系统编程手册》读书笔记9(文件属性)

    <Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有 ...

  3. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  4. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

  5. 《Linux/Unix系统编程手册》读书笔记6

    <Linux/Unix系统编程手册>读书笔记 目录 第9章 这章主要讲了一堆关于进程的ID.实际用户(组)ID.有效用户(组)ID.保存设置用户(组)ID.文件系统用户(组)ID.和辅助组 ...

  6. 《Linux/Unix系统编程手册》读书笔记5

    <Linux/Unix系统编程手册>读书笔记 目录 第8章 本章讲了用户和组,还有记录用户的密码文件/etc/passwd,shadow密码文件/etc/shadow还有组文件/etc/g ...

  7. 《Linux/Unix系统编程手册》读书笔记4

    <Linux/Unix系统编程手册>读书笔记 目录 第7章: 内存分配 通过增加堆的大小分配内存,通过提升program break位置的高度来分配内存. 基本学过C语言的都用过mallo ...

  8. 《Linux/Unix系统编程手册》读书笔记3

    <Linux/Unix系统编程手册>读书笔记 目录 第6章 这章讲进程.虚拟内存和环境变量等. 进程是一个可执行程序的实例.一个程序可以创建很多进程. 进程是由内核定义的抽象实体,内核为此 ...

  9. 《Linux/Unix系统编程手册》读书笔记1

    <Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...

  10. 《Linux/Unix系统编程手册》读书笔记2

    <Linux/Unix系统编程手册>读书笔记 目录 第5章: 主要介绍了文件I/O更深入的一些内容. 原子操作,将一个系统调用所要完成的所有动作作为一个不可中断的操作,一次性执行:这样可以 ...

随机推荐

  1. flume高级组件及各种报错

    1,one source two channel 创建conf文件,内容如下: #定义agent名, source.channel.sink的名称 access.sources = r1 access ...

  2. Bzoj4197 寿司晚宴

    Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...

  3. 【NOIP1999】邮票面值设计 dfs+dp

    题目传送门 这道题其实就是找一波上界比较麻烦 用一波 背包可以推出上界mx 所以新加入的物品价值一旦大于mx+1,显然就会出现断层,所以可以以maxm+1为枚举上界,然后这样进行下一层的dfs. 这样 ...

  4. 关于vscode的个人配置

      vs code官方下载地址 : https://code.visualstudio.com/Download   下载好的vs code相当是一款纯文本编辑器,接下来开始进行对其配置:   页面设 ...

  5. [Leetcode Week6]Linked List Cycle

    Linked List Cycle 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/linked-list-cycle/description/ Des ...

  6. python基础===python内置函数大全

    python python内建函数 一.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 ...

  7. zlib库剖析(1):实现概览

    zlib库剖析(1):实现概览 http://blog.csdn.net/zhoudaxia/article/details/8034606 http://blog.chinaunix.net/uid ...

  8. EF选择Mysql数据源

    EF添加ADO.NET实体模型处直接选择Mysql数据源 最近想到EF是连接多数据库的orm框架,于是就想测试下.查了一堆网上资料后,测试连接mysql成功.步骤如下: 1.在你项目Model层中nu ...

  9. 【反演复习计划】【COGS2433】&&【bzoj3930,CQOI2015选数】爱蜜莉雅的冰魔法

    同bzoj3930. (日常盗题图) #include<bits/stdc++.h> #define N 1000010 #define yql 1000000007 #define ll ...

  10. Selenium2+python自动化69-PhantomJS使用【转载】

    前言 PhantomJS是一个没有界面的浏览器,本质上是它其实也就是一个浏览器,只是不在界面上展示. PhantomJS非常适合爬虫方面,很多玩爬虫的都喜欢用这个浏览器. 一.PhantomJS环境准 ...