视频编码学习——SAD和SATD

一、常用误差定义

SAD(Sum of Absolute Difference)=SAE(Sum of Absolute Error)即绝对误差和

SATD(Sum of Absolute Transformed Difference)即hadamard变换后再绝对值求和

SSD(Sum of Squared Difference)=SSE(Sum of Squared Error)即差值的平方和

MAD(Mean Absolute Difference)=MAE(Mean Absolute Error)即平均绝对差值

MSD(Mean Squared Difference)=MSE(Mean Squared Error)即平均平方误差

二、在视频编码中的应用

以RDO为例,在编码模式的RDO决策中,模式对应的代价:

J(mode)=SSD+λ*R(ref,mode,mv,residual)

  • 这里,SSD是指重建块与源图像的差值均方和;λ是拉格朗日乘子,就当是权值吧;R就是该模式下宏块编码的实际码流,包括对参考帧、模式、运动矢量、残差等的比特总和。当然如果是帧内模式,就只有R(mode,residual)。
  • 很多人迷惑的是,当前宏块还没编码啊,怎么知道它的码流和重建图像?实际上,RDO就是对每个模式都实际编码一次,得到J(mode),然后选择J(mode)最小的模式为实际编码模式。就像编码器引入了一个大反馈,如果视频编码器真的按上面的公示进行RDO,那编码起来速度很慢,当然,编码效率最佳。
  • 因此在实际应用中,就有了下面的替代公式:

J(mode)=SAD+λ*R(ref,mode,mv)

J(mode)=SATD+λ*R(ref,mode,mv)

  • 在这里,SAD就是该模式下预测块与源图像的绝对误差和。比特R中少了对residual的编码,也就是运动估计后就可以直接得到该模式的J(mode)值,极大的减少了运算复杂度。

  • SATD就是对残差进行哈德曼变换后的系数绝对和,在大多数情形下,SATD比SAD评价效果更好些,当然,SATD比SAD多了个变换,计算量大些。

三、SAD和SATD应用场景

  • SATD:当不用率失真优化时, 选择SATD+delta×r(mode,ref,mv)作为模式选择的依据;帧内模式选择用SATD。运动估计中,亚象素用SATD
  • SAD: 运动估计中,整象素搜索用SAD

解释

  • SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。SATD即将残差经哈德曼变换的4×4块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。因此,不用率失真最优化时,可将其作为模式选择的依据。
  • 一般帧内要对所有的模式进行检测,帧内预测选用SATD的原因同上。
  • 在做运动估计时,一般而言,离最优匹配点越远,匹配误差值SAD越大,这就是有名的单一平面假设,现有的运动估计快速算法大都利用该特性。但是,转换后SATD值并不满足该条件,如果在整象素中运用SATD搜索,容易陷入局部最优点。而在亚象素中,待搜索点不多,各点处的SAD差异相对不大,可以用SATD选择码流较少的匹配位置。

四、SAD和SATD的物理意义

  • SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。其值仅反映误差D。
  • SATD即将残差经哈德曼变换的系数绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流R的大小。

变换
视频编码中常用的变换:DCT
MSE下理论最佳变换:KL变换

【视频编码学习】——SAD和SATD相关推荐

  1. 【视频编码学习】——变换的理解

    视频编码--变换的理解 • 变换编码是正交变换,正交变换可以理解为坐标轴旋转 • 变换的目的是:去相关性,使信号独立,对变换系数采取独立的量化,可以最小化失真,且获得更低的码率 • 变换+标量量化能获 ...

  2. 【视频编码学习】AVS3参考软件HPM-4.1简单配置运行

    1.用Visual Studio2017打开HPM-4.1文件夹 2.找到文件夹目录下x86_windows文件夹,因为是在win上运行该代码 3.然后找到对应vs版本(我当时2017版)的解决方案s ...

  3. 视频编码失真测度:SAD、SATD、SSD、MSE、PSNR

    一.定义 SSD:平方误差和 -- Sum of Squared Difference MSE:均方误差 -- Mean Squared Error SAD:绝对误差和 (时域)-- Sum of A ...

  4. 哈达玛变换及其在图像/视频编码中的应用:计算SATD

    沃尔什-哈达玛变换(Walsh-Hadmard Transform,WHT),是一种典型的非正弦函数变换,采用正交直角函数作为基函数,具有与傅里叶函数类似的性质,图像数据越是均匀分布,经过沃尔什-哈达 ...

  5. mp4v2再学习 -- H264视频编码成MP4文件

    一.H264视频编码成MP4文件 参看:H264视频编码成MP4文件 参看:mp4v2在VS2010下的编译与在项目中的使用 最近做项目需要将H264文件封装为mp4文件,从网上找到了MP4V2库,下 ...

  6. 深度学习赋能视频编码

    深度学习赋予了诸如计算机视觉等领域新的研究契机,其应用也获得了视频编码领域的诸多关注.在LiveVideoStack线上分享中北京大学信息技术学院 助理研究员王苫社详细介绍了当下深度学习在视频编码中的 ...

  7. LiveVideoStack线上分享第三季(六):深度学习与视频编码

    深度学习赋予了诸如计算机视觉等领域新的研究契机,对于视频编码,其应用也获得了视频编码领域的诸多关注.6月29日20:00,LiveVideoStack线上分享第三季,第六期,北京大学信息技术学院,助理 ...

  8. 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC

    视频编码 1.概述 VENC模块,即视频编码模块.本模块支持多路实时编码,且每路编码独立,编码协议和编码profile 可以不同.本模块支持视频编码同时,调度Region 模块对编码图像内容进行叠加和 ...

  9. 使用FFMPEG——4.2.2版本实现提取视频编码解码文件,ffmpeg基础学习。

    FFMPEG基础学习 视频解码,并且输出到文件. 我通过雷霄骅的博客学习FFMPEG,在学习过程中发现"雷神"的代码由于版本的问题,很多代码已经无法在FFMPEG--4.2.2版本 ...

最新文章

  1. getLocationInWindow getLocationOnScreen getLeft , getTop, getBottom,getRight
  2. Elasticsearch之倒排索引
  3. Mysql的库与表的基本操作
  4. java空间租用_java影片租赁平台
  5. postgresql 目录结构
  6. 按照前序遍历和中序遍历构建二叉树
  7. Bootstrap3.0入门学习系列规划[持续更新]
  8. 【报告分享】2021年中国企业直播成长路径研究报告.pdf(附下载链接)
  9. 121.Best Time to Buy and Sell Stock
  10. The Basic Knowledge of Graph(图的基本知识)
  11. PaddleNLP--UIE(二)--小样本快速提升性能(含doccona标注)
  12. 股票数据分析查询接口,股票数据接口,沪深港股,股票api查询
  13. Gluster-Heketi-Kubernetes 安装步骤(以DaemonSet形式安装) Ubuntu 16.04
  14. tar.bz2 解压命令。
  15. 对称加密算法AES - ECB模式
  16. 机器学习之决策树(机器学习技法)
  17. C++primer学习(13.拷贝控制)
  18. YYYY/MM/dd 日期format的幺蛾子
  19. [单片机框架] [kv_sys] 实现一个简易KV键值系统(升级版)
  20. 2011年的赢家和输家

热门文章

  1. 深度学习入门(斋藤康毅)
  2. 本篇适合攻壳机动队初学者阅读
  3. RPA财务机器人的应用分类丨部署方式维度
  4. 文案能力应该这样练习
  5. 使用Prettier配合TsLint/Eslint 统一前端代码格式化规则,保证代码质量
  6. 2023年湖北省武汉安全员ABC报名时间考试通过率如何?启程别
  7. labVIEW cmd执行多行命令 Python
  8. Opencv之OCR识别(扫描后处理)
  9. winserver2008安装时出现 缺少所需的 CD/DVD驱动器设备驱动程序。如果您具有软盘....
  10. Android-UI-解决动画残影问题