HEVC编码中的MPM(最可能模式,Most Probable Mode)

简介

最近看到有文章用视频编码时的MPM参数来映射特征并用于数字取证,故做该文章记录。

HEVC(高效视频编码)中的MPM(最可能模式,Most Probable Mode)用于预测帧内块的模式,以提高编码效率并减少比特率。MPM的选择过程涉及多个步骤,下面结合你的图详细说明这些步骤。

MPM选择流程

在这里插入图片描述

图中展示了选择三个MPM的流程图。以下是具体步骤:

  1. 检查PMLPMA是否相等

    • 如果PML(左预测模式)不等于PMA(上预测模式),则选择:
      • MPM1 = PML
      • MPM2 = PMA
    • 如果PMLPMA相等,则进一步检查PMLPMA的值。
  2. 检查PMLPMA的值是否小于2

    • 如果PML < 2PMA < 2,则选择:
      • MPM1 = PLANAR
      • MPM2 = DC
      • MPM3 = ANGULAR[26]
    • 如果PMLPMA都不小于2,则:
      • MPM1 = PML
      • 计算MPM2MPM3的值:
        MPM2 = 2 + ((PML - 2 - 1 + 32) % 32)
        MPM3 = 2 + ((PML - 2 + 1) % 32)
        
  3. 检查PMLPMA是否等于PLANAR

    • 如果PML不等于PLANARPMA不等于PLANAR,则进一步检查PMLPMA的值。
      • 如果PML等于PLANAR或者PMA等于PLANAR,则选择:
        • MPM3 = PLANAR
      • 如果PMLPMA都不等于PLANAR,则选择:
        • MPM3 = DC
    • 如果PMLPMA都不等于PLANAR,则选择:
      • MPM3 = ANGULAR[26]

具体使用哪个MPM:

如果最小残差的模式在MPM1,MPM2,或MPM3中,编码器会标记该模式为最终预测模式。
如果最小残差的模式不在MPM中,编码器会使用该模式,但会以非MPM模式的方式进行编码。

示例代码

以下是实现上述逻辑的C++代码示例:

#include <iostream>enum PredictionMode {PLANAR = 0,DC = 1,ANGULAR = 2
};void selectMPMs(int PML, int PMA, int& MPM1, int& MPM2, int& MPM3) {if (PML != PMA) {MPM1 = PML;MPM2 = PMA;if (PML != PLANAR && PMA != PLANAR) {MPM3 = ANGULAR + 26;} else {MPM3 = (PML == PLANAR || PMA == PLANAR) ? PLANAR : DC;}} else {if (PML < 2 && PMA < 2) {MPM1 = PLANAR;MPM2 = DC;MPM3 = ANGULAR + 26;} else {MPM1 = PML;MPM2 = 2 + ((PML - 2 - 1 + 32) % 32);MPM3 = 2 + ((PML - 2 + 1) % 32);}}
}int main() {int PML = 0; // example valueint PMA = 1; // example valueint MPM1, MPM2, MPM3;selectMPMs(PML, PMA, MPM1, MPM2, MPM3);std::cout << "MPM1: " << MPM1 << "\n";std::cout << "MPM2: " << MPM2 << "\n";std::cout << "MPM3: " << MPM3 << "\n";return 0;
}

这个代码示例根据输入的PMLPMA值,选择并输出三个MPM。可以根据具体需求调整PMLPMA的值。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【python】PyQt5的窗口界面的各种交互逻辑实现,轻松掌控图形化界面程序

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【ABB】示教器可编程按钮的配置

【ABB】示教器可编程按钮的配置 操作流程演示 操作流程 首先我要配置的是如图所示控制器上的四个按钮&#xff0c;这四个按钮是可以自定义功能的。 点击【菜单】点击【Control Panel】点击【ProgKeys】即可配置对应按键功能 演示 点击【菜单】 点击【配置可编程按键】 这里…

12306高铁票如何打印电子发票?

高铁票报销凭证电子版如何打印&#xff1f; 高铁票报销目前没有电子发票形式&#xff0c;只有纸质版报销凭证&#xff0c;不过虽然没有电子版报销凭证&#xff0c;但是可以通过多种方式获取纸质版报销凭证。 报销凭证只能打印一次&#xff0c;丢失不能补打&#xff0c;请妥善…

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符&#xff0c;用于在类的层次结构中进行安全的向上转换&#xff08;从派生类到基类&#xff09;或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换&#xff08;即从派生…

Stable Diffusion教程|视频转绘有手就会Ebsynth Utility应用详解

过去这几个月&#xff0c;相信很多同行都已经见识到了AIGC强大的风格化绘图能力&#xff0c;不仅能够做出高品质的美术资产&#xff0c;还可以将制作效率大幅提高&#xff0c;这也是AI概念如今在资本市场受热捧的重要原因。 不过&#xff0c;目前我们所见到的大部分图形&#…

把当前img作为到爷爷的背景图

&#xff08;忽略图大小不一致&#xff0c;一般UI给的图会刚好适合页面大小&#xff0c;我这网上找的图&#xff0c;难调大小&#xff0c;我行内的就自己随便写的宽高&#xff09;&#xff0c;另外悄悄告诉你最后有简单方法&#xff5e;&#xff5e; 先来看看初始DOM结构代码 …

支付宝低代码搭建电商小程序,无需编程,可视化操作

大家好&#xff0c;我是小悟 在数字化浪潮的推动下&#xff0c;为了更快速、高效地搭建电商小程序&#xff0c;支付宝低代码平台凭借其独特优势&#xff0c;为商家提供了便捷的解决方案。 支付宝低代码平台犹如一座精心打造的智慧工坊&#xff0c;让电商小程序的搭建变得轻而易…

硕博电子智能控制器、触摸显示屏在集装箱跨运车上的应用

港口跨运车&#xff0c;又称跨运车或轮胎式龙门吊(RTG)&#xff0c;专门用于集装箱码头的装卸和搬运作业&#xff0c;能够迅速完成集装箱在码头前沿、堆场区域以及仓库之间的运输和堆垛&#xff0c;大幅度缩短了装卸周期&#xff0c;提高了港口物流周转效率。 现代跨运车往往配…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)

0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…

高职软件技术实训室

一、高职软件技术实训室建设背景 随着“加快数字化发展&#xff0c;建设数字中国”这一战略目标的深入实施&#xff0c;软件技术作为数字经济的核心引擎&#xff0c;其战略地位愈发显著。在这一时代背景下&#xff0c;高职教育作为培养高素质、高技能人才的重要阵地&#xff0…

如何在Orcale首页定位到The Java® Virtual Machine Specification页面?

目标地址&#xff1a;https://docs.oracle.com/javase/specs/jls/se8/html/index.html 1. 在Orcale首页菜单栏中选择 Resources ⇒ Java Downloads 2. 往下滑&#xff0c;找到 Online Documentation 选项&#xff0c;点进去 3. 点击 Specifications 下的 Language VM 选项 5…

Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)

基础介绍 Netfilter是Linux操作系统核心层内部的一个数据包处理模块&#xff0c;它具有如下功能&#xff1a;网络地址转换(Network Address Translate)数据包内容修改以及数据包过滤的防火墙功能。Netfliter框架不仅仅在ipv4中有应用&#xff0c;bridge&#xff0c;ipv4&#…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述

3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 以下是文档的核心内容总结&#xff1a; UAV系…

在 PostgreSQL 里如何处理数据的归档和清理过程中的数据完整性验证?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的归档和清理过程中的数据完整性验证 在 PostgreSQL 里如何处理数据的归…

数据驱动未来,Xinstall全渠道统计方案引领行业变革

在这个信息爆炸的时代&#xff0c;App市场的竞争日益激烈。对于每一个开发者或营销人员来说&#xff0c;掌握准确、全面的数据分析能力&#xff0c;是提升产品竞争力、优化营销策略的关键。然而&#xff0c;面对投放渠道的分散、数据打通的困难以及作弊流量的困扰&#xff0c;许…

RocketMQ源码学习笔记:消费者启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、前置知识1.1、pull和push型消费者1.2、消息CommitLog到ConsumeQueue1.3、自动创建的重试主题1.4、广播型消费和集群型消费中offset的存储位置 2、消费中的启动流程2.1、Preview2.2、校验&…

《AIGC:智能创作时代》—开启智能创作的全新时代

在人工智能发展的漫长历程中&#xff0c;如何让机器学会创作一直被视为难以逾越的天堑。然而&#xff0c;人类的创造力终将赋予机器创造力&#xff0c;把世界送入智能创作的新时代。 书名&#xff1a;《AIGC&#xff1a;智能创作时代》&#xff0c;作者&#xff1a;杜雨、张孜铭…

150个pb网站模板(都是成品网站,上传php空间即可使用),建站必备

一网友提供的150个pb网站模板&#xff0c;其实就是成品网站&#xff0c;上传php空间即可使用&#xff0c;属于建站公司或者建站开发人员必备的资源。 一共150个基于pb的成品网站&#xff0c;基本上都可以找到适应你手头客户需要的一款&#xff0c;简单修改一下即可交活收钱了。…

【爬虫基础入门课件:第二课:爬虫入门】

爬虫入门 什么是爬虫? 不知道各位是否遇到过这样的需求. 就是我们总是希望能够保存互联网上的一些重要的数据信息为己所用. 比如, 在浏览到一些优秀的让人血脉喷张的图片时. 总想保存起来留为日后做桌面上的壁纸在浏览到一些重要的数据时(各行各业), 希望保留下来日后为自…