Matlab HEVC(h.265)帧内预测

Matlab HEVC(h.265)帧内预测,matlab,h.264,hevc,h.265,Matlab,H.264,Hevc,H.265,我正在从事一个用MATLAB实现HEVC帧内预测的项目。 我读了很多文章,用MATLAB编写代码,最后我做到了。 (其中最有用的是这篇文章: ) 该项目的主要目的是比较HEVC和AVC帧内预测,以表明HEVC将提供比AVC更好的重建图像质量,因此,HEVC提供的最终SAE(绝对误差之和)应小于AVC。 根据我的主管的说法,与具有动态块划分的HEVC解码器/编码器不同,在图像的每个区域中的细节量方面,对于图像上的每个帧内预测实现,我必须一次具有特定的块大小,即一次使用64x64,一次使用32x32

我正在从事一个用MATLAB实现HEVC帧内预测的项目。 我读了很多文章,用MATLAB编写代码,最后我做到了。 (其中最有用的是这篇文章: )

该项目的主要目的是比较HEVC和AVC帧内预测,以表明HEVC将提供比AVC更好的重建图像质量,因此,HEVC提供的最终SAE(绝对误差之和)应小于AVC。 根据我的主管的说法,与具有动态块划分的HEVC解码器/编码器不同,在图像的每个区域中的细节量方面,对于图像上的每个帧内预测实现,我必须一次具有特定的块大小,即一次使用64x64,一次使用32x32,依此类推到4x4

现在我在工作中遇到了一个大问题,那就是HEVC的SAE远远大于AVC。我不知道为什么会这样?

如果需要,请让我知道以后再发布代码

在实施HEVC帧内预测时,我也有一些疑问和疑问:

1-下面的线性插值函数及其相关参数(根据引用文章)是否随块大小而变化,或者对于不同的块大小始终相同

Px,y = ((32 − wy )· Ri,0 + wy · Ri+1,0 + 16 ) >> 5
cy = (y · d) >> 5
wy = (y · d) &31
2-(>>)移位运算符类似于普通除法(例如>>5等于有符号数除以32),还是有符号数的二进制移位? (我说的有符号数是由于与某些角度模式相关的负位移。另外值得注意的是,无符号数的按位移位给出的结果与有符号数完全不同)

3-为了计算每种模式的成本,我使用SAE(绝对误差之和)作为简化的全成本函数的替代

C = DHad + λ · Rmode (HEVC cost function)
您认为使用SAE而不是HEVC成本函数会影响为每个区块选择最佳模式的过程吗?如果是这样的话,你有没有比SAE更精确的方法来替代HEVC成本函数,为每个像素选择最佳预测模式

4-为了在h.265(HEVC)和h.264(AVC)帧内预测之间进行比较,HEVC重建图像的总SAE应小于AVC。然而,我的结果并非如此,AVC的SAE小于HEVC。
我找不到引起这个问题的原因。有人能帮我吗?

1-事实上,本出版物中提到的线性插值公式不太正确。根据H.265标准第8.4.4.2.3条“相邻样品的过滤过程”,应为:

Px,y = ((63 − wy )· Ri,0 + wy · Ri+1,0 + 32 ) >> 6
有关更多信息,请参阅。关于您关于根据块大小调整某些数字的问题:这种所谓的“强过滤”应仅适用于32x32块内的参考像素。对于较小的块,只能使用文章中的“参考样本平滑”。如果您想了解详细信息,请再次查看中的相同部分

2-在这些情况下,移位运算符表示绝对值的位移位。注意在matlab中使用位移位有符号数,有些函数移位绝对值,有些函数移位K2补码并考虑符号

3-由于您的“项目是HEVC和AVC帧内预测之间的比较,以显示HEVC将提供更好的质量”,我想仅使用SAE或平方误差总和(SSE)是有意义的。在我看来,如果你做一些质量/比特率评估,比如在HEVC成本函数中,你需要为你的项目添加更多的内容,而不仅仅是内部预测,以便充分比较这两个标准

4-你是对的,结果应该是相反的。检查您对SAE的计算。还应按照标准中的规定部分检查参考样品过滤是否正确

其他材料: 1-虽然在HEVC中可以有64x64个帧间预测块,但最多只能有32x32个帧内块。
2-在matlab中使用整数时要小心,这也曾使我的所有计算都出错。考虑您使用的整数位数是否足够,或者切换到双倍。加载图像时,默认值为8位无符号整数,您必须对其进行类型转换以进行某些计算。

您可以共享您的matlab hevc代码吗?