iavoe

iavoe作者

经验分享·17.8天前

视频/图像压缩中的DCT是什么

把x265教程中的内容拿出来修改修改水一贴,顺便祝大家新年快乐哦~

DCT指discrete cosine transformation,中文叫离散余弦变换。在游戏"刺客信条 - 兄弟会"中,有这么一种谜题,要你通过一些波形拼出音频文件的频率:

其原理就是这么一回事。只不过编码器里进行的比这个要复杂得多而已。
所谓余弦"cosine"就是在图形计算器中打出cos(x)出现的曲线,从0~π~2π完成一个周期的循环:

如果我们写cos(0x),就会得出一条直线,我们用它来标记完全平滑的画面。

我们还可以通过增大x,来使cos(x)震荡的更剧烈:

最后,通过相加相减各种各样的cos(x)曲线就可以还原任何的波形(尽管数量会很多)
举个例子,[cos(2x)]-[cos(3x)]-[cos(0.5x)]就可以给出很魔性的结果:

说了这么多,接下来我们就从一维的波形升级到二维的画面,从左上角cos(0x)的平方开始,我们让波形逐渐的越来越剧烈,从而得出了这个图表:

接下来编码器会将图像分块,会得出如8x8,16x16,32x32等等,分的块越大,像素值越复杂或分块越接近长方形就越耗费算力。然后就是通过这个图表中的项来凑出原图的分块:

拿画面比较平滑的例子来说,这个图表的左上角的项总共用了-370次。
接下来就是压缩的步骤了,我们通过除法来减少每个项的使用次数,要求的质量越高,给出的除数就越小。
下图的左图为低压缩,右图高压缩:

最后就得出了压缩完的图像的块:

DCT就是这么一回事。
转载要求: 文末附上原文链接

评论 0 立即评论

目前尚无评论

后发表评论