网站设置搜索时间,做网站怎么加背景图片,建立网站有哪几种方式,管网建设网站一、背景回顾#xff1a;什么是传统角度预测#xff1f;
在 VVC#xff08;Versatile Video Coding, H.266#xff09;标准中#xff0c;帧内预测是提升编码效率的核心技术之一。其中#xff1a;
共定义了 67 种帧内预测模式
模式 0#xff1a;Planar#xff08;平面预…一、背景回顾什么是传统角度预测在 VVCVersatile Video Coding, H.266标准中帧内预测是提升编码效率的核心技术之一。其中共定义了67 种帧内预测模式模式 0Planar平面预测模式 1DC均值预测模式 26665 种传统角度预测模式这些角度模式覆盖从-135° 到 45°的方向范围用于模拟图像中不同走向的边缘结构如水平线、斜边、轮廓等。分类方式类型模式编号特点水平类模式2 ~ 33预测方向近似垂直传播 → 主要使用上方参考像素垂直类模式34 ~ 66预测方向近似水平传播 → 使用左侧 上方参考像素⚠️ 注意“垂直类”并非指预测方向为垂直而是指每一行的像素沿横向生成即“逐列填充”像画竖线一样向右扩展。本节以垂直类模式 M 30偏移值 offset -20为例深入解析其预测流程中的关键两步。二、整体流程简述对于一个N×N N \times NN×N的亮度编码单元CU传统角度预测的基本流程如下构造参考像素数组Ref[]整合左侧Left、左上Top-Left、上方Top已重建像素形成一条长度为2×max(N,N)1 2 \times \max(N,N) 12×max(N,N)1的一维参考线。计算当前像素对应的参考位置整数偏移量ildx(y⋅offset[M])≫5 \text{ildx} (y \cdot \text{offset}[M]) \gg 5ildx(y⋅offset[M])≫5计算分像素插值权重w(y⋅offset[M]) 31 w (y \cdot \text{offset}[M]) \\ 31w(y⋅offset[M])31根据ildx和w查找或插值得到预测值下面我们重点讲解第2步和第3步。三、步骤2详解计算整数偏移量ildx公式表达ildx(y⋅offset[M])≫5 \text{ildx} (y \cdot \text{offset}[M]) \gg 5ildx(y⋅offset[M])≫5等价于ildx⌊y⋅offset[M]32⌋ \text{ildx} \left\lfloor \frac{y \cdot \text{offset}[M]}{32} \right\rfloorildx⌊32y⋅offset[M]⌋参数说明符号含义y yy当前像素在 CU 内的行索引从上到下起始于 0offset[M] \text{offset}[M]offset[M]查表得到的角度偏移参数见后文表≫5 \gg 5≫5右移 5 位相当于除以2532 2^5 322532实现快速整数除法物理意义该值表示当前第 y 行的预测起点相对于基准位置 TL 的整数级偏移量。由于每个角度模式都有固定的“斜率”越往下y 越大需要读取的参考像素就越靠左当 offset 0或靠右当 offset 0。这是一种将连续空间投影离散化的方法使得硬件友好的整数运算即可完成高精度的方向控制。示例8×8 CU模式 M30offset -20我们手动计算每一行的ildx值y yy计算式结果ildx0(0×−20)≫50 (0 \times -20) \gg 5 0(0×−20)≫5001(−20)≫5−20/32≈−0.625 (-20) \gg 5 -20 / 32 \approx -0.625(−20)≫5−20/32≈−0.625→ 向下取整-12(−40)≫5−1.25 (-40) \gg 5 -1.25(−40)≫5−1.25→ -2? 实际为 -1 或 -2视实现而定3(−60)≫5−1.875 (-60) \gg 5 -1.875(−60)≫5−1.875→ -24(−80)≫5−2.5 (-80) \gg 5 -2.5(−80)≫5−2.5→ -3✅ 实际标准中采用向负无穷取整floor division来保证跨平台一致性。在 C 中可通过添加偏移修正负数右移行为intdiffy*offset;intildx(diff(diff0?-31:0))5;四、步骤3详解计算分像素位置权重w公式表达w(y⋅offset[M]) 31 w (y \cdot \text{offset}[M]) \\ 31w(y⋅offset[M])31参数说明符号含义y⋅offset[M] y \cdot \text{offset}[M]y⋅offset[M]总偏移量带符号整数 31 \\ 3131按位与操作提取低 5 位 → 相当于对 32 取模mod 32物理意义虽然ildx给出了整数位置但真实的采样点往往落在两个像素之间例如介于ref[i]和ref[i1]之间。这时就需要进行亚像素插值。w0 w 0w0正好落在整数像素上 → 直接取ref[i]w≠0 w \neq 0w0位于两个像素之间 → 使用双线性插值pred(x,y)(32−w)⋅ref[i]w⋅ref[i1]1632 \text{pred}(x,y) \frac{(32 - w) \cdot \text{ref}[i] w \cdot \text{ref}[i1] 16}{32}pred(x,y)32(32−w)⋅ref[i]w⋅ref[i1]16其中加16是为了实现四舍五入。插值精度达到1/32 像素这是 VVC 实现高预测精度的关键设计之一。示例继续以y2,offset−20 y2, \text{offset}-20y2,offset−20为例计算y⋅offset2×(−20)−40 y \cdot \text{offset} 2 \times (-20) -40y⋅offset2×(−20)−40ildx(−40)≫5−2 \text{ildx} (-40) \gg 5 -2ildx(−40)≫5−2假设 floor divisionw(−40) 31 w (-40) \\ 31w(−40)31如何计算负数的按位与在补码系统中如 x86 架构-40 的二进制32位为11111111111111111111111111011000低 5 位为11000₂ 2410 24 ₁₀2410✅ 所以w24 w 24w24这意味着实际采样点位于ref[i]和ref[i1]之间更靠近后者权重更大。代入插值公式pred(32−24)⋅ref[i]24⋅ref[i1]16328a24b1632 \text{pred} \frac{(32 - 24)\cdot \text{ref}[i] 24 \cdot \text{ref}[i1] 16}{32} \frac{8a 24b 16}{32}pred32(32−24)⋅ref[i]24⋅ref[i1]16328a24b16≈ 75% 权重来自右边像素。五、图示还原图4.12 解析8×8 CU模式 M30正确理解投影像素法Projection Method对于垂直类模式 M30offset -20其预测方向是从左上往右下倾斜负斜率因此第 0 行y0起始于 TLindex8第 1 行y1起始于 L[0]index7第 2 行y2起始于 L[1]index6…第 7 行y7可能延伸至 L[6] 或更左用 ASCII 图表示如下Reference Line (index): ... 5 6 7 | 8 | 9 10 11 12 13 14 15 16 [L2] [L1] [L0] [TL] [T0] [T1] [T2] [T3] [T4] [T5] [T6] [T7] ↑ base_idx 8 Projection for each row: Row y0: ────────────────→ starts at index 8 (TL) Row y1: ──────────────────→ starts at index 7 (L0) Row y2: ────────────────────→ starts at index 6 (L1) Row y3: ──────────────────────→ starts at index 5 (L2) ... Row y7: ──────────────────────────→ far left (index ≈ 1) Arrow shows diagonal projection from left side into top. 每一行的预测值都来源于这条斜线上经过插值后的参考样本。这就是所谓的“投影像素法”——把左侧像素沿着一定角度“投射”到上方区域形成虚拟参考线。六、完整预测流程总结垂直类模式步骤内容公式(1)构造参考线Ref[]长度 2N1 2N 12N1顺序[L[N-1], ..., L[0], TL, T[0], ..., T[N-1]](2)计算整数偏移ildx(y⋅offset)≫5 \text{ildx} (y \cdot \text{offset}) \gg 5ildx(y⋅offset)≫5(3)计算分数权重w(y⋅offset) 31 w (y \cdot \text{offset}) \\ 31w(y⋅offset)31(4)定位参考索引posbase_idxildx \text{pos} \text{base\_idx} \text{ildx}posbase_idxildx其中base_idxN \text{base\_idx} Nbase_idxN(5)插值得到预测值w0 w 0w0pred[y][x]ref[pos] \text{pred}[y][x] \text{ref}[\text{pos}]pred[y][x]ref[pos]否则pred[y][x](32−w)⋅ref[i]w⋅ref[i1]1632 \text{pred}[y][x] \dfrac{(32-w)\cdot \text{ref}[i] w\cdot \text{ref}[i1] 16}{32}pred[y][x]32(32−w)⋅ref[i]w⋅ref[i1]16对于水平类模式M2~33逻辑类似只是改为对列进行循环并逐列向下预测。七、为何选择 32 作为缩放因子VVC 使用5-bit 精度1/32来表示亚像素偏移主要原因包括优点说明高分辨率控制支持多达 65 个精细角度适应各种纹理方向避免锯齿效应提升预测连续性减少块效应和振铃便于硬件实现位移和掩码操作远快于浮点除法统一插值核可复用相同的 5-tap 滤波器表MDIS例如offset 32 → 每行移动 1 像素 → 对应 45° 斜线offset 16 → 每两行移动 1 像素 → 更平缓offset -32 → 每行左移 1 像素 → -45° 斜线八、伪代码实现C 风格适用于 Markdown 展示voidpredictIntraAngular(intmode,intwidth,intheight,constPel*refLine,Pel**pred){intoffsetangTable[mode];// 查表得偏移值如 mode30 → -20intbase_idxheight;// TL 在 refLine 中的位置boolisVerticalMode(mode34);// 是否为垂直类模式if(isVerticalMode){// 垂直类逐行处理每行所有像素相同for(inty0;yheight;y){intdiffy*offset;intildx(diff(diff0?-31:0))5;// floor divisionintwdiff31;intrefIdxbase_idxildx;Pel val;if(w0){valrefLine[refIdx];}else{val((32-w)*refLine[refIdx]w*refLine[refIdx1]16)5;}// 该行所有像素赋相同值横向复制for(intx0;xwidth;x){pred[y][x]Clip1(val);}}}else{// 水平类逐列处理逻辑对称for(intx0;xwidth;x){intdiffx*offset;intildx(diff(diff0?-31:0))5;intwdiff31;intrefIdxbase_idxildx;Pel val(w0)?refLine[refIdx]:((32-w)*refLine[refIdx]w*refLine[refIdx1]16)5;for(inty0;yheight;y){pred[y][x]Clip1(val);}}}}九、附录角度偏移表表4.2 整理版模式编号23456789101112131415161718偏移值322926232018161412108643210模式编号1920212223242526272829303132333435偏移值-1-2-3-4-6-8-10-12-14-16-18-20-23-26-29-32-29模式编号3637383940414243444546474849505152偏移值-26-23-20-18-16-14-12-10-8-6-4-3-2-1012模式编号5354555657585960616263646566偏移值346810121416182023262932注偏移值正负决定投影方向绝对值大小决定斜率陡峭程度。十、总结步骤名称功能关键技术2ildx (y × offset) 5获取整数级参考位置实现斜率投影的离散化3w (y × offset) 31获取亚像素插值权重实现 1/32 精度插值提升预测精度✅二者共同完成了一个关键任务将理想中的连续角度投影过程转化为高效的整数运算 插值既保证预测精度又满足实时编码需求。