我正在用MATLAB实现HEVC内部预测的一个项目.我读了这么多的文章来编写MATLAB的代码,最后我做到了。(最有用的一篇文章是:HEVC标准的帧内编码)
该方案的主要目的是对HEVC和AVC内部预测结果进行比较,表明HEVC对重建图像的质量优于AVC,因此,HEVC给出的绝对误差之和( SAE )应小于AVC。根据我的主管的说法,与HEVC解码器/编码器不同的是,在图像的每个区域中,对于每一个帧内预测实现,我必须一次有一个特定的块大小,即一次用64x64,一次用32x32,等等。
现在我的工作中有一个大问题,那就是HEVC的SAE比AVC大得多。我不知道为什么?
如果需要的话,请告诉我稍后再发我的代码。
此外,在实施HEVC内部预测时,我也有一些疑问和疑问:
1-以下线性插值函数及其相关参数(根据引用的文章)是否随块大小而变化,还是对于不同的块大小总是相同的?
Px,y = ((32 − wy )· Ri,0 + wy · Ri+1,0 + 16 ) >> 5
cy = (y · d) >> 5
wy = (y · d) &312- ( >> )移位运算符,类似于普通除法(例如,>>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。我找不到造成这个问题的原因。有人能帮我吗?
发布于 2014-07-28 11:54:49
实际上,本出版物中提到的线性插值公式并不完全正确。根据H.265标准的Setion 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成本函数中,你需要为你的项目添加更多的东西,而不仅仅是内部预测,这样才能充分地比较两种标准,在我看来。
你是对的,结果应该是相反的。检查你对SAE的计算。还请检查标准中指定的部分是否正确地进行参考样例筛选。
其他东西:1-虽然你可以在HEVC中有64x64个内部预测块,但是你只能有多达32x32个内部块。2-在matlab中使用整数时要小心,这也曾使我的所有计算都搞砸了。考虑一下您使用的整数的位数是否足够,还是切换到双倍。加载图像时,默认情况下值为8位无符号整数,因此必须对它们进行键入以进行某些计算。
https://stackoverflow.com/questions/24740212
复制相似问题