cutree 算法

传播

​ 由于块与块之间具有参考关系,提升被参考块的质量,可以改善后续参考块的质量

在这里插入图片描述

​ Pn+1帧中CU0,1完全参考Pn的CU1,1。且Pn+1帧中CU0,1块帧内预测和帧间预测的代价分别为 c x , y n + 1 ( 0 , 0 ) c_{x,y}^{n+1}(0,0) cx,yn+1(0,0) c x , y n + 1 ( d 0 , d 1 ) c_{x,y}^{n+1}(d0,d1) cx,yn+1(d0,d1),其中x,y表示这里CU的坐标,也就是(x,y)=(0,1),为了一般性,所以用x,y表示。

​ 如果 c x , y n + 1 ( 0 , 0 ) c_{x,y}^{n+1}(0,0) cx,yn+1(0,0) c x , y n + 1 ( d 0 , d 1 ) c_{x,y}^{n+1}(d0,d1) cx,yn+1(d0,d1)相差不大,说明Pn+1帧中CU0,1块从Pn的CU1,1获取的信息很少;如果 c x , y n + 1 ( 0 , 1 ) c_{x,y}^{n+1}(0,1) cx,yn+1(0,1) c x , y n + 1 ( d 0 , d 1 ) c_{x,y}^{n+1}(d0,d1) cx,yn+1(d0,d1)小很多说明Pn+1帧中CU0,1块的大部分信息都可以从Pn的CU1,1块获得,极端情况,如果 c d 0 , d 1 n + 1 c_{d0,d1}^{n+1} cd0,d1n+1为0,说明说明Pn+1帧中CU0,1块的全部信息都可以从Pn的CU1,1块获得。因此可以简单地用 p c x , y n + 1 = c x , y n + 1 ( 0 , 0 ) − c x , y n + 1 ( d 0 , d 1 ) pc_{x,y}^{n+1}=c_{x,y}^{n+1}(0,0)-c_{x,y}^{n+1}(d0,d1) pcx,yn+1=cx,yn+1(0,0)cx,yn+1(d0,d1)表示Pn+1帧中CU0,1块从Pn的CU1,1继承的信息。

​ 由于Pn+1帧中CUx,y块编码参数选择不同,会导致 p c x , y n + 1 = c x , y n + 1 ( 0 , 0 ) − c x , y n + 1 ( d 0 , d 1 ) pc_{x,y}^{n+1}=c_{x,y}^{n+1}(0,0)-c_{x,y}^{n+1}(d0,d1) pcx,yn+1=cx,yn+1(0,0)cx,yn+1(d0,d1)的使用率不同,因此 p f x , y n + 1 = c x , y n + 1 ( 0 , 0 ) − c x , y n + 1 ( d 0 , d 1 ) c x , y n + 1 ( 0 , 0 ) pf_{x,y}^{n+1}=\frac{c_{x,y}^{n+1}(0,0)-c_{x,y}^{n+1}(d0,d1)}{c_{x,y}^{n+1}(0,0)} pfx,yn+1=cx,yn+1(0,0)cx,yn+1(0,0)cx,yn+1(d0,d1)表示Pn+1帧中CU0,1块反向传播给Pn的CU1,1块的传播率,或者说是Pn+1帧对Pn帧中CU1,1块的继承信息的利用率,也就是Pn+1帧CUx,y选择不同参数时,对 p c x , y n + 1 = c x , y n + 1 ( 0 , 0 ) − c x , y n + 1 ( d 0 , d 1 ) pc_{x,y}^{n+1}=c_{x,y}^{n+1}(0,0)-c_{x,y}^{n+1}(d0,d1) pcx,yn+1=cx,yn+1(0,0)cx,yn+1(d0,d1)的使用率。

​ Pn+1帧中CU0,1块的传播给Pn的CU1,1块的总信息 p a x , y n + 1 = p c x , y n + 1 + p f x , y n + 1 ⋅ p i x , y n + 1 pa_{x,y}^{n+1}=pc_{x,y}^{n+1}+pf_{x,y}^{n+1} \cdot pi_{x,y}^{n+1} pax,yn+1=pcx,yn+1+pfx,yn+1pix,yn+1所有参考Pn帧CU1,1块的CU块,反向传播给它的信息量为 p i x , y n = p a x 1 , y 1 n 1 ⋅ w 1 + p a x 2 , y 2 n 2 ⋅ w 2 + p a x 3 , y 3 n 3 ⋅ w 3 + . . . pi_{x,y}^{n}=pa_{x1,y1}^{n1} \cdot w1 + pa_{x2,y2}^{n2} \cdot w2 + pa_{x3,y3}^{n3} \cdot w3 + ... pix,yn=pax1,y1n1w1+pax2,y2n2w2+pax3,y3n3w3+...,其中w表示权重,也就是区域的重叠面积,针对上图中 p i 1 , 1 n = p a 1 , 0 n + 1 ⋅ 1 + p a 1 , 1 n + 1 ⋅ 1 pi_{1,1}^{n}=pa_{1,0}^{n+1} \cdot 1 + pa_{1,1}^{n+1} \cdot 1 pi1,1n=pa1,0n+11+pa1,1n+11

​ 在x265中使用estimateCUPropagate函数计算 p a x , y n pa_{x,y}^{n} pax,yn:

p a x , y n = p c x , y n + p f x , y n ⋅ p i x , y n = ( c x , y n ( 0 , 0 ) + p i x , y n ) ⋅ c x , y n ( 0 , 0 ) − c x , y n ( d 0 , d 1 ) c x , y n ( 0 , 0 ) = ( c x , y n ( 0 , 0 ) + p i x , y n ) ⋅ p f x , y n \begin{align} pa_{x,y}^{n}&=pc_{x,y}^{n}+pf_{x,y}^{n} \cdot pi_{x,y}^{n} \\ &=(c_{x,y}^{n}(0,0) + pi_{x,y}^{n}) \cdot \frac{c_{x,y}^{n}(0,0)-c_{x,y}^{n}(d0,d1)}{c_{x,y}^{n}(0,0)} \\ &= (c_{x,y}^{n}(0,0) + pi_{x,y}^{n}) \cdot pf_{x,y}^{n} \end{align} pax,yn=pcx,yn+pfx,ynpix,yn=(cx,yn(0,0)+pix,yn)cx,yn(0,0)cx,yn(0,0)cx,yn(d0,d1)=(cx,yn(0,0)+pix,yn)pfx,yn

  • 上述考虑了只有cutree时,信息量的传播,还需要做两个细微的修正:AQ将各个MB都进行了微调,那么那些被调整的更清晰的MB(QP减小)和变得更模糊的MB(QP变大)也需要进行修正 i n v q s c a l e = 1 a q o f f s e t s t e p inv_qscale=\frac{1}{aq_offset_step} invqscale=aqoffsetstep1

  • 在可变帧率条件下,需要根据播放时长进行修正, f p s f a c t o r = 当前帧播放时长 平均一帧播放时长 fps_factor=\frac{当前帧播放时长}{平均一帧播放时长} fpsfactor=平均一帧播放时长当前帧播放时长

  • 如下图,中间的B帧同时从前向的P0帧和后向的P1帧都继承了信息,需要按照距离修正传播的cost大小, d i s t a n c e r a t i o = b − p 0 p 1 − p 0 distance_ratio=\frac{b-p0}{p1-p0} distanceratio=p1p0bp0

经过以上三个修正,最终结果如下:
在这里插入图片描述

p a x , y n = ( p c x , y n ⋅ i n v _ q s c a l e ⋅ f p s _ f a c t o r + p f x , y n ⋅ p i x , y n ) ⋅ d i s t a n c e _ r a t i o = ( c x , y n ( 0 , 0 ) ⋅ i n v _ q s c a l e ⋅ f p s _ f a c t o r + p i x , y n ) ⋅ p f x , y n ⋅ d i s t a n c e r a t i o \begin{align} pa_{x,y}^{n}&=(pc_{x,y}^{n}\cdot inv\_qscale\cdot fps\_factor+pf_{x,y}^{n} \cdot pi_{x,y}^{n})\cdot distance\_ratio \\ &= (c_{x,y}^{n}(0,0) \cdot inv\_qscale \cdot fps\_factor+ pi_{x,y}^{n}) \cdot pf_{x,y}^{n} \cdot distance_ratio \end{align} pax,yn=(pcx,yninv_qscalefps_factor+pfx,ynpix,yn)distance_ratio=(cx,yn(0,0)inv_qscalefps_factor+pix,yn)pfx,yndistanceratio

​ 以上计算得到的 p a x , y n pa_{x,y}^{n} pax,yn需要根据mv传递到第Pn-1帧,作为对应块的pi值,根据重叠区域面积将其分配到各个块,如上图会根据s1,s2,s3和s4所占面积的比例将 p a 1 , 1 n pa_{1,1}^{n} pa1,1n分配到CU00,CU01,CU10和CU11;同时 p a 2 , 1 n pa_{2,1}^{n} pa2,1n分配到CU10,CU11,CU20和CU21;其中 p a 1 , 1 n pa_{1,1}^{n} pa1,1n p a 2 , 1 n pa_{2,1}^{n} pa2,1n都会分配一部分到CU10和CU11,只需要将其叠加即可。

计算 Δ \Delta Δ QP

​ 首先将信息分为两类:第一是继承信息,也就是当前块从参考帧获得的信息,参考帧已经编码完成的情况下,通过同一个参考帧和同一个MV获得的参考块也就固定了,得到的信息也就固定了,并不会因为当前块选择不同的编码参数而发生改变;第二是自身产生的信息,从参考块获取了信息之后,当前块会用不同的编码参数,比如QP,merge,skip,AMVP等模式,编码参数不同时,自身产生的信息也就不同。

​ 继续考虑Pn的CU1,1块,当改变当前块的QP时(也就是增加一个 delta QP), c x , y n + 1 ( 0 , 0 ) c_{x,y}^{n+1}(0,0) cx,yn+1(0,0) c x , y n + 1 ( d 0 , d 1 ) c_{x,y}^{n+1}(d0,d1) cx,yn+1(d0,d1) p i x , y n pi_{x,y}{n} pix,yn都会发生变化,因为他们都包含了自身产生的信息。但是 c x , y n + 1 ( 0 , 0 ) − c_{x,y}^{n+1}(0,0)- cx,yn+1(0,0)c_{x,y}^{n+1}(d0,d1)$不会发生变化,因为他是继承的信息。可以这么来考虑,QP的改变导致残差量化结果发生变化,影响的是当前块预测后的结果,在计算失真的时候还有一个参考块,该参考块是通过MV在参考帧获得的,这个时候参考块已经编码完成,并不会因为当前块QP的改变而发生变化。

​ 当前块的QP发生变化时,后续参考该块的CU都会发生变化,也就是 p i x , y n pi_{x,y}^{n} pix,yn也会因为delta QP而产生影响,但是只有新产生的那部分信息 c x , y n ( d 0 , d 1 ) c x , y n ( 0 , 0 ) \frac{c_{x,y}^{n}(d0,d1)}{c_{x,y}^{n}(0,0)} cx,yn(0,0)cx,yn(d0,d1)受影响, ( 1 − c x , y n ( d 0 , d 1 ) c x , y n ( 0 , 0 ) ) ⋅ p i x , y n (1-\frac{c_{x,y}^{n}(d0,d1)}{c_{x,y}^{n}(0,0)}) \cdot pi_{x,y}^{n} (1cx,yn(0,0)cx,yn(d0,d1))pix,yn是由继承的那部分信息,传递给后续块的,不受delta QP影响。

  • 参考块因为delta QP受影响的信息量有 c Δ = c x , y n ( d 0 , d 1 ) + c x , y n ( d 0 , d 1 ) c x , y n ( 0 , 0 ) ⋅ p i x , y n c_{\Delta}=c_{x,y}^{n}(d0,d1)+\frac{c_{x,y}^{n}(d0,d1)}{c_{x,y}^{n}(0,0)} \cdot pi_{x,y}^{n} cΔ=cx,yn(d0,d1)+cx,yn(0,0)cx,yn(d0,d1)pix,yn
  • 非参考块因为delta QP受影响的信息量有 c x , y n ( d 0 , d 1 ) c_{x,y}^{n}(d0,d1) cx,yn(d0,d1), 因为非参考块,不被参考,所以后项为0,只有inter cost部份

r Δ = c Δ c x , y n ( d 0 , d 1 ) = 1 + p i x , y n c x , y n ( 0 , 0 ) λ = − d D d R = − d D / d Q P d R / d Q P = α Q s t e p 2 λ ‾ = − r Δ ⋅ d D d R = α ⋅ r Δ Q s t e p ‾ 2 λ = λ ‾ Q s t e p ‾ 2 Q s t e p 2 = 1 r Δ Q s t e p 2 = b 2 ⋅ 2 Q P − 12 3 Q P = 12 + 3 l o g 2 Q s t e p 2 b 2 Q P ‾ = 12 + 3 l o g 2 Q s t e p ‾ 2 b 2 Δ Q P = Q P ‾ − Q P = 3 l o g 2 Q s t e p ‾ 2 b 2 − 3 l o g 2 Q s t e p 2 b 2 = 3 l o g 2 Q s t e p ‾ 2 Q s t e p 2 = 3 l o g 2 1 r Δ = − 3 l o g 2 r Δ \begin{align} & r_{\Delta} = \frac{c_{\Delta}}{c_{x,y}^{n}(d0,d1)}=1+\frac{pi_{x,y}^{n}}{c_{x,y}^{n}(0,0)} \\ & \lambda = -\frac{dD}{dR}=-\frac{dD/dQP}{dR/dQP}=\alpha Qstep^2 \\ & \overline{\lambda} = -\frac{r_{\Delta} \cdot dD}{dR}=\alpha \cdot r_{\Delta} \overline{Qstep}^2 \\ & \lambda = \overline{\lambda} \\ & \frac{\overline{Qstep}^2}{Qstep^2} = \frac{1}{r_{\Delta}} \\ & Qstep^2=b^2 \cdot 2^{\frac{QP-12}{3}} \\ & QP=12 + 3log_{2}^{\frac{Qstep^2}{b^2}} \\ & \overline{QP} = 12 + 3log_{2}^{\frac{\overline{Qstep}^2}{b^2}} \\ & \Delta QP = \overline{QP} - QP = 3log_{2}^{\frac{\overline{Qstep}^2}{b^2}}-3log_{2}^{\frac{Qstep^2}{b^2}} \\ & =3log_{2}^{\frac{\overline{Qstep}^2}{Qstep^2}} \\ & =3log_{2}^{\frac{1}{r_{\Delta}}} = -3log_{2}^{r_{\Delta}} \end{align} rΔ=cx,yn(d0,d1)cΔ=1+cx,yn(0,0)pix,ynλ=dRdD=dR/dQPdD/dQP=αQstep2λ=dRrΔdD=αrΔQstep2λ=λQstep2Qstep2=rΔ1Qstep2=b223QP12QP=12+3log2b2Qstep2QP=12+3log2b2Qstep2ΔQP=QPQP=3log2b2Qstep23log2b2Qstep2=3log2Qstep2Qstep2=3log2rΔ1=3log2rΔ

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

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

相关文章

2023Node.js零基础教程(小白友好型),nodejs新手到高手,(一)NodeJS入门

写在开始前 在无尽的代码汪洪中,闪耀着一抹绚丽的光芒。它叫做Web前端开发! HTML是我们的魔法笔,是创造力的源泉。它将我们的思绪化为标签,将我们的想象变为元素。 在无尽的标签组合中,我们创造出独特的网页&#xff…

Webserver项目解析

一.webserver的组成部分 Buffer类 用于存储需要读写的数据 Channel类 存储文件描述符和相应的事件,当发生事件时,调用对应的回调函数 ChannelMap类 Channel数组,用于保存一系列的Channel Dispatcher 监听器,可以设置为epo…

【张兔兔送书第一期:考研必备书单】

考研书单必备 《数据结构与算法分析》《计算机网络:自顶向下方法》《现代操作系统》《深入理解计算机系统》《概率论基础教程(原书第10版》《线性代数(原书第10版)》《线性代数及其应用》赠书活动 八九月的朋友圈刮起了一股晒通知…

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的,Postgres是一个免费的开源数据库,被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…

《Envoy 代理:云原生时代的流量管理》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

C# Onnx Yolov8 Detect Poker 扑克牌识别

效果 效果一般,可下载数据集自己训练 Demo下载 数据集下载

SaaS架构C/S检验科LIS系统源码: 检验申请、标本编号、联机采集

适用于医院检验科实际需要的LIS管理系统, 实现检验业务全流程的计算机管理。从检验申请、标本编号、联机采集、中文报告单的生成与打印、质控图的绘制和数据的检索与备份。通过将所有仪器自身提供的端口与科室LIS系统中的工作站点连接,实现与医院HIS系统的对接。 通过门诊医生和…

docker-compose使用

docker-compose docker的项目编排 一、安装docker-compose Rocky Linux Rocky Linux安装Docker Compose的步骤如下: 安装Docker。您可以使用以下命令安装Docker: sudo dnf install docker-ce docker-ce-cli containerd.io安装Docker Compose。您可以…

java项目之抗疫医疗用品销售平台ssm+jsp

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的抗疫医疗用品销售平台。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框…

今天的消费情况

1、今天消费1710元 意外险 住院--集中参保 校---******----服 1220 rmB lunch 240Rmb

腾讯mini项目-【指标监控服务重构】2023-07-30

今日已办 调研 CPU & Memory Cadivisor Cadivisor -> Prometheus -> (Grafana / SigNoz Web) google/cadvisor: Analyzes resource usage and performance characteristics of running containers. (github.com) services:cadvisor:image: gcr.io/ca…

linux 磁盘命令之du和df命令

du相关的命令: du -ah 显示所有目录或文件所占空间 du -KG 显示所有目录或文件所占空间 块大小K为单位 du -BM 显示所有目录或文件所占空间 块大小M为单位 du -BG 显示所有目录或文件所占空间 块大小G为单位du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文…

短信、邮箱验证码本地可以,部署到服务器接口却不能使用

应对公司双验证要求,对本系统做邮箱、短信验证码登录,本地开发正常发送,到服务器上部署却使用失败,已全部解决,记录坑。 一、nginx拦截 先打开你的服务器 nginx.conf 看看有没有做接口拦截。(本地可能做Sp…

爬虫逆向实战(32)-某号店登录(RSA、补环境、混淆)

一、数据接口分析 主页地址:某号店 1、抓包 通过抓包可以发现登录接口是/publicPassport/login.do 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现,有三个加密参数:username、password、captchaTok…

70、Spring Data JPA 的 自定义查询(全手动,自己写完整 SQL 语句)

1、方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体) 2、Query查询(半自动:提供 SQL 或 JPQL 查询) 3、自定义查询(全手动) ★ 自定义查询&#xff08…

二叉树顺序结构及实现

👉二叉树顺序结构及实现 1.二叉树的顺序结构2.堆的概念及结构3.堆的实现3.1堆向下调整算法3.2堆向上调整算法 4.堆的创建4.1堆创建方法14.1.1构建堆结构体4.1.2堆的初始化4.1.3堆数据添加向上调整4.1.4主函数内容 4.2堆的创建方法24.2.1堆数据添加向下调整 4.3堆数据…

Oracle两个日期都存在返回最小/最大的,如果只存在一个就返回存在的日期

Oracle函数 Oracle两个字段日期都存在返回最小的,如果只存在一个就返回存在的日期. 函数说明LEAST(value1, value2, …)最小值GREATEST(value1, value2, …)最大值COALESCE(value1, value2, …)返回第一个不是空值的参数

CAN总线

can总线看起来和485电路很相似,485出来是AB 线,can出来 CAN_HIGH CAN_LOW 2.CAN总线特点 多主控制不像iic 只能一个主机,也没有地址的概念

ModuleNotFoundError: No module named ‘transformers.modeling_bert‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录 什么是操作系统?操作系统概念操作系统的目的底层硬件驱动程序操作系统理解系统调用接口 操作系统是如何进行管理的?什么是管理?操作系统是如何管理硬件信息呢? 🍀小结🍀 🎉博客主页&am…