H.264压缩技术之视频基础(foundation of learning video)——Matlab源码解析
前言
为了后续能更好的理解,I帧编码与P帧编码,所以笔者先对数字视频中的一些基础概念进行铺垫。后续比较复杂的帧内预测,与帧间预测理解起来就会相对容易些。
关于Matlab中h.264的main函数部分可以见下面的连接
(包含了如何输入一个视频,到输出一个比特流的整体框架)。
前文回顾: H.264压缩技术之总览(Overview)——Matlab源码解析.
视频基础
- 前言
- 视频采样
- 色彩空间&色度抽样
- 视频冗余
- H.264压缩编码
视频采样
为什么要采样?
因为真实世界的自然场景在空间和时间上都是连续的,为了将他们表示成数字形式,所以要采样。
采样主要分为四种类型:
- 时间采样
- 空间采样
- 逐行采样(扫描)
- 隔行采样(扫描)
我们先看时间采样。如下图:
相当于屏闪照相机,在时间间隔为t的区间,进行了5次拍摄。我们得到了一个视频序列Seq,那么这个序列就是时间采样的结果。
空间采样。先上图:
其实某一时刻拍摄下来的图像就是一个空间采样,当然不一定把这个男人的全貌都采下来,也可以是局部某一块。
我们把那个男人的图像放大,可以看到类似于块的结构(如红色框所示),其实这每个块就可以称之为:采样点
在图像层面上,亦称之为像素。
逐行采样&隔行采样 先上图
因为这两者的原理差不多,放在一块说了。
这里黑色块表示没有输出像素,彩色块表示已经输出了像素。
对于逐行采样:随着时间的推移(5ms——>10ms),整个屏幕上将“慢慢”地被彩色块填充。
对于隔行采样:随着时间的推移(5ms——>10ms),可能现在5ms处输出奇数行像素,10ms处输出偶数行像素,当这转换的频率足够快时,人眼是察觉不到黑色块的出现。
在那个带宽还不大的年达,逐行采样和隔行采样在一定程度上缓解了带宽压力。
逐行采样-小应用:光栅滚动技术:
曾经火爆一时的红白机游戏《F1》赛车竟然用的就是逐行采样+输出偏移,产生赛道弯曲的效果!
参考资料:敖厂长,《红白机F1赛车游戏画质逆天竟是障眼法》,2022-1-31.BV1XY41147m4
色彩空间&色度抽样
我们先来看色彩空间:
一般的图像都是由RGB组成的三通道,但是在图像处理方面,研究人员发现,人们对亮度敏感程度要高于色度。
那么有没有什么方法能够使得图像由亮度+色度的方式组成呢?
答案是:Yes
YCbCr是一种特殊的色彩空间,区别于色彩空间RGB,YCbCr就将图像的组成划分为:亮度+色度。
参考资料:掌芝士zzs ,《JPEG 有损压缩 离散余弦变换 DCT 一条视频讲清楚》,2021-06-19,BV17M4y1u7Ek
接下来看色度抽样:
前面说了,在图像处理层面使用更多的还是YCbCr类的色彩空间,那么有优势呢?相较于RGB。
答:在压缩层面效果显著
色度抽样的目的主要是为了压缩。
如何压缩?少拿出一点亮度分量即可!示意图如下,原本一个像素是由Y(亮度分量),Cb,Cr(色度分量组成,后续为了压缩,那么就在每个像素中少拿一些色度分量即可。
视频冗余
什么是冗余呢?笔者认为:能够预测到的信息就是冗余!(当然不一定准确哈),比如说,一个场景的背景部分是很少变化的,那么观看视频的人就可以预测到下一秒大概率背景还是这个。
关于视频冗余的概念繁多,下面简单举出几例:
参考资料:赵险峰,张弘等,《视频隐写与隐写分析》,科学出版社,2021.5
H.264压缩编码
那么什么是H.264压缩编码呢?
答:压缩编码就是去除冗余+熵编码的过程。
下图小举一例:假设一个视频序列是5帧,视频大小为10*10,每个采样点的大小为1bit,那么一个视频的大小就是500bit。
现在进行YCbCr:4:2:0采样,视频大小直接变成500/2=50bit
紧接着放入H.264编码框架,这5张视频帧,被编码之后,可能完整存在的只有1帧图像(250/5bit),另外4帧变成了一下残差信息和一些方向信息(50bit)。并且最后进行了哈夫曼编码(假设编码率=33%),最后的大小变成()250/5+50)*33%=33bit.
那么是如何除去冗余的呢?
我们如果能将这一帧作为参考(I 帧),下一帧来对比参考帧的位置变化,并记录这些变化不就OK了吗,没必要记录全部像素。那么相对于参考帧的下一帧称之为P 帧。
那么我们再从整体来看一下整个视频序列最后变成啥样了。
最后每一个视频序列都会转化为I,P,B帧的组合。为了方便网络传输。I,P,B帧会再进行压缩编码,生成比特流。我们在网络上进行传输的视频文件,就是这么来的。
参考资料:极客湾Geekerwan ,《【科普】“视频”是怎么来的?H.264、码率这些词又是什么意思?》,2018-12-04 ,BV1nt411Q7S6.
H.264压缩技术之视频基础(foundation of learning video)——Matlab源码解析相关推荐
- Android技术栈(五)HashMap(包括红黑树)与ArrayMap源码解析
1 总览 本文会对 Android 中常用HashMap(有红黑树)和ArrayMap进行源码解析,其中 HashMap 源码来自 Android Framework API 28 (JDK=1.8) ...
- Python数据爬取之0基础小白实战(三)源码解析
前两篇(一)软件安装.(二)初窥门槛我解决了软件版本不匹配的问题并学习关键技术.找到重要源码,完成了程序思路总体设计,本篇废话不多说,我们直接上源码. 任务描述 获取2015-2020年通过申请的国家 ...
- H.264压缩技术之总览(Overview)——Matlab源码解析
写在前面 Abdullah A. Muhit等人在2012年发表的论文[1],[2].并发布了开源H.264 matlab版的代码.笔者会就着这套源码进行分解讲解.一方面为了加强自己的理解,另一方面也 ...
- 【Matlab系列】视频图像数字水印系统设计【含Matlab源码】
Date: 2019.3.24 前言 数字水印技术一般用于版权认证.在实际使用中,嵌入水印的鲁棒性就显得非常重要.通常会采用各种方式进行攻击测试,比如加噪滤波,缩放.旋转.剪切.JPEG压缩等 ...
- 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】
一.背景差分法和帧间差分法的车辆运动目标检测简介 1 引言 运动目标检测是从图像序列中检测运动目标.通过运动目标检测可以得到图像中的运动目标,获取图像中的运动信息.运动目标检测在医学辅助诊断.航天航空 ...
- 基于ambarella安霸H.264编解码芯片的视频采集压缩系统
概述: 利用ADI视频采集芯片作为前端信号采集,视频压缩采用H.264标准,采用ambarella芯片,能达到高画质,低码率,低功耗三大特性,为目前最佳的H.264压缩方案. 适用于采集VGA/YPb ...
- H.264/AVC技术进展及其务实发展策略思考
随着NGN.3G及3G演进和NGBW等对视频.多媒体业务与网络应用的飞速发展需求,作为视频业务及存储应用核心技术的高效率 视频数字压缩编(译码)技术,愈来愈引起人们的关注,成为目前广播.视频与多媒体通 ...
- H.264编码技术(zz)
转摘 http://www.360doc.com/content/06/1012/14/7551_228580.shtml 一.H.264的制定过程和应用场合 在制订完最初的H.263标准之后,ITU ...
- 基于IP的H.264关键技术
一. 引言 H.264是ITU-T最新的视频编码标准,被称作ISO/IEC14496-10或MPEG-4 AVC,是由运动图像专家组(MPEG)和ITU的视频编码专家组共同开发的新产品.H.264分两 ...
最新文章
- JS如何深度复制对象和数组,避免指针变量引用修改值
- 线程同步初解---转载
- windows下安装whl文件
- python人工智能-Python之人工智能(一)
- 补充知识:三元运算和逻辑运算
- base64编码的学习和理解
- python拟合曲线误差分析_python曲线拟合不能给出合理的拟合结果
- c++读取json文件_[SpringMVC]-SpringMVC架构-07-SpringMVC文件上传
- oracle安装中桌面模式与服务器模式的去别
- linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件
- 小技巧 ----- 枚举整数的每一位数字
- 台式电脑主板插线步骤图_主板电池怎么放电?电脑主板电池放电的方法
- 汇编学习--7.16--直接定址表
- ADMM算法求解二次项目标函数+l1正则项问题
- Android 常见的抓log方法总结
- Longest_consecutive_sequence
- 软件工程与软件开发模型、软件开发方法
- android-ultra-pull-to-refresh list,Android下拉刷新控件android-Ultra-Pull-To-Refresh 使用
- android 远程控制服务,Android手机3389远程控制服务器 microsoft remote de
- 常用的15个国外网站
热门文章
- SpringBoot入门建站全系列(九)文件上传功能与下载方式
- 【项目笔记_手写笔】在51822 上移植SSD1306驱动
- 无车承运人平台线路定价问题
- 替代个人微信mac协议的sdk接口分享
- CISSP考试各考场可预约时间(11.04日更新)
- I2C的总线电容 总线的最大电容 400pF限制
- 4.4 使用曲线命令修复图像色偏问题 [原创Ps教程]
- 微信小程序 app.js中onLaunch中方法执行完毕后再执行index首页数据请求
- 如何用DOS命令修复移动硬盘
- [转]我想要的,简单生活。。。。