码率控制技术原理

引起编码器的输出比特码率波动的原因主要有两个。首先,数字视频信号中包含了大量的时域和空域冗余,编码器的主要任务就是去除这些冗余。由于时间冗余和空间冗余是随机的,从而造成编码器输出比特率波动。另一个原因是变长编码,变长编码根据某个事件(如零游程)的发生概率来设计码字。事件发生的概率越大,其编码码字越短,反之亦然,从而引起编码器输出比特率的变化。由于视频应用的要求和目的不同,根据输出码率是否要求恒定,传输码流的信道可分为两种类型,即可变比特率的码率控制VBR(Variable Bit Rate)和恒定比特率的码率控制CBR(Constant Bit Rate)。在变比特率信道下,可以为更高的运动量或更详细的纹理信息分配更多的带宽,从而获得更高效的带宽共享,有利于获得恒定图像质量,同时有利于动态分配可用带宽。这种动态带宽分配需要一种码率控制机制,可以根据时变网络条件和需求,调整并限定各视频源的输出业务量。
        然而,诸如公共交换电话网络PSTN(Public Switched TelephoneNetwork)固定带宽信道却常用固定比特率传送信息。为了获得固定速率的视频比特流传输,在视频编码器和信道间采用了缓冲器来平滑比特率的波动。缓冲器的引入虽然有利于平滑码流,然而,它也引入了一定的延迟。同时,在很多视频序列中,比特率波动会持续几帧,从而需要一个大缓冲器来缓冲长时间的波动。这种长时缓冲使得视频业务不能达到实时传输,因此,除了缓冲视频数据,需要采用其他措施来减少编码器的突发量。最常用的技术是调整一些编码参数作为缓冲器饱和度的函数,如反馈控制

        码率控制中的性能指标有码率、缓冲延时、缓冲区状态等。在码率控制系统中,校正装置为码率控制器。它负责收集码率、延时和缓冲区状态信息并调节编码参数,使得性能指标维持在给定水平上。缓冲区起平滑码率波动的作用。在编码端,数据输入缓冲区的码率是变化的,而输出端则取决于码率控制模式。在恒定码率模式下,输出码率维持不变;在可变码率模式下,输出码率允许在一定的范围内波动。理论上讲,当缓冲区无限大时,延时长短和缓冲区大小成正比。对实时视频通信系统而言,延时要求比较苛刻,延时越小越好。这就是说长期的码率波动不能通过加大缓冲区的方式消除。

        由于传输带宽和存储空间的限制,视频应用对压缩比有较高的要求。无损编码所能提供的压缩比远不能满足实际视频应用的需求,但如果我们能够接受某种程度的失真,高的压缩比也不难获得。人眼视觉系统对高频信号变化不敏感,部分高频信息丢失不会降低主观视频质量,主流的视频编码算法正是采用了量化方法消除视频信号的生理视觉冗余,获得比无损压缩更高的压缩比而又不会带来视频质量的显著降低。率失真(RateDistortion理论旨在描述编码失真度(Distortion,重构误差)和编码数据速率的关系。该理论建立在图像是连续的基础上,在有限数据速率下,由于存在量化误差,必然存在失真。尽管率失真理论没有给出最优编码器,但它还是给出了容许失真条件下信息压缩允许的下界。当使用有损编码方法时,重构图像g(x,y)和原始图像f(x,y)存在差别。一般地,失真度D函数形式可以根据需要任意选取,例如平方代价函数、绝对代价函数等。在图像编码中,D常用均方差形式表示:

 

 

        当D=O时,编码对应于无损压缩,输入码率应大于或等于信源熵H(X);若D一为最大允许失真,则相应码率下限为R(D一)。典型的率失真曲线R—D如图3.1所示。R(D’)为D’的凸递减函数。

 

 

        率失真优化主要用于模式选择。在H.264视频标准中,有以下几种模式:INTRA.4x4,INTRA.16x16,SKIP,INTER—16×16,INTER.16×8,INTER.8×16,INTER.8×8。
假设图像序列S被分割为K个不同的块4,相应的像素用6t来表示。编码6t所选择的编码模式%分为帧间编码和帧内编码。每种编码模式都包括预测编码的模式和编码参数。其中编码参数包括变换系数和量化参数等。对于帧间模式,编码参数还包括一个或多个运动矢量。

    在对图像序列S进行基于块的混和视频编码时,对于每块选取的编码模式应该使编码后的Lagrange代价函数J(S,II九)达到最小。编码后比特流的比特率和失真度与时间和空间有着密切联系,而不仅仅是和编码模式有关,但当且仅当为每个块Sk所选定的编码模式使得代价函数J(S,IIX)最小时,编码器得到最优化。
    编码控制模式中,宏块分割模式的判决与帧间模式运动估计的最佳比特分配这两个问题将会被分别处理。在Lagrange参数A'MODE与量化参数选定后,H.264/AVC编码器通过最小化Lagrange代价函数实现对每一个宏块编码模式的选定。对于宏块St,模式Ik,拉格朗日模型选择公式为:

对于INTRA模式,失真是重建宏块s与原始宏块s的平方差(SSD),按下式计算:

 

 

        对于SKIP模式,DReC禾RReC不取决于当前量化参数的值,DReC由当前宏块与参考以前帧的宏块的SSD计算得到,RREC约为1bit/宏块。对于INTER模式,它的拉格朗日代价函数计算较为复杂,这是由于多种块模式和多参考帧的运动估计。给定拉格朗日常数.t,MOTION,宏块Si拉格朗日代价函数
如下式:

 

 


其中,M为所有可能的编码模式,失真按下式计算:

拉格朗日常数的选择如下:

 

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

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

相关文章

python如何安装pip

pip的安装操作 pip简介 pip 是一个现代的,通用的 Python 包管理工具。提供了对Python 包的查找、下载、安装、卸载的功能。 环境搭建 安装pip首先要安装python,可以参考python安装教程 安装完python后,可以在cmd中输入pip list 测试一下pip是否默认附带着安装,若…

【排序算法】python 十大经典排序算法(全网最详)

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

最新海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明

本文档主要介绍海康威视设备预览、回放、流媒体取流的RTSP URL和IE直接预览、回放的HTTP URL。RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器进行测试,IE等浏览器网页不支持RTSP协议直接取流预览或者回放。网页上需要跳过登录界面…

pug模板引擎(原jade)

前面的话 为什么要引入pug,pug有什么特别之处呢?有一些嵌套层次较深的页面,可能会出现巢状嵌套,如下图所示 在后期维护和修改时,一不小心少了一个尖括号,或者某个标签的开始和闭合没有对应上,就…

python安装环境傻瓜式安装_前后端分离——前端开发环境傻瓜式一步到位 nodejs ruby python nginx 安装搭建配置...

前端开发环境一步到位 一、准备工作 nodejs安装 安装:next->next.... Ruby安装 安装:next->next.... 需要配置到path:将安装目录复制到环境变量中,跟jdk环境变量配置一样。 注意下一步:Python安装 安装&#xff…

【Python】Python学到什么程度可以面试工作?------持续更新 ...

前言: 从事python学习,有爬虫、web后台、深度学习相关经验, 坐标北京欢迎骚扰。 本答案力求简洁和直击重点,代码部分使用Python3,更详细的解释请Google,回答有误请务必提醒答主,我将及时改正。…

H.264的码率控制算法

H.264的码率控制算法采用了多种技术,其中包括自适应基本单元层(Adaptive Basic Unit Layer)、流量往返模型(Fluid Traffic Model)、线性MAD模型、二次率失真模型等。并且采用了分层码率控制策略,共分为三层:GOP层、帧层和基本单元…

消息中间件Client模块划分

上图是之间讨论确定的系统架构(后续内容会按照这个架构来叙述),其中: 客户端包含Producer和Consumer两大块 客户端需要和NameServer交互来获取元数据 客户端需要和Broker交互来读写消息 Client模块划分 1. 网络模块 第一个仍然是…

详解HashMap数据结构实现

HashMap的设计是由数组加链表的符合数据结构,在这里用自己的语言以及结合源码去总结一下,如果有不对的地方希望评论指正,先拱手谢谢。 HashMap是日常中非常常用的一种数据结构,我们要想深入了解学习任何一门技术,都是要…

java web开发学习手册_Java 人必备学习手册开发下载!

今天给大家分享一套 5000 页的 Java 学习手册,新鲜出炉!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,…

Django初次体验

Django初次体验 关于django的安装,宝宝们可以参考django简介以及安装 Django框架的搭建 在终端中进入需要建立项目的目录 执行: django-admin startproject mysite其中,mysite是项目目录名,可以自定义 我们来看看startprojec…

【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...

【002-Add Two Numbers (单链表表示的两个数相加)】 原题 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked…

不出现php version网页_php冷知识 - 从命令行参数列表中获取选项

分享一个php的冷知识 - ,从命令行参数列表中获取选项用到的函数是getopt 说明函数签名是这样的getopt ( string $options [, array $longopts [, int &$optind ]] ) : array|bool false解析传入脚本的选项,成功返回数组,解析失败返回fals…

[计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2

faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04caffecuda7.5cudnn5.1.3opencv3.0matlabR2014a环境搭建记录 首先,进入官方github网站:https://github.com/rbgirshick/py-faster-…

modbus从站模拟软件_作为工控电气人,你知道我们必备的软件有哪些吗?

作为工控电气人,你知道我们必备的软件有哪些吗?今天我就来给大家介绍一下,工控电气人常用的几款软件,有了它们,我们的工作学习将会更易上手,效率翻倍。以下介绍主要是分为电工常用软件,PLC编程软…

【数据分析】豆瓣电影Top250爬取的数据的可视化分析

豆瓣Top250网址 将之前爬取到的豆瓣电影进行简单的可视化: 数据列表保存为CSV格式,如图 导入数据 做好准备 #!-*- coding:utf-8 -*- import pandas as pd import numpy as np import matplotlib.pylab as plt import re from numpy import rank from bu…

sqlmap的二次开发

1、sqlmapapi的帮助信息。 -s 启动sqlmap作为服务器 -h 指定sqlmap作为服务器的IP地址,默认127.0.0.1 -p 指定sqlmap服务器的端口,默认端口为8775 2、启动服务 浏览器访问: 3、api介绍:sqlmap项目下的api.py文件含有所有的api adm…

docker nginx配置_docker随手笔记第十二节 jenkins+docker+nginx+纯静态页面配置

docker随手笔记第一节 docker概念及安装docker随手笔记第二节 docker常用命令解析docker随手笔记第三节 docker构建java镜像docker随手笔记第四节 docker安装mysql5.7docker随手笔记第五节 docker安装redis4.0docker随手笔记第六节 docker安装jenkinsdocker随手笔记第七节 jenk…

【机器学习】逻辑斯蒂回归原理

逻辑斯蒂函数 引入: 在线性感知器算法中,我们使用了一个f(x)x函数,作为激励函数,而在逻辑斯蒂回归中,我们将会采用sigmoid函数作为激励函数,所以它被称为sigmoid回归也叫对数几率回归(logistic …

手机影音第十一天,显示视频缓冲,显示卡顿时的网速,播放系统视频时调用播放器的选择...

代码已经托管到码云,有兴趣的小伙伴可以下载看看https://git.oschina.net/joy_yuan/MobilePlayer一、设置视频缓冲进度显示视频播放进度的效果图如下:灰色的是缓冲的进度。原理:只有播放网络视频时,才有缓冲这个说法,所…