A. HEVC基础知识讲解(1)-LCU 模式选择过程分析(CTU的深度选择及CU的分割)
1.率失真代价计算模型
HEVC 的最大编码单元为 LCU,即 64×64 的 CU(认为是数据单元,也就是编码单元);
下面就需要对LCU进行CU的划分;步骤如下:
1、对一个 LCU 选择最佳 CU编码深度,需要遍历所有 64×64 到 8×8 的分割,一共 85 个 CU,通过计算率失真代价选择此 LCU 的最佳分割方式。
PS:首先先看这一步,一个LCU = 1个64CU+4个32CU+16个16CU+64个8CU = 1+4+16+64 = 85;
然后有一个问题,我们为什么在cu划分的时候,最小是8x8,而不是4x4?
因为我们划分LCU也只是第一步,因为后面还要去看PU的划分以及TU的划分;因为PU和TU得到划分都是要基于CU来进行;后面会分析到PU和TU的划分;这里我们要明白的是,因为PU和TU的划分,所以CU只能最小到8x8(!!!!CU最小的划分单元就是8x8,切记!!!!);
2、对于每一个 CU,遍历帧内和帧间所有可选的预测模式,根据率失真代价选择最佳 PU(预测单元,做像素值的预测) 预测模式。
PS:PU有8种模式;它是针对于CU来进行划分的,而且针对于不同的预测模式(skip,帧间,帧内),划分的方式是不一样的;如下:
3、对于每一种 PU 预测模式,TU的分割方式由当前 CU 的大小、PU 的预测模式以及最大 TU 分割深度等因素决定,选择过程也需要计算率失真代价。
PS:TU的分割是与PU无关的,可以跨越多个PU的界限,也可以不跨越;还是依赖于的是CU的划分
可以看出,在 HEVC 编码过程中,任何一个划分方式或预测模式的选择,都需要计算率失真代价, HM 的编码器中,率失真代价的计算模型有以下两种:
1、非 RDO 模型
非 RDO 模型可用于帧内预测、运动估计、最佳 MVP 的选择 及 merge 模式中最佳运动参数集的选择等。
2、RDO 模型
所有有关分割方式的选择都采用 RDO 模型计算率失真代价。
当 LCU 的大小为 64×64,最大编码深度为 3,则 LCU 编码深度的选择过程可如下图表示。
第一步,如图 a),对大小为 64×64 深度为 0 的编码单元 a 遍历所有帧间和帧内预测模式,得到深度为 0 时的最优预测模式和率失真代价 Ra。
第二步,如图 b),对 a 进行一次 CU 划分,得到四个子 CU:b0,b1,b2,b3,此时编码深度为 1,并对编码单元 b0 遍历所有帧间和帧内预测模式,得到 b0的最优预测方式和率失真代价 Rb0。
第三步,如图 c),对 b0 进行进一步的 CU 划分,得到四个子 CU:c0,c1,c2 和 c3,此时编码深度为 2,并对编码单元 c0 遍历所有可能的预测模式,得到 c0的最优预测模式和率失真代价 Rc0。
第四步,如图 d),对 c0 做进一步 CU 划分,得到四个子 CU:d0,d1,d2和 d3,此时编码深度为 3,已达到最大编码深度,不能再进行 CU 划分。依次对d0、d1、d2 和 d3 进行预测模式选择,得到各自对应的最优预测方式和率失真代价Rd0、Rd1、Rd2以及 Rd3,计算四个 CU 的率失真代价之和,并与 Rc0进行比较,选择较小的值作为 c0 的最优率失真代价(记为 Min-Rc0),其对应的预测方式以及分割方式即为 c0 的最优预测方式和分割方式。
第五步,仿照第四步,依次对 c1、c2 和 c3 进行划分与预测模式选择,分别得到各自对应的最优预测方式和率失真代价 Min-Rc1、Min-Rc2、Min-Rc3,并计算当前编码深度的四个 CU 的率失真代价之和,与 Rb0比较,得到较小的率失真代价(记为 Min-Rb0),其所对应的预测模式以及分割方式即为 b0 的最优预测模式和分割方式。
第六步,仿照第二步到第五步,依次对 b1、b2 和 b3 进行划分与预测模式选择,分别得到各自对应的最优预测方式和率失真代价 Min-Rb1、Min-Rb2、Min-Rb3,计并计算当前编码深度的四个 CU 的率失真代价之和,并与 Ra 比较,得到较小的率失真代价(记为 Min-Ra),找出该 LCU 的最佳划分方式以及最优预测模式。
在 LCU 的最佳划分方式的选择过程中,对于每一个编码深度的 CU,做 PU 预测模式选择,一个大小为 2N×2N 的 CU,PU 帧间预测模式有 skip、2N×2N、2N×N、N×2N、N×N、2N×nU、2N×nD、nL×2N 以及 nR×2N。
1)其中 skip 模式对应的 CU划分方式为 2N×2N;
2)帧内模式 PU 的大小可以为 2N×2N 或 N×N,N×N 只能适用于深度为最大编码深度(8x8)的 CU。
3)帧间预测模式有八种,后四种模式统称为 AMP 模式,AMP 模式可以根据需要在参数配置中直接关闭。在 AMP 模式打开的情况下,这四种模式的选择与前面的选择结果相关。对于每一个 PU,共有 35 种帧内预测模式。
PU 的模式选择过程如图 3.3 所示:
第一步,计算 skip 模式的率失真代价,skip 模式运用到了 HEVC 中的新引入的运动合并技术。运用运动参数候选列表中的每个运动参数集找到预测块,与原始块做差值并进行变换,量化和熵编码。最后用编码的比特数和重构块以及原始块的失真计算出率失真代价,找到最佳的 merge-index。
第二步,计算 2N×2N 模式的率失真代价,首先运用 AMVP 技术得到 MVP 列表;然后运用非 RDO 方法计算率失真代价得到最佳 MVP;最后做运动搜索,找到预测块,与原始块做差值并进行变换、量化和熵编码,运用编码比特数以及重构块和原始块的 SSD 计算出率失真代价。与 skip 模式的率失真代价进行比较,在skip 和 2N×2N 中找出最佳 PU 模式。
第三步,计算 2N×N 和 N×2N 模式的率失真代价,首先运用 AMVP 技术,找到最佳 MVP 并作运动搜索找到预测块;然后运用运动合并技术技术,得到最佳merge-index 对应的率失真代价,根据率失真代价确定最佳预测模式;最后对最佳模式得到的残差做变换量化和熵编码运用RDO计算出当前PU模式的率失真代价,并与第二步得到的最佳 PU 模式的率失真代价做比较,得到最佳 PU 模式。
第四步,计算 AMP 模式的率失真代价,AMP 模式包括四种分割方式,但是为了减我码复杂度,编码过程中并没有遍历所有的模式,而是根据前三步选出的最佳PU模式以及上一层的CU的最佳分割模式以及预测模式选择部分做模式判决。具体选择如下表:
第五步,帧内预测模式选择,对于 I_SLICE 或非 I_SLICE 中需要编码的量化系数不全为 0 的 CU,需要做帧内预测的分割方式和帧内预测模式选择,选择过程如下:
1、预测单元 PU 大小与 CU 大小一致为 2N×2N,用非 RDO 模型计算率失真代价,从 35 种帧内预测模式中找到率失真代价较小的 n 中预测模式作为候选模式,n 的大小与 PU 的大小相关,如表 3-2 所示。
2、将当前 PU 上侧和左侧相邻 PU 采用的帧内预测模式,即当前 PU 最有可能的预测模式(MPM)加入到该步骤的候选模式中,此时候选模式 k 最多为(n+2)。
3、运用 RDO 模型计算率失真代价在 k 种最佳候选模式中选出最佳亮度的帧内预测模式。
4、根据亮度的帧内预测模式选择结果,做色度的帧内预测模式选择。
5、如果当前编码单元的编码深度为最大编码深度,将当前编码单元分为 4 个N×N 的 PU,对于每一个 PU 重复 1~4 步,找到每一个 PU 的最佳帧内预测模式以及最佳预测模式对应的率失真代价。
6、根据前几步得到率失真代价的值,决定当前 CU 的最佳划分方式及帧内预测模式。
第六步,计算 PCM 模式的率失真代价。
由上述描述可知,对于一个 LCU 想要得到最佳 CU 划分方式,需要遍历其所有的 CU,对每个 CU 还需要遍历各种预测模式,得到其最小的率失真代价。为加快编码速度,模式选择过程的优化可从 CU 编码深度的选择,PU 模式选择和 TU分割方式的选择三个方面进行研究和分析。因为 PU 模式选择和 TU 分割方式选择都是为了计算当前深度下,编码 CU 的率失真代价,减少 CU 遍历的次数,同时也减少了 PU 模式选择的次数和 TU 分割方式选择的次数。因此,基于 CU 编码深度选择过程做算法优化是最有效的。
B. 我配了副框架眼镜看东西失真
1、由于隐形眼镜紧贴眼球而框架眼镜远离眼球,所以成像情况有所区别。同时镜片度数也要改变。具体的算法你可以网络一下。我在回答别人的问题时提到过怎么换算。在此就不罗嗦了。
2、一般情况下,戴隐形眼镜看东西,东西会比戴框架眼镜看到的东西略大。同时,隐形眼镜的失真更小,也就是说,隐形眼镜看东西更真实。
3、由于隐形眼镜镜片和角膜之间有泪液存在,泪液形成的膜可以有效地填补眼球不规则带来的部分散光,所以通常情况下,戴隐形眼镜看东西会比较清楚些。
4、现在树脂镜片通常是1.499,1.56,1.6,1.67,1.74这几种折射率,没有1.27这种折射率的。多半是你看错了。
5、镜片材料有一个光学参数叫阿贝数(也有叫色散系数的),描述的是白光经过三棱镜分成各色光的分散角度。阿贝数越大,这个角度越小,看东西越清楚,也越看不出边缘的各色光分散效果。一般情况下,折射率越高,阿贝数越小。如果阿贝数在32左右(如PC)眼镜超过-5.50D,大多数人就会看见物体边缘有彩色的纹。尤其是夜晚看街上的大屏幕广告或者红绿灯时,尤其明显。当然,这种情况和个人的实际情况有关。有的人可能敏感,有的人可能没那么敏感。
所以,你刚换,是有一段适应时间的。
如果较长时间还是不能适应,那么你要考虑是不是度数不太合适,或者换一种阿贝数大一点的镜片。
C. 什么是图片失真
图片失真,简单来说,是指在图片转存过程中,由于图像信息的丢失导致的视觉质量下降现象。当我们将图像如GIF格式(一种以8位颜色或256色存储单个光栅图像的格式)进行压缩时,比如使用LZW压缩算法,可能会牺牲部分图像细节,压缩比大约为3:1。GIF格式仅支持256色调色板,这就意味着高分辨率的图片或写实摄影作品在转换过程中可能会丢失丰富的颜色信息,使得图片看起来像是经过了色彩简化或失真处理。这种色彩损失是图片失真现象的一个典型表现。