admin管理员组

文章数量:1530938

2024年7月15日发(作者:)

GPU视频处理详析(去除马赛克的技巧)

xiaoli 发表于: 2006-1-09 00:22 来源: 中国教程网--个人空间

随着互联网的发达,在线视频VOD点播的普及,视频回放能力越来越受重视,显示芯片厂商对于视频能力

的宣传也不遗余力,但是汇总起来对比感觉非常混乱,名词又特别多,比如Fullstream,PureVideo等,

本文讨论的就是视频回放的一些原理和要点,希望能给用户一点帮助。对于视频回放而言,硬件加速能力,

插值补偿能力,色彩还原和调节能力以及软件支持都是决定因素。

一.硬件加速

从NVIDIA近来力推的PureVideo来说起吧,NVIDIA在视频处理方面用上了两千万晶体管这个规模,正好

一块GeForce 2 MX400芯片的晶体管规模;在不算上这些晶体管总量已经破两亿规模的情况下和ATI 将来

的同系列产品(对于6800而言就是X800系列)对抗成本会相当不利,尤其是双方势均力敌的时候,下面

就来看看这两千万晶体管到底葫芦里卖的是什么药。

上图就是NV4X的视频部分的概图,在GPU中视频处理单元被划分为三个处理部分:视频处理器(Video

Processor),MPEG2解码器(MPEG2 Decoder),运动估算器(Motion Estimator),三个部分连在一个

仲裁器上(Arbiter)。

其中,MPEG2 解码器的作用顾名思义,用来硬件解码MPEG2视频的,包括了DVD和MPEG2编码的HDTV

(720p/1080i/1080p)等视频。

图中示意的是MPEG2压缩视频处理流程,在NV4X GPU中绿色部分由GPU完成处理器中,其中 IDCT

(Inverse Discrete Cosine Transformation反向离散余弦变换)和Motion Compensation(运动补偿,简

称MC)。前者是DCT的逆运算,DCT的处理针对图像数据在空间上的冗余的,压缩图像的时候是逐8*8

像素单元处理的,为的是把矩阵的能量集中到矩阵的左上角,便于压缩(矩阵大部分是0),浮点运算量

不小,其逆运算亦然;后者是针对视频流的时间冗余的,连续图像中相同的部分就是冗余,运动补偿就像

画动画的时候,经常使用的方法一样:要画主角说话,一般就是好几张图区别只有嘴型,于是除了嘴以外

的部分可以“偷懒”不画,直接“复制粘贴”,在这几张图中光画不同的嘴即可,画的时候省去的工作,在压

缩的时候也可以省去。运动补偿要做的就是找出嘴各个部位在动的时候和前一张图的同部分的相对位置(即

运动矢量),由于计算机识别图像快匹配不像人眼观察那样,所以计算比较复杂,运算量也不小,在视频

回放的时候,根据压缩的时候记录下来的运动矢量和不变的“背景图”,“画”出连续的视频帧来。这两个运

算占了解压DVD的大部分工作,因为这两个处理前的数据流都是比较简单的矩阵,之前的行程编码(RLE),

反量化(量化是有损压缩的关键,画质损失主要在这里)等处理轻松不少。

这两部分运算交给GPU现在相当普遍了,当初最早在显示适配器上集成硬件IDCT和硬件运动补偿(MC)

的就是著名的SIS 6326DVD(Dx版和Cx版,让K6 233这样的CPU也能看DVD),然后就是ATI Rage128,

这两款显卡系列当初靠这个能力赢得了不少用户的亲睐;INTEL的810和815板载显卡都硬件支持了MC,

NVIDIA在GeForce 256后开始支持硬件MC,MX440后又加入了硬件IDCT,比起SIS和ATI,NVIDIA过去

的视频能力,的确很不怎么样。在NV4X的PureVideo中,MPEG2 Decoder就是用来处理MPEG2视频文件

的IDCT和MC运算的。

其他部分主要还是改善视频效果作用的,De-Interlacing最早Banshee就有了,消除隔行问题处理不好容

易导致清晰度不行,一般有Bob和Weave两种方式,ATI从Radeon DDR开始引入Adaptive Pre-Pixel

De-Interlacing,即可适应逐像素除交错,在NVIDIA的PureVideo中也有,像素着色器(Pixel Shader)对

以前的除交错方式进行修正(Radeon 中的确就有Pixel Shader,只是版本很老,在3D游戏中不实用),

PureVideo中引入的是Spatial-Temporal Adaptive Per Pixel De-Interlacing。去马赛克和后处理和插值补

偿关系很大了,在后文中有详细描述。

既然MPEG2 Decoder就能很好的回放MPEG2视频,那另外两个部件是干什么的呢?

答案来自其他视频:WMV,MPEG4(AVI等)以及H.264。这些视频解压的时候也有大量IDCT运算和MC

运算,这个时候Motion Estimator和Video Precessor就起到作用了。

最新回复

xiaoli at 2006-1-09 00:23:07

上图就是MPEG4编码的流程,比MPEG2多了预测部分和马赛克处理部分,其余的操作都比较类

似,只不过IDCT和MC的时候算法或者参数不同,MPEG2 Decoder无法完成罢了。于是Motion

Estamitor就担负起MC相关的运算,Video Processor担负起IDCT运算。

本文标签: 视频处理部分