利用FFMPEG与X264实现帧内预测模式的隐写算法(1)

本文介绍了H.264编码的基本概念,包括I帧、P帧、B帧以及RGB与YUV的区别。重点探讨了帧内预测模式在视频隐写中的应用,解释了如何利用H264编码的帧内预测模式进行信息隐藏,并分析了帧内预测模式隐写的评价标准和一种简化算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

其实我以后并不打算着重研究视频编码,只是因为这次毕设选了这个题,所以稍微学了点相关的皮毛。关于FFMPEG的源码的分析我推荐雷宵骅前辈写的博客,需要学习的请点击传送门。我基本是看着他的博客学的,虽然现在ffmpeg版本有一定更新,但是大体框架基本是不变的,题目中需要用到的并且和他的博客中写的不同的我会稍微提一下。关于其他ffmpeg源码的研究如果没有特殊需要,我基本是不会考虑做的。最后,如果我有写错,欢迎指正。

正文

关于实现隐写算法我打算分两篇来写,这篇写铺垫一下理论知识,下一篇从代码实现角度上讲

1. 关于H.264编码的相关知识

关于H.264是什么东西这种问题这里就不多赘述了。我们直接讲一点干货。

1.1 I帧 P帧 B帧 与 GOP

任何一个视频,都可以看做是一个图片流,对于视频中每一张图片,我们一般称作帧。H.264格式视频流中的帧一般分为3类,即I帧,P帧,B帧(好像还有其他类别的帧,可以用于处理非常特殊的图片,这里不展开讲了)。这三类帧分别用不同的策略来压缩一张图片,从而降低视频大小。

从信息论的角度来讲,数据可以压缩是因为信息存在冗余,信息冗余存在的条件要么是出现频率不均等,要么是数据间存在相关性。对于出现频率不均等的数据我们可以运用熵编码(如哈夫曼编码)的手段将数据压缩;对于数据间存在相关性这个问题只能根据具体问题,试图将相关的数据转化成出现概率不均等的的数据。所以视频编码的核心就是挖掘视频画面中所有像素点之间的相关性。当然在必要时,也可以制造一些肉眼不可见的相关性进一步压缩。(比如直接砍去画面中高频分量)

理解了这点之后就比较容易理解这三种帧了:I帧主要挖掘单个画面中的像素点的相关性,P帧挖掘当前画面与前一个画面之间的相关性,B帧挖掘当前画面与前后两个画面之间的相关性。乍一眼看下去好像B帧比P帧厉害

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值